fix 80012 项目合规流程-流程图 需更改

This commit is contained in:
lijiarao
2024-01-29 18:20:11 +08:00
parent ad118980c9
commit d81f8d3617
@@ -298,7 +298,8 @@ public class ModelerController {
.distinct()
.collect(Collectors.toList());
Map<String,String> startEventReplace = new HashMap<>();
Map<String,ProcessModelNode> endEventReplace = new HashMap<>();
Map<String,List<ProcessModelNode>> endEventReplace = new HashMap<>();
//确定结束节点的连线
List<ProcessModelNode> removeNodeList = new ArrayList<>();
for (String subProcessId : subProcessIdList) {
@@ -319,11 +320,41 @@ public class ModelerController {
//subEndEventList.add(xmlNodeId);
//通过target拿到线
ProcessModelNode flow = targetSourceMap.get(xmlNodeId);
endEventReplace.put(subProcessId,flow);
if (endEventReplace.containsKey(subProcessId)) {
List<ProcessModelNode> processModelNodes = endEventReplace.get(subProcessId);
processModelNodes.add(flow);
}else {
List<ProcessModelNode> processModelNodes = new ArrayList<>();
processModelNodes.add(flow);
endEventReplace.put(subProcessId,processModelNodes);
}
removeNodeList.add(flow);
}
}
}
//把之前删除的结束节点更新后在加回来
List<ProcessModelNode> addNodeList = new ArrayList<>();
for (ProcessModelNode modelNode : nodeOriginList) {
String nodeType = modelNode.getNodeType();
String nodeName = modelNode.getNodeName();
String xmlSourceRef = modelNode.getXmlSourceRef();
String xmlTargetRef = modelNode.getXmlTargetRef();
if ("sequenceFlow".equals(nodeType)){
if (endEventReplace.containsKey(xmlSourceRef)) {
List<ProcessModelNode> processModelNodes = endEventReplace.get(xmlSourceRef);
for (ProcessModelNode modelNode1 : processModelNodes) {
modelNode1.setXmlTargetRef(xmlTargetRef);
addNodeList.add(modelNode1);
}
//modelNode.setXmlTargetRef(modelNode1.getXmlTargetRef());
}
if (startEventReplace.containsKey(xmlTargetRef)) {
xmlTargetRef = startEventReplace.get(xmlTargetRef);
modelNode.setXmlTargetRef(xmlTargetRef);
}
}
}
//删除结束节点的连线
nodeOriginList.removeAll(removeNodeList);
//获得子流程之后的连线
@@ -332,26 +363,7 @@ public class ModelerController {
.collect(Collectors.toList());
//获得子流程之后的连线map
Map<String, ProcessModelNode> beforeSubProcessFlowMap = CollStreamUtil.toIdentityMap(beforeSubProcessFlowList, ProcessModelNode::getXmlSourceRef);
//把之前删除的结束节点更新后在加回来
List<ProcessModelNode> addNodeList = new ArrayList<>();
for (ProcessModelNode modelNode : nodeOriginList) {
String nodeType = modelNode.getNodeType();
String nodeName = modelNode.getNodeName();
String xmlSourceRef = modelNode.getXmlSourceRef();
String xmlTargetRef = modelNode.getXmlTargetRef();
if ("sequenceFlow".equals(nodeType)){
if (endEventReplace.containsKey(xmlSourceRef)) {
ProcessModelNode modelNode1 = endEventReplace.get(xmlSourceRef);
modelNode1.setXmlTargetRef(xmlTargetRef);
addNodeList.add(modelNode1);
//modelNode.setXmlTargetRef(modelNode1.getXmlTargetRef());
}
if (startEventReplace.containsKey(xmlTargetRef)) {
xmlTargetRef = startEventReplace.get(xmlTargetRef);
modelNode.setXmlTargetRef(xmlTargetRef);
}
}
}
//把之前删除的结束节点更新后在加回来
nodeOriginList.addAll(addNodeList);
@@ -360,7 +372,7 @@ public class ModelerController {
.filter(item -> "驳回".equals(item.getNodeName()))
.collect(Collectors.toList());
//全部去除
nodeOriginList.removeAll(rejectFlowList);
//nodeOriginList.removeAll(rejectFlowList);
Map<String, ProcessModelNode> rejectSourceIdIsGatewayMap = CollStreamUtil.toIdentityMap(rejectFlowList, ProcessModelNode::getXmlSourceRef);
//找到全部的通过线
List<ProcessModelNode> passFlowList = nodeOriginList.stream()
@@ -397,14 +409,14 @@ public class ModelerController {
edge.put("target",afterGatewayNodeId);
edges.add(edge);
//网关后的线
//ProcessModelNode modelNode2 = rejectSourceIdIsGatewayMap.get(xmlTargetRef);
ProcessModelNode modelNode2 = rejectSourceIdIsGatewayMap.get(xmlTargetRef);
////网关后的节点id
//String afterGatewayNodeId1 = modelNode2.getXmlTargetRef();
//Map<String,Object> edge2 = new HashMap<>();
//edge2.put("label","驳回");
//edge2.put("source", beforeGatewayNodeId);
//edge2.put("target",afterGatewayNodeId1);
//edges.add(edge2);
String afterGatewayNodeId1 = modelNode2.getXmlTargetRef();
Map<String,Object> edge2 = new HashMap<>();
edge2.put("label","驳回");
edge2.put("source", beforeGatewayNodeId);
edge2.put("target",afterGatewayNodeId1);
edges.add(edge2);
}
//找到全部的审批网关(审批网关名字是null)
List<ProcessModelNode> gatewayList = nodeOriginList.stream()