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:
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user