瀏覽代碼

作息变更安全检查逻辑优化

luojun 2 年之前
父節點
當前提交
6cfe6cbb03

+ 40 - 58
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/job/SafetyCheckJobBusiness.java

@@ -325,6 +325,8 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
                 //选择了具体的受检机构
                 List<Long> ids = checkOrg.stream().map(CoreSafecheckPlanToCheckOrg::getOrgId).collect(Collectors.toList());
                 checkOrgs = orgService.selectOrgByIdList(ids, SecurityConstants.INNER);
+                //保留检查机构下属机构
+                checkOrgs = checkOrgs.stream().filter(o -> o.getPath().startsWith(org.getPath())).collect(Collectors.toList());
             }
             checkOrgs = checkOrgs.stream().filter(o -> o.getIsLock() < 1).collect(Collectors.toList());
             //构建数据
@@ -477,10 +479,7 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
                 //如果存在同批次的已完成或者已逾期的任务需要同步批次id
                 checkTask.setBatchId(coreSafetyTasks.get(0).getBatchId());
             } else {
-                for (CoreSafetyTask t :
-                        coreSafetyTasks) {
-                    checkTaskService.removeById(t.getId());
-                }
+                checkTaskService.remove(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getOrgId, checkTask.getOrgId()).eq(CoreSafetyTask::getYmdDate, checkTask.getYmdDate()).in(CoreSafetyTask::getStatus, 1, 2));
                 ats.add(checkTask);
             }
 
