fix(doctorstation): 修复耗材无库存时价格设置问题

- 前端组件中确保覆盖后端可能冲突的字段并强制设置耗材类型
- 后端服务中修复库存为空时无法获取价格的问题,直接从定价主表获取统一零售价
- 数据库查询中使用COALESCE函数优先从多个来源获取零售价,提高价格获取准确性
- 优化价格获取逻辑,支持从adm_charge_item_definition和adm_charge_item_def_detail表中按优先级获取价格
- 添加按批次售价的价格匹配机制,确保不同定价策略的正确应用
This commit is contained in:
2026-03-23 19:31:04 +08:00
parent bedad38ca3
commit cc51d0b345
3 changed files with 74 additions and 20 deletions

View File

@@ -81,7 +81,20 @@
T1.chrgitm_lv,--医保等级
T2.type_code as item_type_code,
T2.yb_type,
T2.price as retail_price,--零售价,
-- 🔧 Bug #220 修复使用COALESCE优先从多个来源获取零售价
-- 优先顺序1. adm_charge_item_definition.price 2. adm_charge_item_def_detail.amount (condition_code='3')
COALESCE(
T2.price,
(SELECT T4.amount
FROM adm_charge_item_definition T5
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T5.id
WHERE T4.condition_code = '3'
AND T5.instance_id = T1.id
AND T5.instance_table = 'adm_device_definition'
AND T4.delete_flag = '0'
ORDER BY T4.create_time DESC
LIMIT 1)
) as retail_price,--零售价,
( SELECT T4.amount
FROM adm_charge_item_definition T5
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T5.id
@@ -152,7 +165,19 @@
T1.item_max_quantity,
T2.type_code as item_type_code,
T2.yb_type,
T2.price as retail_price,--零售价,
-- 🔧 Bug #220 修复使用COALESCE优先从多个来源获取零售价
COALESCE(
T2.price,
(SELECT T4.amount
FROM adm_charge_item_definition T5
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T5.id
WHERE T4.condition_code = '3'
AND T5.instance_id = T1.id
AND T5.instance_table = 'adm_device_definition'
AND T4.delete_flag = '0'
ORDER BY T4.create_time DESC
LIMIT 1)
) as retail_price,--零售价,
( SELECT T4.amount
FROM adm_charge_item_definition T5
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T5.id