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/FlexibleTimestampDeserializer.java | 64 ++++++++++++++++++++++++++++++++
1 files changed, 64 insertions(+), 0 deletions(-)
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/FlexibleTimestampDeserializer.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/FlexibleTimestampDeserializer.java
new file mode 100644
index 0000000..025526e
--- /dev/null
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/FlexibleTimestampDeserializer.java
@@ -0,0 +1,64 @@
+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;
+
+/**
+ * 灏� JSON 鍙嶅簭鍒楀寲涓� Unix 鏃堕棿鎴筹紙绉掞紝Long锛夈��
+ * 鏀寔锛氭暟瀛楋紙绉掓垨姣锛夈�佸瓧绗︿覆 "yyyy-MM-dd HH:mm:ss" 鎴� "yyyy-MM-dd"銆�
+ */
+public class FlexibleTimestampDeserializer extends JsonDeserializer<Long> {
+
+ private static final long MS_THRESHOLD = 10_000_000_000L; // 澶т簬姝や负姣
+ private static final TimeZone DEFAULT_TZ = TimeZone.getTimeZone("GMT+8");
+
+ @Override
+ public Long 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();
+ return v >= MS_THRESHOLD ? v / 1000 : v;
+ }
+ if (t == JsonToken.VALUE_STRING) {
+ String s = p.getText().trim();
+ if (s.isEmpty()) {
+ return null;
+ }
+ try {
+ long v = Long.parseLong(s);
+ return v >= MS_THRESHOLD ? v / 1000 : v;
+ } catch (NumberFormatException ignored) {
+ }
+ try {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ sdf.setTimeZone(DEFAULT_TZ);
+ sdf.setLenient(false);
+ Date d = sdf.parse(s);
+ return d != null ? d.getTime() / 1000 : null;
+ } 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);
+ Date d = sdf.parse(s.substring(0, 10));
+ return d != null ? d.getTime() / 1000 : null;
+ } catch (Exception ignored) {
+ }
+ }
+ return null;
+ }
+ if (t == JsonToken.VALUE_NULL) {
+ return null;
+ }
+ return (Long) ctxt.handleUnexpectedToken(Long.class, p);
+ }
+}
--
Gitblit v1.9.1