|
|
@@ -4,6 +4,10 @@ import com.fs.erp.dto.*;
|
|
|
import com.fs.erp.dto.tl.*;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.ZoneId;
|
|
|
+import java.time.ZonedDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -18,7 +22,7 @@ public class TlOrderConverter {
|
|
|
// 基础字段
|
|
|
item.setShopId(safeLongToInt(shopOrder.getShopId()));
|
|
|
item.setSoId(shopOrder.getSoId());
|
|
|
- item.setOrderDate(shopOrder.getOrderDate());
|
|
|
+ item.setOrderDate(convertLocalToUtcIso(shopOrder.getOrderDate()));
|
|
|
item.setShopStatus(shopOrder.getShopStatus());
|
|
|
item.setShopBuyerId(shopOrder.getShopBuyerId());
|
|
|
|
|
|
@@ -58,7 +62,7 @@ public class TlOrderConverter {
|
|
|
item.setPay(toTlPayDetail(shopOrder.getPay()));
|
|
|
|
|
|
// 必填字段:发货日期(用订单日期代替,建议业务层传入正确值)
|
|
|
- item.setSendDate(shopOrder.getOrderDate());
|
|
|
+ item.setSendDate(convertLocalToUtcIso(shopOrder.getOrderDate()));
|
|
|
|
|
|
// 其他(无对应字段)
|
|
|
// item.setNode(null);
|
|
|
@@ -94,7 +98,7 @@ public class TlOrderConverter {
|
|
|
detail.setName(dto.getName());
|
|
|
detail.setOuterOiId(dto.getOuterOiId());
|
|
|
detail.setBatchId(dto.getBatchId());
|
|
|
- detail.setProducedDate(dto.getProducedDate());
|
|
|
+ detail.setProducedDate(convertLocalToUtcIso(dto.getProducedDate()));
|
|
|
|
|
|
return detail;
|
|
|
}
|
|
|
@@ -105,7 +109,7 @@ public class TlOrderConverter {
|
|
|
|
|
|
TlPayDetail pay = new TlPayDetail();
|
|
|
pay.setOuterPayId(dto.getOuterPayId());
|
|
|
- pay.setPayDate(dto.getPayDate());
|
|
|
+ pay.setPayDate(convertLocalToUtcIso(dto.getPayDate()));
|
|
|
pay.setPayment(dto.getPayment());
|
|
|
pay.setSellerAccount(dto.getSellerAccount());
|
|
|
pay.setBuyerAccount(dto.getBuyerAccount());
|
|
|
@@ -141,4 +145,32 @@ public class TlOrderConverter {
|
|
|
return value.intValue();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 将 "yyyy-MM-dd HH:mm:ss" 格式的本地时间(视为 Asia/Shanghai 时区)
|
|
|
+ * 转换为 ISO 8601 UTC 时间字符串(格式:yyyy-MM-dd'T'HH:mm:ss'Z')
|
|
|
+ *
|
|
|
+ * @param localDateTimeStr 例如 "2025-11-11 10:39:03"
|
|
|
+ * @return UTC 时间字符串,例如 "2025-11-11T02:39:03Z"
|
|
|
+ */
|
|
|
+ private static String convertLocalToUtcIso(String localDateTimeStr) {
|
|
|
+ if (localDateTimeStr == null || localDateTimeStr.trim().isEmpty()) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 定义输入格式
|
|
|
+ DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+
|
|
|
+ // 解析为 LocalDateTime(无时区)
|
|
|
+ LocalDateTime localDateTime = LocalDateTime.parse(localDateTimeStr, inputFormatter);
|
|
|
+
|
|
|
+ // 假设该时间是北京时间(UTC+8)
|
|
|
+ ZonedDateTime beijingTime = localDateTime.atZone(ZoneId.of("Asia/Shanghai"));
|
|
|
+
|
|
|
+ // 转换为 UTC 时间
|
|
|
+ ZonedDateTime utcTime = beijingTime.withZoneSameInstant(ZoneId.of("UTC"));
|
|
|
+
|
|
|
+ // 格式化为 ISO 8601 字符串,并替换 +00:00 为 Z
|
|
|
+ return utcTime.format(DateTimeFormatter.ISO_INSTANT);
|
|
|
+ }
|
|
|
+
|
|
|
}
|