From 7972683f56368cd8ce7ef8bb7f1d087416f4a3e7 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期一, 02 二月 2026 13:23:35 +0800
Subject: [PATCH] 容器管理-编辑可入库区  选中数据排序  选择文字排序 兼容修改后的其他调用方法

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/BasContainer.java |  133 +++++++++++++++++++++++++++++--------------
 1 files changed, 89 insertions(+), 44 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 65ac662..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,15 +6,16 @@
 import java.util.Date;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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;
@@ -22,11 +23,14 @@
 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)
-@TableName("man_bas_container")
+@TableName(value = "man_bas_container", autoResultMap = true)
 public class BasContainer implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -34,10 +38,9 @@
     /**
      * id
      */
-    @ApiModelProperty(value= "id")
+    @ApiModelProperty(value = "id")
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
-
 
     @ApiModelProperty("鍞竴缂栫爜")
     private String code;
@@ -45,77 +48,82 @@
     /**
      * 瀹瑰櫒绫诲瀷
      */
-    @ApiModelProperty(value= "瀹瑰櫒绫诲瀷")
+    @ApiModelProperty(value = "瀹瑰櫒绫诲瀷")
     private Long containerType;
 
     /**
      * 瀹瑰櫒鏉$爜绫诲瀷
      */
-    @ApiModelProperty(value= "瀹瑰櫒鏉$爜绫诲瀷")
+    @ApiModelProperty(value = "瀹瑰櫒鏉$爜绫诲瀷")
     private String codeType;
 
     /**
-     * 鍙叆搴撳尯
+     * 鍙叆搴撳尯锛堝寘鍚帓搴忎俊鎭級
+     * 鏍煎紡: [{"id": 1, "sort": 1}, {"id": 2, "sort": 2}]
      */
-    @ApiModelProperty(value= "鍙叆搴撳尯")
-    private String areas;
+    @ApiModelProperty(value = "鍙叆搴撳尯锛堝寘鍚帓搴忎俊鎭級")
+    @TableField(typeHandler = AreasTypeHandler.class)
+    @JsonDeserialize(using = AreasDeserializer.class)
+    @JsonSerialize(using = AreasSerializer.class)
+    private List<Map<String, Object>> areas;
 
     /**
-     * 鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  
+     * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚�
      */
-    @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  ")
+    @ApiModelProperty(value = "鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  ")
     private Integer deleted;
 
     /**
      * 鐘舵��
      */
-    @ApiModelProperty(value= "鐘舵��")
+    @ApiModelProperty(value = "鐘舵��")
     private Integer status;
 
     /**
      * 绉熸埛
      */
-    @ApiModelProperty(value= "绉熸埛")
+    @ApiModelProperty(value = "绉熸埛")
     private Integer tenantId;
 
     /**
      * 娣诲姞浜哄憳
      */
-    @ApiModelProperty(value= "娣诲姞浜哄憳")
+    @ApiModelProperty(value = "娣诲姞浜哄憳")
     private Long createBy;
 
     /**
      * 娣诲姞鏃堕棿
      */
-    @ApiModelProperty(value= "娣诲姞鏃堕棿")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "娣诲姞鏃堕棿")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
     /**
      * 淇敼浜哄憳
      */
-    @ApiModelProperty(value= "淇敼浜哄憳")
+    @ApiModelProperty(value = "淇敼浜哄憳")
     private Long updateBy;
 
     /**
      * 淇敼鏃堕棿
      */
-    @ApiModelProperty(value= "淇敼鏃堕棿")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "淇敼鏃堕棿")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
 
     /**
      * 澶囨敞
      */
-    @ApiModelProperty(value= "澶囨敞")
+    @ApiModelProperty(value = "澶囨敞")
     private String memo;
 
-    @TableField(exist = false)
-    private Long[] areaIds;
 
-    public BasContainer() {}
 
-    public BasContainer(Long containerType,String codeType,String areas,Integer deleted,Integer status,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
+    public BasContainer() {
+    }
+
+    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;
         this.areas = areas;
@@ -150,51 +158,50 @@
         DictDataService service = SpringUtils.getBean(DictDataService.class);
         DictData dictData = service.getOne(new LambdaQueryWrapper<DictData>()
                 .eq(DictData::getDictTypeCode, "sys_container_type")
-                .eq(DictData::getValue, this.containerType)
-        );
-        if (!Cools.isEmpty(dictData)){
+                .eq(DictData::getValue, this.containerType));
+        if (!Cools.isEmpty(dictData)) {
             return String.valueOf(dictData.getLabel());
         }
         return "";
     }
 
-    public String getCreateBy$(){
+    public String getCreateBy$() {
         UserService service = SpringUtils.getBean(UserService.class);
         User user = service.getById(this.createBy);
-        if (!Cools.isEmpty(user)){
+        if (!Cools.isEmpty(user)) {
             return String.valueOf(user.getNickname());
         }
         return null;
     }
 
-    public String getCreateTime$(){
-        if (Cools.isEmpty(this.createTime)){
+    public String getCreateTime$() {
+        if (Cools.isEmpty(this.createTime)) {
             return "";
         }
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
     }
 
-    public String getUpdateBy$(){
+    public String getUpdateBy$() {
         UserService service = SpringUtils.getBean(UserService.class);
         User user = service.getById(this.updateBy);
-        if (!Cools.isEmpty(user)){
+        if (!Cools.isEmpty(user)) {
             return String.valueOf(user.getNickname());
         }
         return null;
     }
 
-    public String getUpdateTime$(){
-        if (Cools.isEmpty(this.updateTime)){
+    public String getUpdateTime$() {
+        if (Cools.isEmpty(this.updateTime)) {
             return "";
         }
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
     }
 
-
-
-    public Boolean getStatusBool(){
-        if (null == this.status){ return null; }
-        switch (this.status){
+    public Boolean getStatusBool() {
+        if (null == this.status) {
+            return null;
+        }
+        switch (this.status) {
             case 1:
                 return true;
             case 0:
@@ -204,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