Browse Source

安全检查逻辑变更

luojun 1 year ago
parent
commit
28519d0fed

+ 3 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/controller/CoreSafecheckPlanController.java

@@ -121,7 +121,7 @@ public class CoreSafecheckPlanController extends BaseController {
     @Log(title = "常规安全检查计划", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody CoreSafecheckPlan coreSafecheckPlan) throws Exception {
-
+        Integer hasEdit = coreSafecheckPlan.getHasEdit();
         Long planId = coreSafecheckPlan.getId();
         //处理无周期
         if (coreSafecheckPlan.getPlanCycle() == 6) {
@@ -131,11 +131,11 @@ public class CoreSafecheckPlanController extends BaseController {
         //如果编辑需要处理子计划
         if (planId != null) {
             coreSafecheckPlan = coreSafecheckPlanService.getById(planId);
+            coreSafecheckPlan.setHasEdit(hasEdit);
             coreSafecheckPlanService.childrenPlan(planId);
         }
         //判断是否是编辑并且计划所属任务不存在已完成或者逾期,需要删除所有任务重新生成
-        boolean isEditAll = coreSafecheckPlan.getHasEdit() == null && planId != null && coreSafecheckPlan.isBuildTaskNow();
-        //如果是新增计划并且勾选立即执行并且是行社或者无周期,立即生成计划
+        boolean isEditAll = hasEdit == null && planId != null ;
         if (isEditAll&&coreSafecheckPlan.getPlanStatus()==1L) {
             CoreSafecheckPlan plan = coreSafecheckPlanService.getById(returnId);
             //获取父计划下面所有父id相等并且未删除并且已启用的计划

+ 36 - 20
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafecheckPlanServiceImpl.java

@@ -85,6 +85,7 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
     private RemoteFileService fileService;
     @Autowired
     private CoreSafecheckPlanToCheckOrgTypeMapper coreSafecheckPlanToCheckOrgTypeMapper;
+
     @Override
     public TableDataInfo<CoreSafecheckPlan> selectPage(CoreSafecheckPlan coreSafecheckPlan) {
         //未删除
@@ -192,12 +193,12 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
                 }
                 //再处理受检机构类型
                 List<CoreSafecheckPlanToCheckOrgType> checkOrgTypes = coreSafecheckPlanToCheckOrgTypeMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrgType>().eq(CoreSafecheckPlanToCheckOrgType::getPlanId, dto.getId()));
-                if(checkOrgTypes!=null){
+                if (checkOrgTypes != null) {
                     //删除当前计划的受检机构类型
                     coreSafecheckPlanToCheckOrgTypeMapper.delete(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrgType>().eq(CoreSafecheckPlanToCheckOrgType::getPlanId, coreSafecheckPlan.getId()));
                     for (CoreSafecheckPlanToCheckOrgType type :
                             checkOrgTypes) {
-                        coreSafecheckPlanToCheckOrgTypeMapper.insert(new CoreSafecheckPlanToCheckOrgType(coreSafecheckPlan.getId(),type.getTypeId()));
+                        coreSafecheckPlanToCheckOrgTypeMapper.insert(new CoreSafecheckPlanToCheckOrgType(coreSafecheckPlan.getId(), type.getTypeId()));
                     }
                 }
                 //再处理检查要点关系
@@ -230,6 +231,11 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
         CoreSafecheckPlan plan = baseMapper.selectById(id);
         //修改所有子计划
         List<CoreSafecheckPlan> appPlans = baseMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlan>().eq(CoreSafecheckPlan::getParentId, id));
+        List<Long> planIds = appPlans.stream().map(CoreSafecheckPlan::getId).collect(Collectors.toList());
+        planIds.add(id);
+        //拿到父计划和所属子计划是否存在已完成
+        Long hasEdit = coreSafetyTaskMapper.selectCount(new LambdaQueryWrapper<CoreSafetyTask>().in(CoreSafetyTask::getPlanId, planIds).in(CoreSafetyTask::getStatus, 3, 4));
+
         for (CoreSafecheckPlan ap :
                 appPlans) {
 //修改计划状态为停用
@@ -243,12 +249,14 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
                 code = CycleCommonEnum.getEnum(Math.toIntExact(plan.getPlanCycle()) + 2);
                 dateRange = DateUtils.getStartAndEnd(new Date(), code);
             }
-            //撤回需要删除本周期所有任务
+            //如果不存在已完成撤回需要删除本周期所有任务
 
             if (plan.getPlanCycle() == 6L) {
                 coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, ap.getId()).between(CoreSafetyTask::getYmdDate, dateRange.getStartTime(), dateRange.getEndTime()));
             } else {
-                coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, ap.getId()).in(CoreSafetyTask::getStatus, 1, 2).between(CoreSafetyTask::getYmdDate, dateRange.getStartTime(), dateRange.getEndTime()));
+                if (hasEdit == 0) {
+                    coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, ap.getId()).in(CoreSafetyTask::getStatus, 1, 2).between(CoreSafetyTask::getYmdDate, dateRange.getStartTime(), dateRange.getEndTime()));
+                }
             }
         }
         //设置下发状态为未下发
