fix: 主动上报流程不分发节点丢失BUG

This commit is contained in:
2023-12-18 11:14:42 +08:00
parent cf9e6c18ae
commit cfb2b64793
2 changed files with 19 additions and 11 deletions
@@ -107,8 +107,6 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
CommonVO commonVO = annualInitData.getCommonVO();
// 当前用户Id
String userId = UserUtils.getUserId();
// 人员数据
Map<String, Object> variables = annualInitData.getFlowUser();
// 业务数据
List<ProcessEsAnnualInit> dataList = annualInitData.getDataList();
// 设置流程变量
@@ -125,7 +123,7 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
// 自动完成第一个任务
actFlowCommonService.autoCompleteFirstTask(userId, processInstanceId, processDefinitionId, commonVO);
// 保存选人信息
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables));
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(actVariables));
// 保存数据
dataList.forEach(data -> data.setProcessInstanceId(processInstanceId));
saveBatch(dataList);
@@ -163,13 +161,7 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
private Map<String, Object> getUserMap(Map<String, Object> variables) {
// 转成逗号拼接
variables.put("contactUserList", Optional.ofNullable((List<String>) variables.get("contactUserList"))
.map(list -> String.join(",", list))
.orElse(""));
variables.put("approvalUserList", Optional.ofNullable((List<String>) variables.get("approvalUserList"))
.map(list -> String.join(",", list))
.orElse(""));
variables.put("mainDraftUserList", Optional.ofNullable((List<String>) variables.get("mainDraftUserList"))
variables.put("contactUserList", Optional.ofNullable((HashSet<String>) variables.get("contactUserList"))
.map(list -> String.join(",", list))
.orElse(""));
return variables;
@@ -274,6 +266,10 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
updateWrapper.eq(ProcessEsAnnualInit::getDelFlag, YesOrNoEnum.NO.getValue());
String contactUser = (String) runtimeService.getVariable(executionId, "contactUser");
String approvalUser = (String) runtimeService.getVariable(executionId, "approvalUser");
// 获取当前流程
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
String processDefinitionId = processInstance.getProcessDefinitionId();
Map<String, Object> userMap = new HashMap<>();
switch (taskName) {
case CONTACT_USER_SELECT:
dataList = annualInitData.getDataList();
@@ -283,6 +279,9 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
Set<String> approvalUserSet = new HashSet<>();
dataList.forEach(d -> approvalUserSet.add(d.getApprovalUser()));
taskService.setVariable(taskId, "approvalUserList", approvalUserSet);
// 保存人员
userMap.put("approvalUserList", String.join(",", approvalUserSet));
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userMap);
dataList.forEach(data -> data.setExecutionId(executionId));
saveOrUpdateBatch(dataList);
} else {
@@ -314,6 +313,9 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
dataList.forEach(d -> mainDraftUserSet.add(d.getPrcMainDraftUser()));
dataList.forEach(data -> data.setExecutionId(executionId));
taskService.setVariable(taskId, "mainDraftUserList", mainDraftUserSet);
// 保存人员
userMap.put("mainDraftUserList", String.join(",", mainDraftUserSet));
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userMap);
} else {
// 找到对应数据,然后设置驳回标志位
updateWrapper.eq(ProcessEsAnnualInit::getContactUser, contactUser);
@@ -333,6 +335,12 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
dataList = annualInitData.getDataList();
dataList.forEach(d -> d.setMainDraftingUser(userId));
saveOrUpdateBatch(dataList);
// 找出所有主起草人
Set<String> mainDraftUserSet = new HashSet<>();
dataList.forEach(d -> mainDraftUserSet.add(d.getMainDraftingUser()));
// 保存人员
userMap.put("mainDraftUser", String.join(",", mainDraftUserSet));
processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userMap);
break;
case CONTACT_USER_COLLECT:
dataList = annualInitData.getDataList();
@@ -180,7 +180,6 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
// 设置流程变量
taskService.setVariable(taskId, "workGroupUserList", workGroupUserList);
// 将联络人主管级上一级领导保存到流程变量中
taskService.setVariable(taskId, contactUser + "-ContactUserLeaderLeader", contactUserLeaderLeader);
userVariable.put("workGroupUserList", workGroupUsers);
userVariable.put("contactUser", contactUser);
} else {
@@ -193,6 +192,7 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
saveBatch(dataList);
taskService.setVariable(taskId, "contactUserLeaderLeader", contactUserLeaderLeader);
}
taskService.setVariable(taskId, contactUser + "-ContactUserLeaderLeader", contactUserLeaderLeader);
userVariable.put("contactUserLeaderLeader", contactUserLeaderLeader);
processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userVariable);
break;