diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgicalScheduleAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgicalScheduleAppServiceImpl.java index 42ef3211..6cf68292 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgicalScheduleAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgicalScheduleAppServiceImpl.java @@ -95,7 +95,7 @@ public class SurgicalScheduleAppServiceImpl implements ISurgicalScheduleAppServi } } - // 校验是否重复手术安排 + // 校验是否重复手术安排(必须在校验手术间占用之前执行,确保能正确返回重复错误) // 同一患者 + 同一手术单号 + 同一手术名称 只能有一条有效安排记录 if (opCreateScheduleDto.getPatientId() != null && opCreateScheduleDto.getOperCode() != null && !opCreateScheduleDto.getOperCode().isEmpty() @@ -105,18 +105,20 @@ public class SurgicalScheduleAppServiceImpl implements ISurgicalScheduleAppServi opCreateScheduleDto.getOperCode(), opCreateScheduleDto.getOperName() ); - if (existsDuplicate) { + if (existsDuplicate != null && existsDuplicate) { return R.fail("该患者此手术单号已存在手术安排,请勿重复提交"); } } - //校验该时段内手术间是否被占用 - LocalDateTime scheduleDate = opCreateScheduleDto.getEntryTime();//入室时间 - String roomCode = opCreateScheduleDto.getRoomCode();//手术室编号 + // 校验该时段内手术间是否被占用 + LocalDateTime startTime = opCreateScheduleDto.getEntryTime();//入室时间 LocalDateTime endTime = opCreateScheduleDto.getEndTime();//手术结束时间 - Boolean scheduleConflict = surgicalScheduleAppMapper.isScheduleConflict(scheduleDate, endTime, roomCode); - if (scheduleConflict) { - return R.fail("该时段内手术间被占用"); + String roomCode = opCreateScheduleDto.getRoomCode();//手术室编号 + if (startTime != null && endTime != null && roomCode != null && !roomCode.isEmpty()) { + Boolean scheduleConflict = surgicalScheduleAppMapper.isScheduleConflict(startTime, endTime, roomCode); + if (scheduleConflict != null && scheduleConflict) { + return R.fail("该时段内手术间被占用"); + } } LoginUser loginUser = new LoginUser(); diff --git a/openhis-server-new/openhis-application/src/main/resources/mapper/clinicalmanage/SurgicalScheduleAppMapper.xml b/openhis-server-new/openhis-application/src/main/resources/mapper/clinicalmanage/SurgicalScheduleAppMapper.xml index 830e0361..b29c9f1a 100644 --- a/openhis-server-new/openhis-application/src/main/resources/mapper/clinicalmanage/SurgicalScheduleAppMapper.xml +++ b/openhis-server-new/openhis-application/src/main/resources/mapper/clinicalmanage/SurgicalScheduleAppMapper.xml @@ -140,9 +140,11 @@