@@ -266,8 +274,9 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
         if (plan.getPlanCycle() == 6L) {
             coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, plan.getId()).between(CoreSafetyTask::getYmdDate, dateRange.getStartTime(), dateRange.getEndTime()));
         } else {
-            coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, plan.getId()).in(CoreSafetyTask::getStatus, 1, 2).between(CoreSafetyTask::getYmdDate, dateRange.getStartTime(), dateRange.getEndTime()));
-
+            if (hasEdit == 0) {
+                coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, plan.getId()).in(CoreSafetyTask::getStatus, 1, 2).between(CoreSafetyTask::getYmdDate, dateRange.getStartTime(), dateRange.getEndTime()));
+            }
         }
     }
 
@@ -413,12 +422,12 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
             }
         }
         //再处理受检机构类型
-        if(coreSafecheckPlan.getCheckOrgTypes()!=null){
+        if (coreSafecheckPlan.getCheckOrgTypes() != null) {
             //删除当前计划的受检机构类型
             coreSafecheckPlanToCheckOrgTypeMapper.delete(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrgType>().eq(CoreSafecheckPlanToCheckOrgType::getPlanId, coreSafecheckPlan.getId()));
             for (Integer type :
                     coreSafecheckPlan.getCheckOrgTypes()) {
-                coreSafecheckPlanToCheckOrgTypeMapper.insert(new CoreSafecheckPlanToCheckOrgType(coreSafecheckPlan.getId(),type));
+                coreSafecheckPlanToCheckOrgTypeMapper.insert(new CoreSafecheckPlanToCheckOrgType(coreSafecheckPlan.getId(), type));
             }
         }
 
@@ -428,10 +437,15 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
 
     @Async
     @Override
+    @Transactional(rollbackFor = RuntimeException.class)
     public void childrenPlan(Long id) {
         //处理子计划
         //拿到所有子计划
         List<CoreSafecheckPlan> children = baseMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlan>().eq(CoreSafecheckPlan::getParentId, id));
+        List<Long> planIds = children.stream().map(CoreSafecheckPlan::getId).collect(Collectors.toList());
+        planIds.add(id);
+        Long hasEdit = coreSafetyTaskMapper.selectCount(new LambdaQueryWrapper<CoreSafetyTask>().in(CoreSafetyTask::getPlanId, planIds).in(CoreSafetyTask::getStatus, 3, 4));
+
         CoreSafecheckPlan coreSafecheckPlan = baseMapper.selectById(id);
         for (CoreSafecheckPlan p :
                 children) {
@@ -485,12 +499,12 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
             }
             //再处理受检机构类型
             List<CoreSafecheckPlanToCheckOrgType> checkOrgTypes = coreSafecheckPlanToCheckOrgTypeMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrgType>().eq(CoreSafecheckPlanToCheckOrgType::getPlanId, coreSafecheckPlan.getId()));
-            if(checkOrgTypes!=null){
+            if (checkOrgTypes != null) {
                 //删除当前计划的受检机构类型
                 coreSafecheckPlanToCheckOrgTypeMapper.delete(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrgType>().eq(CoreSafecheckPlanToCheckOrgType::getPlanId, p.getId()));
                 for (CoreSafecheckPlanToCheckOrgType type :
                         checkOrgTypes) {
-                    coreSafecheckPlanToCheckOrgTypeMapper.insert(new CoreSafecheckPlanToCheckOrgType(p.getId(),type.getTypeId()));
+                    coreSafecheckPlanToCheckOrgTypeMapper.insert(new CoreSafecheckPlanToCheckOrgType(p.getId(), type.getTypeId()));
                 }
             }
             //再处理子计划检查要点关系
@@ -504,25 +518,27 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
 
                 }
             }
+
             //如果计划是编辑全部,代表不存在已完成或者逾期的任务,需要删除重新生成
