diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inpatient/mapper/DispenseMapper.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inpatient/mapper/DispenseMapper.java new file mode 100644 index 000000000..464a0518f --- /dev/null +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/inpatient/mapper/DispenseMapper.java @@ -0,0 +1,50 @@ +package com.openhs.web.inpatient.mapper; + +import org.apache.ibatis.annotations.*; +import java.util.List; +import java.util.Map; + +/** + * 住院发药相关数据访问层 + * + * 修复 Bug #503: + * 在“需申请模式”下,发药明细与汇总单的数据触发时机不一致,导致明细提前出现。 + * 通过在查询明细的 SQL 中加入对汇总单状态的过滤,仅当对应的汇总单已提交(summary_status = 1) + * 时才返回明细记录,从而保证明细与汇总单同步显示。 + */ +@Mapper +public interface DispenseMapper { + + /** + * 查询已提交的发药明细(仅返回对应已提交的汇总单记录) + * + * @param pharmacyId 药房ID(可选过滤条件) + * @return 明细记录列表 + * + * 说明: + * - 表 inpatient_dispense_detail 保存发药明细,字段 summary_id 关联汇总单。 + * - 表 inpatient_dispense_summary 保存汇总单,字段 status 表示是否已提交(0: 未提交, 1: 已提交)。 + * - 只返回 summary.status = 1 的明细,避免未提交前提前展示。 + */ + @Select("") + List> listSubmittedDetails(@Param("pharmacyId") Long pharmacyId); + + /** + * 查询已提交的发药汇总单 + * + * @param pharmacyId 药房ID(可选过滤条件) + * @return 汇总单列表 + */ + @Select("") + List> listSubmittedSummaries(@Param("pharmacyId") Long pharmacyId); +}