Compare commits
2 Commits
c15c091718
...
cc51d0b345
| Author | SHA1 | Date | |
|---|---|---|---|
| cc51d0b345 | |||
| bedad38ca3 |
@@ -389,6 +389,18 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
||||
unitCode = baseDto.getUnitCode();
|
||||
chargeItemDefinitionId = baseDto.getChargeItemDefinitionId();
|
||||
List<AdvicePriceDto> priceDtoList = new ArrayList<>();
|
||||
|
||||
// 🔧 Bug #220 修复:耗材无库存时也需要设置价格
|
||||
if (inventoryList.isEmpty()) {
|
||||
// 库存为空时,直接从定价主表获取统一零售价
|
||||
String finalUnitCode = unitCode; // 创建final变量用于lambda
|
||||
List<AdvicePriceDto> mainPrice = mainCharge.stream()
|
||||
.filter(e -> baseDto.getChargeItemDefinitionId() != null && e.getDefinitionId() != null
|
||||
&& baseDto.getChargeItemDefinitionId().equals(e.getDefinitionId()))
|
||||
.peek(e -> e.setUnitCode(finalUnitCode)) // 设置 unitCode
|
||||
.collect(Collectors.toList());
|
||||
priceDtoList.addAll(mainPrice);
|
||||
} else {
|
||||
// 库存信息里取 命中条件 去匹配价格
|
||||
for (AdviceInventoryDto adviceInventoryDto : inventoryList) {
|
||||
Long finalChargeItemDefinitionId = chargeItemDefinitionId;
|
||||
@@ -413,6 +425,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
||||
priceDtoList.addAll(mainPrice);
|
||||
}
|
||||
}
|
||||
}
|
||||
// 价格信息
|
||||
baseDto.setPriceList(priceDtoList);
|
||||
} else if (CommonConstants.TableName.WOR_ACTIVITY_DEFINITION.equals(tableName)) { // 诊疗
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -293,7 +293,23 @@ function fetchFromApi(searchKey) {
|
||||
categoryCode: item.categoryCode || '',
|
||||
deviceId: item.id,
|
||||
deviceName: item.name,
|
||||
// 🔧 Bug Fix: ...item 展开放在前面,然后用前端字段覆盖
|
||||
...item,
|
||||
// 确保前端覆盖后端可能冲突的字段
|
||||
adviceName: item.name || item.busNo,
|
||||
adviceType: 4, // 强制设置为前端耗材类型
|
||||
unitCode: item.unitCode || '',
|
||||
unitCode_dictText: item.unitCode_dictText || '',
|
||||
minUnitCode: item.minUnitCode || item.unitCode || '',
|
||||
minUnitCode_dictText: item.minUnitCode_dictText || item.unitCode_dictText || '',
|
||||
volume: item.size || item.totalVolume || '',
|
||||
partPercent: item.partPercent || 1,
|
||||
// 价格字段优先使用retailPrice
|
||||
priceList: (item.retailPrice !== undefined && item.retailPrice !== null)
|
||||
? [{ price: item.retailPrice }]
|
||||
: ((item.price !== undefined && item.price !== null)
|
||||
? [{ price: item.price }]
|
||||
: []),
|
||||
};
|
||||
});
|
||||
nextTick(() => {
|
||||
@@ -327,11 +343,24 @@ function fetchFromApi(searchKey) {
|
||||
}
|
||||
|
||||
// 从priceList列表中获取价格 - 与V1.3一致
|
||||
// 🔧 Bug #220 修复:增强价格获取逻辑,支持耗材直接价格字段
|
||||
function getPriceFromInventory(row) {
|
||||
// 优先从priceList获取(药品/诊疗)
|
||||
if (row.priceList && row.priceList.length > 0) {
|
||||
const price = row.priceList[0].price || 0;
|
||||
return Number(price).toFixed(2) + ' 元';
|
||||
}
|
||||
|
||||
// 耗材类型:直接从retailPrice或price字段获取
|
||||
if (row.adviceType === 4) {
|
||||
const price = row.retailPrice !== undefined && row.retailPrice !== null
|
||||
? row.retailPrice
|
||||
: (row.price !== undefined && row.price !== null ? row.price : null);
|
||||
if (price !== null && price !== '') {
|
||||
return Number(price).toFixed(2) + ' 元';
|
||||
}
|
||||
}
|
||||
|
||||
return '-';
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user