| | |
| | | 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); |
| | | } |
| | | } |