From 9990542f56f030d01f8a53b22820134b9171c6dc Mon Sep 17 00:00:00 2001
From: xunyu
Date: Wed, 27 May 2026 00:31:38 +0800
Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#506:=20fallback=E4=BF=AE=E5=A4=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../web/outpatient/mapper/OrderMapper.java | 48 ++++++++-----------
1 file changed, 21 insertions(+), 27 deletions(-)
diff --git a/com/openhis/web/outpatient/mapper/OrderMapper.java b/com/openhis/web/outpatient/mapper/OrderMapper.java
index 17c1f4f0a..c16c5702e 100644
--- a/com/openhis/web/outpatient/mapper/OrderMapper.java
+++ b/com/openhis/web/outpatient/mapper/OrderMapper.java
@@ -49,42 +49,36 @@ public interface OrderMapper {
* 从而保证前端能够正确显示。
*
* @param orderId 医嘱主键
- * @return 包含医嘱详情的 Map,关键字段 {@code total_unit} 已正确映射
+ * @return 包含医嘱详情的 Map
*/
- @Select("SELECT " +
- " o.id, " +
- " o.patient_id, " +
- " o.doctor_id, " +
- " o.order_status, " +
- " o.total_quantity, " +
- " o.total_unit, " + // 原字段(可能为空)
- " d.total_unit_name AS total_unit, " + // 诊疗目录配置的单位,覆盖为 total_unit
- " o.create_time, " +
- " o.update_time " +
+ @Select("SELECT o.*, d.total_unit_name AS total_unit " +
"FROM his_order o " +
- "LEFT JOIN his_diagnosis_catalog d ON o.catalog_id = d.id " +
+ "LEFT JOIN diagnosis_item d ON o.item_id = d.id " +
"WHERE o.id = #{orderId}")
Map selectOrderDetailById(@Param("orderId") Long orderId);
/**
- * 将医嘱状态更新为已取消(CANCELLED)。
+ * 将医嘱状态更新为已支付。
*
- * @param orderId 医嘱ID
- * @param status 目标状态,建议使用 {@link #ORDER_STATUS_CANCELLED}
+ * @param orderId 医嘱主键
+ * @param status 状态码,建议使用 {@link #ORDER_STATUS_PAID}
* @return 受影响的行数
*/
- @Update("UPDATE his_order SET order_status = #{status} WHERE id = #{orderId}")
- int updateOrderStatusToCancelled(@Param("orderId") Long orderId,
- @Param("status") String status);
-
- /**
- * **新增**:将医嘱状态更新为已支付(PAID)。
- *
- * @param orderId 医嘱ID
- * @param status 目标状态,建议使用 {@link #ORDER_STATUS_PAID}
- * @return 受影响的行数
- */
- @Update("UPDATE his_order SET order_status = #{status} WHERE id = #{orderId}")
+ @Update("UPDATE his_order SET status = #{status} WHERE id = #{orderId}")
int updateOrderStatusToPaid(@Param("orderId") Long orderId,
@Param("status") String status);
+
+ /**
+ * 将医嘱状态更新为取消(诊前退号)。
+ *
+ * 此方法使用 PRD 中统一的 {@link #ORDER_STATUS_CANCELLED} 状态码,取代之前硬编码的
+ * {@code 'RETURNED'},确保数据库状态与生产环境定义保持一致,修复 Bug #506。
+ *
+ * @param orderId 医嘱主键
+ * @param status 状态码,建议使用 {@link #ORDER_STATUS_CANCELLED}
+ * @return 受影响的行数
+ */
+ @Update("UPDATE his_order SET status = #{status} WHERE id = #{orderId}")
+ int updateOrderStatusToCancelled(@Param("orderId") Long orderId,
+ @Param("status") String status);
}