package com.emergencyrepair.business.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.time.LocalDateTime; import java.util.Locale; @Data @TableName("LX.ZT_BOAT_TREE") public class ProductNode { /** * 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("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); } }