瀏覽代碼

小程序-维保按月统计

黄远 5 年之前
父節點
當前提交
e83d4a7912

+ 11 - 0
lift-batch-service/src/main/java/cn/com/ty/lift/batch/applet/controller/MaintenanceDataStatisticsController.java

@@ -21,6 +21,17 @@ public class MaintenanceDataStatisticsController {
     @Resource
     private MaintenanceDataService maintenanceDataService;
 
+    /**
+     * @param commonRequest 年份
+     * @return
+     * @description 获取维保月份总览数据
+     * @date 2020/5/22 10:31 上午
+     */
+    @RequestMapping("/monthMaintenanceOverView")
+    public RestResponse monthMaintenanceOverView(@RequestBody CommonRequest commonRequest) {
+        return maintenanceDataService.monthMaintenanceOverView(commonRequest);
+    }
+
     /**
      * @param
      * @return

+ 8 - 0
lift-batch-service/src/main/java/cn/com/ty/lift/batch/applet/dao/mapper/MaintenanceDataMapper.java

@@ -20,4 +20,12 @@ public interface MaintenanceDataMapper {
      * @date 2020/2/4 1:54 下午
      */
     List<MaintenanceDataModel> getMaintenanceDataList(CommonRequest commonRequest);
+
+    /**
+     * @param commonRequest 请求数据
+     * @return 维保数据
+     * @description 获取本年度维保数据
+     * @date 2020/5/22 11:29 上午
+     */
+    List<MaintenanceDataModel> getMonthMaintenanceData(CommonRequest commonRequest);
 }

+ 51 - 17
lift-batch-service/src/main/java/cn/com/ty/lift/batch/applet/service/MaintenanceDataService.java

@@ -16,6 +16,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collector;
 import java.util.stream.Collectors;
 
 /**
@@ -110,13 +111,12 @@ public class MaintenanceDataService {
     private void setBeyondNum(MaintenanceOverViewResponse maintenanceOverViewResponse,
                               List<MaintenanceDataModel> maintenanceDataModelList) {
         //设置总超期数
-        long totalBeyondNum = maintenanceDataModelList.stream()
-                .filter(maintenanceDataModel -> {
-                    if (maintenanceDataModel.getStatus() != null) {
-                        return maintenanceDataModel.getStatus() == -1;
-                    }
-                    return false;
-                }).count();
+        long totalBeyondNum = maintenanceDataModelList.stream().filter(maintenanceDataModel -> {
+            if (maintenanceDataModel.getStatus() != null) {
+                return maintenanceDataModel.getStatus() == -1;
+            }
+            return false;
+        }).count();
         maintenanceOverViewResponse.setTotalBeyondNum(totalBeyondNum);
         //获取超期的维保记录
         List<MaintenanceDataModel> beyondMaintenanceDataModelList = maintenanceDataModelList.stream()
@@ -127,8 +127,6 @@ public class MaintenanceDataService {
                     return false;
                 }).collect(Collectors.toList());
         if (beyondMaintenanceDataModelList.size() > 0) {
-            //获取当前时间
-            LocalDate now = LocalDate.now();
             //设置超期类型
             setBeyondType(beyondMaintenanceDataModelList);
             //设置计划超期数
@@ -140,14 +138,12 @@ public class MaintenanceDataService {
                         return false;
                     }).count();
             //设置法规超期数
-            long lawBeyondNum = beyondMaintenanceDataModelList.stream()
-                    .filter(maintenanceDataModel -> {
-                        if (maintenanceDataModel.getBeyondType() != null) {
-                            return maintenanceDataModel.getBeyondType() == 2;
-                        }
-                        return false;
-                    })
-                    .count();
+            long lawBeyondNum = beyondMaintenanceDataModelList.stream().filter(maintenanceDataModel -> {
+                if (maintenanceDataModel.getBeyondType() != null) {
+                    return maintenanceDataModel.getBeyondType() == 2;
+                }
+                return false;
+            }).count();
             maintenanceOverViewResponse.setPlanBeyondNum(planBeyondNum);
             maintenanceOverViewResponse.setLawBeyondNum(lawBeyondNum);
         }
@@ -164,4 +160,42 @@ public class MaintenanceDataService {
             maintenanceDataModel.setBeyondType(1);
         });
     }
+
+    /**
+     * @param commonRequest 无
+     * @return 维保月份数据
+     * @description 获取每月维保数据
+     * @date 2020/5/22 10:41 上午
+     */
+    public RestResponse monthMaintenanceOverView(CommonRequest commonRequest) {
+        Map<Integer, Map<Integer, Long>> monthToMaintenance = DataStatisticsUtil.initMaintenanceNum();
+        DataStatisticsUtil.initCommonRequest(commonRequest);
+        List<MaintenanceDataModel> maintenanceDataModelList = maintenanceDataMapper.getMonthMaintenanceData(commonRequest);
+        if (maintenanceDataModelList != null && maintenanceDataModelList.size() > 0) {
+            //月份 -> 维保记录数据
+            Map<Integer, List<MaintenanceDataModel>> monthToMaintenanceData = maintenanceDataModelList.stream()
+                    .collect(Collectors.groupingBy(maintenanceDataModel ->
+                            DataStatisticsUtil.getMonth(maintenanceDataModel.getPlanDate())));
+            //封装数据
+            if (monthToMaintenanceData != null && monthToMaintenanceData.size() > 0) {
+                monthToMaintenance.keySet().forEach(month -> {
+                    Map<Integer, Long> statusToNum = monthToMaintenance.get(month);
+                    List<MaintenanceDataModel> maintenanceDataModels = monthToMaintenanceData.get(month);
+                    if (maintenanceDataModels != null && maintenanceDataModels.size() > 0) {
+                        statusToNum.put(0, (long) maintenanceDataModels.size());
+                        //维保完成的数据
+                        long maintenanceNum = maintenanceDataModels.stream().filter(maintenanceDataModel -> {
+                            if (maintenanceDataModel.getStatus() != null) {
+                                return maintenanceDataModel.getStatus() == 1;
+                            }
+                            return false;
+                        }).count();
+                        statusToNum.put(1, maintenanceNum);
+                    }
+                    monthToMaintenance.put(month, statusToNum);
+                });
+            }
+        }
+        return RestResponse.success(ProjectUtils.transReturnMapToStatisticsKVModel(monthToMaintenance));
+    }
 }

