From bb69d7a4bdfbb90cde19b3d828f490ab10f2bb43 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期一, 02 二月 2026 15:44:33 +0800
Subject: [PATCH] 库区增加序号

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/AreasDeserializer.java |   68 ++++++++++++++++++++++++++++++++++
 1 files changed, 68 insertions(+), 0 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/AreasDeserializer.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/AreasDeserializer.java
new file mode 100644
index 0000000..8c55b61
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/AreasDeserializer.java
@@ -0,0 +1,68 @@
+package com.vincent.rsf.server.manager.utils;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.core.JsonToken;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * @author chen.lin
+ * @time 2026-02-02
+ * Areas 瀛楁鑷畾涔夊弽搴忓垪鍖栧櫒
+ * 鏀寔涓ょ鏍煎紡锛�
+ * 1. [1, 2, 3] - 绾疘D鏁扮粍锛堝悜鍚庡吋瀹癸級
+ * 2. [{"id": 1, "sort": 1}, {"id": 2, "sort": 2}] - 瀵硅薄鏁扮粍锛堟柊鏍煎紡锛�
+ * 
+ *
+ */
+public class AreasDeserializer extends JsonDeserializer<List<Map<String, Object>>> {
+
+    @Override
+    public List<Map<String, Object>> deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
+        JsonToken currentToken = p.getCurrentToken();
+        
+        // 澶勭悊 null 鍊�
+        if (currentToken == JsonToken.VALUE_NULL) {
+            return new ArrayList<>();
+        }
+        
+        // 澶勭悊鏁扮粍
+        if (currentToken == JsonToken.START_ARRAY) {
+            List<Map<String, Object>> result = new ArrayList<>();
+            JsonToken token = p.nextToken();
+            
+            while (token != null && token != JsonToken.END_ARRAY) {
+                if (token == JsonToken.VALUE_NUMBER_INT) {
+                    // 澶勭悊绾疘D鏁扮粍鏍煎紡 [1, 2, 3]
+                    int id = p.getIntValue();
+                    Map<String, Object> area = new HashMap<>();
+                    area.put("id", id);
+                    area.put("sort", result.size() + 1); // 榛樿鎺掑簭
+                    result.add(area);
+                    token = p.nextToken();
+                } else if (token == JsonToken.START_OBJECT) {
+                    // 澶勭悊瀵硅薄鏁扮粍鏍煎紡 [{"id": 1, "sort": 1}]
+                    ObjectMapper mapper = (ObjectMapper) p.getCodec();
+                    @SuppressWarnings("unchecked")
+                    Map<String, Object> area = mapper.readValue(p, Map.class);
+                    result.add(area);
+                    token = p.nextToken();
+                } else {
+                    token = p.nextToken();
+                }
+            }
+            return result;
+        }
+        
+        // 濡傛灉鏃笉鏄暟缁勪篃涓嶆槸null锛岃繑鍥炵┖鍒楄〃
+        return new ArrayList<>();
+    }
+}

--
Gitblit v1.9.1