From 0642bc9c44d1c8277ada33059c4a3e6156335b30 Mon Sep 17 00:00:00 2001
From: zzw <228544128@qq.com>
Date: 星期二, 06 十月 2026 14:48:37 +0800
Subject: [PATCH] feat: use role-only menu permissions

---
 emergency-repair-server/src/main/java/com/emergencyrepair/business/entity/ProductNode.java |  185 +++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 172 insertions(+), 13 deletions(-)

diff --git a/emergency-repair-server/src/main/java/com/emergencyrepair/business/entity/ProductNode.java b/emergency-repair-server/src/main/java/com/emergencyrepair/business/entity/ProductNode.java
index 0853979..a1e87ff 100644
--- a/emergency-repair-server/src/main/java/com/emergencyrepair/business/entity/ProductNode.java
+++ b/emergency-repair-server/src/main/java/com/emergencyrepair/business/entity/ProductNode.java
@@ -9,23 +9,182 @@
 import lombok.Data;
 
 import java.time.LocalDateTime;
+import java.util.Locale;
 
 @Data
-@TableName("LX.T_PRODUCT_TREE")
+@TableName("LX.ZT_BOAT_TREE")
 public class ProductNode {
-    @TableId(value = "ID", type = IdType.ASSIGN_ID)
+    /**
+     * Business node id. The external tree uses INFO_ID for the node and
+     * CONNECT_ID for its parent, while ID is the physical relation row id.
+     */
+    @TableId(value = "INFO_ID", type = IdType.INPUT)
     @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
+
+    @TableField("ID")
+    private String recordId;
+
     @JsonSerialize(using = ToStringSerializer.class)
-    @TableField("PARENT_ID") private Long parentId;
-    @TableField("NODE_LEVEL") private Integer nodeLevel;
-    @TableField("NODE_TYPE") private String nodeType;
-    @TableField("NAME") private String name;
-    @TableField("CODE") private String code;
-    @JsonSerialize(using = ToStringSerializer.class)
-    @TableField("BASE_EQUIPMENT_ID") private Long baseEquipmentId;
-    @TableField("SORT_NO") private Integer sortNo;
-    @TableField("REMARK") private String remark;
-    @TableField("CREATE_TIME") private LocalDateTime createTime;
-    @TableField("UPDATE_TIME") private LocalDateTime updateTime;
+    @TableField("CONNECT_ID")
+    private Long parentId;
+
+    @TableField("CONNECT_GROUP")
+    private String connectGroup;
+
+    @TableField("LABEL")
+    private String name;
+
+    @TableField("LAYER")
+    private String layer;
+
+    @TableField("PROJECT")
+    private String project;
+
+    @TableField("SORT")
+    private Integer sortNo;
+
+    @TableField("ISDELETE")
+    private String isDelete;
+
+    @TableField("CREATE_BY")
+    private String createBy;
+
+    @TableField("CREATE_TIME")
+    private LocalDateTime createTime;
+
+    @TableField(exist = false)
+    private Integer nodeLevel;
+
+    @TableField(exist = false)
+    private String nodeType;
+
+    @TableField(exist = false)
+    private String code;
+
+    @TableField(exist = false)
+    private Long baseEquipmentId;
+
+    @TableField(exist = false)
+    private String remark;
+
+    @TableField(exist = false)
+    private LocalDateTime updateTime;
+
+    public Integer getNodeLevel() {
+        if (nodeLevel != null) {
+            return nodeLevel;
+        }
+        return levelForLayer(layer);
+    }
+
+    public void setNodeLevel(Integer nodeLevel) {
+        this.nodeLevel = nodeLevel;
+        if (layer == null && nodeLevel != null) {
+            layer = layerForLevel(nodeLevel);
+        }
+    }
+
+    public String getNodeType() {
+        if (nodeType != null) {
+            return nodeType;
+        }
+        return typeForLayer(layer);
+    }
+
+    public void setNodeType(String nodeType) {
+        this.nodeType = nodeType;
+        if (layer == null && nodeType != null) {
+            layer = layerForType(nodeType);
+        }
+    }
+
+    public static Integer levelForLayer(String value) {
+        String layer = normalize(value);
+        if ("model".equals(layer)) {
+            return 1;
+        }
+        if ("side".equals(layer)) {
+            return 2;
+        }
+        if ("system1".equals(layer)) {
+            return 3;
+        }
+        if ("system2".equals(layer)) {
+            return 4;
+        }
+        if ("equipment".equals(layer)) {
+            return 5;
+        }
+        return layer.isEmpty() ? null : 6;
+    }
+
+    public static String typeForLayer(String value) {
+        Integer level = levelForLayer(value);
+        if (level == null) {
+            return null;
+        }
+        if (level == 1) {
+            return "MODEL";
+        }
+        if (level == 2) {
+            return "X_NO";
+        }
+        if (level == 3) {
+            return "SYSTEM1";
+        }
+        if (level == 4) {
+            return "SYSTEM2";
+        }
+        if (level == 5) {
+            return "DEVICE";
+        }
+        return normalize(value).toUpperCase(Locale.ROOT);
+    }
+
+    public static String layerForLevel(Integer level) {
+        if (level == null) {
+            return null;
+        }
+        if (level == 1) {
+            return "model";
+        }
+        if (level == 2) {
+            return "side";
+        }
+        if (level == 3) {
+            return "system1";
+        }
+        if (level == 4) {
+            return "system2";
+        }
+        if (level == 5) {
+            return "equipment";
+        }
+        return null;
+    }
+
+    public static String layerForType(String type) {
+        String value = normalize(type);
+        if ("MODEL".equals(value)) {
+            return "model";
+        }
+        if ("X_NO".equals(value) || "XNUMBER".equals(value)) {
+            return "side";
+        }
+        if ("SYSTEM1".equals(value)) {
+            return "system1";
+        }
+        if ("SYSTEM2".equals(value)) {
+            return "system2";
+        }
+        if ("DEVICE".equals(value) || "EQUIPMENT".equals(value)) {
+            return "equipment";
+        }
+        return value.isEmpty() ? null : value.toLowerCase(Locale.ROOT);
+    }
+
+    private static String normalize(String value) {
+        return value == null ? "" : value.trim().toLowerCase(Locale.ROOT);
+    }
 }

--
Gitblit v1.9.1