diff --git a/com/openhis/web/outpatient/mapper/OrderMapper.java b/com/openhis/web/outpatient/mapper/OrderMapper.java index 893bf2008..53ad15691 100644 --- a/com/openhis/web/outpatient/mapper/OrderMapper.java +++ b/com/openhis/web/outpatient/mapper/OrderMapper.java @@ -49,35 +49,65 @@ public interface OrderMapper { * **新增**:查询医嘱详情并返回总量单位。 */ @Select("SELECT o.*, d.total_unit FROM his_order o " + - "LEFT JOIN his_order_detail d ON o.id = d.order_id " + + "LEFT JOIN diagnosis_detail d ON o.diagnosis_detail_id = d.id " + "WHERE o.id = #{orderId}") Map selectOrderDetailById(@Param("orderId") Long orderId); - /** - * **新增**:将医嘱状态更新为已取消(CANCELLED)。 - */ - @Update("UPDATE his_order SET 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 status = #{status} WHERE id = #{orderId}") int updateOrderStatusToPaid(@Param("orderId") Long orderId, @Param("status") String status); /** - * **新增**:分页查询待写病历记录,仅返回前端需要的字段。 + * **新增**:将医嘱状态更新为取消(CANCELLED),用于门诊诊前退号。 + * + * @param orderId 医嘱ID + * @param status 新状态码,建议使用 {@link #ORDER_STATUS_CANCELLED} + * @return 受影响的行数 */ - @Select("") - List> selectPendingMedicalRecords(@Param("offset") int offset, - @Param("pageSize") int pageSize); + @Update("UPDATE his_order SET status = #{status} WHERE id = #{orderId}") + int updateOrderStatusToCancelled(@Param("orderId") Long orderId, + @Param("status") String status); + + /** + * 批量更新医嘱状态(通用),保留原有业务使用。 + * + * @param orderIds 医嘱ID集合 + * @param status 目标状态码 + * @return 受影响的行数 + */ + @Update({ + "" + }) + int batchUpdateOrderStatus(@Param("orderIds") List orderIds, + @Param("status") String status); + + /** + * 分页查询待写病历的医嘱(仅返回前端需要的字段),用于提升查询性能。 + * + * @param doctorId 医生ID + * @param offset 起始行 + * @param limit 每页行数 + * @return 医嘱列表 + */ + @Select("SELECT id, item_name AS itemName, total_quantity AS totalQuantity, " + + "total_unit AS totalUnit, status FROM his_order " + + "WHERE doctor_id = #{doctorId} AND status = 'PENDING' " + + "ORDER BY create_time DESC LIMIT #{limit} OFFSET #{offset}") + List> selectPendingMedicalRecords(@Param("doctorId") Long doctorId, + @Param("offset") int offset, + @Param("limit") int limit); }