From 79da50ff6a8cabc082472c27ac85724ef664db67 Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期四, 19 九月 2024 14:08:00 +0800
Subject: [PATCH] 修改

---
 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelLineService.java |   65 ++++++++++++++++++++++++++------
 1 files changed, 53 insertions(+), 12 deletions(-)

diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelLineService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelLineService.java
index 9c74487..0cea759 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelLineService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/ModelLineService.java
@@ -8,14 +8,11 @@
 import com.zt.common.utils.UUIDUtil;
 import com.zt.life.modules.mainPart.basicInfo.dao.ParamDataDao;
 import com.zt.life.modules.mainPart.basicInfo.dao.XhProductModelDao;
-import com.zt.life.modules.mainPart.basicInfo.model.ParamData;
 import com.zt.life.modules.mainPart.basicInfo.model.ProductImg;
-import com.zt.life.modules.mainPart.basicInfo.model.XhProductModel;
 import com.zt.life.modules.mainPart.taskReliability.dao.*;
 import com.zt.life.modules.mainPart.taskReliability.dto.ModelLinePairDto;
 import com.zt.life.modules.mainPart.taskReliability.model.*;
 import org.apache.commons.lang3.StringUtils;
-import org.dom4j.Element;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -193,7 +190,11 @@
         // 7. 閫掑綊璁$畻RBD鐨勫竷灞�绌洪棿鍙傛暟锛坸銆亂鍧愭爣锛�
         root.setBlockX(0);
         root.setBlockY(0);
-        calcPosition(rbdJsonArray, root);
+
+        Map<String, RbdTreeNode> nodeMap = new HashMap<>();
+        calcPosition(rbdJsonArray, root, nodeMap);
+        setEdgeRouter(rbdJsonArray, nodeMap);
+
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("cells", rbdJsonArray);
         modelRbd.setContent(jsonObject.toString());
@@ -207,15 +208,53 @@
         return result;
     }
 
