From 23855599412c4d61b38d78f0f3abd3430a48b5b1 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期三, 25 六月 2025 11:51:38 +0800
Subject: [PATCH] Merge branch 'mdc_hyjs_master'

---
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/support/ProductTreeWrapper.java |  154 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 154 insertions(+), 0 deletions(-)

diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/support/ProductTreeWrapper.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/support/ProductTreeWrapper.java
new file mode 100644
index 0000000..7e2d0c5
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/support/ProductTreeWrapper.java
@@ -0,0 +1,154 @@
+package org.jeecg.modules.dnc.service.support;
+
+import cn.hutool.core.util.StrUtil;
+import org.jeecg.modules.dnc.entity.*;
+import org.jeecg.modules.dnc.response.CommonGenericTree;
+import org.jeecg.modules.dnc.entity.ComponentInfo;
+import org.jeecg.modules.dnc.dto.ComponentExt;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class ProductTreeWrapper {
+
+    public static List<CommonGenericTree> loadTree(List<ProductInfo> productInfoList, List<ComponentExt> componentInfoList,
+                                                   List<PartsInfo> partsInfoList,List<ProcessSpecVersion> processSpecVersionList,
+                                                   List<ProcessStream> processStreams, List<WorkStep> workStepList) {
+        List<CommonGenericTree> tree = new ArrayList<CommonGenericTree>();// TreeNode闆嗗悎锛屽瓨鏀炬墍鏈夋爲瀵硅薄銆�
+        Map<String, CommonGenericTree> productMap = new HashMap<>();
+        Map<String, CommonGenericTree> componentMap = new HashMap<>();
+        Map<String, CommonGenericTree> partsMap = new HashMap<>();
+        Map<String, CommonGenericTree> pvsMap = new HashMap<>();
+        Map<String, CommonGenericTree> processMap = new HashMap<>();
+        CommonGenericTree<ProductInfo> node;
+        CommonGenericTree<ComponentInfo> componentNode;
+        CommonGenericTree<PartsInfo> partsNode;
+        CommonGenericTree<ProcessSpecVersion> pvsNode;
+        CommonGenericTree<ProcessStream> processNode;
+        CommonGenericTree<WorkStep> workStepNode;
+        for(ProductInfo productInfo : productInfoList) {
+            node = new CommonGenericTree();
+            node.setId(productInfo.getProductId());
+            node.setLabel("[" + productInfo.getProductNo()+ "]" + productInfo.getProductName());
+            node.setParentId(productInfo.getProductId());
+            node.setIconClass("");
+            node.setType(1);
+            node.setEntity(productInfo);
+            tree.add(node);
+            productMap.put(productInfo.getProductId(), node);
+        }
+
+        List<CommonGenericTree> commonJsonTreeList = ComponentTreeWrapper.loadTree(componentInfoList);
+        for(CommonGenericTree compNode : commonJsonTreeList) {
+            componentMap = CommonGenericTree.getLeafNode(componentMap, compNode);
+            if(productMap.containsKey(compNode.getRField())) {
+                node = productMap.get(compNode.getRField());
+                compNode.setParentId(node.getId());
+                node.addChildren(compNode);
+            }
+        }
+
+        for(PartsInfo parts : partsInfoList) {
+            partsNode = new CommonGenericTree();
+            partsNode.setId(parts.getPartsId());
+            partsNode.setLabel("[" + parts.getPartsCode()+ "]" + parts.getPartsName());
+            partsNode.setParentId(null);
+            partsNode.setIconClass("");
+            partsNode.setType(3);
+            partsNode.setRField(parts.getComponentId());
+            partsNode.setEntity(parts);
+            if(componentMap.containsKey(partsNode.getRField())) {
+                componentNode = componentMap.get(partsNode.getRField());
+                partsNode.setParentId(componentNode.getId());
+                componentNode.addChildren(partsNode);
+            }
+            partsMap.put(parts.getPartsId(), partsNode);
+        }
+
+        //宸ヨ壓瑙勭▼鐗堟湰瀛樺湪闆朵欢涓�
+        for(ProcessSpecVersion processSpecVersion : processSpecVersionList) {
+            pvsNode = new CommonGenericTree();
+            pvsNode.setId(processSpecVersion.getId());
+            pvsNode.setLabel("[" + processSpecVersion.getProcessSpecVersionCode()+ "]" + processSpecVersion.getProcessSpecVersionName());
+            pvsNode.setParentId(null);
+            pvsNode.setIconClass("");
+            pvsNode.setType(4);
+            pvsNode.setRField(processSpecVersion.getPartsId());
+            pvsNode.setEntity(processSpecVersion);
+            if(partsMap.containsKey(pvsNode.getRField())) {
+                partsNode = partsMap.get(pvsNode.getRField());
+                pvsNode.setParentId(partsNode.getId());
+                partsNode.addChildren(pvsNode);
+            }
+            pvsMap.put(processSpecVersion.getId(),pvsNode);
+        }
+
+        //宸ュ簭瀛樺湪閮ㄤ欢鎴栬�呭伐鑹鸿绋嬬増鏈笅
+        for(ProcessStream processStream : processStreams) {
+            processNode = new CommonGenericTree();
+            processNode.setId(processStream.getProcessId());
+            processNode.setLabel("[" + processStream.getProcessCode()+ "]" + processStream.getProcessName());
+            processNode.setParentId(null);
+            processNode.setIconClass("");
+            processNode.setType(5);
+            if (StrUtil.isEmpty(processStream.getPsvId())) {
+                //娌℃湁partsId锛岄儴浠朵笅鐨勫伐搴�
+                processNode.setRField(processStream.getComponentId());
+                processNode.setEntity(processStream);
+                if(componentMap.containsKey(processNode.getRField())) {
+                    componentNode = componentMap.get(processNode.getRField());
+                    processNode.setParentId(componentNode.getId());
+                    componentNode.addChildren(processNode);
+                }
+            }else {
+                //鏈塸svId锛岄浂浠朵笅鐨勫伐搴�
+                processNode.setRField(processStream.getPsvId());
+                processNode.setEntity(processStream);
+                if(pvsMap.containsKey(processNode.getRField())) {
+                    pvsNode = pvsMap.get(processNode.getRField());
+                    processNode.setParentId(pvsNode.getId());
+                    pvsNode.addChildren(processNode);
+                }
+            }
+            processMap.put(processStream.getProcessId(),processNode);
+        }
+
+        //宸ユ瀛樺湪宸ュ簭涓�
+        for (WorkStep workStep : workStepList) {
+            workStepNode = new CommonGenericTree();
+            workStepNode.setId(workStep.getId());
+            workStepNode.setLabel("[" + workStep.getStepCode() + "]" + workStep.getStepName());
+            workStepNode.setParentId(null);
+            workStepNode.setIconClass("");
+            workStepNode.setType(6);
+            workStepNode.setRField(workStep.getProcessId());
+            workStepNode.setEntity(workStep);
+            if (processMap.containsKey(workStepNode.getRField())) {
+                processNode = processMap.get(workStepNode.getRField());
+                workStepNode.setParentId(processNode.getId());
+                processNode.addChildren(workStepNode);
+            }
+        }
+
+        return tree;
+    }
+
+    public static List<CommonGenericTree> loadTree(List<ProductInfo> productInfoList) {
+        List<CommonGenericTree> tree = new ArrayList<CommonGenericTree>();// TreeNode闆嗗悎锛屽瓨鏀炬墍鏈夋爲瀵硅薄銆�
+        CommonGenericTree<ProductInfo> node;
+        for(ProductInfo productInfo : productInfoList) {
+            node = new CommonGenericTree();
+            node.setId(productInfo.getProductId());
+//            node.setLabel("[" + productInfo.getProductNo()+ "]" + productInfo.getProductName());
+            node.setLabel(productInfo.getProductName());
+            //node.setParentId(null);
+            node.setIconClass("");
+            node.setType(1);
+            node.setEntity(productInfo);
+            tree.add(node);
+        }
+        return tree;
+    }
+}

--
Gitblit v1.9.3