update 流程图导入
This commit is contained in:
@@ -29,6 +29,13 @@ public class ProcessModelNode {
|
||||
@ApiModelProperty(value = "主键id")
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* process_key
|
||||
*/
|
||||
@TableField(value = "process_key")
|
||||
@ApiModelProperty(value = "process_key")
|
||||
private String processKey;
|
||||
|
||||
/**
|
||||
* 模型id
|
||||
*/
|
||||
|
||||
+5
-9
@@ -9,24 +9,17 @@ import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.modules.activiti.entity.ProcessModelNode;
|
||||
import com.jero.modules.activiti.enums.VariableTypeEnum;
|
||||
import com.jero.modules.activiti.listener.CompleteListener;
|
||||
import com.jero.modules.activiti.listener.CreateListener;
|
||||
import com.jero.modules.activiti.vo.AddTaskVO;
|
||||
import lombok.Synchronized;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.activiti.bpmn.BpmnAutoLayout;
|
||||
import org.activiti.bpmn.converter.BpmnXMLConverter;
|
||||
import org.activiti.bpmn.model.*;
|
||||
import org.activiti.bpmn.model.Process;
|
||||
import org.activiti.editor.language.json.converter.BpmnJsonConverter;
|
||||
import org.activiti.engine.RepositoryService;
|
||||
import org.activiti.engine.delegate.TaskListener;
|
||||
import org.activiti.engine.repository.Model;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
@@ -62,6 +55,7 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
|
||||
}
|
||||
BpmnModel bpmnModel = new BpmnJsonConverter().convertToBpmnModel(objectNode);
|
||||
Process process = bpmnModel.getMainProcess();
|
||||
String id = process.getId();
|
||||
Collection<FlowElement> flowElements = process.getFlowElements();
|
||||
List<ProcessModelNode> processModelNodeList = new ArrayList<>();
|
||||
//审批节点list
|
||||
@@ -72,9 +66,10 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
|
||||
.filter(item -> gatewayIdList.contains(item.getXmlTargetRef()))
|
||||
.map(ProcessModelNode::getXmlSourceRef)
|
||||
.collect(Collectors.toList());
|
||||
//判断是否是审批节点
|
||||
for (ProcessModelNode processModelNode : processModelNodeList) {
|
||||
String xmlNodeId = processModelNode.getXmlNodeId();
|
||||
processModelNode.setProcessKey(id);
|
||||
//判断是否是审批节点
|
||||
if (approvalNodeIdList.contains(xmlNodeId) ){
|
||||
processModelNode.setIsApprovalNode(YesOrNoEnum.YES.getInteger());
|
||||
}
|
||||
@@ -383,12 +378,13 @@ public class ProcessModelNodeService extends ServiceImpl<ProcessModelNodeMapper,
|
||||
processModelNode.setVariableName(inputDataItem.replace("${","").replace("}",""));
|
||||
}else {
|
||||
String replace = assignee.replace("${", "").replace("}", "");
|
||||
processModelNode.setVariableName(replace);
|
||||
if (multiInstanceElementVariableList.contains(replace)) {
|
||||
processModelNode.setVariableType(VariableTypeEnum.LIST.getName());
|
||||
replace += "List";
|
||||
}else {
|
||||
processModelNode.setVariableType(VariableTypeEnum.STRING.getName());
|
||||
}
|
||||
processModelNode.setVariableName(replace);
|
||||
}
|
||||
processModelNode.setSort(sort++);
|
||||
} else if (flowElement instanceof SequenceFlow) {
|
||||
|
||||
+17
-17
@@ -71,7 +71,7 @@ public class ProcessNodeService extends ServiceImpl<ProcessNodeMapper, ProcessNo
|
||||
* @Date: 2023/11/22 16:39
|
||||
* @Description: 对流程节点做一下特殊处理
|
||||
**/
|
||||
private List<ProcessNode> getViewNodeList(List<ProcessNode> processNodeList, String processDefinitionId) {
|
||||
private List<ProcessNode> getViewNodeList(List<ProcessNode> newProcessNodeList, String processDefinitionId) {
|
||||
String[] parts = processDefinitionId.split(":");
|
||||
String definitionKey = parts[0];
|
||||
Integer version = Integer.valueOf(parts[1]) - 1;
|
||||
@@ -81,34 +81,34 @@ public class ProcessNodeService extends ServiceImpl<ProcessNodeMapper, ProcessNo
|
||||
List<ProcessNode> oldNodeList = list(queryWrapper);
|
||||
|
||||
if (CollectionUtils.isEmpty(oldNodeList)) {
|
||||
return processNodeList;
|
||||
return newProcessNodeList;
|
||||
}
|
||||
|
||||
List<String> nodeIdList = oldNodeList.stream()
|
||||
List<String> oldNodeIdList = oldNodeList.stream()
|
||||
.map(ProcessNode::getXmlNodeId).distinct().collect(Collectors.toList());
|
||||
|
||||
// 给前端展示的节点
|
||||
List<ProcessNode> viewNodeList = oldNodeList.stream()
|
||||
.filter(node -> node.getIsView() == 1).collect(Collectors.toList());
|
||||
Map<String, String> map = CollStreamUtil.toMap(processNodeList, ProcessNode::getXmlNodeId, ProcessNode::getNodeName);
|
||||
viewNodeList.forEach(viewNode -> {
|
||||
viewNode.setProcessDefinitionId(processDefinitionId);
|
||||
viewNode.setId(null);
|
||||
viewNode.setCreateTime(null);
|
||||
viewNode.setCreateBy(null);
|
||||
if (map.containsKey(viewNode.getXmlNodeId())) {
|
||||
viewNode.setNodeName(map.get(viewNode.getXmlNodeId()));
|
||||
//List<ProcessNode> oldViewNodeList = oldNodeList.stream()
|
||||
// .filter(node -> node.getIsView() == 1).collect(Collectors.toList());
|
||||
Map<String, String> newNodeMap = CollStreamUtil.toMap(newProcessNodeList, ProcessNode::getXmlNodeId, ProcessNode::getNodeName);
|
||||
oldNodeList.forEach(oldNode -> {
|
||||
oldNode.setProcessDefinitionId(processDefinitionId);
|
||||
oldNode.setId(null);
|
||||
oldNode.setCreateTime(null);
|
||||
oldNode.setCreateBy(null);
|
||||
if (newNodeMap.containsKey(oldNode.getXmlNodeId())) {
|
||||
oldNode.setNodeName(newNodeMap.get(oldNode.getXmlNodeId()));
|
||||
}
|
||||
});
|
||||
|
||||
for (ProcessNode processNode : processNodeList) {
|
||||
for (ProcessNode newProcessNode : newProcessNodeList) {
|
||||
// 如果旧列表里面不存在这个名字,即为新增节点
|
||||
if (!nodeIdList.contains(processNode.getXmlNodeId())) {
|
||||
viewNodeList.add(processNode);
|
||||
if (!oldNodeIdList.contains(newProcessNode.getXmlNodeId())) {
|
||||
oldNodeList.add(newProcessNode);
|
||||
}
|
||||
}
|
||||
|
||||
return viewNodeList;
|
||||
return oldNodeList;
|
||||
}
|
||||
|
||||
public List<ProcessNode> getNodeList(String processDefinitionId, String processInstanceId) {
|
||||
|
||||
Reference in New Issue
Block a user