From 8887422e04d93e8ab4b6d9a5c071eb6c64778995 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期一, 02 二月 2026 13:34:36 +0800
Subject: [PATCH] 光电站点改为智能站点

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/BasContainer.java |   66 +++++++++++++++++++++++++++------
 1 files changed, 54 insertions(+), 12 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/BasContainer.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/BasContainer.java
index 6635df2..25b5b78 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/BasContainer.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/BasContainer.java
@@ -6,17 +6,16 @@
 import java.util.Date;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
-import com.fasterxml.jackson.annotation.JsonProperty;
+import com.vincent.rsf.server.manager.utils.AreasDeserializer;
+import com.vincent.rsf.server.manager.utils.AreasSerializer;
+import com.vincent.rsf.server.manager.utils.AreasTypeHandler;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.vincent.rsf.server.system.entity.DictData;
 import com.vincent.rsf.server.system.service.DictDataService;
 import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
 
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import com.vincent.rsf.framework.common.Cools;
@@ -24,8 +23,10 @@
 import com.vincent.rsf.server.system.service.UserService;
 import com.vincent.rsf.server.system.entity.User;
 import java.io.Serializable;
-import java.util.Date;
 import java.util.List;
+import java.util.Map;
+import java.util.ArrayList;
+import java.util.stream.Collectors;
 
 @Data
 @Accessors(chain = true)
@@ -57,11 +58,14 @@
     private String codeType;
 
     /**
-     * 鍙叆搴撳尯
+     * 鍙叆搴撳尯锛堝寘鍚帓搴忎俊鎭級
+     * 鏍煎紡: [{"id": 1, "sort": 1}, {"id": 2, "sort": 2}]
      */
-    @ApiModelProperty(value = "鍙叆搴撳尯")
-    @TableField(typeHandler = JacksonTypeHandler.class)
-    private List<Integer> areas;
+    @ApiModelProperty(value = "鍙叆搴撳尯锛堝寘鍚帓搴忎俊鎭級")
+    @TableField(typeHandler = AreasTypeHandler.class)
+    @JsonDeserialize(using = AreasDeserializer.class)
+    @JsonSerialize(using = AreasSerializer.class)
+    private List<Map<String, Object>> areas;
 
     /**
      * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚�
@@ -118,7 +122,7 @@
     public BasContainer() {
     }
 
-    public BasContainer(Long containerType, String codeType, List<Integer> areas, Integer deleted, Integer status,
+    public BasContainer(Long containerType, String codeType, List<Map<String, Object>> areas, Integer deleted, Integer status,
             Integer tenantId, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) {
         this.containerType = containerType;
         this.codeType = codeType;
@@ -207,4 +211,42 @@
         }
     }
 
+    /**
+     * 鑾峰彇鎺掑簭鍚庣殑搴撳尯ID鍒楄〃锛堝悜鍚庡吋瀹规柟娉曪級
+     * @return 鎺掑簭鍚庣殑搴撳尯ID鍒楄〃
+     */
+    public List<Integer> getAreasIds() {
+        if (Cools.isEmpty(this.areas)) {
+            return new ArrayList<>();
+        }
+        return this.areas.stream()
+                .sorted((a, b) -> {
+                    Integer sortA = a.get("sort") != null ? ((Number) a.get("sort")).intValue() : Integer.MAX_VALUE;
+                    Integer sortB = b.get("sort") != null ? ((Number) b.get("sort")).intValue() : Integer.MAX_VALUE;
+                    return sortA.compareTo(sortB);
+                })
+                .map(area -> {
+                    Object id = area.get("id");
+                    if (id instanceof Number) {
+                        return ((Number) id).intValue();
+                    }
+                    return null;
+                })
+                .filter(id -> id != null)
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 瀵筧reas鎸塻ort瀛楁杩涜鎺掑簭
+     */
+    public void sortAreas() {
+        if (this.areas != null && !this.areas.isEmpty()) {
+            this.areas.sort((a, b) -> {
+                Integer sortA = a.get("sort") != null ? ((Number) a.get("sort")).intValue() : Integer.MAX_VALUE;
+                Integer sortB = b.get("sort") != null ? ((Number) b.get("sort")).intValue() : Integer.MAX_VALUE;
+                return sortA.compareTo(sortB);
+            });
+        }
+    }
+
 }

--
Gitblit v1.9.1