From a1d1d928893c33fad6694b2503a425ab29af0a15 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期三, 04 三月 2026 14:52:49 +0800
Subject: [PATCH] 云仓WMS接口流程
---
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/FlexibleDateDeserializer.java | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 60 insertions(+), 0 deletions(-)
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/FlexibleDateDeserializer.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/FlexibleDateDeserializer.java
new file mode 100644
index 0000000..a13479e
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/FlexibleDateDeserializer.java
@@ -0,0 +1,60 @@
+package com.vincent.rsf.openApi.entity.params;
+
+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 java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.TimeZone;
+
+/**
+ * 鏀寔鏃堕棿鎴筹紙绉�/姣锛変笌瀛楃涓� "yyyy-MM-dd HH:mm:ss" 鐨� Date 鍙嶅簭鍒楀寲锛屼笌 @JsonFormat 閰嶅悎浣跨敤銆�
+ */
+public class FlexibleDateDeserializer extends JsonDeserializer<Date> {
+
+ private static final long MS_THRESHOLD = 10_000_000_000L; // 澶т簬姝や负姣
+ private static final String PATTERN = "yyyy-MM-dd HH:mm:ss";
+ private static final TimeZone DEFAULT_TZ = TimeZone.getTimeZone("GMT+8");
+
+ @Override
+ public Date deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
+ JsonToken t = p.getCurrentToken();
+ if (t == JsonToken.VALUE_NUMBER_INT || t == JsonToken.VALUE_NUMBER_FLOAT) {
+ long v = p.getLongValue();
+ long ms = v >= MS_THRESHOLD ? v : v * 1000;
+ return new Date(ms);
+ }
+ if (t == JsonToken.VALUE_STRING) {
+ String s = p.getText().trim();
+ if (s.isEmpty()) return null;
+ try {
+ long v = Long.parseLong(s);
+ long ms = v >= MS_THRESHOLD ? v : v * 1000;
+ return new Date(ms);
+ } catch (NumberFormatException ignored) {
+ }
+ try {
+ SimpleDateFormat sdf = new SimpleDateFormat(PATTERN);
+ sdf.setTimeZone(DEFAULT_TZ);
+ sdf.setLenient(false);
+ return sdf.parse(s);
+ } catch (Exception ignored) {
+ }
+ if (s.length() >= 10 && s.charAt(4) == '-' && s.charAt(7) == '-') {
+ try {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ sdf.setTimeZone(DEFAULT_TZ);
+ sdf.setLenient(false);
+ return sdf.parse(s.substring(0, 10));
+ } catch (Exception ignored) {
+ }
+ }
+ return null;
+ }
+ if (t == JsonToken.VALUE_NULL) return null;
+ return (Date) ctxt.handleUnexpectedToken(Date.class, p);
+ }
+}
--
Gitblit v1.9.1