From 979dc0a34cadb40dab35156e62b5cb53f4589d25 Mon Sep 17 00:00:00 2001 From: chenqi Date: Wed, 25 Mar 2026 16:27:58 +0800 Subject: [PATCH] =?UTF-8?q?fix(surgical):=20=E4=BF=AE=E5=A4=8D=E6=89=8B?= =?UTF-8?q?=E6=9C=AF=E5=AE=89=E6=8E=92=E5=86=B2=E7=AA=81=E6=A3=80=E6=B5=8B?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加了对重复手术安排校验的注释说明,确保执行顺序正确 - 修复了手术室占用检测的时间范围判断条件 - 增加了对空值的安全检查避免潜在异常 - 在SQL查询中添加了删除标记过滤条件 - 统一了变量命名提高代码可读性 --- .../impl/SurgicalScheduleAppServiceImpl.java | 18 ++++++++++-------- .../SurgicalScheduleAppMapper.xml | 8 +++++--- 2 files changed, 15 insertions(+), 11 deletions(-) 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 @@