diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/utils/AdviceUtils.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/utils/AdviceUtils.java index f8baa916..aec86d15 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/utils/AdviceUtils.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/utils/AdviceUtils.java @@ -98,11 +98,14 @@ public class AdviceUtils { for (AdviceInventoryDto inventoryDto : adviceInventory) { // 匹配条件:adviceDefinitionId, adviceTableName, locationId, lotNumber 同时相等 // 如果选择了具体的批次号,校验库存时需要加上批次号的匹配条件 + // 🔧 Bug #177 修复:添加容错处理,如果 adviceTableName 为空则跳过该项匹配 boolean lotNumberMatch = StringUtils.isEmpty(saveDto.getLotNumber()) || saveDto.getLotNumber().equals(inventoryDto.getLotNumber()); + boolean tableNameMatch = StringUtils.isEmpty(saveDto.getAdviceTableName()) + || inventoryDto.getItemTable().equals(saveDto.getAdviceTableName()); // if (saveDto.) if (inventoryDto.getItemId().equals(saveDto.getAdviceDefinitionId()) - && inventoryDto.getItemTable().equals(saveDto.getAdviceTableName()) + && tableNameMatch && inventoryDto.getLocationId().equals(saveDto.getLocationId()) && lotNumberMatch) { matched = true; // 检查库存是否充足 diff --git a/openhis-ui-vue3/src/views/doctorstation/components/adviceBaseList.vue b/openhis-ui-vue3/src/views/doctorstation/components/adviceBaseList.vue index f958a514..456faaf7 100644 --- a/openhis-ui-vue3/src/views/doctorstation/components/adviceBaseList.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/adviceBaseList.vue @@ -359,6 +359,7 @@ async function getList() { priceList: item.price ? [{ price: item.price }] : (item.retailPrice ? [{ price: item.retailPrice }] : []), inventoryList: [], adviceDefinitionId: item.id, + adviceTableName: 'adm_device_definition', // 🔧 Bug #177 修复:添加耗材表名,用于后端库存匹配 chargeItemDefinitionId: item.id, positionId: item.locationId, positionName: item.locationId_dictText || '',