瀏覽代碼

修改项目结束时间,重新生成维保计划

别傲 4 年之前
父節點
當前提交
6ed97f9e5e

+ 7 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/maintenance/dao/entity/MaintenancePlan.java

@@ -2,6 +2,7 @@ package cn.com.ty.lift.business.maintenance.dao.entity;
 
 import cn.com.ty.lift.business.common.BaseEntity;
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -73,4 +74,10 @@ public class MaintenancePlan extends BaseEntity {
      * 是否按需维保(0:否 1:是)
      */
     private String demand;
+
+    /**
+     * 维保间隔
+     */
+    @TableField(exist = false)
+    private Integer planInterval;
 }

+ 10 - 3
lift-business-service/src/main/java/cn/com/ty/lift/business/maintenance/service/MaintenancePlanService.java

@@ -266,18 +266,25 @@ public class MaintenancePlanService extends ServiceImpl<MaintenancePlanMapper, M
     /**
      * @param mtCompanyId 公司id
      * @param projectId 项目id
-     * @param interval 维保间隔
+     * @param intervalMap 维保间隔map
      * @param endDate 项目结束时间
      * @return 是否成功
      * @description 修改项目结束时间生成维保计划
      * @date 2020/12/14 7:14 下午
      */
-    public boolean modifyProjectGeneratePlan(Long mtCompanyId, Long projectId, int interval, LocalDate endDate) {
+    public boolean modifyProjectGeneratePlan(Long mtCompanyId, Long projectId, Map<Long, Integer> intervalMap, LocalDate endDate) {
         List<MaintenancePlan> plans = baseMapper.queryMaxWorkDatePlanList(mtCompanyId, projectId);
         List<MaintenancePlan> planList = new ArrayList<>();
+        for (MaintenancePlan entry : plans) {
+            for (Map.Entry<Long, Integer> interval : intervalMap.entrySet()) {
+                if (entry.getLiftId().equals(interval.getKey())) {
+                    entry.setPlanInterval(interval.getValue());
+                }
+            }
+        }
         plans.forEach(plan -> {
             LocalDateTime workDate = plan.getWorkDate();
-            planList.addAll(generatePlan(plan, plan.getCount(), interval, workDate.toLocalDate(), endDate));
+            planList.addAll(generatePlan(plan, plan.getCount(), plan.getPlanInterval(), workDate.toLocalDate(), endDate));
         });
         return saveBatch(planList, planList.size());
     }

+ 6 - 5
lift-business-service/src/main/java/cn/com/ty/lift/business/project/service/ProjectService.java

@@ -486,17 +486,18 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
             //结束时间比最近一次维保记录晚的话,维保计划相应按照新结束时间往后推三个月
         } else {
             List<MaintenancePlan> planList = maintenancePlanService.queryLiftListByProjectId(projectId, mtCompanyId);
-            boolean result = maintenancePlanService.removeByIds(planList);
+            List<Long> idList = planList.stream().map(MaintenancePlan::getId).collect(Collectors.toList());
+            boolean result = maintenancePlanService.removeByIds(idList);
             if (!result)
                 return RestResponse.fail(MessageUtils.get("msg.delete.fail"));
             List<ProjectLiftRelevance> list = projectLiftRelevanceService.queryPlanInterval(projectId, mtCompanyId);
-            int planInterval = 0;
-            if (Objects.nonNull(list)) {
-                planInterval = list.get(0).getPlanInterval();
+            Map<Long, Integer> intervalMap = new HashMap<>();
+            for (ProjectLiftRelevance relevance : list) {
+                intervalMap.put(relevance.getLiftId(), relevance.getPlanInterval());
             }
             //项目结束时间默认增加三个月
             endDate = entry.getEndDate().plusMonths(3);
-            boolean ret = maintenancePlanService.modifyProjectGeneratePlan(mtCompanyId, projectId, planInterval, endDate);
+            boolean ret = maintenancePlanService.modifyProjectGeneratePlan(mtCompanyId, projectId, intervalMap, endDate);
             if (!ret)
                 return RestResponse.fail(MessageUtils.get("msg.add.fail"));
         }