1 Commits

Author SHA1 Message Date
关羽
74ef47fcc0 Fix Bug #503: 【住院发退药】发药明细与发药汇总单数据触发时机不一致,存在业务脱节风险
根因分析:
- 发药明细单查询(selectEncounterInfoListPage)直接从 med_medication_dispense 表查询,
  护士执行医嘱后立即显示记录
- 发药汇总单查询从 wor_supply_request 表查询,只有护士执行"汇总发药申请"后才创建记录
- 两者数据源不同导致明细单先显示、汇总单后显示的业务脱节问题

修复方案:
1. 在明细单查询中增加 EXISTS 子查询,仅显示已通过汇总发药申请流程创建的就诊记录
   (通过 med_medication_dispense.summary_no 关联 wor_supply_request.bus_no)
2. 将已汇总状态(status_enum=8, SUMMARIZED)纳入明细单的状态过滤条件,确保汇总申请提交后
   明细单能正常显示对应的就诊记录

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-10 11:05:03 +08:00

View File

@@ -96,14 +96,22 @@
INNER JOIN med_medication_request AS T5
ON T4.med_req_id = T5.id
AND T5.delete_flag = '0'
WHERE <if test="statusEnum == null">
T4.status_enum IN (#{inProgress},#{completed},#{preparation},#{prepared})
WHERE EXISTS (
SELECT 1 FROM wor_supply_request wsr
WHERE wsr.type_enum = 3
AND wsr.delete_flag = '0'
AND wsr.bus_no = T4.summary_no
AND T4.summary_no IS NOT NULL
AND T4.summary_no != ''
)
AND <if test="statusEnum == null">
T4.status_enum IN (#{inProgress},#{completed},#{preparation},#{prepared},8)
</if>
<if test="statusEnum == 3">
T4.status_enum IN (#{inProgress},#{preparation},#{prepared})
T4.status_enum IN (#{inProgress},#{preparation},#{prepared},8)
</if>
<if test="statusEnum == 4">
T4.status_enum = #{completed}
T4.status_enum IN (#{completed},8)
</if>
) AS ii
${ew.customSqlSegment}