Prechádzať zdrojové kódy

包材厂包数量,下载了报表

v_KaixiangGuo 3 rokov pred
rodič
commit
67e84bcdbf

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

@@ -2,6 +2,7 @@ package com.abi.qms.platform.controller.console;
 
 import com.abi.qms.platform.dto.req.ReportReq;
 import com.abi.qms.platform.dto.res.ListBrandCodeReportRes;
+import com.abi.qms.platform.dto.res.ListFactoryCodeReportRes;
 import com.abi.qms.platform.dto.res.ListSkuCodeRankingReportRes;
 import com.abi.qms.platform.dto.res.PackageCodeTypeRes;
 import com.abi.qms.platform.service.ReportService;
@@ -46,9 +47,16 @@ public class ReportController {
         return BaseResponse.create(result);
     }
     @ApiOperation("SKU使用码量排名")
-    @PostMapping("/querySkuCodeRanking")
-    public BaseResponse<ListSkuCodeRankingReportRes> querySkuCodeRanking(@RequestBody ReportReq reportReq) {
+    @GetMapping("/querySkuCodeRanking")
+    public BaseResponse<ListSkuCodeRankingReportRes> querySkuCodeRanking(@Validated ReportReq reportReq) {
         ListSkuCodeRankingReportRes result= reportService.querySkuCodeRanking(reportReq);
         return BaseResponse.create(result);
     }
+
+    @ApiOperation("包材厂使用码量,下载率")
+    @GetMapping("/queryFactoryCodeReport")
+    public BaseResponse<ListFactoryCodeReportRes> queryFactoryCodeTotalReport(@Validated ReportReq reportReq) {
+        ListFactoryCodeReportRes result= reportService.queryFactoryCodeTotalReport(reportReq);
+        return BaseResponse.create(result);
+    }
 }

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

@@ -1,6 +1,7 @@
 package com.abi.qms.platform.dao.mapper;
 
 import com.abi.qms.platform.dao.vo.result.ListBrandCodeReportVO;
+import com.abi.qms.platform.dao.vo.result.ListFactoryCodeReportVO;
 import com.abi.qms.platform.dao.vo.result.ListPackageCodeVo;
 import com.abi.qms.platform.dao.vo.result.ListSkuCodeReportVO;
 import com.abi.qms.platform.dto.req.ReportReq;
@@ -52,5 +53,10 @@ public interface ReportServiceMapper  {
      */
     List<ListSkuCodeReportVO> querySkuCodeRanking(@Param("reportReq") ReportReq reportReq);
 
-
+    /**
+     * 包材厂使用码量,下载率
+     * @param reportReq
+     * @return
+     */
+    List<ListFactoryCodeReportVO> queryFactoryCodeTotal(@Param("reportReq") ReportReq reportReq, @Param("isDownload") Integer isDownload);
 }

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

@@ -0,0 +1,25 @@
+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 guokaixiang
+ * @date 2021年06月03日 11:50
+ */
+@Data
+@ApiModel
+public class ListFactoryCodeReportVO implements Serializable {
+
+    @ApiModelProperty("包材厂名称")
+    private String factoryName;
+
+    @ApiModelProperty("码数量")
+    private Long qrNumber;
+
+    @ApiModelProperty("下载率")
+    private String downloadNumber;
+}

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

@@ -0,0 +1,40 @@
+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 guokaixiang
+ * @date 2021年06月03日 11:50
+ */
+@Data
+@ApiModel
+public class ListFactoryCodeReportRes implements Serializable {
+
+    @ApiModelProperty("包材厂使用码占比列表")
+    private List<FactoryCodeReportResBean> factoryCodeResReportList;
+
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ToString
+    @ApiModel(value = "ListFactoryCodeReportRes_FactoryCodeReportResBean")
+    public static class FactoryCodeReportResBean implements Serializable {
+
+        @ApiModelProperty("包材厂名称")
+        private String factoryName;
+
+        @ApiModelProperty("码数量")
+        private Long qrNumber;
+
+        @ApiModelProperty("下载率")
+        private String downloadNumber;
+    }
+}

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

@@ -2,6 +2,7 @@ package com.abi.qms.platform.service;
 
 import com.abi.qms.platform.dto.req.ReportReq;
 import com.abi.qms.platform.dto.res.ListBrandCodeReportRes;
+import com.abi.qms.platform.dto.res.ListFactoryCodeReportRes;
 import com.abi.qms.platform.dto.res.PackageCodeTypeRes;
 import com.abi.qms.platform.dto.res.ListSkuCodeRankingReportRes;
 
@@ -36,4 +37,12 @@ public interface ReportService {
     * @return
     */
    ListSkuCodeRankingReportRes querySkuCodeRanking(ReportReq reportReq);
+
+
+    /**
+     * 包材厂使用码量,下载率
+     * @param reportReq
+     * @return
+     */
+    ListFactoryCodeReportRes queryFactoryCodeTotalReport(ReportReq reportReq);
 }

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

