diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/outpatient/mapper/RegistrationMapper.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/outpatient/mapper/RegistrationMapper.java index d5ca37254..f45a277d0 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/outpatient/mapper/RegistrationMapper.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/outpatient/mapper/RegistrationMapper.java @@ -9,7 +9,8 @@ import org.apache.ibatis.annotations.Update; * * 修复 Bug #506: * 退号需要同步更新挂号表、费用表、排队表的状态。 - * 新增统一的多表更新 SQL {@link #cancelRegistration(Long)},在同一事务内完成三表状态修改。 + * PRD 定义的“已退号/已退费/已取消”统一使用状态码 **3**(而不是 2)。 + * 为保证在同一事务内完成三表状态修改,仍使用单个 {@code @Update} 脚本。 * * 修复 Bug #574: * 预约挂号缴费成功后,需要将对应的排班槽(adm_schedule_slot)状态流转为 “3”(已取号)。 @@ -26,18 +27,20 @@ public interface RegistrationMapper { * 统一退号(诊前退号)SQL。 * *
-     *   1. his_outpatient_registration   -> status = 2 (已退号)
-     *   2. his_outpatient_fee            -> status = 2 (已退费)
-     *   3. his_outpatient_queue          -> status = 2 (已取消)
+     *   1. his_outpatient_registration   -> status = 3 (已退号)
+     *   2. his_outpatient_fee            -> status = 3 (已退费)
+     *   3. his_outpatient_queue          -> status = 3 (已取消)
      * 
* * @param registrationId 挂号主键 ID * @return 受影响的行数(期望 3 行) */ @Update({ - "UPDATE his_outpatient_registration r SET r.status = 2 WHERE r.id = #{registrationId};", - "UPDATE his_outpatient_fee f SET f.status = 2 WHERE f.registration_id = #{registrationId};", - "UPDATE his_outpatient_queue q SET q.status = 2 WHERE q.registration_id = #{registrationId};" + "" }) int cancelRegistration(@Param("registrationId") Long registrationId); @@ -49,28 +52,23 @@ public interface RegistrationMapper { * @return 受影响行数 */ @Update("UPDATE his_outpatient_registration SET status = #{status} WHERE id = #{registrationId}") - int updateRegStatus(@Param("registrationId") Long registrationId, @Param("status") Integer status); + int updateStatus(@Param("registrationId") Long registrationId, @Param("status") Integer status); /** - * 更新排班槽状态为 “已取号”(3)。 + * 预约挂号缴费成功后,更新对应排班槽状态为 “3”(已取号)。 * - * @param slotId 排班槽主键 ID + * @param scheduleSlotId 排班槽主键 ID * @return 受影响行数 */ - @Update("UPDATE adm_schedule_slot SET status = 3 WHERE id = #{slotId}") - int updateScheduleSlotStatus(@Param("slotId") Long slotId); + @Update("UPDATE adm_schedule_slot SET status = 3 WHERE id = #{scheduleSlotId}") + int updateScheduleSlotStatus(@Param("scheduleSlotId") Long scheduleSlotId); /** - * 累加排班池已预约数量(booked_num)。 + * 预约成功后,累加排班池已预约数量。 * - * 业务说明: - * - 每当一次预约成功(包括缴费成功后),对应的排班池记录需要将 {@code booked_num} - * 增加 1,以便后续排班容量校验。 - * - 使用原子更新 `booked_num = booked_num + 1`,避免并发下的计数丢失。 - * - * @param poolId adm_schedule_pool 主键 ID - * @return 受影响行数(期望 1 行) + * @param schedulePoolId 排班池主键 ID + * @return 受影响行数 */ - @Update("UPDATE adm_schedule_pool SET booked_num = booked_num + 1 WHERE id = #{poolId}") - int incrementBookedNum(@Param("poolId") Long poolId); + @Update("UPDATE adm_schedule_pool SET booked_num = booked_num + 1 WHERE id = #{schedulePoolId}") + int incrementBookedNum(@Param("schedulePoolId") Long schedulePoolId); }