|
@@ -134,13 +134,13 @@ public class SpecimenInfoServiceImpl implements SpecimenInfoService {
|
|
return specimenInfoMapper.selectPage(pageReqVO);
|
|
return specimenInfoMapper.selectPage(pageReqVO);
|
|
}
|
|
}
|
|
|
|
|
|
-// @Override
|
|
|
|
-// public PageResult<SpecimenInfoDO> getSpecimenInfoExcel(SpecimenInfoExportReqVO pageReqVO) {
|
|
|
|
-// return specimenInfoMapper.selectPage(pageReqVO);
|
|
|
|
-// }
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public PageResult<SpecimenInfoDO> getSpecimenInfoExcel(SpecimenInfoExportReqVO pageReqVO) {
|
|
|
|
+ return specimenInfoMapper.selectPage(pageReqVO);
|
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public List<SpecimenInfoDO> getSpecimenInfoExcel(SpecimenInfoExportReqVO pageReqVO, List<Long> ids) {
|
|
|
|
|
|
+ public List<SpecimenInfoDO> getSpecimenInfoSelectExcel(SpecimenInfoExportReqVO pageReqVO, List<Long> ids) {
|
|
if (!ids.isEmpty()) {
|
|
if (!ids.isEmpty()) {
|
|
return specimenInfoMapper.selectByIds(ids); // 使用自定义的 Mapper 方法来根据 IDs 查询
|
|
return specimenInfoMapper.selectByIds(ids); // 使用自定义的 Mapper 方法来根据 IDs 查询
|
|
}
|
|
}
|
|
@@ -413,6 +413,7 @@ public class SpecimenInfoServiceImpl implements SpecimenInfoService {
|
|
}
|
|
}
|
|
|
|
|
|
LocalDateTime qidian = LocalDateTime.of(1, Month.JANUARY, 1, 0, 0);
|
|
LocalDateTime qidian = LocalDateTime.of(1, Month.JANUARY, 1, 0, 0);
|
|
|
|
+
|
|
if (importSpecimen.getAcquisitionTime() != null
|
|
if (importSpecimen.getAcquisitionTime() != null
|
|
&& parseToLocalDateTime(importSpecimen.getAcquisitionTime()).equals(qidian)) {
|
|
&& parseToLocalDateTime(importSpecimen.getAcquisitionTime()).equals(qidian)) {
|
|
respVO.getFailureSpecimenNumbers().put(importSpecimen.getSpecimenNumber(), "无效的入藏时间!");
|
|
respVO.getFailureSpecimenNumbers().put(importSpecimen.getSpecimenNumber(), "无效的入藏时间!");
|
|
@@ -431,6 +432,7 @@ public class SpecimenInfoServiceImpl implements SpecimenInfoService {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
if (existSpecimen == null) {
|
|
if (existSpecimen == null) {
|
|
// 2.2.1 不存在则插入
|
|
// 2.2.1 不存在则插入
|
|
SpecimenInfoDO newSpecimen = BeanUtils.toBean(importSpecimen, SpecimenInfoDO.class);
|
|
SpecimenInfoDO newSpecimen = BeanUtils.toBean(importSpecimen, SpecimenInfoDO.class);
|
|
@@ -491,39 +493,59 @@ public class SpecimenInfoServiceImpl implements SpecimenInfoService {
|
|
}
|
|
}
|
|
|
|
|
|
private static LocalDateTime parseToLocalDateTime(String dateString) {
|
|
private static LocalDateTime parseToLocalDateTime(String dateString) {
|
|
- // 列出支持的日期格式
|
|
|
|
|
|
+ if (dateString == null || dateString.isEmpty()) {
|
|
|
|
+ return LocalDateTime.of(1, Month.JANUARY, 1, 0, 0); // 处理 null 或空字符串的情况
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 预处理日期字符串,确保日期部分符合格式要求
|
|
|
|
+ dateString = preprocessDateString(dateString);
|
|
|
|
+
|
|
|
|
+ // 允许的日期格式列表
|
|
List<String> dateFormats = Arrays.asList(
|
|
List<String> dateFormats = Arrays.asList(
|
|
- "yyyy-MM-dd HH:mm:ss",
|
|
|
|
- "yyyy/MM/dd HH:mm:ss",
|
|
|
|
- "yyyy-MM-dd'T'HH:mm:ss", // ISO_LOCAL_DATE_TIME 格式
|
|
|
|
- "yyyy/MM/dd'T'HH:mm:ss",
|
|
|
|
- "yyyy-MM-dd",
|
|
|
|
- "yyyyMM/dd",
|
|
|
|
- "dd-MM-yyyy HH:mm:ss",
|
|
|
|
- "dd/MM/yyyy HH:mm:ss",
|
|
|
|
- "dd-MM-yyyy",
|
|
|
|
- "dd/MM/yyyy"
|
|
|
|
|
|
+ "yyyy-MM-dd HH:mm:ss",
|
|
|
|
+ "yyyy/MM/dd HH:mm:ss",
|
|
|
|
+ "yyyy-MM-dd",
|
|
|
|
+ "yyyy/MM/dd", // 支持没有时间部分的日期
|
|
|
|
+ "yyyy/MM/d", // 支持没有前导零的日期
|
|
|
|
+ "yyyy-MM-dd'T'HH:mm:ss"
|
|
);
|
|
);
|
|
|
|
|
|
// 尝试每种日期格式
|
|
// 尝试每种日期格式
|
|
for (String format : dateFormats) {
|
|
for (String format : dateFormats) {
|
|
try {
|
|
try {
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
|
|
- // 使用 parse 方法将字符串解析为 LocalDateTime
|
|
|
|
if (format.contains("HH")) {
|
|
if (format.contains("HH")) {
|
|
return LocalDateTime.parse(dateString, formatter);
|
|
return LocalDateTime.parse(dateString, formatter);
|
|
} else {
|
|
} else {
|
|
- // 如果格式不包含时间部分,则补充时间部分为00:00:00
|
|
|
|
|
|
+ // 如果格式不包含时间部分,补充默认时间 "00:00:00"
|
|
return LocalDateTime.parse(dateString + " 00:00:00", formatter);
|
|
return LocalDateTime.parse(dateString + " 00:00:00", formatter);
|
|
}
|
|
}
|
|
} catch (DateTimeParseException e) {
|
|
} catch (DateTimeParseException e) {
|
|
|
|
+ System.err.println("解析失败: " + dateString + " 使用格式: " + format);
|
|
// 如果解析失败,继续尝试下一个格式
|
|
// 如果解析失败,继续尝试下一个格式
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 如果没有任何格式能够解析,则返回一个默认的时间值
|
|
return LocalDateTime.of(1, Month.JANUARY, 1, 0, 0);
|
|
return LocalDateTime.of(1, Month.JANUARY, 1, 0, 0);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ // 预处理日期字符串,确保日期部分符合格式要求(补充单数字日期为双位数)
|
|
|
|
+ private static String preprocessDateString(String dateString) {
|
|
|
|
+ // 如果日期格式是 "yyyy/MM/d"(例如 "2012/5/5"),则补充单数字日期为双位数
|
|
|
|
+ String[] parts = dateString.split("/");
|
|
|
|
+ if (parts.length == 3) {
|
|
|
|
+ String year = parts[0];
|
|
|
|
+ String month = parts[1].length() == 1 ? "0" + parts[1] : parts[1];
|
|
|
|
+ String day = parts[2].length() == 1 ? "0" + parts[2] : parts[2];
|
|
|
|
+ return year + "/" + month + "/" + day;
|
|
|
|
+ }
|
|
|
|
+ return dateString; // 如果不符合该格式则直接返回原字符串
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
//工作台
|
|
//工作台
|
|
//根据入库的登记情况统计本年标本入库信息
|
|
//根据入库的登记情况统计本年标本入库信息
|
|
@Override
|
|
@Override
|