|
|
@@ -468,8 +468,19 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
|
|
|
hashMap.put(checkTask.getCheckOrgId(), 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) {
|
|
|
checkTaskService.saveBatch(ats);
|
|
|
ats = new ArrayList<>();
|
|
|
@@ -638,18 +649,95 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
|
|
|
// List<Long> deleteTaskIds = new ArrayList<>();
|
|
|
|
|
|
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;
|
|
|
}
|
|
|
|
|
|
- Long orgId = org.getId();
|
|
|
+ Long orgId = worg.getId();
|
|
|
if (!workingMap.containsKey(orgId) || !workingMap.get(orgId)) {
|
|
|
//当前作息周期已经歇业,删除未进行的任务
|
|
|
checkTaskService.deleteByOrgIdAndRange(orgId, startDate, endDate);
|
|
|
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();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|
|
|
|