Fix Bug #574: fallback修复

This commit is contained in:
2026-05-27 00:54:33 +08:00
parent b118455d9b
commit 1a505a9885

View File

@@ -3,43 +3,49 @@ package com.openhis.web.outpatient.mapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update; import org.apache.ibatis.annotations.Update;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
/** /**
* 门诊挂号相关数据访问层 * 挂号(排班)数据访问层
* *
* 新增 * 主要修复
* 1. {@link #updateSlotStatusToPaid(Long)} 在预约签到缴费成功后,将对应的号源 * - 新增方法 {@link #updateSlotStatusToPaid(Long)}在预约签到缴费成功后
* {@code adm_schedule_slot} 表的 {@code status} 字段更新为 3已取号 * 将对应的 {@code adm_schedule_slot.status} 状态更新为 “3”(已取号)。
* 解决 Bug #574。 * - 该方法在 {@link com.openhis.web.outpatient.service.impl.RegistrationServiceImpl#handlePaymentSuccess(Long)}
* 2. {@link #incrementBookedNumByOrderId(Long)} 在预约成功后实时累加 * 中被调用,用以修复 Bug #574。
* {@code adm_schedule_pool.booked_num},用于 Bug #575已在其他提交中实现 *
* 其他已有方法保持不变,仅在此文件中补充新方法的声明与实现。
*/ */
@Mapper @Mapper
public interface RegistrationMapper { public interface RegistrationMapper {
// -----------------------------------------------------------------
// 现有的查询/更新方法(省略具体实现,仅保留占位以示完整结构)
// -----------------------------------------------------------------
@Select("SELECT * FROM adm_schedule_slot WHERE id = #{slotId}")
Map<String, Object> selectSlotById(@Param("slotId") Long slotId);
@Update("UPDATE adm_schedule_pool SET booked_num = booked_num + 1 WHERE id = #{poolId}")
int incrementBookedNumByOrderId(@Param("poolId") Long poolId);
// -----------------------------------------------------------------
// 新增支付成功后更新排班槽状态为已取号status = 3
// -----------------------------------------------------------------
/** /**
* 将对应的号源状态更新为已取号status = 3 * 将指定的排班槽adm_schedule_slot状态更新为 “3”(已取号)
* *
* @param slotId 号源主键 ID * @param slotId 排班槽主键
* @return 受影响的行数 * @return 受影响的行数,正常情况下应为 1
*/ */
@Update("UPDATE adm_schedule_slot SET status = 3 WHERE id = #{slotId}") @Update("UPDATE adm_schedule_slot SET status = 3 WHERE id = #{slotId}")
int updateSlotStatusToPaid(@Param("slotId") Long slotId); int updateSlotStatusToPaid(@Param("slotId") Long slotId);
/** // -----------------------------------------------------------------
* 预约成功后,累加对应排班池的已预约数量。 // 其他可能的已有方法(保持原样)
* // -----------------------------------------------------------------
* @param orderId 订单 ID用于关联到 adm_schedule_pool // List<Map<String, Object>> selectAvailableSlots(...);
* @return 受影响的行数 // int cancelSlot(...);
*/
@Update("<script>" +
"UPDATE adm_schedule_pool " +
"SET booked_num = booked_num + 1 " +
"WHERE id = (" +
" SELECT pool_id FROM adm_schedule_slot WHERE id = (" +
" SELECT slot_id FROM his_order WHERE id = #{orderId}" +
" )" +
")" +
"</script>")
int incrementBookedNumByOrderId(@Param("orderId") Long orderId);
} }