Преглед на файлове

提前保养,修改维保计划

别傲 преди 5 години
родител
ревизия
525c329cf8

+ 24 - 4
lift-business-service/src/main/java/cn/com/ty/lift/business/maintenance/dao/entity/model/request/MaintenanceRecordRequest.java

@@ -5,10 +5,7 @@ import cn.com.ty.lift.common.model.PageRequest;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import javax.validation.constraints.Min;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
+import javax.validation.constraints.*;
 import java.time.LocalDate;
 import java.util.List;
 
@@ -33,6 +30,20 @@ public class MaintenanceRecordRequest extends PageRequest {
     @Min(value = 1, message = "电梯ID有误")
     private Long liftId;
 
+    /**
+     * 项目ID
+     */
+    @NotNull(message = "项目ID不能为空")
+    @Min(value = 1, message = "项目ID有误")
+    private Long projectId;
+
+    /**
+     * 维保工ID
+     */
+    @NotNull(message = "维保工ID不能为空")
+    @Min(value = 1, message = "维保工ID有误")
+    private Long workerId;
+
     /**
      * 保养记录ID
      */
@@ -76,6 +87,15 @@ public class MaintenanceRecordRequest extends PageRequest {
      */
     private String currentRoleCode;
 
+    /**
+     * 期数 1-24
+     */
+    @NotNull(message = "期数不能为空")
+    @Min(value = 1, message = "期数最小值为1")
+    @Max(value = 24, message = "期数最大值为24")
+    private Integer periods;
+
+
     /**
      * 结束日期
      */

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

@@ -351,18 +351,21 @@ public class MaintenancePlanService extends ServiceImpl<MaintenancePlanMapper, M
     }
 
     /**
-     * @param request 当前时间
+     * @param currentTime 当前时间
+     * @param liftId 电梯id
+     * @param projectId 项目id
+     * @param mtCompanyId 公司id
      * @return List<MaintenancePlan> 维保计划列表
      * @description 查询当前时间之后的维保计划
      * @date 2020/1/7 2:40 下午
      */
-    public List<MaintenancePlan> findPlanList(MaintenancePlanRequest request){
+    public List<MaintenancePlan> findPlanList(Long liftId, Long projectId, Long mtCompanyId, LocalDate currentTime) {
         QueryWrapper<MaintenancePlan> queryWrapper = new QueryWrapper<>();
         LambdaQueryWrapper<MaintenancePlan> lambdaQueryWrapper = queryWrapper.lambda();
-        lambdaQueryWrapper.eq(MaintenancePlan::getLiftId, request.getLiftId());
-        lambdaQueryWrapper.eq(MaintenancePlan::getProjectId, request.getProjectId());
-        lambdaQueryWrapper.eq(MaintenancePlan::getMtCompanyId, request.getMtCompanyId());
-        lambdaQueryWrapper.ge(MaintenancePlan::getPlanDate, request.getCurrentTime());
+        lambdaQueryWrapper.eq(MaintenancePlan::getLiftId, liftId);
+        lambdaQueryWrapper.eq(MaintenancePlan::getProjectId, projectId);
+        lambdaQueryWrapper.eq(MaintenancePlan::getMtCompanyId, mtCompanyId);
+        lambdaQueryWrapper.ge(MaintenancePlan::getPlanDate, currentTime);
         return list(lambdaQueryWrapper);
     }
 
@@ -430,7 +433,7 @@ public class MaintenancePlanService extends ServiceImpl<MaintenancePlanMapper, M
         List<MaintenancePlan> plans = new ArrayList<>();
         if (isNotNull && ObjectUtil.isEmpty(updateInterval)) {
             //获取当前时间后的维保计划列表,并清除计划
-            planList = findPlanList(request);
+            planList = findPlanList(liftId, projectId, mtCompanyId, currentTime);
             removeByIds(planList.stream().map(MaintenancePlan::getId).collect(Collectors.toList()));
             //按照修改时间重新生成计划
             plans = generatePlan(plan, periods, interval, updateTime, endDate);

+ 54 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/maintenance/service/MaintenanceRecordService.java

@@ -16,6 +16,10 @@ import cn.com.ty.lift.business.maintenance.dao.entity.model.response.Maintenance
 import cn.com.ty.lift.business.maintenance.dao.entity.model.response.MaintenanceRecordResponse;
 import cn.com.ty.lift.business.maintenance.dao.entity.model.response.MtRecordResponse;
 import cn.com.ty.lift.business.maintenance.dao.mapper.MaintenanceRecordMapper;
+import cn.com.ty.lift.business.project.dao.entity.Project;
+import cn.com.ty.lift.business.project.dao.entity.ProjectLiftRelevance;
+import cn.com.ty.lift.business.project.service.ProjectLiftRelevanceService;
+import cn.com.ty.lift.business.project.service.ProjectService;
 import cn.com.ty.lift.common.constants.CommonEnum;
 import cn.com.ty.lift.common.utils.MapHelper;
 import cn.com.ty.lift.common.verify.VerifyUtils;
@@ -58,6 +62,8 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
     private MtRecordImgService     mtRecordImgService;
     private MaintenancePlanService maintenancePlanService;
     private EvaluationService      evaluationService;
+    private ProjectService         projectService;
+    private ProjectLiftRelevanceService projectLiftRelevanceService;
 
     private Gson gson;
 
@@ -117,6 +123,48 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
         return count(lambdaQueryWrapper) > 0;
     }
 
+    /**
+     * @param request 修改维保计划请求
+     * @return 是否修改成功
+     * @description 修改维保计划
+     * @date 2020/5/12 2:03 下午
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public boolean modifyPlan(MaintenanceRecordRequest request) {
+        //获取公司id
+        Long mtCompanyId = request.getMtCompanyId();
+        //获取电梯id
+        Long liftId = request.getLiftId();
+        //获取项目id
+        Long projectId = request.getProjectId();
+        //获取维保工id
+        Long workerId = request.getUserId();
+        MaintenancePlan plan = new MaintenancePlan();
+        plan.setProjectId(projectId);
+        plan.setMtCompanyId(mtCompanyId);
+        plan.setLiftId(liftId);
+        plan.setWorkerId(workerId);
+        Optional<Project> optional = projectService.getOne(projectId);
+        Project project = new Project();
+        if (optional.isPresent()) project = optional.get();
+        if (ObjectUtil.isEmpty(project)) return false;
+        LocalDate endDate = project.getEndDate();
+        //获取当前的保养时间
+        LocalDate currentTime = request.getCurrentTime();
+        //获取当前期数
+        Integer periods = request.getPeriods();
+        //获取当前电梯的保养间隔
+        ProjectLiftRelevance entry = projectLiftRelevanceService.getOne(mtCompanyId, liftId);
+        if (ObjectUtil.isEmpty(entry)) return false;
+        int interval = entry.getPlanInterval();
+        List<MaintenancePlan> planList = maintenancePlanService.findPlanList(liftId, projectId, mtCompanyId, currentTime);
+        //获取当前时间后的维保计划列表,并清除计划
+        removeByIds(planList.stream().map(MaintenancePlan::getId).collect(Collectors.toList()));
+        //按照修改时间重新生成计划
+        List<MaintenancePlan> plans = maintenancePlanService.generatePlan(plan, periods, interval, currentTime, endDate);
+        return maintenancePlanService.saveBatch(plans, plans.size());
+    }
+
     /**
      * @param request 保养单信息
      * @return 是否成功
@@ -170,6 +218,12 @@ public class MaintenanceRecordService extends ServiceImpl<MaintenanceRecordMappe
         } else {
             return RestResponse.fail(MessageUtils.get("msg.add.fail"));
         }
+        //若提前保养,需要修改维保计划
+        boolean modifyPlan = modifyPlan(request);
+        if (!modifyPlan){
+            rollback();
+            return RestResponse.fail(MessageUtils.get("msg.modify.fail"));
+        }
         return RestResponse.success(record.getId(), MessageUtils.get("msg.add.success"));
     }