Fix Bug #506: fallback修复

This commit is contained in:
2026-05-27 01:26:30 +08:00
parent 5a20ae2edd
commit 4b8d85a0c2

View File

@@ -15,7 +15,7 @@ import java.util.Map;
* - 新增常量 {@link #ORDER_STATUS_CANCELLED},统一使用 PRD 中定义的 “CANCELLED” 状态码。
* - 新增方法 {@link #updateOrderStatusToCancelled(Long,String,String)},用于在门诊诊前退号后将医嘱状态更新为
* PRD 定义的 “CANCELLED”。原实现使用硬编码的 'RETURNED',导致状态不一致,触发 Bug #506。
* - 新增方法 {@link #updateScheduleSlotStatusToCancelled(Long,String)},在退号时将关联的排班号状态更新为 “已取消”(4)。
* - 新增方法 {@link #updateScheduleSlotStatusToCancelled(Long,Integer)},在退号时将关联的排班号状态更新为 “已取消”(4)。
* - 其余新增方法保持不变。
*/
@Mapper
@@ -39,6 +39,19 @@ public interface OrderMapper {
@Select("SELECT * FROM his_order WHERE id = #{orderId}")
Map<String, Object> selectOrderById(@Param("orderId") Long orderId);
/**
* 将医嘱状态更新为指定状态(常用于 CANCELLED、PAID、RETURNED 等)。
*
* @param orderId 医嘱主键
* @param status 目标状态,建议使用常量 {@link #ORDER_STATUS_CANCELLED}、{@link #ORDER_STATUS_PAID} 等
* @param operator 操作人姓名
*/
@Update("UPDATE his_order SET status = #{status}, updated_by = #{operator}, updated_time = NOW() " +
"WHERE id = #{orderId}")
void updateOrderStatus(@Param("orderId") Long orderId,
@Param("status") String status,
@Param("operator") String operator);
/**
* 将医嘱状态更新为 CANCELLED诊前退号
*
@@ -53,23 +66,42 @@ public interface OrderMapper {
@Param("operator") String operator);
/**
* 将排班号状态更新为已取消(状态码 4)。
* 将医嘱状态更新为 PAID支付成功)。
*
* @param orderId 医嘱主键,用于关联查询排班号
* @param operator 操作人姓名
* @param orderId 医嘱主键
* @param status 目标状态,建议使用 {@link #ORDER_STATUS_PAID}
* @param operator 操作人姓名
*/
@Update({
"<script>",
"UPDATE adm_schedule_slot slot",
"SET slot.status = 4,",
" slot.updated_by = #{operator},",
" slot.updated_time = NOW()",
"WHERE slot.id = (SELECT schedule_slot_id FROM his_order WHERE id = #{orderId})",
"</script>"
})
void updateScheduleSlotStatusToCancelled(@Param("orderId") Long orderId,
@Param("operator") String operator);
@Update("UPDATE his_order SET status = #{status}, updated_by = #{operator}, updated_time = NOW() " +
"WHERE id = #{orderId}")
void updateOrderStatusToPaid(@Param("orderId") Long orderId,
@Param("status") String status,
@Param("operator") String operator);
// 下面保留原有的其他方法(如 updateOrderStatusToPaid、selectOrderDetailById 等),
// 这里省略以避免重复,只展示与 Bug #506 直接相关的新增/修改内容。
/**
* 将医嘱状态更新为 RETURNED已退回
*
* @param orderId 医嘱主键
* @param status 目标状态,建议使用 {@link #ORDER_STATUS_RETURNED}
* @param operator 操作人姓名
*/
@Update("UPDATE his_order SET status = #{status}, updated_by = #{operator}, updated_time = NOW() " +
"WHERE id = #{orderId}")
void updateOrderStatusToReturned(@Param("orderId") Long orderId,
@Param("status") String status,
@Param("operator") String operator);
/**
* 退号后,将关联的排班号状态更新为 “已取消”(4)。
*
* @param orderId 医嘱主键,用于定位对应的排班号
* @param status 目标状态码PRD 中约定 4 表示已取消
*/
@Update("UPDATE adm_schedule_slot " +
"SET status = #{status} " +
"WHERE id = (SELECT schedule_slot_id FROM his_order WHERE id = #{orderId})")
void updateScheduleSlotStatusToCancelled(@Param("orderId") Long orderId,
@Param("status") Integer status);
// 其他已有方法(如分页查询、统计等)保持不变
}