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