liguosong 3 лет назад
Родитель
Сommit
693e668d24

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

@@ -26,48 +26,22 @@ public interface ReportServiceMapper  {
     //List<ListBrandCodeReportVO> queryBrandCodeProportion(@Param("reportReq") ReportReq reportReq);
 
     /**
-     * 查询生成码数量
-     * @param reportReq
-     * @return
-     */
-    List<ListPackageCodeVo> queryPackageCodeNum(@Param("reportReq") ReportReq reportReq);
-
-    /**
-     * 往期生成码数量
-     * @param beginDate
-     * @param endDate
-     * @return
-     */
-    ListPackageCodeVo queryPackageCodeNumPast(@Param("beginDate")LocalDateTime beginDate,@Param("endDate")LocalDateTime endDate);
-    /**
-     * 查询下载码数量
-     * @param reportReq
+     * 生成码下载码总量
+     * @param beginDate 开始时间
+     * @param endDate 结束时间
+     * @param type 判断生成码/下载码
      * @return
      */
-    List<ListPackageCodeVo> queryLoadPackageCodeNum(@Param("reportReq") ReportReq reportReq);
+    ListPackageCodeVo queryPackageCodeNum(@Param("beginDate")LocalDateTime beginDate,@Param("endDate")LocalDateTime endDate,@Param("type")Integer type);
 
     /**
-     * 往期下载码数
+     * 激活码总量
      * @param beginDate
      * @param endDate
      * @return
      */
-    ListPackageCodeVo queryLoadPackageCodeNumPast(@Param("beginDate")LocalDateTime beginDate,@Param("endDate")LocalDateTime endDate);
+    ListPackageCodeVo queryActivateCodeNum(@Param("beginDate")LocalDateTime beginDate,@Param("endDate")LocalDateTime endDate);
 
-    /**
-     * 查询激活码数量
-     * @param reportReq
-     * @return
-     */
-    List<ListPackageCodeVo> queryActivateCodeNum(@Param("reportReq") ReportReq reportReq);
-
-    /**
-     * 往期激活码数量
-     * @param beginDate
-     * @param endDate
-     * @return
-     */
-    ListPackageCodeVo queryActivateCodeNumPast(@Param("beginDate")LocalDateTime beginDate,@Param("endDate")LocalDateTime endDate);
 
     /**
      * 物料使用码量排名

+ 4 - 4
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/ListPackageCodeVo.java

@@ -15,12 +15,12 @@ import java.io.Serializable;
 public class ListPackageCodeVo implements Serializable {
 
     @ApiModelProperty(value = "生成箱码数量")
-    private Integer qrType;
+    private Long qrBoxNumber;
 
     @ApiModelProperty(value = "生成盖码数量")
-    private Long qrNumber;
+    private Long qrCapNumber;
 
-    @ApiModelProperty("生成码数量同比")
-    private String Percent;
+    @ApiModelProperty("总数")
+    private Long totalNumber;
 
 }

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

@@ -200,7 +200,6 @@ public class ReportServiceImpl implements ReportService {
         return calendar.getTimeInMillis();
     }
 
-
     /**
      * 码包概况
      * @author liguosong
@@ -216,13 +215,21 @@ public class ReportServiceImpl implements ReportService {
            map= FillParam(reportReq,map);
         }
         PackageCodeTypeRes res = new PackageCodeTypeRes();
-
-        //1.生成码数量
-        getGenerateCodeNum(reportReq,res,map);
-        //2.下载码数量
-        getLoadCodeNum(reportReq, res,map);
-        //3.激活码数量
-        getActivateCodeNum(reportReq, res,map);
+        //查询同期生成码
+        getGenerateCodeNum(reportReq.getBeginTime(),reportReq.getEndTime(),1,res,"1");
+        //查询同期下载码
+        getGenerateCodeNum(reportReq.getBeginTime(),reportReq.getEndTime(),2,res,"1");
+        //查询同期激活码
+        getActivateCodeNum(reportReq.getBeginTime(),reportReq.getEndTime(),res,"1");
+        //查询往期
+        if(!map.isEmpty()){
+            //查询往期生成码
+            getGenerateCodeNum(map.get("beginDate"),map.get("endDate"),1,res,"2");
+            //查询往期下载码
+            getGenerateCodeNum(map.get("beginDate"),map.get("endDate"),2,res,"2");
+            //查询往期激活码
+            getActivateCodeNum(map.get("beginDate"),map.get("endDate"),res,"2");
+        }
         //返回参数
         return res;
     }
@@ -233,117 +240,71 @@ public class ReportServiceImpl implements ReportService {
      * @param map
      */
     private Map FillParam(ReportReq reportReq,Map<String,LocalDateTime> map) {
-        if(!ObjectUtils.isEmpty(reportReq) && null != reportReq.getValue() && null == reportReq.getEndTime() && null == reportReq.getBeginTime()){
-            setQueryTime(reportReq);
-            reportReq.setBeginTime(reportReq.getBeginTime());
-            reportReq.setEndTime(reportReq.getEndTime());
-        }
+        setQueryTime(reportReq);
         map=getBeforeWeekTime(reportReq.getValue().toString());//1周 2月
         return map;
     }
-    /**
-     * 处理逻辑
-     * 1.取出当前的数据集,对箱码,盖码赋值
-     * 2.获取往期总数
-     * 3.(本周的数据集-不是本周的数据集)/不是本周的数据集*100%,计算同比增长率
-     */
-    private void getGenerateCodeNum(ReportReq reportReq, PackageCodeTypeRes res,Map<String,LocalDateTime> map) {
-        List<ListPackageCodeVo> createList = reportServiceMapper.queryPackageCodeNum(reportReq);
-        ListPackageCodeVo vo=null;
-        if(!map.isEmpty()){
-            vo=reportServiceMapper.queryPackageCodeNumPast(map.get("beginDate"),map.get("endDate"));
-        }
-        for (int i = 0; i < createList.size(); i++) {
-            if (QrTypeEnum.CARTON.getCode().equals(createList.get(i).getQrType())) {//判断是否箱码
-                res.setCreateBoxNumber(createList.get(i).getQrNumber());//箱码
-            } else if (QrTypeEnum.CAP.getCode().equals(createList.get(i).getQrType())) {//判断是否盖码
-                res.setCreateCapNumber(createList.get(i).getQrNumber());//盖码
-            }
-        }
-        if (!ObjectUtils.isEmpty(reportReq) && null !=reportReq.getValue()) {
-            //获取往期总数
-            long before=0;
-            if(!ObjectUtils.isEmpty(vo)){
-                before = vo.getQrNumber();
-            }else{
-                before=0;
-            }
-            //计算同期总数
-            int present = createList.stream().mapToInt(x -> Math.toIntExact(x.getQrNumber())).sum();
-            //获取同比增长率
-            String result = percentBigDecimal(present, before);
-            res.setCreatePercent(result);
-        }
-    }
 
     /**
-     * 获取下载码数量
-     * @param reportReq
-     * @param res
-     * @param map
+     * 获取生成码和下载码情况
+     * @param beginDate 开始时间
+     * @param endDate 结束时间
+     * @param type 判断是生成码还是下载码 1生成 2激活
+     * @param res 返回值
+     * @param value 判断是否往期
      */
-    private void getLoadCodeNum(ReportReq reportReq, PackageCodeTypeRes res,Map<String,LocalDateTime> map) {
-        List<ListPackageCodeVo> loadList = reportServiceMapper.queryLoadPackageCodeNum(reportReq);
-        ListPackageCodeVo vo = null;
-        if(!map.isEmpty()){
-            vo=reportServiceMapper.queryLoadPackageCodeNumPast(map.get("beginDate"),map.get("endDate"));
-        }
-        for (int i = 0; i < loadList.size(); i++) {
-            if (QrTypeEnum.CARTON.getCode().equals(loadList.get(i).getQrType())) {
-                res.setLoadBoxNumber(loadList.get(i).getQrNumber());
-            } else if (QrTypeEnum.CAP.getCode().equals(loadList.get(i).getQrType())) {
-                res.setLoadCapNumber(loadList.get(i).getQrNumber());
-            }
-        }
-        if (!ObjectUtils.isEmpty(reportReq) && null !=reportReq.getValue()) {
-            //获取往期总数
-            long before=0;
-            if(!ObjectUtils.isEmpty(vo)){
-                 before = vo.getQrNumber();
+    private void getGenerateCodeNum(LocalDateTime beginDate,LocalDateTime endDate,Integer type,PackageCodeTypeRes res,String value) {
+        ListPackageCodeVo entityBase = reportServiceMapper.queryPackageCodeNum(beginDate,endDate,type);
+        if(!ObjectUtils.isEmpty(entityBase)){
+            //判断是否往期
+            if("1".equals(value)){
+                //判断是否生成码使用情况/或者下载码使用情况
+                if("1".equals(type.toString())){
+                    res.setCreateBoxNumber(entityBase.getQrBoxNumber());
+                    res.setCreateCapNumber(entityBase.getQrCapNumber());
+                }else {
+                    res.setLoadBoxNumber(entityBase.getQrBoxNumber());
+                    res.setLoadCapNumber(entityBase.getQrCapNumber());
+                }
             }else{
-                before=0;
+                //判断是否生成码使用情况/或者下载码使用情况
+                if("1".equals(type.toString())){
+                    long present=res.getCreateBoxNumber()+res.getCreateCapNumber();
+                    long before=entityBase.getQrBoxNumber()+entityBase.getQrCapNumber();
+                    res.setCreatePercent(percentBigDecimal(present, before));
+                }else{
+                    long present=res.getLoadBoxNumber()+res.getLoadCapNumber();
+                    long before=entityBase.getQrBoxNumber()+entityBase.getQrCapNumber();
+                    res.setLoadPercent(percentBigDecimal(present, before));
+                }
             }
-            //获取同期总数
-            int present = loadList.stream().mapToInt(x -> Math.toIntExact(x.getQrNumber())).sum();
-            //获取同比增长率
-            String result = percentBigDecimal(present, before);
-            res.setLoadPercent(result);
         }
+
     }
 
     /**
-     * 获取激活码数量
-     * @param reportReq
-     * @param res
-     * @param map
+     * 获取激活码情况
+     * @param beginDate 开始时间
+     * @param endDate 结束时间
+     * @param res 出参
+     * @param value 判断同期/往期
      */
-    private void getActivateCodeNum(ReportReq reportReq, PackageCodeTypeRes res,Map<String,LocalDateTime> map) {
-        List<ListPackageCodeVo> activateList = reportServiceMapper.queryActivateCodeNum(reportReq);
-        ListPackageCodeVo vo=null;
-        if(!map.isEmpty()){
-            vo=reportServiceMapper.queryActivateCodeNumPast(map.get("beginDate"),map.get("endDate"));
-        }
-        for (int i = 0; i < activateList.size(); i++) {
-                if (QrTypeEnum.CARTON.getCode().equals(activateList.get(i).getQrType())) {
-                    res.setActivateBoxNumber(activateList.get(i).getQrNumber());
-                } else if (QrTypeEnum.CAP.getCode().equals(activateList.get(i).getQrType())) {
-                    res.setActivateCapNumber(activateList.get(i).getQrNumber());
-                }
-        }
-        if (!ObjectUtils.isEmpty(reportReq) && null !=reportReq.getValue()) {
-            //获取往期总数
-            long before=0;
-            if(!ObjectUtils.isEmpty(vo)){
-                before = vo.getQrNumber();
+    private void getActivateCodeNum(LocalDateTime beginDate,LocalDateTime endDate,PackageCodeTypeRes res,String value) {
+        ListPackageCodeVo activateEntity = reportServiceMapper.queryActivateCodeNum(beginDate,endDate);
+        //判断查询返回是否为空
+        if(!ObjectUtils.isEmpty(activateEntity)){
+            //判断同期还是往期
+            if("1".equals(value)){
+                res.setActivateBoxNumber(activateEntity.getQrBoxNumber());
+                res.setActivateCapNumber(activateEntity.getQrCapNumber());
             }else{
-                before=0;
+                long present=res.getActivateBoxNumber()+res.getActivateCapNumber();
+                long before=activateEntity.getQrBoxNumber()+activateEntity.getQrCapNumber();
+                String result = percentBigDecimal(present, before);
+                res.setActivatePercent(result);
             }
-            //获取同期码总数
-            int present = activateList.stream().mapToInt(x -> Math.toIntExact(x.getQrNumber())).sum();
-            //获取同比增长率
-            String result = percentBigDecimal(present, before);
-            res.setActivatePercent(result);
         }
+
     }
 
     /**
@@ -351,7 +312,7 @@ public class ReportServiceImpl implements ReportService {
      * @param before 往期数
      * @return
      */
-    public static String percentBigDecimal(int present, long before) {
+    public static String percentBigDecimal(long present, long before) {
         BigDecimal preNum = BigDecimal.valueOf(present);
         BigDecimal sufNum = BigDecimal.valueOf(before);
         double result = countDecimal(preNum, sufNum);

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

@@ -63,86 +63,38 @@
 
     <select id="queryPackageCodeNum" resultType="com.abi.qms.platform.dao.vo.result.ListPackageCodeVo">
         SELECT
-               qr_type qrType,
-               SUM(qr_number) qrNumber
-        FROM qr_package
-        <where>
-             generate_status = 2
-        AND  qr_type is not null
-        <if test="null != reportReq.beginTime and null != reportReq.endTime">
-            AND generate_time BETWEEN #{reportReq.beginTime} AND #{reportReq.endTime}
-        </if>
-            GROUP BY qr_type
-        </where>
-    </select>
-
-    <select id="queryPackageCodeNumPast" resultType="com.abi.qms.platform.dao.vo.result.ListPackageCodeVo">
-        SELECT
-        SUM(qr_number) qrNumber
-        FROM qr_package
+        IFNULL(SUM((IF(qr_type=1,qr_number,0))),0) qrBoxNumber,
+        IFNULL(SUM((IF(qr_type=2,qr_number,0))),0) qrCapNumber
+        FROM
+        qr_package
         <where>
-            generate_status = 2
-            <if test="null != beginDate and null !=endDate">
+            generate_status=2
+            <if test="null != beginDate and null != endDate and type==1">
                 AND generate_time BETWEEN #{beginDate} AND #{endDate}
             </if>
-        </where>
-    </select>
-
-    <select id="queryLoadPackageCodeNum" resultType="com.abi.qms.platform.dao.vo.result.ListPackageCodeVo">
-        SELECT package.qr_type qrType,
-               SUM(package.qr_number)qrNumber
-        FROM
-                  qr_package package
-        LEFT JOIN qr_package_download_record download ON package.id=download.qr_package_id
-        <where>
-            package.is_download='1' AND package.qr_type IS NOT NULL
-            <if test="null != reportReq.beginTime and null != reportReq.endTime">
-                AND download.create_time BETWEEN #{reportReq.beginTime} AND #{reportReq.endTime}
+            <if test="null != beginDate and null != endDate and type==2">
+                AND download_time BETWEEN #{beginDate} AND #{endDate}
             </if>
-            GROUP BY package.qr_type
-        </where>
-    </select>
-
-    <select id="queryLoadPackageCodeNumPast" resultType="com.abi.qms.platform.dao.vo.result.ListPackageCodeVo">
-        SELECT
-        SUM(package.qr_number)qrNumber
-        FROM
-        qr_package package
-        LEFT JOIN qr_package_download_record download ON package.id=download.qr_package_id
-        <where>
-            package.is_download='1'
-            <if test="null != beginDate and null !=endDate">
-                AND download.create_time BETWEEN #{beginDate} AND #{endDate}
+            <if test="null !=type and type==2">
+                AND is_download=1
             </if>
         </where>
     </select>
 
     <select id="queryActivateCodeNum" resultType="com.abi.qms.platform.dao.vo.result.ListPackageCodeVo">
         SELECT
-               package.qr_type qrType,
-               SUM(package.qr_number)qrNumber
-        FROM qr_package package
-            LEFT JOIN  qr_box_mapping boxmap ON package.id=boxmap.package_id
-        <where>
-            boxmap.active_status ='1' AND  package.qr_type IS NOT NULL
-            <if test="null != reportReq.beginTime and null != reportReq.endTime">
-                AND boxmap.active_time BETWEEN #{reportReq.beginTime} AND #{reportReq.endTime}
-            </if>
-            GROUP BY package.qr_type
-        </where>
-    </select>
-
-    <select id="queryActivateCodeNumPast" resultType="com.abi.qms.platform.dao.vo.result.ListPackageCodeVo">
-        SELECT
-        SUM(package.qr_number)qrNumber
+        IFNULL(SUM((IF(qr_type=1,package.qr_number,0))),0) qrBoxNumber,
+        IFNULL(SUM((IF(qr_type=2,package.qr_number,0))),0) qrCapNumber
         FROM qr_package package
         LEFT JOIN  qr_box_mapping boxmap ON package.id=boxmap.package_id
         <where>
-            boxmap.active_status ='1'
-            <if test=" null != beginDate and null !=endDate">
+            <if test="null != beginDate and null != endDate">
                 AND boxmap.active_time BETWEEN #{beginDate} AND #{endDate}
             </if>
+                AND  boxmap.active_status ='1'
         </where>
     </select>
 
+
+
 </mapper>