+ 47 - 39
lift-batch-service/src/main/java/cn/com/ty/lift/batch/applet/util/DataStatisticsUtil.java

@@ -3,6 +3,7 @@ package cn.com.ty.lift.batch.applet.util;
 import cn.com.ty.lift.batch.applet.constants.DataStatisticsConstants;
 import cn.com.ty.lift.batch.applet.dao.model.BaseDataModel;
 import cn.com.ty.lift.batch.applet.dao.model.request.CommonRequest;
+import cn.hutool.core.date.DatePattern;
 import com.google.common.collect.Maps;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -26,44 +27,6 @@ import java.util.stream.Collectors;
  */
 public class DataStatisticsUtil {
 
-    /**
-     * @param
-     * @return
-     * @description 将数据通过公司id分组并放入到redis中
-     * @date 2020/2/5 3:22 下午
-     */
-    public static void putStatisticsDataToRedis(List<? extends BaseDataModel> dataList, RedisTemplate redisTemplate,
-                                                String dataKey) {
-        Map<Long, ? extends List<? extends BaseDataModel>> mtCompanyIdToData = new HashMap<>();
-        if (dataList != null && dataList.size() > 0) {
-            //通过公司id对数据进行分组
-            mtCompanyIdToData = dataList.stream().collect(Collectors.groupingBy(baseDataModel -> {
-                if (baseDataModel.getMtCompanyId() != null) {
-                    return baseDataModel.getMtCompanyId();
-                }
-                return 123456789L;
-            }));
-        }
-        //存放缓存时间为1天
-        redisTemplate.opsForValue().set(dataKey, mtCompanyIdToData, 3L, TimeUnit.DAYS);
-    }
-
-    /**
-     * @param
-     * @return
-     * @description 获取当前公司的数据
-     * @date 2020/2/5 3:26 下午
-     */
-    public static List<? extends BaseDataModel> getStatisticsDataFromRedis(RedisTemplate redisTemplate, String dataKey,
-                                                                           Long mtCompanyId) {
-        Map<Long, ? extends List<? extends BaseDataModel>> mtCompanyIdToData =
-                (Map<Long, ? extends List<? extends BaseDataModel>>) redisTemplate.opsForValue().get(dataKey);
-        if (mtCompanyIdToData != null) {
-            return mtCompanyIdToData.get(mtCompanyId.toString());
-        }
-        return null;
-    }
-
     /**
      * @param
      * @return
@@ -114,7 +77,6 @@ public class DataStatisticsUtil {
 
     /**
      * @param localDateTime 时间数据
-     * @return
      * @description 获取时间的月份值(数字)
      * @date 2020/2/7 3:06 下午
      */
@@ -126,6 +88,19 @@ public class DataStatisticsUtil {
         return localDateTime.getMonthValue();
     }
 
+    /**
+     * @param localDate 时间数据
+     * @description 获取时间的月份值(数字)
+     * @date 2020/2/7 3:06 下午
+     */
+    public static int getMonth(LocalDate localDate) {
+        //为空返回0
+        if (localDate == null) {
+            return 0;
+        }
+        return localDate.getMonthValue();
+    }
+
     /**
      * @param afterTime  较大时间
      * @param beforeTime 较小时间
@@ -294,4 +269,37 @@ public class DataStatisticsUtil {
         }
         return null;
     }
+
+    /**
+     * @return 初始化 map
+     * @description 初始化map数据
+     * @date 2020/5/22 10:38 上午
+     */
+    public static Map<Integer, Map<Integer, Long>> initMaintenanceNum() {
+        Map<Integer, Map<Integer, Long>> monthToMaintenance = new HashMap<>();
+        int nowMonth = LocalDate.now().getMonthValue();
+        for (int month = 1; month <= nowMonth; month++) {
+            Map<Integer, Long> maintenanceStatusToNum = new HashMap<>();
+            //计划维保总数量
+            maintenanceStatusToNum.put(0, 0L);
+            //维保完成数量
+            maintenanceStatusToNum.put(1, 0L);
+            monthToMaintenance.put(month, maintenanceStatusToNum);
+        }
+        return monthToMaintenance;
+    }
+
+    /**
+     * @param commonRequest commonRequest
+     * @description 初始化时间 年初 - 当前时间
+     * @date 2020/5/22 11:24 上午
+     */
+    public static void initCommonRequest(CommonRequest commonRequest) {
+        //设置年初时间
+        String yearStartTime = getYearFirstTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN));
+        //设置当前时间
+        String nowEndTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN));
+        commonRequest.setStartTimeDateStr(yearStartTime);
+        commonRequest.setEndTimeDateStr(nowEndTime);
+    }
 }

