fix: 旗标复审流程定时任务自动发起流程报错BUG

This commit is contained in:
2023-12-11 20:09:17 +08:00
parent a88066a66e
commit ad23374a6b
3 changed files with 39 additions and 26 deletions
@@ -198,18 +198,22 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
wrapper.eq(ProcessEsAnnualInit::getContactUser, userId); wrapper.eq(ProcessEsAnnualInit::getContactUser, userId);
break; break;
case STANDARD_ENGINEER_EDIT: case STANDARD_ENGINEER_EDIT:
wrapper.eq(ProcessEsAnnualInit::getExecutionId, executionId);
wrapper.eq(ProcessEsAnnualInit::getRejectFlag, YesOrNoEnum.YES.getValue());
break; break;
case MAIN_DRAFT_LEADER_APPROVAL: case MAIN_DRAFT_LEADER_APPROVAL:
wrapper.eq(ProcessEsAnnualInit::getApprovalUser, userId); wrapper.eq(ProcessEsAnnualInit::getApprovalUser, userId).or()
.eq(ProcessEsAnnualInit::getExecutionId, executionId);
break; break;
case CONTACT_USER_EDIT: case CONTACT_USER_EDIT:
wrapper.eq(ProcessEsAnnualInit::getApprovalUser, userId); wrapper.eq(ProcessEsAnnualInit::getRejectFlag, YesOrNoEnum.YES.getValue());
break; break;
case MAIN_DRAFT_WRITE: case MAIN_DRAFT_WRITE:
wrapper.eq(ProcessEsAnnualInit::getPrcMainDraftUser, userId); wrapper.eq(ProcessEsAnnualInit::getPrcMainDraftUser, userId);
break; break;
case CONTACT_USER_COLLECT: case CONTACT_USER_COLLECT:
wrapper.eq(ProcessEsAnnualInit::getContactUser, userId); wrapper.eq(ProcessEsAnnualInit::getContactUser, userId);
wrapper.eq(ProcessEsAnnualInit::getExecutionId, executionId);
break; break;
case MAIN_DRAFT_LEADER_LEADER_APPROVAL: case MAIN_DRAFT_LEADER_LEADER_APPROVAL:
wrapper.eq(ProcessEsAnnualInit::getContactUser, userId); wrapper.eq(ProcessEsAnnualInit::getContactUser, userId);
@@ -229,7 +233,6 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
public void approvalProcess(AnnualInitDataVO annualInitData, boolean pass) { public void approvalProcess(AnnualInitDataVO annualInitData, boolean pass) {
String userId = UserUtils.getUserId(); String userId = UserUtils.getUserId();
CommonVO commonVO = annualInitData.getCommonVO(); CommonVO commonVO = annualInitData.getCommonVO();
Map<String, Object> flowUserVO = annualInitData.getFlowUser();
List<ProcessEsAnnualInit> dataList = annualInitData.getDataList(); List<ProcessEsAnnualInit> dataList = annualInitData.getDataList();
String taskId = commonVO.getTaskId(); String taskId = commonVO.getTaskId();
// 获取task // 获取task
@@ -237,6 +240,8 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
throw new JeroBootException("taskId为空或任务不存在"); throw new JeroBootException("taskId为空或任务不存在");
} }
Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
// 获取执行id
String executionId = task.getExecutionId();
String taskName = task.getName(); String taskName = task.getName();
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
switch (taskName) { switch (taskName) {
@@ -244,58 +249,61 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
// 处理驳回 // 处理驳回
if (pass) { if (pass) {
dataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.NO.getValue())); dataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.NO.getValue()));
List<String> approvalUserList = new ArrayList<>();
dataList.forEach(d -> approvalUserList.add(d.getApprovalUser()));
taskService.setVariable(taskId, "approvalUserList", approvalUserList);
} else { } else {
dataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.YES.getValue())); dataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.YES.getValue()));
} }
dataList.forEach(data -> data.setExecutionId(executionId));
saveOrUpdateBatch(dataList); saveOrUpdateBatch(dataList);
// 设置本地变量
List<String> approvalUserList = new ArrayList<>();
dataList.forEach(d -> approvalUserList.add(d.getApprovalUser()));
taskService.setVariableLocal(taskId, "approvalUserList", approvalUserList);
break; break;
case STANDARD_ENGINEER_EDIT: case STANDARD_ENGINEER_EDIT:
dataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.NO.getValue())); dataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.NO.getValue()));
saveOrUpdateBatch(dataList); saveOrUpdateBatch(dataList);
// 设置流程变量
List<String> contactUserList = new ArrayList<>();
dataList.forEach(d -> contactUserList.add(d.getContactUser()));
runtimeService.setVariable(processInstanceId, "contactUserList", contactUserList);
break; break;
case MAIN_DRAFT_LEADER_APPROVAL: case MAIN_DRAFT_LEADER_APPROVAL:
// 如果不驳回 // 如果不驳回
if (!pass) { if (pass) {
dataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.NO.getValue())); dataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.NO.getValue()));
saveOrUpdateBatch(dataList);
// 设置本地变量 // 设置本地变量
List<String> mainDraftUserList = new ArrayList<>(); List<String> mainDraftUserList = new ArrayList<>();
dataList.forEach(d -> mainDraftUserList.add(d.getPrcMainDraftUser())); dataList.forEach(d -> mainDraftUserList.add(d.getPrcMainDraftUser()));
taskService.setVariable(taskId, "mainDraftUserList", mainDraftUserList);
taskService.setVariableLocal(taskId, "mainDraftUserList", mainDraftUserList); } else {
dataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.YES.getValue()));
} }
// 获取执行id
dataList.forEach(data -> data.setExecutionId(executionId));
saveOrUpdateBatch(dataList);
break; break;
case MAIN_DRAFT_WRITE: case MAIN_DRAFT_WRITE:
dataList.forEach(d -> d.setMainDraftingUser(userId));
saveOrUpdateBatch(dataList); saveOrUpdateBatch(dataList);
break; break;
case CONTACT_USER_COLLECT: case CONTACT_USER_COLLECT:
saveOrUpdateBatch(dataList); saveOrUpdateBatch(dataList);
break; break;
case MAIN_DRAFT_LEADER_LEADER_APPROVAL: case MAIN_DRAFT_LEADER_LEADER_APPROVAL:
// 如果不驳回
if (pass) {
dataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.NO.getValue()));
} else {
dataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.YES.getValue()));
}
// 获取执行id
dataList.forEach(data -> data.setExecutionId(executionId));
saveOrUpdateBatch(dataList);
break; break;
case STANDARD_ENGINEER_COLLECT: case STANDARD_ENGINEER_COLLECT:
// 根据流程ID删除所有数据后新增 // 根据流程ID删除所有数据后新增
LambdaQueryWrapper<ProcessEsAnnualInit> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ProcessEsAnnualInit> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessEsAnnualInit::getProcessInstanceId, processInstanceId); wrapper.eq(ProcessEsAnnualInit::getProcessInstanceId, processInstanceId);
remove(wrapper); remove(wrapper);
saveOrUpdateBatch(dataList); saveBatch(dataList);
break; break;
} }
if (pass) { if (pass) {
if (flowUserVO != null) {
// Map<String, Object> userMap = new HashMap<>(this.setUserVariables(flowUserVO));
// processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userMap);
}
runtimeService.setVariable(processInstanceId, "pass", true); runtimeService.setVariable(processInstanceId, "pass", true);
} else { } else {
// 设置流程变量 // 设置流程变量
@@ -102,8 +102,8 @@ public class ProcessEsRecheckServiceImpl extends ServiceImpl<ProcessEsRecheckMap
// 人员数据 // 人员数据
Map<String, Object> variables = recheckData.getFlowUser(); Map<String, Object> variables = recheckData.getFlowUser();
// 当前数据的标准化工程师 // 当前数据的标准化工程师
String standardEngineerId = variables.get("standardEngineer").toString(); String standardEngineerId = (String) variables.get("standardEngineer");
String standardizationUserId = variables.get("standardizationUser").toString(); String standardizationUserId = (String) variables.get("standardizationUser");
String userId = StrUtil.isNotBlank(standardizationUserId) ? standardizationUserId : standardEngineerId; String userId = StrUtil.isNotBlank(standardizationUserId) ? standardizationUserId : standardEngineerId;
// 设置流程变量 // 设置流程变量
Map<String, Object> actVariables = this.setVariables(variables); Map<String, Object> actVariables = this.setVariables(variables);
@@ -60,6 +60,10 @@ public class ESRecheckPlanJob implements Job {
// 根据企标发布日期判断是否当前已经达到35个月 // 根据企标发布日期判断是否当前已经达到35个月
// 请确保es.getReleaseDate()返回的是Date类型的实例 // 请确保es.getReleaseDate()返回的是Date类型的实例
if (es.getReleaseDate() == null) {
log.info("无法找到企标编号为{}的发布日期,无法进行复审计划定时任务", es.getStandardNumber());
continue;
}
ZonedDateTime releaseZonedDateTime = es.getReleaseDate().toInstant() ZonedDateTime releaseZonedDateTime = es.getReleaseDate().toInstant()
.atZone(ZoneId.of("Asia/Shanghai")); .atZone(ZoneId.of("Asia/Shanghai"));
LocalDate releaseLocalDate = releaseZonedDateTime.toLocalDate(); LocalDate releaseLocalDate = releaseZonedDateTime.toLocalDate();
@@ -84,8 +88,9 @@ public class ESRecheckPlanJob implements Job {
// 自动发起流程 // 自动发起流程
// 找到各自企标的联络人,如果找不到联络人则发给标准化工程师 // 找到各自企标的联络人,如果找不到联络人则发给标准化工程师
String deptId = es.getMainDraftingUnit(); String deptId = es.getMainDraftingUnit();
String standardNo = es.getStandardNumber();
if (StrUtil.isBlank(deptId)) { if (StrUtil.isBlank(deptId)) {
log.error("企标复审流程发起失败,企标Id为{}的企标部门ID为空,无法找到其联络人", deptId); log.error("企标复审流程发起失败,企标编号为{}的企标部门ID为空,无法找到其联络人", standardNo);
continue; continue;
} }
String standardizationUser = contactManageService.findContactUserByDept(deptId); String standardizationUser = contactManageService.findContactUserByDept(deptId);
@@ -94,7 +99,7 @@ public class ESRecheckPlanJob implements Job {
standardEngineer = contactManageService.findStandardEngineerByDept(deptId); standardEngineer = contactManageService.findStandardEngineerByDept(deptId);
} }
if (StrUtil.isBlank(standardizationUser) && StrUtil.isBlank(standardEngineer)) { if (StrUtil.isBlank(standardizationUser) && StrUtil.isBlank(standardEngineer)) {
log.error("企标复审流程发起失败,无法找到企标Id为{}的联络人和标准化工程师", deptId); log.error("企标复审流程发起失败,无法找到企标编号为{}的联络人和标准化工程师", standardNo);
continue; continue;
} }
// 构建发起流程数据 // 构建发起流程数据