端到端功能 节点展开部分代码提交

This commit is contained in:
qinoy 2023-05-31 18:04:20 +08:00
parent d563f44d36
commit 8e64b1e6f5
4 changed files with 46 additions and 32 deletions

View File

@ -33,4 +33,7 @@ public interface SubProcessConst {
double SHAPE_VERT_INTERVAL = 80.0;
// 图形间水平间隔
double SHAPE_HORIZ_INTERVAL = 80.0;
// 范围选择框内边距
double SCOPE_SHAPE_PADDING = 300;
}

View File

@ -15,9 +15,7 @@ import com.actionsoft.exception.AWSException;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.*;
import java.util.concurrent.locks.ReentrantLock;
/**
@ -85,31 +83,31 @@ public class GraphNodeExpandHandle {
JSONObject scopeLimitationShape = ShapeUtil.getProcessShapeDefinition(SubProcessConst.SUB_PROCESS_METHOD_ID, "展开范围标注");
JSONObject childProcessPage = childProcessDefine.getJSONObject("page");
JSONObject childProcessElements = childProcessDefine.getJSONObject("elements");
Double childProcessEleMaxX = childProcessElements.keySet()
JSONObject childProcessEleMaxX = childProcessElements.keySet()
.stream()
.filter(key -> !"linker".equals(childProcessElements.getJSONObject(key).getString("name")))
.map(key -> childProcessElements.getJSONObject(key).getJSONObject("props").getDoubleValue("x"))
.max(Comparator.comparing(Double::doubleValue)).get();
Double childProcessEleMinX = childProcessElements.keySet()
.map(key -> childProcessElements.getJSONObject(key).getJSONObject("props"))
.max((o1, o2) -> Double.compare(o1.getDoubleValue("x"), o2.getDoubleValue("x"))).get();
JSONObject childProcessEleMixX = childProcessElements.keySet()
.stream()
.filter(key -> !"linker".equals(childProcessElements.getJSONObject(key).getString("name")))
.map(key -> childProcessElements.getJSONObject(key).getJSONObject("props").getDoubleValue("x"))
.min(Comparator.comparing(Double::doubleValue)).get();
Double childProcessEleMaxY = childProcessElements.keySet()
.map(key -> childProcessElements.getJSONObject(key).getJSONObject("props"))
.min((o1, o2) -> Double.compare(o1.getDoubleValue("x"), o2.getDoubleValue("x"))).get();
JSONObject childProcessEleMaxY = childProcessElements.keySet()
.stream()
.filter(key -> !"linker".equals(childProcessElements.getJSONObject(key).getString("name")))
.map(key -> childProcessElements.getJSONObject(key).getJSONObject("props").getDoubleValue("y"))
.max(Comparator.comparing(Double::doubleValue)).get();
Double childProcessEleMinY = childProcessElements.keySet()
.map(key -> childProcessElements.getJSONObject(key).getJSONObject("props"))
.max((o1, o2) -> Double.compare(o1.getDoubleValue("y"), o2.getDoubleValue("y"))).get();
JSONObject childProcessEleMinY = childProcessElements.keySet()
.stream()
.filter(key -> !"linker".equals(childProcessElements.getJSONObject(key).getString("name")))
.map(key -> childProcessElements.getJSONObject(key).getJSONObject("props").getDoubleValue("y"))
.min(Comparator.comparing(Double::doubleValue)).get();
.map(key -> childProcessElements.getJSONObject(key).getJSONObject("props"))
.min((o1, o2) -> Double.compare(o1.getDoubleValue("y"), o2.getDoubleValue("y"))).get();
// 当前节点所标识的子流程文件的 画布宽度与高度 减去边距
// double childProcessPageWidth = childProcessPage.getDoubleValue("width") - childProcessPage.getDoubleValue("padding") * 2;
// double childProcessPageHeight = childProcessPage.getDoubleValue("height") - childProcessPage.getDoubleValue("padding") * 2;
double scopeShapeW = childProcessEleMaxX.doubleValue() - childProcessEleMinX + childProcessPage.getDoubleValue("padding") * 2;
double scopeShapeH = childProcessEleMaxY.doubleValue() - childProcessEleMinY + childProcessPage.getDoubleValue("padding") * 2;
double scopeShapeW = childProcessEleMaxX.getDoubleValue("x") + childProcessEleMaxX.getDoubleValue("w") - childProcessEleMixX.getDoubleValue("x") + SubProcessConst.SCOPE_SHAPE_PADDING;
double scopeShapeH = childProcessEleMaxY.getDoubleValue("y") + childProcessEleMaxY.getDoubleValue("h") - childProcessEleMinY.getDoubleValue("y") + SubProcessConst.SCOPE_SHAPE_PADDING;
JSONObject elements = endToEndProcessDefine.getJSONObject("elements");
// 找到当前要展开的子流程节点
@ -138,20 +136,26 @@ public class GraphNodeExpandHandle {
*/
public String handleNodeExpand(String direction) throws Exception{
Thread t1 = new Thread(() -> {
// 1总图节点以及连线处理
handleEndToEndGraphNodeAndLinker(direction);
});
t1.start();
// Thread t1 = new Thread(() -> {
// // 1总图节点以及连线处理
// handleEndToEndGraphNodeAndLinker(direction);
// });
// t1.start();
//
// Thread t2 = new Thread(() -> {
// // 2子流程节点内部元素处理
// handleRelationModelNodePosition();
// });
// t2.start();
//
// t1.join();
// t2.join();
Thread t2 = new Thread(() -> {
// 2子流程节点内部元素处理
handleRelationModelNodePosition();
});
t2.start();
// 1总图节点以及连线处理
handleEndToEndGraphNodeAndLinker(direction);
t1.join();
t2.join();
// 2子流程节点内部元素处理
handleRelationModelNodePosition();
// 6保存总图模型信息 以及 子流程模型信息备份
// BaseModel baseModel = apiManager.getDefinition(repositoryId, 0);
@ -283,12 +287,16 @@ public class GraphNodeExpandHandle {
*/
private void removeEndToEndGraphOldLinker(){
JSONObject elements = endToEndProcessDefine.getJSONObject("elements");
Set<String> eleKeys = new HashSet<>();
for (String key : elements.keySet()) {
JSONObject ele = elements.getJSONObject(key);
if ("linker".equals(ele.getString("name"))){
removeEndToEndGraphElements(key);
eleKeys.add(key);
}
}
for (String eleKey : eleKeys) {
removeEndToEndGraphElements(eleKey);
}
}
/**

View File

@ -7,6 +7,7 @@ $(function(){
const subProcess = new SubProcess(Model, ruuid, sid);
subProcess.shapeIconRender();
// 连线框 鼠标指针样式设置 防止因为连线z-index层级较高 会导致节点展开图标点击不到
$('.shape_box.linker_box').css({
'pointer-events': 'none'
});
@ -43,7 +44,7 @@ class SubProcess {
// 节点展开事件
shapeExpand(event){
let param = event.data;
alert('节点展开事件 ' + param.Model.define.elements[event.data.shapeId].text);
// alert('节点展开事件 ' + param.Model.define.elements[event.data.shapeId].text);
// 1、同时只能支持一个子流程节点展开
let elements = param.Model.define.elements;
for (let key in elements) {
@ -65,7 +66,9 @@ class SubProcess {
shapeId: param.shapeId
},
ok: function(r){
console.log(r);
console.log(JSON.stringify(r.data));
definition = JSON.stringify(r.data);
Designer.open(definition);
},
err: function(r){
$.simpleAlert(r.msg);