diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/process/FileArchiveProcessEventListener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/process/FileArchiveProcessEventListener.java index 837ef2d37..7520de611 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/process/FileArchiveProcessEventListener.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/process/FileArchiveProcessEventListener.java @@ -22,6 +22,7 @@ import org.flowable.common.engine.api.delegate.event.FlowableEngineEntityEvent; import org.flowable.common.engine.impl.interceptor.CommandExecutor; import org.flowable.engine.HistoryService; import org.flowable.engine.ProcessEngineConfiguration; +import org.flowable.engine.delegate.event.FlowableProcessStartedEvent; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl; import org.flowable.engine.impl.util.CommandContextUtil; @@ -30,6 +31,7 @@ import org.springframework.cloud.context.config.annotation.RefreshScope; 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; @@ -64,6 +66,11 @@ public class FileArchiveProcessEventListener extends AbstractBpmnEventListener

docs = commandExecutor.execute(new CustomGetModelDocsCmd(event.getProcessInstanceId(), extAxModelDocMapper)); + List docs = commandExecutor.execute(new CustomGetModelDocsCmd(event.getProcessInstanceId(), true, extAxModelDocMapper)); + if (CollectionUtils.isEmpty(docs)) { + return; + } List files = new ArrayList<>(); docs.forEach(doc -> { @@ -111,6 +121,35 @@ public class FileArchiveProcessEventListener extends AbstractBpmnEventListener

archives = new ArrayList<>(); + processSign.getDocTemplate().forEach(template -> { + SignFileDTO signFileDTO = new SignFileDTO(); + signFileDTO.setId(template.getId()); + signFileDTO.setFileTag(template.getFileTag()); + signFileDTO.setFileType(template.getFileType()); + // TODO 替换变量后,获得新生成的文档code + signFileDTO.setFileCode(""); + archives.add(signFileDTO); + }); + + processSign.setFileArchive(archives); + extAxProcessSignService.updateById(processSign); + + } + @Override public void onCompleted(FlowableEngineEntityEvent event) { // TODO 将该模型关联的文档统一进行归档, 加载变量, 并发送业务待办 @@ -127,18 +166,20 @@ public class FileArchiveProcessEventListener extends AbstractBpmnEventListener

processVariables = instance.getProcessVariables(); // 文件归档,将审批过程中产生的数据全部替换文档模板变量 - archiveEnableDocs(processVariables, instance); + archiveFinalDocs(processVariables, instance); // 发送业务待办 sendSignPending(signConfig.get(), processVariables); } - private void archiveEnableDocs(Map processVariables, HistoricProcessInstance instance) { + private void archiveFinalDocs(Map processVariables, HistoricProcessInstance instance) { ProcessEngineConfigurationImpl processEngineConfiguration = (ProcessEngineConfigurationImpl) getEngineConfiguration(); List fileTags = getFileTags(processVariables); - List needFirstArchiveDocs = processEngineConfiguration.getCommandExecutor().execute(new CustomGetModelDocsCmd(instance.getId(), extAxModelDocMapper)) + List needFirstArchiveDocs = processEngineConfiguration.getCommandExecutor().execute(new CustomGetModelDocsCmd(instance.getId(), true, extAxModelDocMapper)) .stream().filter(i -> fileTags.contains(i.getTag())).collect(Collectors.toList()); - + if (CollectionUtils.isEmpty(needFirstArchiveDocs)) { + return; + } List fileArchives = new ArrayList<>(); needFirstArchiveDocs.forEach(docBaseVO -> { // TODO 进行文档变量替换,替换后,返回 fileKey