From 74ef47fcc04b19a2abcec7fd061df234e34f406d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=B3=E7=BE=BD?= <关羽@gentronhealth.com> Date: Sun, 10 May 2026 11:05:03 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#503:=20=E3=80=90=E4=BD=8F=E9=99=A2?= =?UTF-8?q?=E5=8F=91=E9=80=80=E8=8D=AF=E3=80=91=E5=8F=91=E8=8D=AF=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E4=B8=8E=E5=8F=91=E8=8D=AF=E6=B1=87=E6=80=BB=E5=8D=95?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=A7=A6=E5=8F=91=E6=97=B6=E6=9C=BA=E4=B8=8D?= =?UTF-8?q?=E4=B8=80=E8=87=B4=EF=BC=8C=E5=AD=98=E5=9C=A8=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E8=84=B1=E8=8A=82=E9=A3=8E=E9=99=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因分析: - 发药明细单查询(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 --- .../WesternMedicineDispenseMapper.xml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/openhis-server-new/openhis-application/src/main/resources/mapper/pharmacymanage/WesternMedicineDispenseMapper.xml b/openhis-server-new/openhis-application/src/main/resources/mapper/pharmacymanage/WesternMedicineDispenseMapper.xml index f61bb8f2..3edeaebd 100755 --- a/openhis-server-new/openhis-application/src/main/resources/mapper/pharmacymanage/WesternMedicineDispenseMapper.xml +++ b/openhis-server-new/openhis-application/src/main/resources/mapper/pharmacymanage/WesternMedicineDispenseMapper.xml @@ -96,14 +96,22 @@ INNER JOIN med_medication_request AS T5 ON T4.med_req_id = T5.id AND T5.delete_flag = '0' - WHERE - 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 + T4.status_enum IN (#{inProgress},#{completed},#{preparation},#{prepared},8) - T4.status_enum IN (#{inProgress},#{preparation},#{prepared}) + T4.status_enum IN (#{inProgress},#{preparation},#{prepared},8) - T4.status_enum = #{completed} + T4.status_enum IN (#{completed},8) ) AS ii ${ew.customSqlSegment}