-    private void setNodePositionXY(JSONArray rbdJsonArray, RbdTreeNode block) {
+    private void setEdgeRouter(JSONArray rbdJsonArray, Map<String, RbdTreeNode> nodeMap) {
+        for (int i = 0; i < rbdJsonArray.size(); i++
+        ) {
+            JSONObject jsonObject = rbdJsonArray.getJSONObject(i);
+            if (jsonObject.get("shape").equals("edge")) {
+                String sourceId = JsonUtils2.getJsonValueByPath(jsonObject, "source/cell".split("/")).toString();
+                String targetId = JsonUtils2.getJsonValueByPath(jsonObject, "target/cell".split("/")).toString();
+                RbdTreeNode sourceNode = nodeMap.get(sourceId);
+                RbdTreeNode targetNode = nodeMap.get(targetId);
+                if (sourceNode != null) {
+                    if ("connect".equals(sourceNode.getNodeType()) && !"10000".equals(sourceId)){
+                        if (sourceNode.getY()+sourceNode.getMyHeight()/2 == targetNode.getY()+targetNode.getMyHeight()/2){
+                            JsonUtils2.setJsonValueByPath(jsonObject, "router/args/startDirections".split("/"),"right".split(","));
+                            JsonUtils2.setJsonValueByPath(jsonObject, "router/args/endDirections".split("/"),"left".split(","));
+                        }else{
+                            JsonUtils2.setJsonValueByPath(jsonObject, "router/args/startDirections".split("/"),"top,bottom".split(","));
+                            JsonUtils2.setJsonValueByPath(jsonObject, "router/args/endDirections".split("/"),"left".split(","));
+                        }
+                    }
+                }
+                if (targetNode != null) {
+                    if ("parallel,vote".contains(targetNode.getNodeType())){
+                        if (sourceNode.getY()+sourceNode.getMyHeight()/2 == targetNode.getY()+targetNode.getMyHeight()/2){
+                            JsonUtils2.setJsonValueByPath(jsonObject, "router/args/startDirections".split("/"),"right".split(""));
+                            JsonUtils2.setJsonValueByPath(jsonObject, "router/args/endDirections".split("/"),"left".split(""));
+                        }else{
+                            JsonUtils2.setJsonValueByPath(jsonObject, "router/args/startDirections".split("/"),"right".split(""));
+                            JsonUtils2.setJsonValueByPath(jsonObject, "router/args/endDirections".split("/"),"top,bottom".split(""));
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    private void setNodePositionXY(JSONArray rbdJsonArray, RbdTreeNode block, Map<String, RbdTreeNode> nodeMap) {
         Double x = block.getBlockX() + (block.getBlockWidth() - block.getMyWidth()) / 2;
         Double y = block.getBlockY() + (block.getBlockHeight() - block.getMyHeight()) / 2;
+        block.setX(x);
+        block.setY(y);
+        nodeMap.put(block.getPicId(),block);
         setRbdNodePosition(rbdJsonArray, block.getPicId(), x, y);
     }
 
-    private void calcPosition(JSONArray rbdJsonArray, RbdTreeNode block) {
+    private void calcPosition(JSONArray rbdJsonArray, RbdTreeNode block, Map<String, RbdTreeNode> nodeMap) {
         if (block.getNodeType().equals("node")) {
-            setNodePositionXY(rbdJsonArray, block);
+            setNodePositionXY(rbdJsonArray, block,nodeMap);
         } else {
             double blockWidth = block.getBlockWidthNum() * LAYOUT_CELL_SIZE_X;
             double blockHeight = block.getBlockHeightNum() * LAYOUT_CELL_SIZE_Y;
@@ -246,25 +285,26 @@
 
                     child.setBlockY(block.getBlockY());
                     child.setBlockX(subBlockX);
-                    calcPosition(rbdJsonArray, child);
+                    calcPosition(rbdJsonArray, child, nodeMap);
                     subBlockX = subBlockX + selfWidth;
 
                 }
             } else {
 
-                Double subBlockY = block.getBlockY()+(descentHeight-blockHeight)/2;
+                Double subBlockY = block.getBlockY() + (descentHeight - blockHeight) / 2;
                 Double firstSubBlockY = subBlockY;
 
                 // 璁剧疆connect鐨勪綅缃�
                 RbdTreeNode connectBlock = new RbdTreeNode();
                 connectBlock.setMyWidth(getRbdNodeInfo(rbdJsonArray, block.getPairStartNodeId(), "size/width"));
                 connectBlock.setMyHeight(getRbdNodeInfo(rbdJsonArray, block.getPairStartNodeId(), "size/height"));
+                connectBlock.setNodeType("connect");
                 connectBlock.setPicId(block.getPairStartNodeId());
                 connectBlock.setBlockX(block.getBlockX());
                 connectBlock.setBlockY(firstSubBlockY);
                 connectBlock.setBlockWidth(LAYOUT_CELL_SIZE_X);
                 connectBlock.setBlockHeight(blockHeight);
-                setNodePositionXY(rbdJsonArray, connectBlock);
+                setNodePositionXY(rbdJsonArray, connectBlock, nodeMap);
 
                 for (RbdTreeNode child : children) {
                     child.setDescentWidth(block.getBlockWidth() - 2 * LAYOUT_CELL_SIZE_X);
@@ -276,20 +316,21 @@
                     child.setBlockX(block.getBlockX() + LAYOUT_CELL_SIZE_X);
                     child.setBlockY(subBlockY);
                     subBlockY = subBlockY + child.getBlockHeightNum() * LAYOUT_CELL_SIZE_Y;
-                    calcPosition(rbdJsonArray, child);
+                    calcPosition(rbdJsonArray, child, nodeMap);
                 }
 
                 // 璁剧疆杩愮畻绗︾殑浣嶇疆
                 RbdTreeNode opeBlock = new RbdTreeNode();
 
                 opeBlock.setPicId(block.getPicId());
+                opeBlock.setNodeType("parallel");
                 opeBlock.setMyWidth(getRbdNodeInfo(rbdJsonArray, block.getPicId(), "size/width"));
                 opeBlock.setMyHeight(getRbdNodeInfo(rbdJsonArray, block.getPicId(), "size/height"));
                 opeBlock.setBlockX(block.getBlockX() + blockWidth - LAYOUT_CELL_SIZE_X);
                 opeBlock.setBlockY(firstSubBlockY);
                 opeBlock.setBlockWidth(LAYOUT_CELL_SIZE_X);
                 opeBlock.setBlockHeight(blockHeight);
-                setNodePositionXY(rbdJsonArray, opeBlock);
+                setNodePositionXY(rbdJsonArray, opeBlock, nodeMap);
             }
         }
 

--
Gitblit v1.9.1