-            if (coreSafecheckPlan.getHasEdit() == null && coreSafecheckPlan.isBuildTaskNow() && coreSafecheckPlan.getPlanStatus() == 1) {
+            if (hasEdit == 0 && p.getPlanStatus() == 1) {
                 coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, p.getId()).in(CoreSafetyTask::getStatus, 1, 2));
             } else {
                 //否则代表编辑名称,需要同步未进行的任务名称
-                CoreSafetyTask temp = new CoreSafetyTask();
-                temp.setTitle(coreSafecheckPlan.getPlanName());
-                coreSafetyTaskMapper.update(temp, new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, p.getId()).in(CoreSafetyTask::getStatus, 1, 2));
+//                CoreSafetyTask temp = new CoreSafetyTask();
+//                temp.setTitle(coreSafecheckPlan.getPlanName());
+//                coreSafetyTaskMapper.update(temp, new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, p.getId()).in(CoreSafetyTask::getStatus, 1, 2));
 
             }
         }
+
         //如果计划是编辑全部,代表不存在已完成或者逾期的任务,需要删除重新生成
-        if (coreSafecheckPlan.getHasEdit() == null && coreSafecheckPlan.isBuildTaskNow() && coreSafecheckPlan.getPlanStatus() == 1) {
+        if (hasEdit == 0 && coreSafecheckPlan.getPlanStatus() == 1) {
             coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, coreSafecheckPlan.getId()).in(CoreSafetyTask::getStatus, 1, 2));
         } else {
             //否则代表编辑名称,需要同步未进行的任务名称
-            CoreSafetyTask temp = new CoreSafetyTask();
-            temp.setTitle(coreSafecheckPlan.getPlanName());
-            coreSafetyTaskMapper.update(temp, new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, coreSafecheckPlan.getId()).in(CoreSafetyTask::getStatus, 1, 2));
+//            CoreSafetyTask temp = new CoreSafetyTask();
+//            temp.setTitle(coreSafecheckPlan.getPlanName());
+//            coreSafetyTaskMapper.update(temp, new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, coreSafecheckPlan.getId()).in(CoreSafetyTask::getStatus, 1, 2));
 
         }
     }
@@ -625,7 +641,7 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
         //registerBookPdf.setFileName(StringUtils.substringAfterLast(url, "\\"));
         registerBookPdf.setFileName(StringUtils.substringAfterLast(url, "/"));
         registerBookPdf.setOrgName(registerBookVo.getOrgName());
-        if(StringUtils.isEmpty(url)||StringUtils.isEmpty(registerBookPdf.getFileName())){
+        if (StringUtils.isEmpty(url) || StringUtils.isEmpty(registerBookPdf.getFileName())) {
             throw new SystemException(ErrorMsgConstants.GENERATE_PDF_ERROR);
         }
         registerBookPdfService.save(registerBookPdf);
@@ -659,7 +675,7 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
     private String buildSafeCheckPdfData(SafeCheckTaskRegisterBookVo data) {
 
         String fileOrgName = registerBookPdfService.getFileOrgName(data.getOrgId());
-        String fileName = fileOrgName + "_" + RegisterBookType.SAFE_CHECK_REPORT.getText()+ "_" + DateUtil.format(new Date(), "yyyyMMddHHmmss") + ".pdf";
+        String fileName = fileOrgName + "_" + RegisterBookType.SAFE_CHECK_REPORT.getText() + "_" + DateUtil.format(new Date(), "yyyyMMddHHmmss") + ".pdf";
 
         data.setDest(fileName);
         //新方式生成pdf

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetybook/service/impl/CoreSafetyBookServiceImpl.java

@@ -72,6 +72,10 @@ public class CoreSafetyBookServiceImpl extends ServiceImpl<CoreSafetyBookMapper,
             coreSafetyBook.setUpdateBy(SecurityUtils.getUserId().toString());
             baseMapper.updateById(coreSafetyBook);
         } else {
+            Long count = baseMapper.selectCount(new LambdaQueryWrapper<CoreSafetyBook>().eq(CoreSafetyBook::getOrgId, coreSafetyBook.getOrgId()).eq(CoreSafetyBook::getType, coreSafetyBook.getType()).eq(CoreSafetyBook::getYear, coreSafetyBook.getYear()));
+            if (count>0){
+                throw new RuntimeException("指定机构已存在当前年度相同类型责任书!");
+            }
             //新增
             coreSafetyBook.setCreateTime(new Date());
             coreSafetyBook.setCreateBy(String.valueOf(SecurityUtils.getUserId()));