update 流程部署-增加节点复制逻辑
This commit is contained in:
+45
-1
@@ -3,6 +3,8 @@ package com.jero.modules.activiti.service;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jero.modules.activiti.entity.ProcessModelNode;
|
||||
import com.jero.modules.activiti.mapper.ProcessModelNodeMapper;
|
||||
import com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -13,6 +15,7 @@ import com.jero.modules.activiti.entity.ProcessNode;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -20,6 +23,7 @@ import java.util.List;
|
||||
*@date 2023-09-26 15:12
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class ProcessNodeService extends ServiceImpl<ProcessNodeMapper, ProcessNode> {
|
||||
@Resource
|
||||
private ProcessModelNodeMapper processModelNodeMapper;
|
||||
@@ -43,7 +47,47 @@ public class ProcessNodeService extends ServiceImpl<ProcessNodeMapper, ProcessNo
|
||||
node.setProcessDefinitionId(processDefinitionId);
|
||||
processNodeList.add(node);
|
||||
}
|
||||
this.saveBatch(processNodeList);
|
||||
|
||||
// 对流程节点做一下特殊处理
|
||||
List<ProcessNode> viewNodeList = getViewNodeList(processNodeList, processDefinitionId);
|
||||
|
||||
this.saveBatch(viewNodeList);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/11/22 16:39
|
||||
* @Description: 对流程节点做一下特殊处理
|
||||
**/
|
||||
private List<ProcessNode> getViewNodeList(List<ProcessNode> processNodeList, String processDefinitionId) {
|
||||
String[] parts = processDefinitionId.split(":");
|
||||
String definitionKey = parts[0];
|
||||
Integer version = Integer.valueOf(parts[1]) - 1;
|
||||
|
||||
LambdaQueryWrapper<ProcessNode> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.like(ProcessNode::getProcessDefinitionId, definitionKey + ":" + version);
|
||||
List<ProcessNode> oldNodeList = list(queryWrapper);
|
||||
|
||||
List<String> nodeNameList = oldNodeList.stream()
|
||||
.map(ProcessNode::getNodeName).distinct().collect(Collectors.toList());
|
||||
|
||||
// 给前端展示的节点
|
||||
List<ProcessNode> viewNodeList = oldNodeList.stream()
|
||||
.filter(node -> node.getIsView() == 1).collect(Collectors.toList());
|
||||
|
||||
viewNodeList.forEach(viewNode -> {
|
||||
viewNode.setProcessDefinitionId(processDefinitionId);
|
||||
viewNode.setId(null);
|
||||
});
|
||||
|
||||
for (ProcessNode processNode : processNodeList) {
|
||||
// 如果旧列表里面不存在这个名字,即为新增节点
|
||||
if (!nodeNameList.contains(processNode.getNodeName())) {
|
||||
viewNodeList.add(processNode);
|
||||
}
|
||||
}
|
||||
|
||||
return viewNodeList;
|
||||
}
|
||||
|
||||
public List<ProcessNode> getNodeList(String processDefinitionId, String processInstanceId) {
|
||||
|
||||
Reference in New Issue
Block a user