From 101e4ff6a848f010aaa451fa1131cdf9b18b6dde Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期三, 05 八月 2026 21:07:13 +0800
Subject: [PATCH] fix: format site export timestamps
---
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/SiteExcelDTO.java | 29 ++++++++++++++++++++---------
ruoyi-service/ruoyi-chargingPile/src/test/java/com/ruoyi/chargingPile/dto/SiteExcelDTOTest.java | 9 +++++----
2 files changed, 25 insertions(+), 13 deletions(-)
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/SiteExcelDTO.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/SiteExcelDTO.java
index 04e1064..3de4237 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/SiteExcelDTO.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/SiteExcelDTO.java
@@ -8,6 +8,7 @@
import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDate;
+import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
@@ -109,7 +110,7 @@
private BigDecimal ratedPower;
@Excel(name = "*是否峰谷分时", width = 20, readConverterExp = "0=否,1=是")
private Integer periodFee;
- @Excel(name = "*正式投运时间", width = 22, prompt = "格式:yyyy-MM-dd")
+ @Excel(name = "*正式投运时间", width = 22, prompt = "格式:yyyy-MM-dd HH:mm:ss")
private String officialRunTime;
@Excel(name = "充换电站方位", width = 24, readConverterExp = "1=地面-停车场,2=地面-路侧,3=地下停车,4=立体式停车楼")
private Integer stationOrientation;
@@ -161,20 +162,30 @@
return value;
}
String text = value.trim();
- try {
- return LocalDate.parse(text, DateTimeFormatter.ISO_LOCAL_DATE).toString();
- } catch (DateTimeParseException ignored) {
- // Continue with timestamp formats used by historical site data.
- }
+ DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
try {
return OffsetDateTime.parse(text, DateTimeFormatter.ISO_OFFSET_DATE_TIME)
- .atZoneSameInstant(ZoneId.of("Asia/Shanghai")).toLocalDate().toString();
+ .atZoneSameInstant(ZoneId.of("Asia/Shanghai"))
+ .format(outputFormatter);
} catch (DateTimeParseException ignored) {
- // Some records use an instant with millisecond precision and a trailing Z.
+ // Continue with timestamps without an explicit offset.
}
try {
- return Instant.parse(text).atZone(ZoneId.of("Asia/Shanghai")).toLocalDate().toString();
+ return Instant.parse(text).atZone(ZoneId.of("Asia/Shanghai")).format(outputFormatter);
} catch (DateTimeParseException ignored) {
+ // Continue with local datetime formats used by historical site data.
+ }
+ try {
+ return LocalDateTime.parse(text, DateTimeFormatter.ISO_LOCAL_DATE_TIME).format(outputFormatter);
+ } catch (DateTimeParseException ignored) {
+ // Continue with date-only values.
+ }
+ try {
+ return LocalDate.parse(text, DateTimeFormatter.ISO_LOCAL_DATE)
+ .atStartOfDay()
+ .format(outputFormatter);
+ } catch (DateTimeParseException ignored) {
+ // Preserve an unrecognized value rather than dropping it.
return text;
}
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/test/java/com/ruoyi/chargingPile/dto/SiteExcelDTOTest.java b/ruoyi-service/ruoyi-chargingPile/src/test/java/com/ruoyi/chargingPile/dto/SiteExcelDTOTest.java
index e9d01dc..08ebd43 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/test/java/com/ruoyi/chargingPile/dto/SiteExcelDTOTest.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/test/java/com/ruoyi/chargingPile/dto/SiteExcelDTOTest.java
@@ -14,10 +14,11 @@
class SiteExcelDTOTest {
@Test
- void formatsOfficialRunTimeAsLocalDate() {
- assertEquals("2024-12-31", SiteExcelDTO.formatDateOnly("2024-12-30T16:00:00.000Z"));
- assertEquals("2025-05-31", SiteExcelDTO.formatDateOnly("2025-05-30T16:02:14.900Z"));
- assertEquals("2026-07-21", SiteExcelDTO.formatDateOnly("2026-07-21"));
+ void formatsOfficialRunTimeAsLocalDateTime() {
+ assertEquals("2024-12-31 00:00:00", SiteExcelDTO.formatDateOnly("2024-12-30T16:00:00.000Z"));
+ assertEquals("2025-05-31 00:02:14", SiteExcelDTO.formatDateOnly("2025-05-30T16:02:14.900Z"));
+ assertEquals("2026-07-21 00:00:00", SiteExcelDTO.formatDateOnly("2026-07-21"));
+ assertEquals("2026-07-21 08:09:10", SiteExcelDTO.formatDateOnly("2026-07-21T08:09:10"));
}
@Test
--
Gitblit v1.7.1