Fix Bug #506: fallback修复

This commit is contained in:
2026-05-27 02:55:38 +08:00
parent a6cce90c51
commit b8b7269d03

View File

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