diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java index 5565898c..7ad1dd27 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java @@ -83,6 +83,33 @@ public class ActFlowCommonService { Optional.ofNullable(value).ifPresent(v -> map.put(key, v)); } + /** + * 转换逗号拼接为List + * @param map + * @param flowUserInfoVO + * @param key + */ + public void convertAndPutList(HashMap map, Map flowUserInfoVO, String key) { + Optional.ofNullable(flowUserInfoVO.get(key)) + .map(Object::toString) + .map(s -> Arrays.asList(s.split(","))) + .ifPresent(list -> map.put(key, list)); + } + + /** + * 系统中保存选人信息 多实例节点需要将List转为逗号拼接 + */ + public void convertListToString(Map variables) { + for (Map.Entry entry : variables.entrySet()) { + String key = entry.getKey(); + if (key.endsWith("List")) { + List list = (List) entry.getValue(); + String s = String.join(",", list); + variables.put(key, s); + } + } + } + /** * 循环设置流程变量 * @@ -92,12 +119,6 @@ public class ActFlowCommonService { public void setProcessVariables(String processInstanceId, Map variables) { for (Map.Entry entry : variables.entrySet()) { String key = entry.getKey(); - if (key.endsWith("List")) { - String value = (String) entry.getValue(); - List valueList = Arrays.asList(value.split(",")); - runtimeService.setVariable(processInstanceId, entry.getKey(), valueList); - continue; - } runtimeService.setVariable(processInstanceId, key, entry.getValue()); } } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/service/impl/ProcessEsAbolishServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/service/impl/ProcessEsAbolishServiceImpl.java index c408a6b5..d4938fa4 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/service/impl/ProcessEsAbolishServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/service/impl/ProcessEsAbolishServiceImpl.java @@ -73,10 +73,10 @@ public class ProcessEsAbolishServiceImpl extends ServiceImpl variables = abolishData.getFlowUser(); - // 设置流程变量 - this.setVariables(variables); + // 流程变量 + Map actVariables = this.setVariables(variables); // 启动流程 - ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, variables); + ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables); // 获取流程实例ID String processDefinitionId = processInstance.getProcessDefinitionId(); String processInstanceId = processInstance.getId(); @@ -99,25 +99,28 @@ public class ProcessEsAbolishServiceImpl extends ServiceImpl setVariables(Map flowUser) { - HashMap map = new HashMap<>(this.setUserVariables(flowUser)); - boolean counterSign = StrUtil.isNotBlank((String)flowUser.get("relatedUserList")); - actFlowCommonService.putIfNotNull(map, "counterSign", counterSign); - return map; - } - - public Map setUserVariables(Map flowUser) { - HashMap map = new HashMap<>(); - // 使用一个通用方法来只在不为空时添加键值对 - actFlowCommonService.putIfNotNull(map, "createUser", flowUser.get("createUser")); - actFlowCommonService.putIfNotNull(map, "relatedUserList", flowUser.get("relatedUserList")); - actFlowCommonService.putIfNotNull(map, "leader", flowUser.get("leader")); - actFlowCommonService.putIfNotNull(map, "standardizationApprovalUser", flowUser.get("standardizationApprovalUser")); - return map; + Map actVariables = new HashMap<>(); + if (flowUser.get("relatedUserList") == null || StrUtil.isBlank((String)flowUser.get("relatedUserList"))) { + actFlowCommonService.putIfNotNull(actVariables, "countersign", false); + } else { + actFlowCommonService.putIfNotNull(actVariables, "countersign", true); + String relatedUsers = (String) flowUser.get("relatedUserList"); + // 将relatedUserList从逗号拼接转为List + List relatedUserList = StrUtil.split(relatedUsers, ','); + actFlowCommonService.putIfNotNull(actVariables, "relatedUserList", relatedUserList); + } + for (Map.Entry entry : flowUser.entrySet()) { + String key = entry.getKey(); + if (!key.equals("relatedUserList")) { + actVariables.put(key, entry.getValue()); + } + } + return actVariables; } private Map getUserMap(Map variables) { variables.remove("pass"); - variables.remove("counterSign"); + variables.remove("countersign"); return variables; } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/impl/ProcessEsInitChangeServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/impl/ProcessEsInitChangeServiceImpl.java index 94739a50..89d7e7d7 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/impl/ProcessEsInitChangeServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/impl/ProcessEsInitChangeServiceImpl.java @@ -94,7 +94,9 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl flowUserInfoVO = initChangeData.getFlowUserInfoVO(); + processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, flowUserInfoVO); // 根据流程实例id更新流程总表 String prcName = commonVO.getPrcName(); String prcMes = commonVO.getPrcMes(); @@ -111,22 +113,17 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl map, Map flowUserInfoVO, String key) { - Optional.ofNullable(flowUserInfoVO.get(key)) - .map(Object::toString) - .map(s -> Arrays.asList(s.split(","))) - .ifPresent(list -> map.put(key, list)); - } - private Map getUserMap(Map variables) { variables.remove("pass"); variables.remove("applicationCategory"); variables.remove("projectType"); + // 转成逗号拼接 + actFlowCommonService.convertListToString(variables); return variables; }