@@ -3,10 +3,12 @@ package com.abi.qms.platform.service.impl;
 import com.abi.qms.platform.dao.enums.QrTypeEnum;
 import com.abi.qms.platform.dao.mapper.ReportServiceMapper;
 import com.abi.qms.platform.dao.vo.result.ListBrandCodeReportVO;
+import com.abi.qms.platform.dao.vo.result.ListFactoryCodeReportVO;
 import com.abi.qms.platform.dao.vo.result.ListSkuCodeReportVO;
 import com.abi.qms.platform.dao.vo.result.ListPackageCodeVo;
 import com.abi.qms.platform.dto.req.ReportReq;
 import com.abi.qms.platform.dto.res.ListBrandCodeReportRes;
+import com.abi.qms.platform.dto.res.ListFactoryCodeReportRes;
 import com.abi.qms.platform.dto.res.ListSkuCodeRankingReportRes;
 import com.abi.qms.platform.dto.res.PackageCodeTypeRes;
 import com.abi.qms.platform.service.ReportService;
@@ -52,21 +54,16 @@ public class ReportServiceImpl implements ReportService {
      */
     @Override
     public ListBrandCodeReportRes queryBrandCodeProportion(ReportReq reportReq) {
-        if(!ObjectUtils.isEmpty(reportReq) &&
-                null == reportReq.getEndTime() &&
-                null == reportReq.getBeginTime()){
-            HashMap<String, LocalDateTime> timestamp = getTimestamp(reportReq.getValue());
-            reportReq.setBeginTime( timestamp.get("startTime"));
-            reportReq.setEndTime( timestamp.get("endTime"));
-        }
+        //参数设置初始化
+        setQueryTime(reportReq);
         //查询 品牌数量
         List<ListBrandCodeReportVO> listReportVOS = reportServiceMapper.queryBrandCodeProportion(reportReq);
         if(!CollectionUtils.isEmpty(listReportVOS)){
             //求总和
             Long collect = listReportVOS.stream().collect(Collectors.summingLong(ListBrandCodeReportVO::getQrNumber));
             listReportVOS.forEach(listReportVO->{
-                long l = listReportVO.getQrNumber() / collect * 100;
-                listReportVO.setPercent(new DecimalFormat("#0.00").format(l + 0.000001d)+"%");
+                Double val = new Double(listReportVO.getQrNumber() / collect * 100);
+                listReportVO.setPercent(new DecimalFormat("#0.00").format(val + 0.000001d)+"%");
             });
         }
         // 封装出参
@@ -91,12 +88,56 @@ public class ReportServiceImpl implements ReportService {
         return res;
     }
 
+
+    /**
+     * 包材厂使用码量,下载率
+     * @param reportReq
+     * @return
+     */
+    @Override
+    public ListFactoryCodeReportRes queryFactoryCodeTotalReport(ReportReq reportReq) {
+        //参数设置初始化
+        setQueryTime(reportReq);
+        //包材厂生成包数量
+        List<ListFactoryCodeReportVO> listFactoryCodeTotalReportVOS = reportServiceMapper.queryFactoryCodeTotal(reportReq,0);
+        //包材厂包下载量
+        List<ListFactoryCodeReportVO> listFactoryCodeDownloadTotalReportVOS = reportServiceMapper.queryFactoryCodeTotal(reportReq,1);
+        Map<String, Long> FactoryCodeDownloadTotalMaps = listFactoryCodeTotalReportVOS.stream().collect(Collectors.toMap(ListFactoryCodeReportVO::getFactoryName, ListFactoryCodeReportVO::getQrNumber));
+        listFactoryCodeTotalReportVOS.forEach(listReportVO->{
+            Double val = 0d;
+            if (null != FactoryCodeDownloadTotalMaps.get(listReportVO.getFactoryName())){
+                val = new Double(FactoryCodeDownloadTotalMaps.get(listReportVO.getFactoryName()) / listReportVO.getQrNumber() * 100);
+            }
+            listReportVO.setDownloadNumber(new DecimalFormat("#0.00").format(val + 0.000001d)+"%");
+        });
+        // 封装出参
+        ListFactoryCodeReportRes res = new ListFactoryCodeReportRes();
+        List<ListFactoryCodeReportRes.FactoryCodeReportResBean> reportFactoryRes = PojoConverterUtils.copyList(listFactoryCodeTotalReportVOS, ListFactoryCodeReportRes.FactoryCodeReportResBean.class);
+        res.setFactoryCodeResReportList(reportFactoryRes);
+        return res;
+    }
+
+    /**
+     * 设置时间区间值
+     * @param reportReq
+     */
+    private void setQueryTime(ReportReq reportReq){
+        if(!ObjectUtils.isEmpty(reportReq) &&
+                null == reportReq.getEndTime() &&
+                null == reportReq.getBeginTime() &&
+                !ObjectUtils.isEmpty(reportReq.getValue())){
+            HashMap<String, LocalDateTime> timestamp = getTimestamp(reportReq.getValue());
+            reportReq.setBeginTime( timestamp.get("startTime"));
+            reportReq.setEndTime( timestamp.get("endTime"));
+        }
+    }
+
     /**
      * 根据类型获取时间范围
      * @param timeType (0-当天,1-本周,2-本月)
      * @return key 开始时间:startTime  结束时间:endTime
      */
-    private static HashMap<String, LocalDateTime> getTimestamp(Integer timeType) {
+    private HashMap<String, LocalDateTime> getTimestamp(Integer timeType) {
         HashMap<String, LocalDateTime> hashMap = new HashMap<String, LocalDateTime>();
         Calendar calendar = Calendar.getInstance();
 
@@ -114,7 +155,7 @@ public class ReportServiceImpl implements ReportService {
                     "endTime",
                     longTurnData( getTimestampByOffsetDay(calendar
                             .getMaximum(Calendar.DAY_OF_WEEK)
-                            - calendar.get(Calendar.DAY_OF_WEEK) + 1)));
+                            - calendar.get(Calendar.DAY_OF_WEEK) + 2)));
         }
 
         //本月
