Fix Bug #503: fallback修复

This commit is contained in:
2026-05-27 00:26:27 +08:00
parent e2dc289128
commit e4e4971ef9
2 changed files with 98 additions and 38 deletions

View File

@@ -0,0 +1,61 @@
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);
}