From d6133afeac10c3e5adbed022260675b13695e3fa Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Wed, 9 Jul 2025 16:15:50 +0800 Subject: [PATCH] 666666 --- .../service/MedicalRecordService.java | 66 ++++++++++--------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/medicalrecord/service/MedicalRecordService.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/medicalrecord/service/MedicalRecordService.java index 2a5ac87..d7071ec 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/medicalrecord/service/MedicalRecordService.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/medicalrecord/service/MedicalRecordService.java @@ -32,6 +32,8 @@ import java.time.Duration; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.chrono.ChronoLocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; @@ -453,75 +455,77 @@ public class MedicalRecordService { // 检测所有时间 public ResponseDTO checkAllTime(MedicalRecordUpdateForm form){ - // 基础时间 - LocalDateTime admissionTime = form.getAdmissionTime(); - LocalDateTime dischargeTime = form.getDischargeTime(); - LocalDateTime headTime = form.getHeadTime(); - LocalDateTime afterTime = form.getAfterTime(); - LocalDateTime lastTime = form.getLastTime(); + // 转换为 LocalDate + LocalDate admissionDate = form.getAdmissionTime().toLocalDate(); + LocalDate dischargeDate = form.getDischargeTime().toLocalDate(); + LocalDate headDate = form.getHeadTime().toLocalDate(); + LocalDate afterDate = form.getAfterTime().toLocalDate(); + LocalDate lastDate = form.getLastTime() != null ? form.getLastTime().toLocalDate() : null; List dpmas = form.getDpmas(); // 时间基准线 - LocalDateTime targetDate = LocalDateTime.of(2024, 10, 1, 0, 0); + LocalDate targetDate = LocalDate.of(2024, 10, 1); // 1. 所有时间必须 >= 2024-10-01(允许等于) - if (!admissionTime.isEqual(targetDate) && !admissionTime.isAfter(targetDate)) { + if (!admissionDate.isEqual(targetDate) && !admissionDate.isAfter(targetDate)) { return ResponseDTO.userErrorParam("入院时间需在2024年10月1日或之后"); } - if (!dischargeTime.isEqual(targetDate) && !dischargeTime.isAfter(targetDate)) { + if (!dischargeDate.isEqual(targetDate) && !dischargeDate.isAfter(targetDate)) { return ResponseDTO.userErrorParam("出院时间需在2024年10月1日或之后"); } - if (!headTime.isEqual(targetDate) && !headTime.isAfter(targetDate)) { + if (!headDate.isEqual(targetDate) && !headDate.isAfter(targetDate)) { return ResponseDTO.userErrorParam("首次人工肝治疗前检测时间需在2024年10月1日或之后"); } - if (!afterTime.isEqual(targetDate) && !afterTime.isAfter(targetDate)) { + if (!afterDate.isEqual(targetDate) && !afterDate.isAfter(targetDate)) { return ResponseDTO.userErrorParam("首次人工肝治疗后检测时间需在2024年10月1日或之后"); } for (DpmsAddForm dpma : dpmas) { - LocalDateTime treatTime = dpma.getTreatTime(); + LocalDate treatTime = dpma.getTreatTime().toLocalDate(); + + if (!treatTime.isEqual(targetDate) && !treatTime.isAfter(targetDate)) { return ResponseDTO.userErrorParam("人工肝治疗时间需在2024年10月1日或之后"); } } - if (lastTime != null) { - if (!lastTime.isEqual(targetDate) && !lastTime.isAfter(targetDate)) { + if (lastDate != null) { + if (!lastDate.isEqual(targetDate) && !lastDate.isAfter(targetDate)) { return ResponseDTO.userErrorParam("最后一次人工肝治疗后检测时间需在2024年10月1日或之后"); } } // 2. 出院时间必须大于入院时间 if (dpmas.size() > 1){ - if (!dischargeTime.isAfter(admissionTime)) { + if (!dischargeDate.isAfter(admissionDate)) { return ResponseDTO.userErrorParam("出院时间必须大于入院时间"); } } // 3. 所有时间必须在入院与出院之间(含当天) - if (headTime.isBefore(admissionTime) || headTime.isAfter(dischargeTime)) { + if (headDate.isBefore(admissionDate) || headDate.isAfter(dischargeDate)) { return ResponseDTO.userErrorParam("首次人工肝治疗前检测时间必须在入院和出院时间之间"); } - if (afterTime.isBefore(admissionTime) || afterTime.isAfter(dischargeTime)) { + if (afterDate.isBefore(admissionDate) || afterDate.isAfter(dischargeDate)) { return ResponseDTO.userErrorParam("首次人工肝治疗后检测时间必须在入院和出院时间之间"); } - if (lastTime != null && (lastTime.isBefore(admissionTime) || lastTime.isAfter(dischargeTime))) { + if (lastDate != null && (lastDate.isBefore(admissionDate) || lastDate.isAfter(dischargeDate))) { return ResponseDTO.userErrorParam("最后一次人工肝治疗后检测时间必须在入院和出院时间之间"); } for (int i = 0; i < dpmas.size(); i++) { DpmsAddForm dpma = dpmas.get(i); - LocalDateTime treatTime = dpma.getTreatTime(); + LocalDate treatTime = dpma.getTreatTime().toLocalDate(); if (dpmas.size() > 1) { // 多次治疗:必须严格在入院和出院之间(不能等于) - if (!treatTime.isAfter(admissionTime) || !treatTime.isBefore(dischargeTime)) { + if (!treatTime.isAfter(admissionDate) || !treatTime.isBefore(dischargeDate)) { return ResponseDTO.userErrorParam("第 " + (i + 1) + " 次人工肝治疗时间必须在入院和出院时间之间"); } } else { // 只有一次治疗:允许等于入院或出院时间 - if (treatTime.isBefore(admissionTime) || treatTime.isAfter(dischargeTime)) { - return ResponseDTO.userErrorParam("人工肝治疗时间必须在入院和出院时间之间(允许为同一天)"); + if (treatTime.isBefore(admissionDate) || treatTime.isAfter(dischargeDate)) { + return ResponseDTO.userErrorParam("人工肝治疗时间必须在入院和出院时间之间"); } } } @@ -538,35 +542,35 @@ public class MedicalRecordService { } for (int i = 1; i < dpmas.size(); i++) { - LocalDateTime prev = dpmas.get(i - 1).getTreatTime(); - LocalDateTime curr = dpmas.get(i).getTreatTime(); + LocalDate prev = dpmas.get(i - 1).getTreatTime().toLocalDate(); + LocalDate curr = dpmas.get(i).getTreatTime().toLocalDate(); if (curr.isBefore(prev)) { return ResponseDTO.userErrorParam("第 " + (i + 1) + " 次治疗时间必须晚于第 " + i + " 次"); } } // 5. 时间顺序关系校验 - LocalDateTime firstTreatTime = dpmas.get(0).getTreatTime(); + LocalDate firstTreatTime = dpmas.get(0).getTreatTime().toLocalDate(); - if (headTime.isAfter(firstTreatTime)) { + if (headDate.isAfter(firstTreatTime)) { return ResponseDTO.userErrorParam("首次人工肝治疗前检测时间必须早于第一次治疗时间"); } - if (afterTime.isBefore(firstTreatTime)) { + if (afterDate.isBefore(firstTreatTime)) { return ResponseDTO.userErrorParam("首次人工肝治疗后检测时间必须在第一次治疗时间之后"); } if (dpmas.size() > 1) { - if (lastTime == null) { + if (lastDate == null) { return ResponseDTO.userErrorParam("人工肝治疗次数大于1,需填入最后一次人工肝治疗后检测时间"); } - LocalDateTime lastTreatTime = dpmas.get(dpmas.size() - 1).getTreatTime(); - if (lastTime.isBefore(lastTreatTime)) { + LocalDate lastTreatTime = dpmas.get(dpmas.size() - 1).getTreatTime().toLocalDate(); + if (lastDate.isBefore(lastTreatTime)) { return ResponseDTO.userErrorParam("最后一次人工肝治疗后检测时间必须在最后一次治疗时间之后"); } - if (lastTime.isAfter(dischargeTime)) { + if (lastDate.isAfter(dischargeDate)) { return ResponseDTO.userErrorParam("最后一次人工肝治疗后检测时间必须在出院时间之前"); } }