@@ -685,72 +684,56 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
                 continue;
             } else {
                 //开始营业,重新生成任务
-                //拿到当前周期所有检查计划
-                List<CoreSafecheckPlan> plans = planMapper.selectByPlanStatus(1, planCycle);
-                Iterator<CoreSafecheckPlan> safecheckPlanIterator = plans.iterator();
-                //遍历计划
-                while (safecheckPlanIterator.hasNext()) {
-                    //拿到计划所属受检机构
-                    List<SysOrg> checkOrgList = safecheckPlanIterator.next().getCheckOrgList();
-//                    //如果检查机构数量为0表示未指定具体检查机构,默认当前计划拥有当前机构
-//                    if(checkOrgList.size()==0){
-//                        checkOrgList.add(worg);
-//                    }
-                    //过滤掉不等于当前作息变更机构的受检机构
-                    List<SysOrg> collect = checkOrgList.stream().filter(e -> e.getId().equals(orgId)).collect(Collectors.toList());
-                    //过滤完数组长度0表示没有受检机构等于作息变更机构的数据
-                    if (collect.size() == 0) {
-                        //移除当前计划
-                        safecheckPlanIterator.remove();
-                    } else
-                    //如果存在相等的受检机构,开始重新生成任务
-                    {
+                //获取当前机构的所属行社
+                List<Long> wids = new ArrayList();
+                wids.add(worg.getId());
+                List<SysOrg> orgs1 = remoteOrgService.selectParentHs(wids, SecurityConstants.INNER);
+                //拿到唯一行社
+                SysOrg ofhs = null;
+                Integer ofType = 0;
+                if (orgs1.size() > 0) {
+                    ofhs = orgs1.get(0);
+                    ofType = ofhs.getType();
+                    //拿到当前周期所有检查计划
+                    List<CoreSafecheckPlan> plans = planMapper.selectByPlanStatus(1, planCycle);
+                    Long fcheckOrgType = Long.valueOf(worg.getType());
+                    //过滤受检机构类型为作息变更机构类型的计划
+                    plans = plans.stream().filter(p -> p.getCheckOrgType().equals(fcheckOrgType)).collect(Collectors.toList());
+                    Integer fofOrgType = ofType;
+                    //过滤所属机构类型为作息变更机构所属行社的机构类型的计划
+                    plans = plans.stream().filter(p -> p.getPlanOfOrgType().equals(fofOrgType)).collect(Collectors.toList());
+                    //过滤所属机构为作息变更机构所属行社的机构的计划
+                    SysOrg fofOrgHs = ofhs;
+                    plans = plans.stream().filter(p -> p.getPlanOfOrgId().equals(fofOrgHs.getId())).collect(Collectors.toList());
+                    Iterator<CoreSafecheckPlan> safecheckPlanIterator = plans.iterator();
+                    //遍历计划
+                    while (safecheckPlanIterator.hasNext()) {
+                        //如果存在相等的受检机构,开始重新生成任务
                         CoreSafecheckPlan plan = safecheckPlanIterator.next();
                         List<PlanTaskBuildVo> list = new ArrayList<>();
-                        Integer execOrgType = Math.toIntExact(plan.getExecOrgType());
-                        Integer checkOrgType = Math.toIntExact(plan.getCheckOrgType());
-
-                        //获取具体执行检查的机构
-                        QueryWrapper<CoreSafecheckPlanToExecOrg> eos = new QueryWrapper<>();
-                        eos.lambda().eq(CoreSafecheckPlanToExecOrg::getPlanId, plan.getId());
-                        List<CoreSafecheckPlanToExecOrg> execOrg = planToExecOrgMapper.selectList(eos);
-
-                        //获取具体受检的机构
-                        QueryWrapper<CoreSafecheckPlanToCheckOrg> cos = new QueryWrapper<>();
-                        //变更点,只需要保留作息变更的受检机构
-                        cos.lambda().eq(CoreSafecheckPlanToCheckOrg::getPlanId, plan.getId()).eq(CoreSafecheckPlanToCheckOrg::getOrgId, orgId);
-                        List<CoreSafecheckPlanToCheckOrg> checkOrg = planToCheckOrgMapper.selectList(cos);
+                        List<CoreSafecheckPlanToExecOrg> execOrg = new ArrayList<>();
+                        List<CoreSafecheckPlanToCheckOrg> checkOrg = new ArrayList<>();
 
                         //获取执行角色
                         QueryWrapper<CoreSafecheckPlanToRole> ros = new QueryWrapper<>();
                         ros.lambda().eq(CoreSafecheckPlanToRole::getPlanId, plan.getId());
                         List<CoreSafecheckPlanToRole> roles = planToRoleMapper.selectList(ros);
-
                         List<SysOrg> execOrgs = null;
-                        SysOrg ownOrg = orgService.selectOrgById(plan.getPlanOfOrgId(), SecurityConstants.INNER);
-                        if (ObjectUtil.isEmpty(execOrg)) {
-                            //如果没有选择具体执行检查的机构,则根据执行机构类型查询
-                            execOrgs = orgService.findByOrgTypeAndParent(execOrgType, ownOrg.getPath(), SecurityConstants.INNER);
-                        } else {
-                            //选择了具体执行检查的机构
-                            List<Long> porgIds = execOrg.stream().map(CoreSafecheckPlanToExecOrg::getOrgId).collect(Collectors.toList());
-                            execOrgs = orgService.selectOrgByIdList(porgIds, SecurityConstants.INNER);
-                            execOrgs = execOrgs.stream().filter(o -> o.getPath().startsWith(ownOrg.getPath())).collect(Collectors.toList());
+                        //选择了具体执行检查的机构
+                        execOrgs = plan.getExecOrgList();
+                        //如果不存在具体的执行检查的机构就是指定类型,直接拿所属行社
+                        if (execOrgs.size() == 0) {
+                            execOrgs.add(ofhs);
                         }
-                        execOrgs = execOrgs.stream().filter(o -> o.getIsLock() < 1).collect(Collectors.toList());
-
                         //此处循环所有执行检查的机构
                         for (SysOrg org : execOrgs) {
                             List<SysOrg> checkOrgs = null;
-                            if (ObjectUtil.isEmpty(checkOrg)) {
-                                //如果没有选择具体受检的机构,则根据受检机构类型查询
-                                checkOrgs = orgService.findByOrgTypeAndParent(checkOrgType, org.getPath(), SecurityConstants.INNER);
-                            } else {
-                                //选择了具体的受检机构
-                                List<Long> ids = checkOrg.stream().map(CoreSafecheckPlanToCheckOrg::getOrgId).collect(Collectors.toList());
-                                checkOrgs = orgService.selectOrgByIdList(ids, SecurityConstants.INNER);
+                            //选择了具体的受检机构
+                            checkOrgs = plan.getCheckOrgList();
+                            //如果不存在具体的受检机构就是指定类型,直接拿作息变更的机构
+                            if (checkOrgs.size() == 0) {
+                                checkOrgs.add(worg);
                             }
-                            checkOrgs = checkOrgs.stream().filter(o -> o.getIsLock() < 1).collect(Collectors.toList());
                             //构建数据
                             List<PlanTaskBuildVo> bs = getBuild(plan, org, checkOrgs, roles);
                             list.addAll(bs);
@@ -766,7 +749,6 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
                     }
                 }
 
-
             }
 
         }