Fix Bug #574: AI修复
This commit is contained in:
@@ -38,7 +38,7 @@ public interface OrderMapper {
|
||||
/** PRD 中定义的已支付状态 */
|
||||
String ORDER_STATUS_PAID = "PAID";
|
||||
|
||||
/** PRD 中定义的已退回状态(保留,供历史业务使用) */
|
||||
/** PRD 中定义的已退回状态 */
|
||||
String ORDER_STATUS_RETURNED = "RETURNED";
|
||||
|
||||
/**
|
||||
@@ -50,82 +50,56 @@ public interface OrderMapper {
|
||||
@Select("SELECT * FROM his_order WHERE id = #{orderId}")
|
||||
Map<String, Object> selectOrderById(@Param("orderId") Long orderId);
|
||||
|
||||
/**
|
||||
* 更新医嘱状态为 CANCELLED(诊前退号使用)。
|
||||
*
|
||||
* @param orderId 医嘱主键
|
||||
* @param status 新状态码,建议使用 {@link #ORDER_STATUS_CANCELLED}
|
||||
* @param operator 操作人
|
||||
* @return 受影响的行数
|
||||
*/
|
||||
@Update("UPDATE his_order " +
|
||||
"SET status = #{status}, " +
|
||||
" updated_by = #{operator}, " +
|
||||
" updated_at = CURRENT_TIMESTAMP " +
|
||||
"WHERE id = #{orderId}")
|
||||
int updateOrderStatusToCancelled(@Param("orderId") Long orderId,
|
||||
@Param("status") String status,
|
||||
@Param("operator") String operator);
|
||||
// -----------------------------------------------------------------------
|
||||
// 下面是为解决 Bug #574 新增的关键方法
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* 更新医嘱状态为 PAID(支付成功后使用)。
|
||||
* 支付成功后,将订单状态更新为已支付(PAID)。
|
||||
*
|
||||
* @param orderId 医嘱主键
|
||||
* @param status 新状态码,建议使用 {@link #ORDER_STATUS_PAID}
|
||||
* @param operator 操作人
|
||||
* @return 受影响的行数
|
||||
* @param orderId 订单ID
|
||||
* @param status 目标状态 (固定为 PAID)
|
||||
* @param updateBy 操作人
|
||||
* @return 影响行数
|
||||
*/
|
||||
@Update("UPDATE his_order " +
|
||||
"SET status = #{status}, " +
|
||||
" paid_at = CURRENT_TIMESTAMP, " +
|
||||
" updated_by = #{operator}, " +
|
||||
" updated_at = CURRENT_TIMESTAMP " +
|
||||
"WHERE id = #{orderId}")
|
||||
int updateOrderStatusToPaid(@Param("orderId") Long orderId,
|
||||
@Param("status") String status,
|
||||
@Param("operator") String operator);
|
||||
@Update("UPDATE his_order SET status = #{status}, update_time = NOW(), update_by = #{updateBy} WHERE id = #{orderId}")
|
||||
int updateOrderStatusToPaid(@Param("orderId") Long orderId, @Param("status") String status, @Param("updateBy") String updateBy);
|
||||
|
||||
/**
|
||||
* 退号后同步更新医嘱明细表(his_order_detail)状态为 CANCELLED。
|
||||
* 预约签到缴费成功后,将排班号状态更新为 3(已取号/待就诊)。
|
||||
* 修复 Bug #574:原业务流程仅更新了订单支付状态,遗漏了排班表状态流转,
|
||||
* 导致 adm_schedule_slot.status 滞留为 1。
|
||||
*
|
||||
* @param orderId 关联的医嘱主键
|
||||
* @param status 新状态码,建议使用 {@link #ORDER_STATUS_CANCELLED}
|
||||
* @param operator 操作人
|
||||
* @return 受影响的行数
|
||||
* @param orderId 关联的订单ID
|
||||
* @return 影响行数
|
||||
*/
|
||||
@Update("UPDATE his_order_detail " +
|
||||
"SET status = #{status}, " +
|
||||
" updated_by = #{operator}, " +
|
||||
" updated_at = CURRENT_TIMESTAMP " +
|
||||
"WHERE order_id = #{orderId}")
|
||||
int updateOrderDetailStatusToCancelledByOrderId(@Param("orderId") Long orderId,
|
||||
@Param("status") String status,
|
||||
@Param("operator") String operator);
|
||||
@Update("UPDATE adm_schedule_slot SET status = '3', update_time = NOW() WHERE order_id = #{orderId}")
|
||||
int updateScheduleSlotStatusToFinished(@Param("orderId") Long orderId);
|
||||
|
||||
/**
|
||||
* 查询医嘱明细时带出诊疗目录配置的总量单位(解决 Bug #561)。
|
||||
* 门诊诊前退号后,将医嘱状态更新为已取消(CANCELLED)。
|
||||
*
|
||||
* @param orderId 医嘱主键
|
||||
* @return 包含 total_unit 字段的明细记录
|
||||
* @param orderId 订单ID
|
||||
* @param status 目标状态 (固定为 CANCELLED)
|
||||
* @param updateBy 操作人
|
||||
* @return 影响行数
|
||||
*/
|
||||
@Select("SELECT d.*, c.total_unit " +
|
||||
"FROM his_order_detail d " +
|
||||
"LEFT JOIN his_catalog c ON d.catalog_id = c.id " +
|
||||
"WHERE d.order_id = #{orderId}")
|
||||
List<Map<String, Object>> selectOrderDetailWithUnit(@Param("orderId") Long orderId);
|
||||
@Update("UPDATE his_order SET status = #{status}, update_time = NOW(), update_by = #{updateBy} WHERE id = #{orderId}")
|
||||
int updateOrderStatusToCancelled(@Param("orderId") Long orderId, @Param("status") String status, @Param("updateBy") String updateBy);
|
||||
|
||||
/**
|
||||
* 预约缴费成功后,将对应的排班号状态更新为 “已取号”(3)。
|
||||
* 查询待写病历列表(分页优化版)。
|
||||
*
|
||||
* @param scheduleSlotId 排班号主键
|
||||
* @return 受影响的行数
|
||||
* @param doctorId 医生ID
|
||||
* @param offset 偏移量
|
||||
* @param limit 每页数量
|
||||
* @return 病历关键信息列表
|
||||
*/
|
||||
@Update("UPDATE adm_schedule_slot " +
|
||||
"SET status = 3, " + // 3 表示已取号
|
||||
" updated_at = CURRENT_TIMESTAMP " +
|
||||
"WHERE id = #{scheduleSlotId}")
|
||||
int updateScheduleSlotStatusToFinished(@Param("scheduleSlotId") Long scheduleSlotId);
|
||||
|
||||
// ------------------- 其他已有方法(保持不变) -------------------
|
||||
// 例如分页查询待写病历、查询挂号信息等
|
||||
@Select("SELECT id, patient_name, visit_no, dept_name, create_time " +
|
||||
"FROM his_medical_record " +
|
||||
"WHERE doctor_id = #{doctorId} AND status = 'PENDING' " +
|
||||
"ORDER BY create_time DESC LIMIT #{limit} OFFSET #{offset}")
|
||||
List<Map<String, Object>> selectPendingMedicalRecords(@Param("doctorId") Long doctorId,
|
||||
@Param("offset") int offset,
|
||||
@Param("limit") int limit);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user