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