+ 16 - 6
lift-batch-service/src/main/resources/mapper/MaintenanceDataMapper.xml

@@ -12,7 +12,6 @@
             mp.lift_id as liftId,
             mp.create_date as createDate,
             mp.work_date as finishDate,
-            mp.count as count,
             mp.status as status,
             plr.first_time as firstDate,
             p.project_name as projectName
@@ -26,15 +25,26 @@
             project p
         on
             mp.project_id = p.id
-        where
-            true
-        <if test = "mtCompanyId !=  null">
-            and mp.mt_company_id = #{mtCompanyId}
-        </if>
+        where mp.mt_company_id = #{mtCompanyId}
         and
             mp.plan_date <![CDATA[ >= ]]> #{startTimeDateStr}
         and
             mp.plan_date <![CDATA[ <= ]]> #{endTimeDateStr}
     </select>
 
+    <!-- 全年维保数据 -->
+    <select id="getMonthMaintenanceData" parameterType="cn.com.ty.lift.batch.applet.dao.model.request.CommonRequest"
+            resultType="cn.com.ty.lift.batch.applet.dao.model.MaintenanceDataModel">
+        select
+            mp.plan_date as planDate,
+            mp.status as status
+        from
+        maintenance_plan mp
+        where mp.mt_company_id = #{mtCompanyId}
+        and
+        mp.plan_date <![CDATA[ >= ]]> #{startTimeDateStr}
+        and
+        mp.plan_date <![CDATA[ <= ]]> #{endTimeDateStr}
+    </select>
+
 </mapper>

+ 1 - 1
lift-business-service/src/main/resources/application.yml

@@ -5,7 +5,7 @@ spring:
   application:
     name: lift-business-service
   profiles:
-    active: test
+    active: prod
   datasource:
     hikari:
       max-lifetime: 1200000 # default: 1800000