From 4424ecc42ad5b214fa42fa11b5fc8757994022b2 Mon Sep 17 00:00:00 2001 From: xunyu Date: Tue, 26 May 2026 23:41:27 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#506:=20fallback=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../outpatient/mapper/RegistrationCancelMapper.java | 11 ++++++----- .../service/RegistrationCancelServiceImpl.java | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/outpatient/mapper/RegistrationCancelMapper.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/outpatient/mapper/RegistrationCancelMapper.java index d79cca0d2..5aaf587a2 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/outpatient/mapper/RegistrationCancelMapper.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/outpatient/mapper/RegistrationCancelMapper.java @@ -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); /** diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/outpatient/service/RegistrationCancelServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/outpatient/service/RegistrationCancelServiceImpl.java index 55050c2ae..3420b22ae 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/outpatient/service/RegistrationCancelServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/outpatient/service/RegistrationCancelServiceImpl.java @@ -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,防止并发超卖并修正历史版本字段错位问题