diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/support/OrgPersonnelExcelImporter.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/support/OrgPersonnelExcelImporter.java index 08f8b2d..97e0776 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/support/OrgPersonnelExcelImporter.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/support/OrgPersonnelExcelImporter.java @@ -23,6 +23,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeFormatterBuilder; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -48,6 +49,8 @@ public class OrgPersonnelExcelImporter { private static final Logger LOGGER = LoggerFactory.getLogger(OrgPersonnelExcelImporter.class); private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + private static final DateTimeFormatter SLASH_DATE_FORMATTER = + new DateTimeFormatterBuilder().appendPattern("yyyy/M/d").toFormatter(); @Resource private OrgDepartmentGateway orgDepartmentGateway; @@ -362,13 +365,22 @@ public class OrgPersonnelExcelImporter { return list.isEmpty() ? null : list; } + /** + * 解析日期:兼容 yyyy-MM-dd 与 yyyy/M/d(如 1988-05-12、1988/5/12)等常见 Excel 格式。 + */ private LocalDate parseDate(String text) { if (!StringUtils.hasText(text)) { return null; } + String trimmed = text.trim(); try { - return LocalDate.parse(text, DATE_FORMATTER); - } catch (Exception ex) { + return LocalDate.parse(trimmed, DATE_FORMATTER); + } catch (Exception ignore) { + // 继续尝试斜杠格式 + } + try { + return LocalDate.parse(trimmed, SLASH_DATE_FORMATTER); + } catch (Exception ignore) { return null; } }