feat(REQ-3769) - 签署业务中, 增加流程实例的几个生命周期操作文档逻辑
This commit is contained in:
parent
dc3d7a0641
commit
8a9161869c
@ -22,6 +22,7 @@ import org.flowable.common.engine.api.delegate.event.FlowableEngineEntityEvent;
|
|||||||
import org.flowable.common.engine.impl.interceptor.CommandExecutor;
|
import org.flowable.common.engine.impl.interceptor.CommandExecutor;
|
||||||
import org.flowable.engine.HistoryService;
|
import org.flowable.engine.HistoryService;
|
||||||
import org.flowable.engine.ProcessEngineConfiguration;
|
import org.flowable.engine.ProcessEngineConfiguration;
|
||||||
|
import org.flowable.engine.delegate.event.FlowableProcessStartedEvent;
|
||||||
import org.flowable.engine.history.HistoricProcessInstance;
|
import org.flowable.engine.history.HistoricProcessInstance;
|
||||||
import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
|
import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
|
||||||
import org.flowable.engine.impl.util.CommandContextUtil;
|
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.context.annotation.Scope;
|
||||||
import org.springframework.core.Ordered;
|
import org.springframework.core.Ordered;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -64,6 +66,11 @@ public class FileArchiveProcessEventListener extends AbstractBpmnEventListener<P
|
|||||||
@Resource
|
@Resource
|
||||||
private DocAnonymousDatabaseApi docApi;
|
private DocAnonymousDatabaseApi docApi;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建流程成功,判断是否是签署业务,如果是签署业务,则进行第一次模型文件的副本创建,作为与当前流程对应版本使用
|
||||||
|
*
|
||||||
|
* @param event
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void onCreated(FlowableEngineEntityEvent event) {
|
public void onCreated(FlowableEngineEntityEvent event) {
|
||||||
Process mainProcess = ProcessDefinitionUtil.getBpmnModel(event.getProcessDefinitionId()).getMainProcess();
|
Process mainProcess = ProcessDefinitionUtil.getBpmnModel(event.getProcessDefinitionId()).getMainProcess();
|
||||||
@ -74,7 +81,10 @@ public class FileArchiveProcessEventListener extends AbstractBpmnEventListener<P
|
|||||||
// 流程发起时,需要基于基础文档,复制一份模板
|
// 流程发起时,需要基于基础文档,复制一份模板
|
||||||
ProcessEngineConfigurationImpl processEngineConfiguration = (ProcessEngineConfigurationImpl) getEngineConfiguration();
|
ProcessEngineConfigurationImpl processEngineConfiguration = (ProcessEngineConfigurationImpl) getEngineConfiguration();
|
||||||
CommandExecutor commandExecutor = processEngineConfiguration.getCommandExecutor();
|
CommandExecutor commandExecutor = processEngineConfiguration.getCommandExecutor();
|
||||||
List<DocBaseVO> docs = commandExecutor.execute(new CustomGetModelDocsCmd(event.getProcessInstanceId(), extAxModelDocMapper));
|
List<DocBaseVO> docs = commandExecutor.execute(new CustomGetModelDocsCmd(event.getProcessInstanceId(), true, extAxModelDocMapper));
|
||||||
|
if (CollectionUtils.isEmpty(docs)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
List<SignFileDTO> files = new ArrayList<>();
|
List<SignFileDTO> files = new ArrayList<>();
|
||||||
docs.forEach(doc -> {
|
docs.forEach(doc -> {
|
||||||
@ -111,6 +121,35 @@ public class FileArchiveProcessEventListener extends AbstractBpmnEventListener<P
|
|||||||
extAxProcessSignService.save(processSign);
|
extAxProcessSignService.save(processSign);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流程实例启用成功后,进行初始数据的模板变量替换
|
||||||
|
*
|
||||||
|
* @param event
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onStarted(FlowableProcessStartedEvent event) {
|
||||||
|
// TODO 将拷贝后的文档进行初始的模板变量替换
|
||||||
|
ExtAxProcessSign processSign = extAxProcessSignService.findByProcessInstanceId(event.getNestedProcessInstanceId());
|
||||||
|
if (CollectionUtils.isEmpty(processSign.getFileArchive())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<SignFileDTO> 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
|
@Override
|
||||||
public void onCompleted(FlowableEngineEntityEvent event) {
|
public void onCompleted(FlowableEngineEntityEvent event) {
|
||||||
// TODO 将该模型关联的文档统一进行归档, 加载变量, 并发送业务待办
|
// TODO 将该模型关联的文档统一进行归档, 加载变量, 并发送业务待办
|
||||||
@ -127,18 +166,20 @@ public class FileArchiveProcessEventListener extends AbstractBpmnEventListener<P
|
|||||||
Map<String, Object> processVariables = instance.getProcessVariables();
|
Map<String, Object> processVariables = instance.getProcessVariables();
|
||||||
|
|
||||||
// 文件归档,将审批过程中产生的数据全部替换文档模板变量
|
// 文件归档,将审批过程中产生的数据全部替换文档模板变量
|
||||||
archiveEnableDocs(processVariables, instance);
|
archiveFinalDocs(processVariables, instance);
|
||||||
|
|
||||||
// 发送业务待办
|
// 发送业务待办
|
||||||
sendSignPending(signConfig.get(), processVariables);
|
sendSignPending(signConfig.get(), processVariables);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void archiveEnableDocs(Map<String, Object> processVariables, HistoricProcessInstance instance) {
|
private void archiveFinalDocs(Map<String, Object> processVariables, HistoricProcessInstance instance) {
|
||||||
ProcessEngineConfigurationImpl processEngineConfiguration = (ProcessEngineConfigurationImpl) getEngineConfiguration();
|
ProcessEngineConfigurationImpl processEngineConfiguration = (ProcessEngineConfigurationImpl) getEngineConfiguration();
|
||||||
List<String> fileTags = getFileTags(processVariables);
|
List<String> fileTags = getFileTags(processVariables);
|
||||||
List<DocBaseVO> needFirstArchiveDocs = processEngineConfiguration.getCommandExecutor().execute(new CustomGetModelDocsCmd(instance.getId(), extAxModelDocMapper))
|
List<DocBaseVO> needFirstArchiveDocs = processEngineConfiguration.getCommandExecutor().execute(new CustomGetModelDocsCmd(instance.getId(), true, extAxModelDocMapper))
|
||||||
.stream().filter(i -> fileTags.contains(i.getTag())).collect(Collectors.toList());
|
.stream().filter(i -> fileTags.contains(i.getTag())).collect(Collectors.toList());
|
||||||
|
if (CollectionUtils.isEmpty(needFirstArchiveDocs)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
List<SignFileDTO> fileArchives = new ArrayList<>();
|
List<SignFileDTO> fileArchives = new ArrayList<>();
|
||||||
needFirstArchiveDocs.forEach(docBaseVO -> {
|
needFirstArchiveDocs.forEach(docBaseVO -> {
|
||||||
// TODO 进行文档变量替换,替换后,返回 fileKey
|
// TODO 进行文档变量替换,替换后,返回 fileKey
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user