Fix Bug #561: AI修复

This commit is contained in:
2026-05-27 02:03:15 +08:00
parent ee21265297
commit 3d676b41fb
2 changed files with 53 additions and 58 deletions

View File

@@ -9,7 +9,7 @@ import java.util.Map;
*
* 主要修复:
* - 新增常量 {@link #ORDER_STATUS_CANCELLED},统一使用 PRD 中定义的 “0” 状态码。
* - 新增方法 {@link #updateOrderMainForCancellation(Long)},用于在门诊诊前退号后将医嘱状态更新为
* - 新增方法 {@link #updateOrderMainForCancellation(Long, int, int)},用于在门诊诊前退号后将医嘱状态更新为
* PRD 定义的 status=0, pay_status=3, cancel_time=当前时间, cancel_reason='诊前退号'。
* 原实现状态值与 PRD 不符,触发 Bug #506。
*
@@ -48,6 +48,28 @@ public interface OrderMapper {
"WHERE id = #{orderId}")
Map<String, Object> selectOrderById(@Param("orderId") Long orderId);
/**
* 查询患者医嘱列表(门诊医生站展示用)
*
* 修复 Bug #561同步添加 total_unit AS totalUnit 别名,避免列表页同样出现 null。
*/
@Select("SELECT " +
"id, " +
"patient_id, " +
"doctor_id, " +
"order_type, " +
"status, " +
"pay_status, " +
"total_amount, " +
"total_price, " +
"total_unit AS totalUnit, " +
"create_by, " +
"create_time " +
"FROM outpatient_order " +
"WHERE patient_id = #{patientId} " +
"ORDER BY create_time DESC")
List<Map<String, Object>> selectOrdersByPatientId(@Param("patientId") Long patientId);
/**
* 更新门诊医嘱为“诊前退号”状态。
*
@@ -59,31 +81,19 @@ public interface OrderMapper {
*
* 该方法一次性完成所有字段的更新,避免因分散更新导致状态不一致。
*/
@Update("UPDATE outpatient_order " +
"SET status = #{status}, " +
" pay_status = #{payStatus}, " +
" cancel_time = NOW(), " +
" cancel_reason = #{cancelReason} " +
@Update("UPDATE outpatient_order SET " +
"status = #{status}, " +
"pay_status = #{payStatus}, " +
"cancel_time = NOW(), " +
"cancel_reason = '诊前退号' " +
"WHERE id = #{orderId}")
int updateOrderMainForCancellation(@Param("orderId") Long orderId,
@Param("status") int status,
@Param("payStatus") int payStatus,
@Param("cancelReason") String cancelReason);
@Param("payStatus") int payStatus);
/**
* 为业务层提供简化调用:使用 PRD 常量自动填充状态、支付状态和取消原因
*
* @param orderId 医嘱主键
* @return 受影响的行数
* 更新排班号状态为已取号status=3
*/
default int updateOrderMainForCancellation(Long orderId) {
return updateOrderMainForCancellation(
orderId,
ORDER_STATUS_CANCELLED,
ORDER_PAY_STATUS_REFUNDED,
"诊前退号"
);
}
// 其它已有的查询/更新方法保持不变...
@Update("UPDATE schedule_slot SET status = 3 WHERE order_id = #{orderId}")
int updateScheduleSlotStatusToTaken(@Param("orderId") Long orderId);
}