|  | @@ -468,8 +468,19 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
 | 
											
												
													
														|  |                  hashMap.put(checkTask.getCheckOrgId(), batchId);
 |  |                  hashMap.put(checkTask.getCheckOrgId(), batchId);
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |              checkTask.setBatchId(batchId);
 |  |              checkTask.setBatchId(batchId);
 | 
											
												
													
														|  | 
 |  | +            //变更,如果当前机构当前YmdDate已存在已完成或者已逾期的任务则跳过,否则删除
 | 
											
												
													
														|  | 
 |  | +            List<CoreSafetyTask> coreSafetyTasks = checkTaskService.list(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getOrgId, checkTask.getOrgId()).eq(CoreSafetyTask::getYmdDate, checkTask.getYmdDate()).in(CoreSafetyTask::getStatus, 3, 4));
 | 
											
												
													
														|  | 
 |  | +            if (coreSafetyTasks.size() > 0) {
 | 
											
												
													
														|  | 
 |  | +                //如果存在同批次的已完成或者已逾期的任务需要同步批次id
 | 
											
												
													
														|  | 
 |  | +                checkTask.setBatchId(coreSafetyTasks.get(0).getBatchId());
 | 
											
												
													
														|  | 
 |  | +            } else {
 | 
											
												
													
														|  | 
 |  | +                for (CoreSafetyTask t :
 | 
											
												
													
														|  | 
 |  | +                        coreSafetyTasks) {
 | 
											
												
													
														|  | 
 |  | +                    checkTaskService.removeById(t.getId());
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +                ats.add(checkTask);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -            ats.add(checkTask);
 |  | 
 | 
											
												
													
														|  |              if (ats.size() == 200) {
 |  |              if (ats.size() == 200) {
 | 
											
												
													
														|  |                  checkTaskService.saveBatch(ats);
 |  |                  checkTaskService.saveBatch(ats);
 | 
											
												
													
														|  |                  ats = new ArrayList<>();
 |  |                  ats = new ArrayList<>();
 | 
											
										
											
												
													
														|  | @@ -638,18 +649,95 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
 | 
											
												
													
														|  |  //        List<Long> deleteTaskIds = new ArrayList<>();
 |  |  //        List<Long> deleteTaskIds = new ArrayList<>();
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          List<SysOrg> orgs = remoteOrgService.selectByOrgIdList(orgIds, SecurityConstants.INNER);
 |  |          List<SysOrg> orgs = remoteOrgService.selectByOrgIdList(orgIds, SecurityConstants.INNER);
 | 
											
												
													
														|  | -        for (SysOrg org : orgs) {
 |  | 
 | 
											
												
													
														|  | -            if (ObjectUtil.isNull(org.getType())) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +        for (SysOrg worg : orgs) {
 | 
											
												
													
														|  | 
 |  | +            if (ObjectUtil.isNull(worg.getType())) {
 | 
											
												
													
														|  |                  continue;
 |  |                  continue;
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -            Long orgId = org.getId();
 |  | 
 | 
											
												
													
														|  | 
 |  | +            Long orgId = worg.getId();
 | 
											
												
													
														|  |              if (!workingMap.containsKey(orgId) || !workingMap.get(orgId)) {
 |  |              if (!workingMap.containsKey(orgId) || !workingMap.get(orgId)) {
 | 
											
												
													
														|  |                  //当前作息周期已经歇业,删除未进行的任务
 |  |                  //当前作息周期已经歇业,删除未进行的任务
 | 
											
												
													
														|  |                  checkTaskService.deleteByOrgIdAndRange(orgId, startDate, endDate);
 |  |                  checkTaskService.deleteByOrgIdAndRange(orgId, startDate, endDate);
 | 
											
												
													
														|  |                  continue;
 |  |                  continue;
 | 
											
												
													
														|  | -            }else{
 |  | 
 | 
											
												
													
														|  | 
 |  | +            } else {
 | 
											
												
													
														|  |                  //开始营业,重新生成任务
 |  |                  //开始营业,重新生成任务
 | 
											
												
													
														|  | 
 |  | +                //拿到所有检查计划
 | 
											
												
													
														|  | 
 |  | +                List<CoreSafecheckPlan> plans = planMapper.selectByPlanStatus(1);
 | 
											
												
													
														|  | 
 |  | +                Iterator<CoreSafecheckPlan> safecheckPlanIterator = plans.iterator();
 | 
											
												
													
														|  | 
 |  | +                //遍历计划
 | 
											
												
													
														|  | 
 |  | +                while (safecheckPlanIterator.hasNext()) {
 | 
											
												
													
														|  | 
 |  | +                    //拿到计划所属受检机构
 | 
											
												
													
														|  | 
 |  | +                    List<SysOrg> checkOrgList = safecheckPlanIterator.next().getCheckOrgList();
 | 
											
												
													
														|  | 
 |  | +                    //过滤掉不等于当前作息变更机构的受检机构
 | 
											
												
													
														|  | 
 |  | +                    List<SysOrg> collect = checkOrgList.stream().filter(e -> e.getId().equals(orgId)).collect(Collectors.toList());
 | 
											
												
													
														|  | 
 |  | +                    //过滤完数组长度0表示没有受检机构等于作息变更机构的数据
 | 
											
												
													
														|  | 
 |  | +                    if (collect.size() == 0) {
 | 
											
												
													
														|  | 
 |  | +                        //移除当前计划
 | 
											
												
													
														|  | 
 |  | +                        safecheckPlanIterator.remove();
 | 
											
												
													
														|  | 
 |  | +                    } else
 | 
											
												
													
														|  | 
 |  | +                    //如果存在相等的受检机构,开始重新生成任务
 | 
											
												
													
														|  | 
 |  | +                    {
 | 
											
												
													
														|  | 
 |  | +                        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);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                        //获取执行角色
 | 
											
												
													
														|  | 
 |  | +                        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 = 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 = checkOrgs.stream().filter(o -> o.getIsLock() < 1).collect(Collectors.toList());
 | 
											
												
													
														|  | 
 |  | +                            //构建数据
 | 
											
												
													
														|  | 
 |  | +                            List<PlanTaskBuildVo> bs = getBuild(plan, org, checkOrgs, roles);
 | 
											
												
													
														|  | 
 |  | +                            list.addAll(bs);
 | 
											
												
													
														|  | 
 |  | +                        }
 | 
											
												
													
														|  | 
 |  | +                        //生成具体任务
 | 
											
												
													
														|  | 
 |  | +                        try {
 | 
											
												
													
														|  | 
 |  | +                            DateTime datetime = new DateTime();
 | 
											
												
													
														|  | 
 |  | +                            datetime.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
 | 
											
												
													
														|  | 
 |  | +                            buildTask(datetime, list, startDate, endDate, false, 0);
 | 
											
												
													
														|  | 
 |  | +                        } catch (Exception e) {
 | 
											
												
													
														|  | 
 |  | +                            e.printStackTrace();
 | 
											
												
													
														|  | 
 |  | +                        }
 | 
											
												
													
														|  | 
 |  | +                    }
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |  
 |  |  
 |