From 0fc132ebf52875504abd0c7bc402d5cacb15c4e3 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Fri, 5 Jul 2024 15:23:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B3=95=E8=A7=84=E7=AC=A6=E5=90=88?= =?UTF-8?q?=E6=80=A7=E6=8E=92=E6=9F=A5=E6=B5=81=E7=A8=8B-=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=8F=91=E8=B5=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../process/common/enums/ProcessType.java | 1 + .../common/service/ActFlowCommonService.java | 65 +++----- .../demo/service/ProcessDemoService.java | 3 +- .../fb/common/ProcessDefinitionKey.java | 20 +-- ...cessStandardComplianceCheckController.java | 9 ++ .../listener/ProcessSCCCreateListener.java | 16 +- ...ProcessStandardComplianceCheckService.java | 5 + ...essStandardComplianceCheckServiceImpl.java | 140 +++++++++++++++++- 8 files changed, 192 insertions(+), 67 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java index df5cb1ed..26fdcf78 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java @@ -12,6 +12,7 @@ import lombok.Getter; public enum ProcessType { STANDARD_INTERPRET("标准解读流程", "2", "standard_interpret", "StandardInterpretFlowServiceImpl"), + STANDARD_COMPLIANCE_CHECK("法规符合性评估流程", "3", "laws-evaluation-main", "ProcessStandardComplianceCheckServiceImpl"), ; private final String name; 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 8a20eae1..4c083f73 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 @@ -15,6 +15,9 @@ import com.jero.modules.activiti.process.common.entity.CommonVO; import com.jero.modules.activiti.process.common.entity.ProcessDraft; import com.jero.modules.activiti.process.common.entity.StandTypeVO; import com.jero.modules.activiti.process.common.enums.StandardStateEnum; +import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; +import com.jero.modules.activiti.process.fb.dto.BasicTaskInfoDTO; +import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; import com.jero.modules.activiti.service.ProcessAllService; import com.jero.modules.activiti.service.ProcessApprovalRecordService; import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; @@ -128,30 +131,16 @@ public class ActFlowCommonService { } } - /** - * 循环设置流程变量 - * - * @param processInstanceId - * @param variables - */ - public void setProcessVariables(String processInstanceId, Map variables) { - for (Map.Entry entry : variables.entrySet()) { - String key = entry.getKey(); - runtimeService.setVariable(processInstanceId, key, entry.getValue()); - } - } - /** * 更新审批表为完成,填充数据 * - * @param commonVO + * @param processTask * @param taskId - * @param pass */ - public void updateApprovalInfo(CommonVO commonVO, String taskId, boolean pass) { + public void updateApprovalInfo(BasicTaskInfoDTO processTask, String taskId) { ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(taskId); - approvalRecord.setCommitText(commonVO.getCommitText()); - approvalRecord.setCommitFile(commonVO.getCommitFile()); + approvalRecord.setCommitText(processTask.getHandleText()); + approvalRecord.setCommitFile(processTask.getHandleFile()); approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue()); approvalRecord.setEndTime(new Date()); // 使用流程引擎根据TaskId找到NodeId @@ -294,19 +283,14 @@ public class ActFlowCommonService { /** * 更新流程主表 * - * @param processInstanceId - * @param userId - * @param prcName - * @param prcMes - * @param prcType - * @param dueTime + * @param processInfo */ - public void updateProcessAll(String processInstanceId, String userId, String prcName, String prcMes, Integer prcType, Date dueTime) { - ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId); - process.setPrcName(prcName); - process.setPrcMes(prcMes); - process.setDueTime(dueTime); - process.setPrcType(prcType); + public void updateProcessAll(BasicProcessInfoDTO processInfo) { + ProcessAll process = processAllService.getByProcessInstanceId(processInfo.getProcessInstanceId()); + process.setPrcName(processInfo.getProcessName()); + process.setPrcMes(processInfo.getProcessDescription()); + process.setDueTime(processInfo.getProcessDueDate()); + process.setPrcType(processInfo.getProcessType()); processAllService.updateById(process); } @@ -375,10 +359,10 @@ public class ActFlowCommonService { return null; } - public void getExistDraftAndRemove(CommonVO common, ProcessTypeEnum processTypeEnum) { + public void getExistDraftAndRemove(String draftId) { // 删除草稿表数据 - if (StrUtil.isNotBlank(common.getDraftId())) { - processDraftService.removeById(common.getDraftId()); + if (StrUtil.isNotBlank(draftId)) { + processDraftService.removeById(draftId); } } @@ -466,19 +450,10 @@ public class ActFlowCommonService { /** * 强制撤回流程-保存草稿 * - * @param common - * @param processTypeEnum - * @param jsonData + * @param processInfoVO + * @param userId */ - public void saveFirstNodeDraft(CommonVO common, ProcessTypeEnum processTypeEnum, Object data) { - - } - - public void saveFirstNodeDraft(CommonVO common, ProcessTypeEnum processTypeEnum, String jsonData) { - - } - - public void saveFirstNodeDraftCustomUserId(CommonVO common, ProcessTypeEnum processTypeEnum, String jsonData, String userId) { + public void saveFirstNodeDraft(ProcessInfoVO processInfoVO, String userId) { } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/demo/service/ProcessDemoService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/demo/service/ProcessDemoService.java index 9637376b..7024d2b2 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/demo/service/ProcessDemoService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/demo/service/ProcessDemoService.java @@ -42,8 +42,7 @@ public class ProcessDemoService extends ServiceImpl submit(@Validated @RequestBody ProcessInfoVO processInfoVO) { + sccService.submit(processInfoVO); + return Result.OK(); + } + /** * 转办 * diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/listener/ProcessSCCCreateListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/listener/ProcessSCCCreateListener.java index 328a29ba..9a8fc7ac 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/listener/ProcessSCCCreateListener.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/listener/ProcessSCCCreateListener.java @@ -1,18 +1,26 @@ package com.jero.modules.activiti.process.standardComplianceCheck.listener; -import com.jero.modules.activiti.process.demo.service.ProcessDemoService; -import com.jero.modules.activiti.util.SpringContextUtil; +import com.jero.modules.activiti.process.standardComplianceCheck.service.IProcessStandardComplianceCheckService; +import lombok.extern.slf4j.Slf4j; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; /** * @author liJiaRao * @date 2023-06-18 15:43 */ +@Slf4j +@Component public class ProcessSCCCreateListener implements TaskListener { + + @Resource + private IProcessStandardComplianceCheckService sccService; + @Override public void notify(DelegateTask delegateTask) { - ProcessDemoService demoService = SpringContextUtil.getBean(ProcessDemoService.class); - demoService.createAutoTaskListener(delegateTask); + sccService.createAutoTaskListener(delegateTask); } } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/IProcessStandardComplianceCheckService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/IProcessStandardComplianceCheckService.java index 00830b68..a923fbd7 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/IProcessStandardComplianceCheckService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/IProcessStandardComplianceCheckService.java @@ -4,6 +4,7 @@ import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; import com.jero.modules.activiti.process.standardComplianceCheck.entity.ProcessStandardComplianceCheck; import com.baomidou.mybatisplus.extension.service.IService; import com.jero.modules.activiti.process.standardComplianceCheck.entity.vo.ProcessSccVO; +import org.activiti.engine.delegate.DelegateTask; /** * @author ThinkBook @@ -17,4 +18,8 @@ public interface IProcessStandardComplianceCheckService extends IService processInfoVO, boolean b); ProcessInfoVO getHandleData(String taskId); + + void createAutoTaskListener(DelegateTask delegateTask); + + void submit(ProcessInfoVO processInfoVO); } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java index 921a485d..72540f6c 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java @@ -1,13 +1,34 @@ package com.jero.modules.activiti.process.standardComplianceCheck.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.modules.activiti.common.ActivitiCommon; +import com.jero.modules.activiti.enums.ProcessTypeEnum; +import com.jero.modules.activiti.process.common.enums.ProcessType; +import com.jero.modules.activiti.process.common.service.ActFlowCommonService; +import com.jero.modules.activiti.process.demo.common.ProcessDemoCommon; +import com.jero.modules.activiti.process.demo.vo.ProcessDemoVO; +import com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey; +import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; +import com.jero.modules.activiti.process.fb.dto.BasicTaskInfoDTO; +import com.jero.modules.activiti.process.fb.service.IProcessHandleService; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; import com.jero.modules.activiti.process.standardComplianceCheck.entity.ProcessStandardComplianceCheck; import com.jero.modules.activiti.process.standardComplianceCheck.entity.vo.ProcessSccVO; -import com.jero.modules.activiti.process.standardComplianceCheck.service.IProcessStandardComplianceCheckService; import com.jero.modules.activiti.process.standardComplianceCheck.mapper.ProcessStandardComplianceCheckMapper; +import com.jero.modules.activiti.process.standardComplianceCheck.service.IProcessStandardComplianceCheckService; +import com.jero.modules.activiti.service.ProcessNodeLinkService; +import com.jero.modules.sys.utils.UserUtils; +import org.activiti.engine.delegate.DelegateTask; +import org.activiti.engine.runtime.ProcessInstance; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants.*; + /** * @author ThinkBook * @description 针对表【process_standard_compliance_check】的数据库操作Service实现 @@ -17,13 +38,76 @@ import org.springframework.stereotype.Service; public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl implements IProcessStandardComplianceCheckService { + @Resource + private IProcessHandleService processHandleService; + + @Resource + private ActFlowCommonService actFlowCommonService; + + @Resource + private ProcessNodeLinkService processNodeLinkService; + @Override public void startProcess(ProcessInfoVO processInfoVO) { + // 流程Key + String processDefinitionKey = ProcessType.STANDARD_COMPLIANCE_CHECK.getProcessKey(); + // 流程信息 + BasicProcessInfoDTO processInfo = processInfoVO.getBasicProcessInfoDTO(); + // 任务信息 + BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO(); + // 人员信息 + Map userInfoMap = processInfoVO.getUserInfoMap(); + // 业务数据 + ProcessSccVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); + // 当前用户Id + String userId = UserUtils.getUserId(); + // 设置流程变量 + Map actVariables = this.setVariables(businessInfoDTO); + // 删除草稿 + actFlowCommonService.getExistDraftAndRemove(processInfoVO.getDraftId()); + // 启动流程 + ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables); + // 获取流程实例ID + String processDefinitionId = processInstance.getProcessDefinitionId(); + String processInstanceId = processInstance.getId(); + processInfo.setProcessInstanceId(processInstanceId); + processInfo.setProcessDefinitionId(processDefinitionId); + processInfo.setProcessType(ProcessTypeEnum.STANDARD_COMPLIANCE_CHECK.getValue()); + // 保存数据 +// dataList.forEach(data -> data.setProcessInstanceId(processInstanceId)); +// dataList.forEach(ProcessEsAnnualInit::setDateEditFlag); +// saveOrUpdateBatch(dataList); + // 保存选人信息 + processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(userInfoMap)); + // 获取第一个任务的taskId + String taskId = actFlowCommonService.getFirstTaskId(processInstanceId, userId, processDefinitionId); + // 保存第一个节点的草稿 + actFlowCommonService.saveFirstNodeDraft(processInfoVO, userId); + // 更新审批表为完成,填充数据 + actFlowCommonService.updateApprovalInfo(processTask, taskId); + // 自动完成第一个任务 + actFlowCommonService.completeTask(taskId, userId); + // 根据流程实例id更新流程总表 + actFlowCommonService.updateProcessAll(processInfo); + } + + private Map setVariables(ProcessSccVO businessInfoDTO) { + // TODO 转List + return new HashMap<>(); + } + + private Map getUserMap(Map map) { + // TODO 转逗号拼接 + return map; + } + + @Override + public void approveTask(ProcessInfoVO processInfoVO, boolean pass) { } @Override - public void approveTask(ProcessInfoVO processInfoVO, boolean b) { + public void submit(ProcessInfoVO processInfoVO) { } @@ -31,6 +115,58 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl getHandleData(String taskId) { return null; } + + @Override + public void createAutoTaskListener(DelegateTask delegateTask) { + String taskId = delegateTask.getId(); + String taskDefinitionKey = delegateTask.getTaskDefinitionKey(); + String processInstanceId = delegateTask.getProcessInstanceId(); + Map userInfoMap = new HashMap<>(); + ProcessInfoVO processInfoVO = new ProcessInfoVO<>(); + BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO(); + String mainInstanceId =(String) delegateTask.getVariable(ActivitiCommon.MAIN_INSTANCE_ID); + //保存父子关联信息 + Map variables = new HashMap<>(); + variables.put(ActivitiCommon.MAIN_INSTANCE_ID, mainInstanceId != null ? mainInstanceId : processInstanceId); + variables.put(ActivitiCommon.PARENT_TASK_ID, taskId); + + switch (taskDefinitionKey) { + //主排查人分批下发后自动任务 + case AUTO_TASK_1: + case AUTO_TASK_3: + // TODO + List interpreterList = (List) delegateTask.getVariable(ProcessDemoCommon.INTERPRETER); + for (String interpreter : interpreterList) { + userInfoMap.put(ProcessDemoCommon.INTERPRETER, interpreter); + // 流程定义id + String definitionId = processHandleService.getDefinitionIdByKey(ProcessDefinitionKey.STANDARD_COMPLIANCE_CHECK_DISTRIBUTE); + basicProcessInfoDTO.setProcessDefinitionId(definitionId); + basicProcessInfoDTO.setProcessType(ProcessTypeEnum.STANDARD_COMPLIANCE_CHECK.getValue()); // 流程类型 + processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO); + + processInfoVO.setProcessVariables(variables); + processInfoVO.setUserInfoMap(userInfoMap); + processHandleService.startChildrenProcess(processInfoVO); + } + break; + //设计工程师驳回后自动任务 + case AUTO_TASK_2: + // TODO + String mainInterpreter = (String) delegateTask.getVariable(ProcessDemoCommon.MAIN_INTERPRETER); + userInfoMap.put(ProcessDemoCommon.MAIN_INTERPRETER, mainInterpreter); + // 流程定义id + String definitionId = processHandleService.getDefinitionIdByKey(ProcessDefinitionKey.STANDARD_COMPLIANCE_CHECK_REDISTRIBUTE); + basicProcessInfoDTO.setProcessDefinitionId(definitionId); + basicProcessInfoDTO.setProcessType(ProcessTypeEnum.STANDARD_COMPLIANCE_CHECK.getValue()); // 流程类型 + processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO); + + processInfoVO.setProcessVariables(variables); + processInfoVO.setUserInfoMap(userInfoMap); + processHandleService.startChildrenProcess(processInfoVO); + break; + default: + } + } }