From a9ea67c8dad6c25c2cc1b251aacab8069fee093d Mon Sep 17 00:00:00 2001 From: qinoy Date: Mon, 29 May 2023 15:48:27 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AB=AF=E5=88=B0=E7=AB=AF=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=20=E8=8A=82=E7=82=B9=E4=B8=8E=E8=BF=9E=E7=BA=BF=E5=B8=83?= =?UTF-8?q?=E5=B1=80=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...oft.apps.coe.method.process.subprocess.jar | Bin 40922 -> 41238 bytes .../process/subprocess/graph/GraphLayout.java | 20 ++++--- .../subprocess/graph/GraphLinkerRender.java | 51 ++++++++++++------ .../graph/GraphNodeExpandHandle.java | 22 ++++++-- 4 files changed, 66 insertions(+), 27 deletions(-) diff --git a/com.actionsoft.apps.coe.method.process.subprocess/lib/com.actionsoft.apps.coe.method.process.subprocess.jar b/com.actionsoft.apps.coe.method.process.subprocess/lib/com.actionsoft.apps.coe.method.process.subprocess.jar index c4d5d81f7d1b0db0d0f78631de8f1bac9035da93..1b017e3b5e6c76b2889c68c8d0ba5d9dccc35e43 100644 GIT binary patch delta 11087 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 rearNodeIndexSet = getRearNodeIndex(nodeIndex); + List unIsPosition = new ArrayList<>(); for (int i = 0; i < rearNodeIndexSet.size(); i++) { int rearNodeIndex = rearNodeIndexSet.get(i).intValue(); if (!isPosition[rearNodeIndex]) { + unIsPosition.add(rearNodeIndex); position[rearNodeIndex][0] = position[nodeIndex][0] + shapeW + horizInterval; // 上一个节点的x坐标 + 图形宽度 + 间隔 = 当前节点的x坐标 - if (i == 0) { + if (unIsPosition.size() == 1) { position[rearNodeIndex][1] = position[nodeIndex][1]; // 上一个节点的y坐标 与 第一个后置节点的y坐标一致 }else { - position[rearNodeIndex][1] = realTimeY + shapeH + i * vertInterval; // 非第一个后置节点的y坐标 = 上一个节点的y坐标 + 图形高度 + 后置节点索引 * 垂直间隔 + position[rearNodeIndex][1] = realTimeY + shapeH + (unIsPosition.size() - 1) * vertInterval; // 非第一个后置节点的y坐标 = 上一个节点的y坐标 + 图形高度 + 后置节点索引 * 垂直间隔 realTimeY = position[rearNodeIndex][1]; } isPosition[rearNodeIndex] = true; @@ -171,13 +174,13 @@ public class GraphLayout { * @return 节点坐标 */ public double[][] vertLayOut(){ - double realTimeX = 0.0; // 实时记录图形最高的Y + double realTimeX = 0.0; // 实时记录图形位置x for (int i = 0; i < nodeList.size(); i++) { // 第一个节点直接放到画布的左上角 if (i == 0) { position[i][0] = 100.0; position[i][1] = 100.0; - realTimeX = 100.0; + realTimeX = position[i][1]; isPosition[i] = true; if (existOutLink(i)){ // 如果存在后置节点 并且后置节点还未渲染 realTimeX = calculationRearNodePoiInVertLayOut(i, realTimeX); @@ -188,6 +191,7 @@ public class GraphLayout { position[i][0] = realTimeX + shapeW + horizInterval; position[i][1] = 100.0; realTimeX = position[i][0]; + isPosition[i] = true; if (existOutLink(i)){ realTimeX = calculationRearNodePoiInVertLayOut(i, realTimeX); } @@ -212,14 +216,16 @@ public class GraphLayout { private double calculationRearNodePoiInVertLayOut(int nodeIndex, double realTimeX){ // 获取后置节点的索引 List rearNodeIndexSet = getRearNodeIndex(nodeIndex); + List unIsPosition = new ArrayList<>(); for (int i = 0; i < rearNodeIndexSet.size(); i++) { int rearNodeIndex = rearNodeIndexSet.get(i).intValue(); if (!isPosition[rearNodeIndex]) { + unIsPosition.add(rearNodeIndex); position[rearNodeIndex][1] = position[nodeIndex][1] + shapeH + vertInterval; // 当前节点的坐标y = 前置节点的坐标y + 图形高度 + 垂直间隔 - if (i == 0){ + if (unIsPosition.size() == 1){ position[rearNodeIndex][0] = position[nodeIndex][0]; // 当前节点的如果为第一个后置节点 则 坐标x的值一致 }else { - position[rearNodeIndex][0] = position[nodeIndex][0] + shapeW + i * horizInterval; // 非第一个后置节点的坐标x = 上一个节点的坐标x + 图形宽度 + 第几个后置节点 * 横向间隔 + position[rearNodeIndex][0] = position[nodeIndex][0] + shapeW + (unIsPosition.size() - 1) * horizInterval; // 非第一个后置节点的坐标x = 上一个节点的坐标x + 图形宽度 + 第几个后置节点 * 横向间隔 realTimeX = position[rearNodeIndex][0]; } isPosition[rearNodeIndex] = true; diff --git a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphLinkerRender.java b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphLinkerRender.java index a01bb47c..db09bc02 100644 --- a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphLinkerRender.java +++ b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphLinkerRender.java @@ -127,17 +127,23 @@ public class GraphLinkerRender { */ private double[][] calculationLinkerPointInHorizLayOut(double[] fromPoi, double[] toPoi){ double fromX = fromPoi[0],fromY = fromPoi[1],toX = toPoi[0],toY = toPoi[1]; - if (fromY == toY) { // 水平 - double[] startPoint = (fromX < toX) - ? new double[]{fromX + SubProcessConst.SUB_PROCESS_SHAPE_W, fromY + SubProcessConst.SUB_PROCESS_SHAPE_H / 2} - : new double[]{fromX, fromY + SubProcessConst.SUB_PROCESS_SHAPE_H / 2}; - double turnPointX = (fromX < toX) - ? fromX + SubProcessConst.SUB_PROCESS_SHAPE_W + (toX - (fromX + SubProcessConst.SUB_PROCESS_SHAPE_W)) / 2 - : toX + SubProcessConst.SUB_PROCESS_SHAPE_W + (fromX - (toX + SubProcessConst.SUB_PROCESS_SHAPE_W)) / 2; - double[] endPoint = (fromX < toX) - ? new double[]{toX, toY + SubProcessConst.SUB_PROCESS_SHAPE_H / 2} - : new double[]{toX + SubProcessConst.SUB_PROCESS_SHAPE_W, toY + SubProcessConst.SUB_PROCESS_SHAPE_H / 2}; - return new double[][]{startPoint, {turnPointX, toY + (SubProcessConst.SUB_PROCESS_SHAPE_H / 2)},{turnPointX, toY + (SubProcessConst.SUB_PROCESS_SHAPE_H / 2)}, endPoint}; + if (fromY == toY) { // 水平 方向上 存在从左向右直连的情况 但不存在从右向左直连的情况 水平方向上 从左向右 应是 右出 向上 左折 向下 + return fromX < toX + ? new double[][] + { + {fromX + SubProcessConst.SUB_PROCESS_SHAPE_W, fromY + SubProcessConst.SUB_PROCESS_SHAPE_H / 2}, + {fromX + SubProcessConst.SUB_PROCESS_SHAPE_W + SubProcessConst.SHAPE_HORIZ_INTERVAL / 2, fromY + SubProcessConst.SUB_PROCESS_SHAPE_H / 2}, + {fromX + SubProcessConst.SUB_PROCESS_SHAPE_W + SubProcessConst.SHAPE_HORIZ_INTERVAL / 2, fromY + SubProcessConst.SUB_PROCESS_SHAPE_H / 2}, + {toX, toY + SubProcessConst.SUB_PROCESS_SHAPE_H / 2} + } + : new double[][] + { + {fromX + SubProcessConst.SUB_PROCESS_SHAPE_W, fromY + SubProcessConst.SUB_PROCESS_SHAPE_H / 2}, + {fromX + SubProcessConst.SUB_PROCESS_SHAPE_W + SubProcessConst.SHAPE_HORIZ_INTERVAL / 2, fromY + SubProcessConst.SUB_PROCESS_SHAPE_H / 2}, + {fromX + SubProcessConst.SUB_PROCESS_SHAPE_W + SubProcessConst.SHAPE_HORIZ_INTERVAL / 2, fromY - SubProcessConst.SHAPE_VERT_INTERVAL / 2}, + {toX + SubProcessConst.SUB_PROCESS_SHAPE_W / 2, toY - SubProcessConst.SHAPE_VERT_INTERVAL / 2}, + {toX + SubProcessConst.SUB_PROCESS_SHAPE_W / 2, toY} + }; }else if (fromX == toX) { // 垂直 // 节点横向分布 连线按照大原则 垂直 不存在 fromY < toY 的情况 也就是不存在 连线从上到下直连的情况 double[] startPoint = new double[]{fromX + SubProcessConst.SUB_PROCESS_SHAPE_W, fromY + SubProcessConst.SUB_PROCESS_SHAPE_H / 2}; @@ -252,12 +258,23 @@ public class GraphLinkerRender { {toX + SubProcessConst.SUB_PROCESS_SHAPE_W / 2, toY} }; }else if (fromX > toX && fromY < toY){ // 目标节点在第三象限 - return new double[][]{ - {fromX + SubProcessConst.SUB_PROCESS_SHAPE_W / 2, fromY + SubProcessConst.SUB_PROCESS_SHAPE_H}, - {fromX + SubProcessConst.SUB_PROCESS_SHAPE_W / 2, fromY + SubProcessConst.SUB_PROCESS_SHAPE_H + SubProcessConst.SHAPE_VERT_INTERVAL / 2}, - {toX + SubProcessConst.SUB_PROCESS_SHAPE_W / 2, toY - SubProcessConst.SHAPE_VERT_INTERVAL / 2}, - {toX + SubProcessConst.SUB_PROCESS_SHAPE_W / 2, toY} - }; + return toY - fromY == SubProcessConst.SHAPE_VERT_INTERVAL + ? new double[][] + { + {fromX + SubProcessConst.SUB_PROCESS_SHAPE_W / 2, fromY + SubProcessConst.SUB_PROCESS_SHAPE_H}, + {fromX + SubProcessConst.SUB_PROCESS_SHAPE_W / 2, fromY + SubProcessConst.SUB_PROCESS_SHAPE_H + SubProcessConst.SHAPE_VERT_INTERVAL / 2}, + {toX + SubProcessConst.SUB_PROCESS_SHAPE_W / 2, toY - SubProcessConst.SHAPE_VERT_INTERVAL / 2}, + {toX + SubProcessConst.SUB_PROCESS_SHAPE_W / 2, toY} + } + : new double[][] + { + {fromX + SubProcessConst.SUB_PROCESS_SHAPE_W / 2, fromY + SubProcessConst.SUB_PROCESS_SHAPE_H}, + {fromX + SubProcessConst.SUB_PROCESS_SHAPE_W / 2, fromY + SubProcessConst.SUB_PROCESS_SHAPE_H + SubProcessConst.SHAPE_VERT_INTERVAL / 2}, + {toX + SubProcessConst.SUB_PROCESS_SHAPE_W + SubProcessConst.SHAPE_HORIZ_INTERVAL / 2, fromY + SubProcessConst.SUB_PROCESS_SHAPE_H + SubProcessConst.SHAPE_VERT_INTERVAL / 2}, + {toX + SubProcessConst.SUB_PROCESS_SHAPE_W + SubProcessConst.SHAPE_HORIZ_INTERVAL / 2, toY - SubProcessConst.SHAPE_VERT_INTERVAL / 2}, + {toX + SubProcessConst.SUB_PROCESS_SHAPE_W / 2, toY - SubProcessConst.SHAPE_VERT_INTERVAL / 2}, + {toX + SubProcessConst.SUB_PROCESS_SHAPE_W / 2, toY} + }; }else if (fromX < toX && fromY < toY){ // 目标节点在第四象限 return new double[][]{ {fromX + SubProcessConst.SUB_PROCESS_SHAPE_W / 2, fromY + SubProcessConst.SUB_PROCESS_SHAPE_H}, diff --git a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphNodeExpandHandle.java b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphNodeExpandHandle.java index 3143de26..ec8fc35b 100644 --- a/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphNodeExpandHandle.java +++ b/com.actionsoft.apps.coe.method.process.subprocess/src/com/actionsoft/apps/coe/method/process/subprocess/graph/GraphNodeExpandHandle.java @@ -8,6 +8,7 @@ import com.actionsoft.apps.coe.pal.pal.repository.designer.relation.model.Design import com.actionsoft.apps.coe.pal.pal.repository.designer.util.ShapeUtil; import com.actionsoft.bpms.util.UtilString; import com.actionsoft.exception.AWSException; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import java.util.List; @@ -44,8 +45,9 @@ public class GraphNodeExpandHandle { if (relationModel == null) throw new AWSException("未找到当前节点所标识的子流程文件信息"); relationFileId = relationModel.getRelationFileId(); + // 先去与总图存储的同级目录下读取 如果为空说明是初次读取 childProcessDefine = apiManager.getChildProcessDefine(repositoryId, 0, relationFileId); - if (UtilString.isEmpty(childProcessDefine)){ // 初次展开 去源文件目录读取 + if (UtilString.isEmpty(childProcessDefine)){ // 初次读取 去源文件目录读取 BaseModel childProcessBaseModel = apiManager.getDefinition(relationFileId, 0); childProcessDefine = childProcessBaseModel.getDefinition(); } @@ -67,7 +69,7 @@ public class GraphNodeExpandHandle { * @return 范围标注框 * @throws AWSException */ - public JSONObject toAssembleScopeLimitationShape() throws AWSException{ + private JSONObject toAssembleScopeLimitationShape() throws AWSException{ JSONObject scopeLimitationShape = ShapeUtil.getProcessShapeDefinition(SubProcessConst.SUB_PROCESS_METHOD_ID, "展开范围标注"); JSONObject childProcessDefineObj = JSONObject.parseObject(childProcessDefine); JSONObject childProcessPage = childProcessDefineObj.getJSONObject("page"); @@ -110,8 +112,22 @@ public class GraphNodeExpandHandle { JSONObject elements = childProcessDefineObj.getJSONObject("elements"); for (String key : elements.keySet()) { JSONObject ele = elements.getJSONObject(key); - + JSONObject props = ele.getJSONObject("props"); + props.put("x", scopeShapeX + props.getDoubleValue("x")); + props.put("y", scopeShapeY + props.getDoubleValue("y")); + // 元素分为两类 一类为图形 一类为连线 + if ("linker".equals(ele.getString("name"))){ // 连线的话折点需要额外处理 + JSONArray points = ele.getJSONArray("points"); + for (Object p : points) { + JSONObject point = (JSONObject) p; + point.put("x", point.getDoubleValue("x") + scopeShapeX); + point.put("y", point.getDoubleValue("y") + scopeShapeY); + } + } } + + // 找到总图中 x坐标 >= 范围标注框x坐标 y坐标 >= 范围标注框y坐标 的图形 + } /**