62 lines
2.4 KiB
Java
62 lines
2.4 KiB
Java
package com.openhis.web.inpatient.mapper;
|
||
|
||
import org.apache.ibatis.annotations.Mapper;
|
||
import org.apache.ibatis.annotations.Param;
|
||
import org.apache.ibatis.annotations.Update;
|
||
import org.apache.ibatis.annotations.Insert;
|
||
|
||
/**
|
||
* 住院发药/退药数据访问层
|
||
*
|
||
* 关键新增/修改方法:
|
||
* 1. initDispensingRecord(Long orderId, String submitStatus)
|
||
* - 插入发药明细记录,并将 submit_status 设置为 UNAPPLIED 或 APPLIED。
|
||
* 2. generateSummaryRecord(Long orderId)
|
||
* - 根据明细生成(或更新)汇总单,submit_status 必须为 APPLIED。
|
||
* 3. updateDispensingDetailStatus(Long orderId, String submitStatus)
|
||
* - 在“汇总申请”时把明细状态从 UNAPPLIED 改为 APPLIED。
|
||
*
|
||
* 这些方法配合 InpatientDispensingServiceImpl 实现了 Bug #503 的修复。
|
||
*/
|
||
@Mapper
|
||
public interface DispensingMapper {
|
||
|
||
/**
|
||
* 更新医嘱执行状态为已执行。
|
||
*/
|
||
@Update("UPDATE his_inpatient_order SET exec_status = #{status} WHERE id = #{orderId}")
|
||
int updateOrderExecStatus(@Param("orderId") Long orderId, @Param("status") String status);
|
||
|
||
/**
|
||
* 初始化发药明细记录。
|
||
*
|
||
* @param orderId 医嘱ID
|
||
* @param submitStatus 初始提交状态:UNAPPLIED 或 APPLIED
|
||
*/
|
||
@Insert("INSERT INTO dispensing_detail (order_id, submit_status, create_time) " +
|
||
"VALUES (#{orderId}, #{submitStatus}, NOW())")
|
||
int initDispensingRecord(@Param("orderId") Long orderId, @Param("submitStatus") String submitStatus);
|
||
|
||
/**
|
||
* 在自动模式或汇总申请后生成/更新汇总单。
|
||
*
|
||
* @param orderId 医嘱ID
|
||
*/
|
||
@Insert("INSERT INTO dispensing_summary (order_id, submit_status, create_time) " +
|
||
"SELECT #{orderId}, 'APPLIED', NOW() " +
|
||
"FROM dual " +
|
||
"ON DUPLICATE KEY UPDATE submit_status = 'APPLIED', update_time = NOW()")
|
||
int generateSummaryRecord(@Param("orderId") Long orderId);
|
||
|
||
/**
|
||
* 汇总申请时,将明细的 submit_status 更新为 APPLIED。
|
||
*
|
||
* @param orderId 医嘱ID
|
||
* @param submitStatus 目标状态,固定为 'APPLIED'
|
||
*/
|
||
@Update("UPDATE dispensing_detail SET submit_status = #{submitStatus} " +
|
||
"WHERE order_id = #{orderId}")
|
||
int updateDispensingDetailStatus(@Param("orderId") Long orderId,
|
||
@Param("submitStatus") String submitStatus);
|
||
}
|