@@ -138,7 +179,7 @@ public class ReportServiceImpl implements ReportService {
      * @param l 时间毫秒值
      * @return java.time.LocalDateTime
      */
-    private static LocalDateTime longTurnData(Long l) {
+    private LocalDateTime longTurnData(Long l) {
         Instant instant = Instant.ofEpochMilli(l);
         ZoneId zone = ZoneId.systemDefault();
         LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
@@ -152,7 +193,7 @@ public class ReportServiceImpl implements ReportService {
      * @param day
      * @return long
      */
-    public static long getTimestampByOffsetDay(int day){
+    public long getTimestampByOffsetDay(int day){
         Calendar calendar = Calendar.getInstance();
         calendar.add(Calendar.DAY_OF_MONTH, day);
         calendar.set(Calendar.HOUR_OF_DAY, 0);

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

@@ -28,48 +28,33 @@
         LEFT JOIN base_sku bs on bm.sku_id  = bs.id
         <where>
             qp.generate_status = 2
-            <!--   1本周  -->
-            <if test="null != reportReq.value and reportReq.value == 1">
-                yearweek(date_format(qp.generate_time,'%Y-%m-%d')) = yearweek(now())
-            </if>
-            <!--  2本月 -->
-            <if test="null != reportReq.value and reportReq.value == 2">
-                and date_format(qp.generate_time,'%Y-%m')=date_format(now(),'%Y-%m')
-            </if>
             <if test="null != reportReq.beginTime and null != reportReq.endTime">
-                and #{reportReq.beginTime} &lt; qp.generate_time &lt; #{reportReq.endTime}
+               AND qp.generate_time BETWEEN #{reportReq.beginTime} AND #{reportReq.endTime}
             </if>
         </where>
         GROUP BY bs.sku_name
         ORDER BY qr_number DESC
-            (
-                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>
-                    package.generate_status = 2
-                    <!--   1本周  -->
-                    <if test="null != reportReq.value and reportReq.value == 1">
-                       and yearweek(date_format(package.generate_time,'%Y-%m-%d')) = yearweek(now())
-                    </if>
-                    <!--  2本月 -->
-                    <if test="null != reportReq.value and reportReq.value == 2">
-                       and date_format(package.generate_time,'%Y-%m')=date_format(now(),'%Y-%m')
-                    </if>
-                    <if test="null != reportReq.beginTime and null != reportReq.endTime">
-                        and #{reportReq.beginTime} &lt; package.generate_time &lt; #{reportReq.endTime}
-                    </if>
-                </where>
+    </select>
 
-                ORDER BY per DESC
-            ) AS quer
-        GROUP BY quer.brand_name
+    <select id="queryFactoryCodeTotal" resultType="com.abi.qms.platform.dao.vo.result.ListFactoryCodeReportVO">
+        SELECT
+        bf.factory_code,
+        bf.factory_name,
+        sum( qp.qr_number ) qr_number
+        FROM
+        qr_package qp
+        LEFT JOIN base_factory bf ON qp.factory_cover_id = bf.id
+        <where>
+            qp.generate_status = 2
+            <if test="1 == isDownload">
+                AND qp.is_download = 1
+            </if>
+            <if test="null != reportReq.beginTime and null != reportReq.endTime">
+                AND qp.generate_time BETWEEN #{reportReq.beginTime} AND #{reportReq.endTime}
+            </if>
+        </where>
+        GROUP BY bf.factory_code,bf.factory_name
+        ORDER BY qr_number DESC
     </select>
 
     <select id="queryPackageCodeNum" resultType="com.abi.qms.platform.dao.vo.result.ListPackageCodeVo">