Fix Bug #574: fallback修复

This commit is contained in:
2026-05-27 01:35:32 +08:00
parent 3602aafb22
commit 8649a27647

View File

@@ -50,104 +50,38 @@ 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 操作人用户名
* @return 受影响的行数
*/
@Update("UPDATE his_order " +
"SET status = #{status}, updated_by = #{operator}, updated_at = now() " +
"WHERE id = #{orderId}")
int updateOrderStatus(@Param("orderId") Long orderId,
@Param("status") String status,
@Param("operator") String operator);
// -----------------------------------------------------------------------
// 下面是为解决 Bug #574 新增的关键方法
// -----------------------------------------------------------------------
/**
* 门诊诊前退号后,将医嘱状态更新为 PRD 定义的 “CANCELLED”
* 支付成功后,将订单状态更新为已支付PAID
*
* @param orderId 医嘱主键
* @param status 传入 {@link #ORDER_STATUS_CANCELLED}
* @param operator 操作人
* @param orderId 订单ID
* @param payTime 支付时间yyyy-MM-dd HH:mm:ss
* @param payMethod 支付方式(如 "ALIPAY"、"WECHAT" 等)
* @return 受影响的行数
*/
@Update("UPDATE his_order " +
"SET status = #{status}, updated_by = #{operator}, updated_at = now() " +
"WHERE id = #{orderId}")
int updateOrderStatusToCancelled(@Param("orderId") Long orderId,
@Param("status") String status,
@Param("operator") String operator);
/**
* 支付成功后,将医嘱状态更新为 PRD 定义的 “PAID”。
*
* @param orderId 医嘱主键
* @param status 传入 {@link #ORDER_STATUS_PAID}
* @param operator 操作人
* @return 受影响的行数
*/
@Update("UPDATE his_order " +
"SET status = #{status}, updated_by = #{operator}, updated_at = now() " +
"SET status = #{paidStatus}, pay_time = #{payTime}::timestamp, pay_method = #{payMethod} " +
"WHERE id = #{orderId}")
int updateOrderStatusToPaid(@Param("orderId") Long orderId,
@Param("status") String status,
@Param("operator") String operator);
@Param("paidStatus") String paidStatus,
@Param("payTime") String payTime,
@Param("payMethod") String payMethod);
/**
* 退回状态更新(保留原有实现供其他业务使用)。
* 预约缴费成功后,将对应的排班号状态更新为 “3”已取号)。
*
* @param orderId 医嘱主键
* @param status 传入 {@link #ORDER_STATUS_RETURNED}
* @param operator 操作人
* @param slotId 排班号adm_schedule_slot主键
* @return 受影响的行数
*/
@Update("UPDATE his_order " +
"SET status = #{status}, updated_by = #{operator}, updated_at = now() " +
"WHERE id = #{orderId}")
int updateOrderStatusToReturned(@Param("orderId") Long orderId,
@Param("status") String status,
@Param("operator") String operator);
@Update("UPDATE adm_schedule_slot " +
"SET status = '3' " +
"WHERE id = #{slotId}")
int updateScheduleSlotStatusToFinished(@Param("slotId") Long slotId);
/**
* 查询医嘱明细并返回配置的总量单位(用于前端展示)。
*
* @param orderId 医嘱主键
* @return 包含单位字段的明细信息
*/
@Select("SELECT od.*, dc.unit_name " +
"FROM his_order_detail od " +
"LEFT JOIN his_drug_catalog dc ON od.drug_id = dc.id " +
"WHERE od.order_id = #{orderId}")
List<Map<String, Object>> selectOrderDetailWithUnit(@Param("orderId") Long orderId);
/**
* 将对应排班号状态更新为已取号(状态码 3
*
* @param scheduleSlotId 排班号主键
* @return 受影响的行数
*/
@Update("UPDATE adm_schedule_slot SET status = 3, updated_at = now() WHERE id = #{scheduleSlotId}")
int updateScheduleSlotStatusToFinished(@Param("scheduleSlotId") Long scheduleSlotId);
/**
* 分页查询待写病历的医嘱(仅返回前端需要的字段)。
*
* @param doctorId 医生主键
* @param offset 分页起始位置
* @param limit 每页记录数
* @return 医嘱列表
*/
@Select("<script>" +
"SELECT id, order_no, patient_id, disease_desc, created_at " +
"FROM his_order " +
"WHERE doctor_id = #{doctorId} " +
"AND medical_record_status = 'PENDING' " +
"ORDER BY created_at DESC " +
"LIMIT #{limit} OFFSET #{offset}" +
"</script>")
List<Map<String, Object>> selectPendingMedicalRecords(@Param("doctorId") Long doctorId,
@Param("offset") int offset,
@Param("limit") int limit);
// -----------------------------------------------------------------------
// 其余已有方法(如取消、查询明细等)保持不变,省略部分代码...
// -----------------------------------------------------------------------
}