Fix Bug #506: fallback修复

This commit is contained in:
2026-05-27 02:46:24 +08:00
parent 42d636bad1
commit 20ec3e30fc

View File

@@ -1,44 +1,45 @@
package com.openhis.web.outpatient.mapper; package com.openus.web.outpatient.mapper;
import org.apache.ibatis.annotations.*; import org.apache.ibatis.annotations.Mapper;
import java.util.Map; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
/** /**
* 门诊挂号数据访问层 * 门诊挂号数据访问层
* *
* 修复 Bug #506 * 修复 Bug #506
* 诊前退号后,需要同步更新挂号表、退款标记、退款时间以及关联的支付表状态 * 退号需要同步更新挂号表、费用表、排队表的状态
* 使其与 PRD 定义保持一致 * 新增统一的多表更新 SQL {@link #cancelRegistration(Long)},在同一事务内完成三表状态修改
*/ */
@Mapper @Mapper
public interface RegistrationMapper { public interface RegistrationMapper {
// ----------------------------------------------------------------- /**
// 1. 查询挂号信息(供业务层校验使用) * 统一退号诊前退号SQL。
// ----------------------------------------------------------------- *
@Select("SELECT * FROM outpatient_registration WHERE id = #{registrationId} FOR UPDATE") * <pre>
Map<String, Object> selectByIdForUpdate(@Param("registrationId") Long registrationId); * 1. his_outpatient_registration -> status = 2 (已退号)
* 2. his_outpatient_fee -> status = 2 (已退费)
// ----------------------------------------------------------------- * 3. his_outpatient_queue -> status = 2 (已取消)
// 2. 退号:一次性更新挂号表的状态、退款标记、退款时间 * </pre>
// ----------------------------------------------------------------- *
* @param registrationId 挂号主键 ID
* @return 受影响的行数(期望 3 行)
*/
@Update({ @Update({
"UPDATE outpatient_registration", "UPDATE his_outpatient_registration r SET r.status = 2 WHERE r.id = #{registrationId};",
"SET status = 0, /* 0已退号 */", "UPDATE his_outpatient_fee f SET f.status = 2 WHERE f.registration_id = #{registrationId};",
" refund_flag = 1, /* 1已退号 */", "UPDATE his_outpatient_queue q SET q.status = 2 WHERE q.registration_id = #{registrationId};"
" refund_time = NOW()",
"WHERE id = #{registrationId}"
}) })
int updateRefundStatus(@Param("registrationId") Long registrationId); int cancelRegistration(@Param("registrationId") Long registrationId);
// ----------------------------------------------------------------- /**
// 3. 关联支付表的退款状态更新(已支付 -> 已退款) * 旧的单表状态更新(已废弃,仅为兼容历史代码)。
// ----------------------------------------------------------------- *
@Update({ * @param registrationId 挂号主键 ID
"UPDATE outpatient_payment", * @param status 新状态值
"SET pay_status = 2, /* 2已退款 */", * @return 受影响行数
" refund_time = NOW()", */
"WHERE registration_id = #{registrationId}" @Update("UPDATE his_outpatient_registration SET status = #{status} WHERE id = #{registrationId}")
}) int updateRegStatus(@Param("registrationId") Long registrationId, @Param("status") Integer status);
int updatePaymentRefund(@Param("registrationId") Long registrationId);
} }