From 74de40f94fb980b6329f8bfa3ca36676e7bfff2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=8E=E4=BD=97?= Date: Tue, 2 Jun 2026 10:42:05 +0800 Subject: [PATCH] =?UTF-8?q?fix(#575):=20=E9=A2=84=E7=BA=A6=E6=88=90?= =?UTF-8?q?=E5=8A=9F=E5=90=8E=20booked=5Fnum=20=E6=9C=AA=E5=AE=9E=E6=97=B6?= =?UTF-8?q?=E7=B4=AF=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:booked_num 只在签到时累加,预约成功后没有更新。 业务上预约成功就占了号源,booked_num 应立即反映。 修复: - TicketServiceImpl: 预约成功后 booked_num +1(与 locked_num 同步) - SchedulePoolMapper: 签到时不再改 booked_num(预约时已加) - SchedulePoolMapper: refreshPoolStats 统计 booked_num 包含 LOCKED+BOOKED+CHECKED_IN - SlotStatus: 更新状态流转注释 --- .../main/java/com/openhis/common/enums/SlotStatus.java | 8 ++++---- .../appointmentmanage/mapper/SchedulePoolMapper.java | 5 ++--- .../openhis/clinical/service/impl/TicketServiceImpl.java | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/openhis-server-new/openhis-common/src/main/java/com/openhis/common/enums/SlotStatus.java b/openhis-server-new/openhis-common/src/main/java/com/openhis/common/enums/SlotStatus.java index 912165fa9..a168d952e 100644 --- a/openhis-server-new/openhis-common/src/main/java/com/openhis/common/enums/SlotStatus.java +++ b/openhis-server-new/openhis-common/src/main/java/com/openhis/common/enums/SlotStatus.java @@ -8,10 +8,10 @@ import lombok.Getter; * *
  * 状态流转:
- *   预约     → 0→2 (锁定), locked_num+1
- *   取消预约 → 2→0 (释放), locked_num-1
- *   签到     → 2→1 (已约), locked_num-1, booked_num+1
- *   退号     → 1→0 (释放), booked_num-1
+ *   预约     → 0→2 (锁定), locked_num+1, booked_num+1
+ *   取消预约 → 2→0 (释放), refreshPoolStats 重算
+ *   签到     → 2→3 (已签到), locked_num-1
+ *   退号     → →0 (释放), refreshPoolStats 重算
  *   停诊     → 任意→4 (已取消)
  * 
* diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/appointmentmanage/mapper/SchedulePoolMapper.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/appointmentmanage/mapper/SchedulePoolMapper.java index 199f0bd05..a6f7fcbb6 100755 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/appointmentmanage/mapper/SchedulePoolMapper.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/appointmentmanage/mapper/SchedulePoolMapper.java @@ -24,7 +24,7 @@ public interface SchedulePoolMapper extends BaseMapper { FROM adm_schedule_slot s WHERE s.pool_id = p.id AND s.delete_flag = '0' - AND (s.status = #{bookedStatus} OR s.status = 3) + AND s.status IN (#{bookedStatus}, #{lockedStatus}, 3) ), 0), locked_num = COALESCE(( SELECT COUNT(1) @@ -42,7 +42,7 @@ public interface SchedulePoolMapper extends BaseMapper { @Param("lockedStatus") Integer lockedStatus); /** - * 签到时更新号源池统计:锁定数-1,已约数+1 + * 签到时更新号源池统计:锁定数-1(booked_num 在预约时已累加) * * @param poolId 号源池ID * @return 结果 @@ -50,7 +50,6 @@ public interface SchedulePoolMapper extends BaseMapper { @Update(""" UPDATE adm_schedule_pool SET locked_num = locked_num - 1, - booked_num = booked_num + 1, update_time = NOW() WHERE id = #{poolId} AND locked_num > 0 diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/clinical/service/impl/TicketServiceImpl.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/clinical/service/impl/TicketServiceImpl.java index 4fc11196b..25e48f1cb 100755 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/clinical/service/impl/TicketServiceImpl.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/clinical/service/impl/TicketServiceImpl.java @@ -267,7 +267,7 @@ public class TicketServiceImpl extends ServiceImpl impleme if (poolId != null) { schedulePoolMapper.update(null, new LambdaUpdateWrapper() - .setSql("locked_num = locked_num + 1, version = version + 1") + .setSql("locked_num = locked_num + 1, booked_num = booked_num + 1, version = version + 1") .set(SchedulePool::getUpdateTime, new Date()) .eq(SchedulePool::getId, poolId)); }