别傲 5 лет назад
Родитель
Сommit
04da4fe064

+ 20 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/maintenance/dao/entity/model/MaintenanceCount.java

@@ -0,0 +1,20 @@
+package cn.com.ty.lift.business.maintenance.dao.entity.model;
+
+import lombok.Data;
+
+import java.time.LocalDate;
+
+/**
+ * @author bieao
+ * @date 2020/4/30
+ * @description
+ */
+@Data
+public class MaintenanceCount {
+
+    private LocalDate planDate;
+    private long waitingMaintenance;
+    private long inProgress;
+    private long overdue;
+    private long complete;
+}

+ 2 - 1
lift-business-service/src/main/java/cn/com/ty/lift/business/maintenance/dao/mapper/MaintenancePlanMapper.java

@@ -1,6 +1,7 @@
 package cn.com.ty.lift.business.maintenance.dao.mapper;
 
 import cn.com.ty.lift.business.maintenance.dao.entity.MaintenancePlan;
+import cn.com.ty.lift.business.maintenance.dao.entity.model.MaintenanceCount;
 import cn.com.ty.lift.business.maintenance.dao.entity.model.request.MaintenancePlanRequest;
 import cn.com.ty.lift.business.maintenance.dao.entity.model.request.MaintenanceRecordRequest;
 import cn.com.ty.lift.business.maintenance.dao.entity.model.request.MtPlanRequest;
