From 44a16be92757f9c2d935e5560d33f732d6737d1d Mon Sep 17 00:00:00 2001 From: yjz <3131811435@qq.com> Date: Thu, 11 Jul 2024 19:25:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=A0=87=E5=87=86=E8=A7=A3=E8=AF=BB?= =?UTF-8?q?=E6=B5=81=E7=A8=8B):=20=E5=BF=AB=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../process/common/utility/FlowUtility.java | 36 +++++++++++++++++++ .../StandardInterpretFlowServiceImpl.java | 13 ++++++- 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/utility/FlowUtility.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/utility/FlowUtility.java index 835fd107..279a8fde 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/utility/FlowUtility.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/utility/FlowUtility.java @@ -10,7 +10,9 @@ import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessApprovalRecord; import com.jero.modules.activiti.enums.FinishFlagEnum; import com.jero.modules.activiti.process.common.entity.ProcessDraft; +import com.jero.modules.activiti.process.common.entity.ProcessSnapshot; import com.jero.modules.activiti.process.common.service.ProcessDraftService; +import com.jero.modules.activiti.process.common.service.ProcessSnapshotService; import com.jero.modules.activiti.process.standardinterpret.vo.FlowApproveInfo; import com.jero.modules.activiti.service.ProcessAllService; import com.jero.modules.activiti.service.ProcessApprovalRecordService; @@ -41,6 +43,7 @@ public class FlowUtility { private final ProcessApprovalRecordService processApprovalRecordService; private final ProcessDraftService processDraftService; private final RuntimeService runtimeService; + private final ProcessSnapshotService processSnapshotService; public void flowApprovalUpdate(ProcessAll processAll, ProcessApprovalRecord processApprovalRecord){ LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); @@ -73,6 +76,39 @@ public class FlowUtility { .set(ProcessApprovalRecord::getCommitFile, processApprovalRecord.getCommitFile())); } + public void flowSaveSnapshot(ProcessAll processAll, ProcessApprovalRecord processApprovalRecord, String infoJsonStr){ + // 保存快照 + ProcessSnapshot processSnapshot = new ProcessSnapshot(); + BeanUtils.copyProperties(processAll, processSnapshot); + processSnapshot.setId(String.valueOf(SnowflakeUtils.snowflake())); + processSnapshot.setCreateBy(null); + processSnapshot.setCreateTime(null); + processSnapshot.setUpdateBy(null); + processSnapshot.setUpdateTime(null); + if (StringUtils.isNotBlank(processApprovalRecord.getCommitFile())){ + processSnapshot.setHandleFile(processApprovalRecord.getCommitFile()); + } + if (StringUtils.isNotBlank(processApprovalRecord.getCommitText())){ + processSnapshot.setHandleText(processApprovalRecord.getCommitFile()); + } + if (!Objects.isNull(processAll.getDueTime())){ + processSnapshot.setProcessDueDate(processAll.getDueTime()); + } + if (StringUtils.isNotBlank(processAll.getPrcMes())){ + processSnapshot.setProcessDescription(processAll.getPrcMes()); + } + if (StringUtils.isNotBlank(infoJsonStr)){ + processSnapshot.setInfoJsonStr(infoJsonStr); + } + if (StringUtils.isNotBlank(processApprovalRecord.getTaskId())){ + processSnapshot.setTaskId(processApprovalRecord.getTaskId()); + } + if (StringUtils.isNotBlank(processApprovalRecord.getUserId())){ + processSnapshot.setUserId(processApprovalRecord.getUserId()); + } + processSnapshotService.save(processSnapshot); + } + public FlowApproveInfo queryFlowApproveInfo(String projectId, String taskId){ FlowApproveInfo flowApproveInfo = new FlowApproveInfo(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardinterpret/service/impl/StandardInterpretFlowServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardinterpret/service/impl/StandardInterpretFlowServiceImpl.java index b9a09e50..cfa3984d 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardinterpret/service/impl/StandardInterpretFlowServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardinterpret/service/impl/StandardInterpretFlowServiceImpl.java @@ -150,6 +150,13 @@ public class StandardInterpretFlowServiceImpl implements StandardInterpretFlowSe // 自动完成第一个节点 taskService.complete(task.getId()); + + // 保存快照 + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + processAll.setProcessInstanceId(task.getProcessInstanceId()); + processApprovalRecord.setTaskId(task.getId()); + processApprovalRecord.setUserId(loginUser.getId()); + flowUtility.flowSaveSnapshot(processAll, processApprovalRecord, standardInterpretFlowDTO.getInfoJsonStr()); } @Override @@ -207,13 +214,17 @@ public class StandardInterpretFlowServiceImpl implements StandardInterpretFlowSe // 特殊节点 String nodeId = processApprovalRecord.getNodeId(); - if (StandardInterpretCommon.MASTER_INTERPRET_APPROVE.equals(nodeId)){ + if (StandardInterpretCommon.MASTER_INTERPRET_APPROVE.equals(nodeId) + || StandardInterpretCommon.MASTER_INTERPRET_AGAIN_DISTRIBUTE.equals(nodeId)){ // 更新流程总表状态 processAllService.update(new LambdaUpdateWrapper() .eq(ProcessAll::getProjectId, processAll.getProjectId()) .set(ProcessAll::getPrcStatus, ProcessStatusEnum.INCOMPLETE.getValue())); } + // 保存快照 + flowUtility.flowSaveSnapshot(processAll, processApprovalRecord, standardInterpretFlowDTO.getInfoJsonStr()); + // 流程结束 if (flowUtility.isLastNode(processAll.getProcessInstanceId())){ // 查询业务信息