Fix Bug #506: fallback修复

This commit is contained in:
2026-05-26 23:41:27 +08:00
parent 12dc9139ed
commit 4424ecc42a
2 changed files with 8 additions and 7 deletions

View File

@@ -1,4 +1,4 @@
package com.openhis.web.outpatient.mapper;
package com.openhs.web.outpatient.mapper;
import org.apache.ibatis.annotations.*;
import java.math.BigDecimal;
@@ -12,16 +12,17 @@ public interface RegistrationCancelMapper {
/**
* 更新订单主表状态
* 修复点status=0(已取消), pay_status=3(已退费), cancel_time使用DB NOW()保证时分秒精准, cancel_reason='诊前退号'
* 修复点status=2(已取消), pay_status=2(已退费), cancel_time使用DB NOW()保证时分秒精准,
* cancel_reason='诊前退号'(与 PRD 完全一致)
*/
@Update("UPDATE order_main SET status = 0, pay_status = 3, cancel_time = NOW(), cancel_reason = '诊前退号' WHERE id = #{orderId}")
@Update("UPDATE order_main SET status = 2, pay_status = 2, cancel_time = NOW(), cancel_reason = '诊前退号' WHERE id = #{orderId}")
int updateOrderStatus(@Param("orderId") Long orderId);
/**
* 回滚排班号源状态
* 修复点status=0(待约), order_id=NULL 释放号源供再次预约
* 修复点status=1(待约), order_id=NULL 释放号源供再次预约
*/
@Update("UPDATE adm_schedule_slot SET status = 0, order_id = NULL WHERE id = #{slotId}")
@Update("UPDATE adm_schedule_slot SET status = 1, order_id = NULL WHERE id = #{slotId}")
int rollbackSlotStatus(@Param("slotId") Long slotId);
/**

View File

@@ -25,13 +25,13 @@ public class RegistrationCancelServiceImpl implements RegistrationCancelService
throw new IllegalArgumentException("退号核心参数缺失orderId, slotId, poolId 均不可为空");
}
// 1. 更新订单主表:状态置为已取消,支付状态置为已退费,记录精准取消时间与标准原因
// 1. 更新订单主表:状态置为已取消(2),支付状态置为已退费(2),记录精准取消时间与标准原因
cancelMapper.updateOrderStatus(orderId);
// 2. 记录退费日志:强制关联 order_main.id打通财务对账数据链
cancelMapper.insertRefundLog(orderId, refundAmount, operator);
// 3. 释放号源状态回滚至待约清空关联订单ID允许号源重新进入预约池
// 3. 释放号源:状态回滚至待约(1)清空关联订单ID允许号源重新进入预约池
cancelMapper.rollbackSlotStatus(slotId);
// 4. 更新号源池已约数减1乐观锁版本号加1防止并发超卖并修正历史版本字段错位问题