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 8c4d4834..968822d8 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 @@ -2,6 +2,8 @@ package com.jero.modules.activiti.process.common.service; import com.jero.common.exception.JeroBootException; import com.jero.common.system.api.ISysBaseAPI; +import com.jero.modules.activiti.entity.ProcessNode; +import com.jero.modules.activiti.service.ProcessNodeService; import lombok.extern.slf4j.Slf4j; import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; @@ -33,7 +35,7 @@ public class ActFlowCommonService { private TaskService taskService; @Resource - private ISysBaseAPI sysBaseAPI; + private ProcessNodeService processNodeService; /** * 启动流程实例 @@ -170,4 +172,18 @@ public class ActFlowCommonService { Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); return task.getProcessInstanceId(); } + + public String getProcessDefId(String processInstanceId) { + ProcessInstance processInstance = + runtimeService.createProcessInstanceQuery() + .processInstanceId(processInstanceId) + .singleResult(); + + // 从ProcessInstance对象中获取processDefId + if (processInstance != null) { + return processInstance.getProcessDefinitionId(); + } else { + throw new JeroBootException("未找到流程定义Id"); + } + } } \ No newline at end of file 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 7087922e..4a777136 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 @@ -1,5 +1,6 @@ package com.jero.modules.activiti.process.esInitChange.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -7,6 +8,7 @@ import com.jero.common.constant.enums.YesOrNoEnum; import com.jero.common.exception.JeroBootException; import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessApprovalRecord; +import com.jero.modules.activiti.entity.ProcessNode; import com.jero.modules.activiti.enums.CommitFlagEnum; import com.jero.modules.activiti.enums.FinishFlagEnum; import com.jero.modules.activiti.enums.ProcessTypeEnum; @@ -23,6 +25,7 @@ import com.jero.modules.activiti.process.esInitChange.mapper.ProcessEsInitChange import com.jero.modules.activiti.service.ProcessAllService; import com.jero.modules.activiti.service.ProcessApprovalRecordService; import com.jero.modules.activiti.service.ProcessNodeLinkService; +import com.jero.modules.activiti.service.ProcessNodeService; import com.jero.modules.laws.enterprise.service.ESSequenceNumberProvider; import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; import com.jero.modules.sys.utils.UserUtils; @@ -56,9 +59,6 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl dataList = list(lambdaQueryWrapper); initChangeDataVO.setDataList(dataList); - // TODO 选人组件内容填充 + // 选人组件内容填充 + List nodeList = processNodeService.getNodeList(processDefinitionId, processInstanceId); + FlowUserInfoVO flowUserInfoVO = new FlowUserInfoVO(); + Map userMap = nodeList.stream().collect(Collectors.toMap(ProcessNode::getVariableName, node -> node)); + flowUserInfoVO.setCreateUser(userMap.get("createUser").getLinkUserIds()); + flowUserInfoVO.setCreateUser(userMap.get("contactUser").getLinkUserIds()); + flowUserInfoVO.setCreateUser(userMap.get("mainDraftUserLeader").getLinkUserIds()); + flowUserInfoVO.setCreateUser(userMap.get("mainDraftUserLeaderLeader").getLinkUserIds()); + flowUserInfoVO.setCreateUser(userMap.get("standardizationApprovalUser").getLinkUserIds()); + flowUserInfoVO.setCreateUser(userMap.get("newMainDraftUserLeaderLeader").getLinkUserIds()); + flowUserInfoVO.setCreateUser(userMap.get("newMainDraftUserLeader").getLinkUserIds()); + flowUserInfoVO.setCreateUser(userMap.get("copyUser").getLinkUserIds()); + initChangeDataVO.setFlowUserInfoVO(flowUserInfoVO); return initChangeDataVO; } @@ -117,7 +133,7 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl esInitChangeList = initChangeDataVO.getDataList(); - Map map = new HashMap<>(); + Map variables = new HashMap<>(); + String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); + String processDefinitionId = actFlowCommonService.getProcessDefId(processInstanceId); if (pass) { // 校验企标编号是否冲突 if (!esUtil.verifyEnStandardNumber(esInitChangeList.get(0).getOriginEnStandardNo())) { @@ -147,10 +166,13 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl userMap = this.getUserMap(variables); + processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userMap); } // 设置流程变量 - map.put("pass", pass); + variables.put("pass", pass); //更新审批表为完成,填充数据 ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(taskId); approvalRecord.setCommitFlag(pass ? CommitFlagEnum.PASS.getValue() : CommitFlagEnum.REJECT.getValue()); @@ -160,7 +182,14 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl getUserMap(Map variables) { + variables.remove("pass"); + variables.remove("applicationCategory"); + variables.remove("projectType"); + return variables; } @Override @@ -170,20 +199,36 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl esInitChange = initChangeData.getDataList(); saveOrUpdateBatch(esInitChange); // 先删后增 - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - LambdaUpdateWrapper draftWrapper = new LambdaUpdateWrapper<>(); - draftWrapper.in(ProcessDraft::getProjectId, esInitChange.stream().map(ProcessEsInitChange::getId).collect(Collectors.toList())); - processDraftService.remove(draftWrapper); - List draftList = new ArrayList<>(); - for (ProcessEsInitChange esInitChangeItem : esInitChange) { - ProcessDraft draft = new ProcessDraft(); - draft.setProjectId(esInitChangeItem.getId()); - draft.setProcessInstanceId(processInstanceId); - draft.setPrcName(commonVO.getPrcName()); - draft.setPrcType(ProcessTypeEnum.B.getValue()); - draftList.add(draft); + if (StrUtil.isBlank(taskId)) { + // 第一个节点点击保存没有taskId + LambdaUpdateWrapper draftWrapper = new LambdaUpdateWrapper<>(); + draftWrapper.eq(ProcessDraft::getPrcType, ProcessTypeEnum.B.getValue()); + draftWrapper.eq(ProcessDraft::getCreateBy, UserUtils.getUserId()); + processDraftService.remove(draftWrapper); + List draftList = new ArrayList<>(); + for (ProcessEsInitChange esInitChangeItem : esInitChange) { + ProcessDraft draft = new ProcessDraft(); + draft.setProjectId(esInitChangeItem.getId()); + draft.setPrcType(ProcessTypeEnum.B.getValue()); + draftList.add(draft); + } + processDraftService.saveBatch(draftList); + } else { + String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); + LambdaUpdateWrapper draftWrapper = new LambdaUpdateWrapper<>(); + draftWrapper.in(ProcessDraft::getProjectId, esInitChange.stream().map(ProcessEsInitChange::getId).collect(Collectors.toList())); + processDraftService.remove(draftWrapper); + List draftList = new ArrayList<>(); + for (ProcessEsInitChange esInitChangeItem : esInitChange) { + ProcessDraft draft = new ProcessDraft(); + draft.setProjectId(esInitChangeItem.getId()); + draft.setProcessInstanceId(processInstanceId); + draft.setPrcName(commonVO.getPrcName()); + draft.setPrcType(ProcessTypeEnum.B.getValue()); + draftList.add(draft); + } + processDraftService.saveBatch(draftList); } - processDraftService.saveBatch(draftList); } public Map setVariables(InitChangeDataVO initChangeData) {