diff --git a/com/openhis/web/outpatient/mapper/OrderMapper.java b/com/openhis/web/outpatient/mapper/OrderMapper.java index 2f9b06b3b..b9329c123 100644 --- a/com/openhis/web/outpatient/mapper/OrderMapper.java +++ b/com/openhis/web/outpatient/mapper/OrderMapper.java @@ -13,15 +13,13 @@ import java.util.Map; * * 主要修复: * - 新增常量 {@link #ORDER_STATUS_CANCELLED},统一使用 PRD 中定义的 “CANCELLED” 状态码。 - * - 新增方法 {@link #updateOrderStatusToCancelled(Long,String,String)},用于在门诊诊前退号后将医嘱状态更新为 + * - 新增方法 {@link #updateOrderStatusToCancelled(Long,String)},用于在门诊诊前退号后将医嘱状态更新为 * PRD 定义的 “CANCELLED”。原实现使用硬编码的 'RETURNED',导致状态不一致,触发 Bug #506。 * - 新增方法 {@link #selectOrderDetailById(Long)},显式返回诊疗目录配置的总量单位字段, * 解决医嘱录入后总量单位显示为 “null” 的 Bug #561。 - * - 新增方法 {@link #updateOrderStatusToPaid(Long,String,String)},在支付成功后将订单状态更新为 + * - 新增方法 {@link #updateOrderStatusToPaid(Long,String)},在支付成功后将订单状态更新为 * PRD 中定义的 “PAID”。该方法在 {@link com.openhis.web.outpatient.service.impl.RegistrationServiceImpl} * 中被调用,用以修复 Bug #574。 - * - 新增方法 {@link #updateScheduleSlotStatusToFinished(Long)},在预约缴费成功后将对应的 - * 排班号(adm_schedule_slot)状态更新为 “3”(已取号),解决 Bug #574。 * * 为了解决门诊医生工作站‑待写病历页面加载慢(>2 秒)的问题,新增了 * {@link #selectPendingMedicalRecords(Long, int, int)} 方法,采用分页查询并只返回 @@ -51,36 +49,36 @@ public interface OrderMapper { Map selectOrderById(@Param("orderId") Long orderId); /** - * 更新医嘱状态为已支付(PAID)。 + * 查询医嘱详情(包括总量单位),用于门诊医生站医嘱录入后展示。 * - * @param orderId 医嘱ID - * @param updateTime 更新时间戳(字符串形式) - * @param status 状态码,建议使用 {@link #ORDER_STATUS_PAID} + * @param orderId 医嘱主键 + * @return 包含总量(total_quantity)及其单位(total_quantity_unit)等关键字段的 Map */ - @Update("UPDATE his_order SET status = #{status}, update_time = #{updateTime} WHERE id = #{orderId}") - void updateOrderStatusToPaid(@Param("orderId") Long orderId, - @Param("updateTime") String updateTime, - @Param("status") String status); + @Select("SELECT id, order_name, total_quantity, total_quantity_unit, dosage, frequency, usage " + + "FROM his_order WHERE id = #{orderId}") + Map selectOrderDetailById(@Param("orderId") Long orderId); /** - * 更新医嘱状态为已取消(CANCELLED),用于门诊诊前退号。 + * 将医嘱状态更新为已取消(CANCELLED)。 * - * @param orderId 医嘱ID - * @param updateTime 更新时间戳(字符串形式) - * @param status 状态码,建议使用 {@link #ORDER_STATUS_CANCELLED} + * @param orderId 医嘱主键 + * @param operator 操作人(用于审计) */ - @Update("UPDATE his_order SET status = #{status}, update_time = #{updateTime} WHERE id = #{orderId}") - void updateOrderStatusToCancelled(@Param("orderId") Long orderId, - @Param("updateTime") String updateTime, - @Param("status") String status); + @Update("UPDATE his_order SET status = #{status}, updated_by = #{operator}, updated_time = NOW() " + + "WHERE id = #{orderId}") + int updateOrderStatusToCancelled(@Param("orderId") Long orderId, + @Param("operator") String operator); /** - * 更新排班号状态为已取号(状态码 3)。 + * 将医嘱状态更新为已支付(PAID)。 * - * @param slotId 排班号ID + * @param orderId 医嘱主键 + * @param operator 操作人 */ - @Update("UPDATE adm_schedule_slot SET status = 3, update_time = NOW() WHERE id = #{slotId}") - void updateScheduleSlotStatusToFinished(@Param("slotId") Long slotId); + @Update("UPDATE his_order SET status = #{status}, updated_by = #{operator}, updated_time = NOW() " + + "WHERE id = #{orderId}") + int updateOrderStatusToPaid(@Param("orderId") Long orderId, + @Param("operator") String operator); - // 其余已实现的方法(如 selectOrderDetailById、selectPendingMedicalRecords 等)保持不变 + // 其它已存在的方法(如分页查询待写病历等)保持不变... }