@@ -37,7 +38,7 @@ public interface MaintenancePlanMapper extends BaseMapper<MaintenancePlan> {
      * @description 根据用户id查询保养任务列表
      * @date 2020/4/24 5:03 下午
      */
-    List<MaintenanceAppResponse> countPlanByWorkerId( @Param("request") MaintenanceRecordRequest request);
+    List<MaintenanceCount> countPlanByWorkerId(@Param("request") MaintenanceRecordRequest request);
 
     IPage<MtPlanResponse> pagePlanByCondition(IPage<MtPlanResponse> page, @Param("cond") MtPlanRequest request);
 

+ 2 - 1
lift-business-service/src/main/java/cn/com/ty/lift/business/maintenance/dao/mapper/MaintenanceRecordMapper.java

@@ -3,6 +3,7 @@ package cn.com.ty.lift.business.maintenance.dao.mapper;
 
 import cn.com.ty.lift.business.common.CommonRequest;
 import cn.com.ty.lift.business.maintenance.dao.entity.MaintenanceRecord;
+import cn.com.ty.lift.business.maintenance.dao.entity.model.MaintenanceCount;
 import cn.com.ty.lift.business.maintenance.dao.entity.model.request.MaintenanceRecordRequest;
 import cn.com.ty.lift.business.maintenance.dao.entity.model.request.MtRecordRequest;
 import cn.com.ty.lift.business.maintenance.dao.entity.model.request.ScanRecordRequest;
@@ -42,7 +43,7 @@ public interface MaintenanceRecordMapper extends BaseMapper<MaintenanceRecord> {
      * @description 根据用户id查询保养任务列表
      * @date 2020/4/24 5:03 下午
      */
-    List<MaintenanceAppResponse> countRecordByWorkerId( @Param("request") MaintenanceRecordRequest request);
+    List<MaintenanceCount> countRecordByWorkerId(@Param("request") MaintenanceRecordRequest request);
 
     /**
      * 根据电梯id和维保状态是完成的查询保养任务列表

+ 2 - 1
lift-business-service/src/main/java/cn/com/ty/lift/business/project/controller/ProjectAppController.java

@@ -6,6 +6,7 @@ import cn.com.ty.lift.business.capital.service.SignInService;
 import cn.com.ty.lift.business.framework.util.MessageUtils;
 import cn.com.ty.lift.business.library.dao.entity.model.request.LiftExtensionRequest;
 import cn.com.ty.lift.business.maintenance.dao.entity.MaintenanceRecord;
+import cn.com.ty.lift.business.maintenance.dao.entity.model.MaintenanceCount;
 import cn.com.ty.lift.business.maintenance.dao.entity.model.request.MaintenanceRecordRequest;
 import cn.com.ty.lift.business.maintenance.dao.entity.model.response.MaintenanceAppResponse;
 import cn.com.ty.lift.business.maintenance.dao.entity.model.response.MaintenanceRecordResponse;
@@ -185,7 +186,7 @@ public class ProjectAppController {
     @PostMapping("maintenance/count")
     @Validation(fields = {"mtCompanyId", "userId", "beginTime"})
     public RestResponse count(@Val @RequestBody MaintenanceRecordRequest request) {
-        Map<String, Long> result = projectAppService.count(request);
+        List<MaintenanceCount> result = projectAppService.count(request);
         return RestResponse.success(result, MessageUtils.get("msg.query.success"));
     }
 

+ 28 - 22
lift-business-service/src/main/java/cn/com/ty/lift/business/project/service/ProjectAppService.java

@@ -6,6 +6,7 @@ import cn.com.ty.lift.business.framework.util.MessageUtils;
 import cn.com.ty.lift.business.library.dao.entity.Lift;
 import cn.com.ty.lift.business.library.dao.entity.model.request.LiftExtensionRequest;
 import cn.com.ty.lift.business.library.service.LiftService;
+import cn.com.ty.lift.business.maintenance.dao.entity.model.MaintenanceCount;
 import cn.com.ty.lift.business.maintenance.dao.entity.model.request.MaintenanceRecordRequest;
 import cn.com.ty.lift.business.maintenance.dao.entity.model.response.MaintenanceAppResponse;
 import cn.com.ty.lift.business.maintenance.dao.mapper.MaintenancePlanMapper;
@@ -19,7 +20,6 @@ import cn.com.ty.lift.business.project.dao.entity.model.response.ProjectLiftResp
 import cn.com.ty.lift.business.project.dao.entity.model.response.ProjectUserResponse;
 import cn.com.ty.lift.business.project.dao.mapper.ProjectMapper;
 import cn.com.ty.lift.business.project.dao.mapper.ProjectUserMapper;
-import cn.com.ty.lift.common.constants.CommonEnum;
 import cn.com.xwy.boot.web.dto.RestResponse;
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -29,6 +29,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.time.LocalDate;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -127,32 +128,37 @@ public class ProjectAppService extends ServiceImpl<ProjectMapper, Project> {
      * @description 保养任务日历统计
      * @date 2020/4/30 2:15 下午
      */
-    public Map<String, Long> count(MaintenanceRecordRequest request) {
+    public List<MaintenanceCount> count(MaintenanceRecordRequest request) {
         request.setEndTime(request.getBeginTime().with(TemporalAdjusters.lastDayOfMonth()));
         //总经理查询所有保养任务
         if (DefaultRole.HIGH_DIRECTOR.getCode().equals(request.getCurrentRoleCode())) {
             request.setUserId(null);
         }
-        List<MaintenanceAppResponse> planCountResult = maintenancePlanMapper.countPlanByWorkerId(request);
-        //统计待保养、超期的任务
-        Map<String, Long> planCollect = planCountResult.stream().collect(Collectors.groupingBy(MaintenanceAppResponse::getStatus, Collectors.counting()));
-
-        Long waitingMaintenance = planCollect.get(MaintenancePlanStatus.WAITING_MAINTENANCE.getCode());
-        Long overdue = planCollect.get(MaintenancePlanStatus.OVERDUE.getCode());
-
-        List<MaintenanceAppResponse> recordCountResult = maintenanceRecordMapper.countRecordByWorkerId(request);
-        //统计保养中、保养完成任务
-        Map<String, Long> recordCollect = recordCountResult.stream().collect(Collectors.groupingBy(MaintenanceAppResponse::getStatus, Collectors.counting()));
-
-        Long inProgress = recordCollect.get(MaintenanceRecordStatus.MAINTENANCE_DOING.getCode());
-        Long complete = recordCollect.get(MaintenanceRecordStatus.COMPLETE.getCode());
-
-        Map<String, Long> countMap = new HashMap<>();
-        countMap.put("inProgress", inProgress == null ? 0 : inProgress);
-        countMap.put("complete", complete == null ? 0 : complete);
-        countMap.put("overdue", overdue == null ? 0 : overdue);
-        countMap.put("waitingMaintenance", waitingMaintenance == null ? 0 : waitingMaintenance);
-        return countMap;
+        List<MaintenanceCount> planCountResult = maintenancePlanMapper.countPlanByWorkerId(request);
+        Set<LocalDate> set = planCountResult.stream().map(MaintenanceCount::getPlanDate).collect(Collectors.toSet());
+
+        List<MaintenanceCount> recordCountResult = maintenanceRecordMapper.countRecordByWorkerId(request);
+        List<LocalDate> recordDateList = recordCountResult.stream().map(MaintenanceCount::getPlanDate).collect(Collectors.toList());
+        set.addAll(recordDateList);
+
+        List<MaintenanceCount> resultList = new ArrayList<>();
+        for (LocalDate entry : set) {
+            MaintenanceCount count = new MaintenanceCount();
+            count.setPlanDate(entry);
+            Optional<MaintenanceCount> plan = planCountResult.stream().filter(maintenanceCount -> maintenanceCount.getPlanDate().equals(entry)).findFirst();
+            plan.ifPresent(p -> {
+                count.setWaitingMaintenance(p.getWaitingMaintenance());
+                count.setOverdue(p.getOverdue());
+            });
+
+            Optional<MaintenanceCount> record = recordCountResult.stream().filter(maintenanceCount -> maintenanceCount.getPlanDate().equals(entry)).findFirst();
+            record.ifPresent(r -> {
+                count.setInProgress(r.getInProgress());
+                count.setComplete(r.getComplete());
+            });
+            resultList.add(count);
+        }
+        return resultList;
     }
 
     /**

+ 16 - 6
lift-business-service/src/main/resources/mapper/maintenance/MaintenancePlanMapper.xml

@@ -145,14 +145,20 @@
 	</select>
 
 	<!--app端 保养任务列表 (0:待保养、-1:超期) -->
-	<select id="countPlanByWorkerId" resultType="cn.com.ty.lift.business.maintenance.dao.entity.model.response.MaintenanceAppResponse"
+	<select id="countPlanByWorkerId" resultType="cn.com.ty.lift.business.maintenance.dao.entity.model.MaintenanceCount"
 			parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MaintenanceRecordRequest">
-		SELECT mp.status
+		SELECT t.plan_date,
+			MAX(CASE t.status WHEN '0' THEN t.total ELSE 0 END) waitingMaintenance,
+			MAX(CASE t.status WHEN '-1' THEN t.total ELSE 0 END) overdue
+		FROM (
+			SELECT mp.status,
+				   mp.plan_date,
+				  count(1) total
 		FROM maintenance_plan mp
-		LEFT JOIN project p ON mp.project_id = p.id
-		LEFT JOIN project_user pu ON p.id = pu.project_id
-		LEFT JOIN lift l ON mp.lift_id = l.id
-		LEFT JOIN user_info ui ON mp.worker_id = ui.user_id
+				LEFT JOIN project p ON mp.project_id = p.id
+				LEFT JOIN project_user pu ON p.id = pu.project_id
+				LEFT JOIN lift l ON mp.lift_id = l.id
+				LEFT JOIN user_info ui ON mp.worker_id = ui.user_id
 		WHERE mp.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
 		<if test="request.userId!=null">
 			AND pu.user_id = #{request.userId,jdbcType=BIGINT}
@@ -163,6 +169,10 @@
 		<if test="request.endTime!=null">
 			AND <![CDATA[ mp.plan_date <= #{request.endTime}]]>
 		</if>
+		GROUP BY plan_date,
+		status
+		) t
+		GROUP BY t.plan_date
 	</select>
 
 	<!--日常保养-计划超期:根据条件分页查询-->

+ 14 - 3
lift-business-service/src/main/resources/mapper/maintenance/MaintenanceRecordMapper.xml

@@ -141,11 +141,18 @@
 	</select>
 
     <!--app端 保养任务列表 (1:保养中、2:已完成) -->
-    <select id="countRecordByWorkerId" resultType="cn.com.ty.lift.business.maintenance.dao.entity.model.response.MaintenanceAppResponse"
+    <select id="countRecordByWorkerId" resultType="cn.com.ty.lift.business.maintenance.dao.entity.model.MaintenanceCount"
             parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MaintenanceRecordRequest">
-        SELECT mr.status
-            FROM maintenance_record mr
+        SELECT  t.plan_date,
+                MAX(CASE t.status WHEN '1' THEN t.total ELSE 0 END) inProgress,
+                MAX(CASE t.status WHEN '2' THEN t.total ELSE 0 END) complete
+        FROM (
+            SELECT mr.status,
+                  mr.plan_date,
+                 count(1) total
+        FROM maintenance_record mr
                 LEFT JOIN project p ON mr.project_id = p.id
+                LEFT JOIN project_user pu ON p.id = pu.project_id
                 LEFT JOIN lift l ON mr.lift_id = l.id
                 LEFT JOIN user_info ui ON mr.worker_id = ui.user_id
         WHERE mr.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
@@ -158,6 +165,10 @@
         <if test="request.endTime!=null">
             AND <![CDATA[ mr.plan_date <= #{request.endTime}]]>
         </if>
+        GROUP BY plan_date,
+        status
+        ) t
+        GROUP BY t.plan_date
     </select>
 
     <select id="findRecordByLiftId"