From dc3d7a06414ea5054cdfc41dabbf8179d18abf1c Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 3 Apr 2025 18:09:46 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-3769)=20-=20=E7=AD=BE=E7=BD=B2?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1=E4=B8=AD=EF=BC=8C=E6=AF=8F=E4=B8=AA=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E7=BB=93=E6=9D=9F=E5=90=8E=EF=BC=8C=E9=83=BD=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E4=B8=80=E6=AC=A1=E6=96=87=E6=A1=A3=E5=8F=98=E9=87=8F?= =?UTF-8?q?=E6=9B=BF=E6=8D=A2=EF=BC=8C=E5=B9=B6=E6=9B=B4=E6=96=B0=E5=AE=9E?= =?UTF-8?q?=E4=BE=8B=E7=AD=BE=E7=BD=B2=E6=96=87=E6=A1=A3=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...FileArchiveActivityEvent_101_Listener.java | 60 ++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/activity/TempFileArchiveActivityEvent_101_Listener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/activity/TempFileArchiveActivityEvent_101_Listener.java index dbc381070..a9b742099 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/activity/TempFileArchiveActivityEvent_101_Listener.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/activity/TempFileArchiveActivityEvent_101_Listener.java @@ -1,13 +1,34 @@ package cn.axzo.workflow.server.controller.listener.activity; +import cn.axzo.workflow.common.model.dto.SignFileDTO; +import cn.axzo.workflow.common.model.request.bpmn.BpmnSignConf; +import cn.axzo.workflow.common.model.response.bpmn.model.doc.DocBaseVO; import cn.axzo.workflow.core.common.context.ActivityOperationContext; +import cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper; +import cn.axzo.workflow.core.engine.cmd.CustomGetModelDocsCmd; import cn.axzo.workflow.core.listener.AbstractBpmnEventListener; import cn.axzo.workflow.core.listener.BpmnActivityEventListener; +import cn.axzo.workflow.core.repository.entity.ExtAxProcessSign; +import cn.axzo.workflow.core.repository.mapper.ExtAxModelDocMapper; +import cn.axzo.workflow.core.service.ExtAxProcessSignService; import lombok.extern.slf4j.Slf4j; +import org.flowable.bpmn.model.Process; +import org.flowable.common.engine.impl.interceptor.CommandExecutor; +import org.flowable.engine.HistoryService; import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.history.HistoricProcessInstance; +import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl; +import org.flowable.engine.impl.util.CommandContextUtil; +import org.flowable.engine.impl.util.ProcessDefinitionUtil; import org.springframework.context.annotation.Scope; import org.springframework.core.Ordered; import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; /** * 每个审批节点完成后,生成替换变量后的文件 @@ -19,13 +40,50 @@ import org.springframework.stereotype.Component; @Component @Scope("prototype") public class TempFileArchiveActivityEvent_101_Listener extends AbstractBpmnEventListener implements BpmnActivityEventListener, Ordered { + @Resource + private ExtAxModelDocMapper extAxModelDocMapper; + @Resource + private ExtAxProcessSignService extAxProcessSignService; + @Override public int getOrder() { - return 0; + return Integer.MIN_VALUE + 101; } @Override public void onEnd(DelegateExecution execution) { + Process process = ProcessDefinitionUtil.getProcess(execution.getProcessDefinitionId()); + Optional signConfig = BpmnMetaParserHelper.getSignConfig(process); + if (!signConfig.isPresent()) { + return; + } + // TODO 临时替换一次变量, 并记录文件 + ProcessEngineConfigurationImpl processEngineConfiguration = CommandContextUtil.getProcessEngineConfiguration(); + CommandExecutor commandExecutor = processEngineConfiguration.getCommandExecutor(); + List docs = commandExecutor.execute(new CustomGetModelDocsCmd(execution.getProcessInstanceId(), true, extAxModelDocMapper)); + if (CollectionUtils.isEmpty(docs)) { + return; + } + + HistoryService historyService = processEngineConfiguration.getHistoryService(); + HistoricProcessInstance instance = historyService.createHistoricProcessInstanceQuery() + .processInstanceId(execution.getProcessInstanceId()) + .includeProcessVariables() + .singleResult(); + + ExtAxProcessSign processSign = extAxProcessSignService.findByProcessInstanceId(execution.getProcessInstanceId()); + List archives = new ArrayList<>(); + docs.forEach(doc -> { + SignFileDTO signFileDTO = new SignFileDTO(); + signFileDTO.setId(doc.getId()); + signFileDTO.setFileTag(doc.getTag()); + // TODO 替换变量,生成新的文档 + signFileDTO.setFileCode(""); + signFileDTO.setFileType(doc.getFileType()); + archives.add(signFileDTO); + }); + processSign.setFileArchive(archives); + extAxProcessSignService.updateById(processSign); } }