Browse Source

报表info

luyanwen-001 3 years ago
parent
commit
3dd370fd58

+ 39 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/controller/console/ReportController.java

@@ -0,0 +1,39 @@
+package com.abi.qms.platform.controller.console;
+
+import com.abi.qms.platform.dto.req.ReportReq;
+import com.abi.qms.platform.dto.res.ListReportRes;
+import com.abi.qms.platform.service.ReportService;
+import com.abi.task.common.api.base.BaseResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author ludashi
+ * @date 2021年06月02日 15:37
+ */
+@Slf4j
+@RestController
+@RequestMapping("factory")
+@Api(tags = "数据看板")
+public class ReportController {
+
+    @Autowired
+    private ReportService reportService;
+
+
+    @ApiOperation("品牌使用码量占比")
+    @GetMapping("/queryBrandCodeProportion")
+    public BaseResponse<ListReportRes> queryBrandCodeProportion(@Validated ReportReq reportReq) {
+        ListReportRes result= reportService.queryBrandCodeProportion(reportReq);
+       return BaseResponse.create(result);
+    }
+
+}

+ 22 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/mapper/ReportServiceMapper.java

@@ -0,0 +1,22 @@
+package com.abi.qms.platform.dao.mapper;
+
+import com.abi.qms.platform.dao.vo.result.ListReportVO;
+import com.abi.qms.platform.dto.req.ReportReq;
+import com.abi.qms.platform.dto.res.ListReportRes;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author ludashi
+ * @date 2021年06月02日 15:40
+ */
+public interface ReportServiceMapper  {
+    
+    /**
+     * 品牌使用码量占比
+     * @author ludashi
+     * @date 2021/6/2 16:01 
+     */
+    List<ListReportVO> queryBrandCodeProportion(@Param("reportReq") ReportReq reportReq);
+}

+ 24 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/ListReportVO.java

@@ -0,0 +1,24 @@
+package com.abi.qms.platform.dao.vo.result;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author ludashi
+ * @date 2021年06月02日 16:39
+ */
+@Data
+@ApiModel
+public class ListReportVO implements Serializable {
+    @ApiModelProperty("品牌名称")
+    private String brandName;
+
+    @ApiModelProperty("码数量")
+    private Long qrNumber;
+
+    @ApiModelProperty("占总数百分比")
+    private String percent;
+}

+ 29 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/ReportReq.java

@@ -0,0 +1,29 @@
+package com.abi.qms.platform.dto.req;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * @author ludashi
+ * @date 2021年06月02日 16:11
+ */
+@Data
+@ApiModel
+public class ReportReq implements Serializable {
+
+    @ApiModelProperty("1本周  2本月")
+    private Integer value;
+
+    @ApiModelProperty("开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime beginTime;
+
+    @ApiModelProperty("结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime endTime;
+}

+ 39 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/res/ListReportRes.java

@@ -0,0 +1,39 @@
+package com.abi.qms.platform.dto.res;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.List;
+/**
+ * @author ludashi
+ * @date 2021年06月02日 16:26
+ */
+@Data
+@ApiModel
+public class ListReportRes implements Serializable {
+
+    @ApiModelProperty("品牌使用码量占比列表")
+    private List<ListReportRes.ReportRes> qrVariableBeanList;
+
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ToString
+    @ApiModel(value = "ListReportRes_ReportRes")
+    public class ReportRes implements Serializable {
+
+        @ApiModelProperty("品牌名称")
+        private String brandName;
+
+        @ApiModelProperty("码数量")
+        private Long qrNumber;
+
+        @ApiModelProperty("占总数百分比")
+        private String percent;
+    }
+}

+ 17 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/ReportService.java

@@ -0,0 +1,17 @@
+package com.abi.qms.platform.service;
+
+import com.abi.qms.platform.dto.req.ReportReq;
+import com.abi.qms.platform.dto.res.ListReportRes;
+
+import java.util.List;
+
+/**
+ * @author ludashi
+ * @date 2021年06月02日 15:39
+ */
+public interface ReportService {
+
+
+   ListReportRes queryBrandCodeProportion(ReportReq reportReq);
+    
+}

+ 39 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/ReportServiceImpl.java

@@ -0,0 +1,39 @@
+package com.abi.qms.platform.service.impl;
+
+import com.abi.qms.platform.dao.mapper.ReportServiceMapper;
+import com.abi.qms.platform.dao.vo.result.ListReportVO;
+import com.abi.qms.platform.dto.req.ReportReq;
+import com.abi.qms.platform.dto.res.ListQrVariableRes;
+import com.abi.qms.platform.dto.res.ListReportRes;
+import com.abi.qms.platform.service.ReportService;
+import com.abi.task.common.utils.PojoConverterUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author ludashi
+ * @date 2021年06月02日 15:39
+ */
+@Service
+public class ReportServiceImpl implements ReportService {
+
+    @Autowired
+    private ReportServiceMapper reportServiceMapper;
+
+    /**
+     *
+     * @author ludashi
+     * @date 2021/6/2 16:06
+     */
+    @Override
+    public ListReportRes queryBrandCodeProportion(ReportReq reportReq) {
+        List<ListReportVO> listReportVOS = reportServiceMapper.queryBrandCodeProportion(reportReq);
+        // 封装出参
+        ListReportRes res = new ListReportRes();
+        List<ListReportRes.ReportRes> reportRes = PojoConverterUtils.copyList(listReportVOS, ListReportRes.ReportRes.class);
+        res.setQrVariableBeanList(reportRes);
+        return res;
+    }
+}

+ 35 - 0
abi-cloud-qr-platform-server/src/main/resources/dao/mapper/ReportServiceMapper.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.abi.qms.platform.dao.mapper.ReportServiceMapper">
+
+    <select id="queryBrandCodeProportion" resultType="com.abi.qms.platform.dao.vo.result.ListReportVO">
+        SELECT
+            quer.brand_name brandName,
+            SUM( quer.qr_number ) qrNumber,
+            CONCAT( SUM( quer.per ), '', '%' ) percent
+        FROM
+            (
+                SELECT
+                    brand.brand_name brand_name,
+                    package.qr_number qr_number,
+                    ROUND( package.qr_number /( SELECT SUM( e.qr_number ) FROM qr_package AS e ) * 100, 2 ) AS per
+                FROM
+                    base_brand AS brand
+                    LEFT JOIN base_sku AS sku ON brand.brand_code = sku.brand_code
+                    LEFT JOIN base_material AS material ON material.sku_id = sku.id
+                    LEFT JOIN qr_package AS package ON package.material_id = material.id
+                <where>
+                    <!--   1本周  -->
+                    <if test="null != reportReq.value and reportReq.value == 1">
+                        yearweek(date_format(generate_time,'%Y-%m-%d')) = yearweek(now())
+                    </if>
+                    <!--  2本月 -->
+                    <if test="null != reportReq.value and reportReq.value == 2">
+                       and date_format(generate_time,'%Y-%m')=date_format(now(),'%Y-%m')
+                    </if>
+                </where>
+                ORDER BY per DESC
+            ) AS quer
+        GROUP BY quer.brand_name
+    </select>
+</mapper>