Fix Bug #489: 护士校对界面重复待校对记录 - SQL JOIN 乘法修复

根因: AdviceProcessAppMapper.xml 中 LEFT JOIN med_medication_dispense
直接关联时,一条药品医嘱若有多条发药记录会产生多行结果(SQL 笛卡尔积),
导致护士校对界面显示重复的待校对记录。

修复: 将直接 JOIN 改为 ROW_NUMBER() 子查询,每个 med_req_id 只取最新
一条发药记录的状态,避免行倍增。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
关羽
2026-05-11 15:29:50 +08:00
parent f223192ec5
commit dafa5961c4

View File

@@ -280,9 +280,17 @@
aa.balance_amount
) AS personal_account
ON personal_account.encounter_id = ae.id
LEFT JOIN med_medication_dispense mmd
LEFT JOIN (
SELECT med_req_id, status_enum
FROM (
SELECT med_req_id, status_enum,
ROW_NUMBER() OVER (PARTITION BY med_req_id ORDER BY id DESC) AS rn
FROM med_medication_dispense
WHERE delete_flag = '0'
) t
WHERE rn = 1
) mmd
ON mmd.med_req_id = T1.id
AND mmd.delete_flag = '0'
WHERE T1.delete_flag = '0'
AND T1.refund_medicine_id IS NULL
AND T1.generate_source_enum = #{doctorPrescription}