From 96c1927f8d8f39c0679f01c0d7c1652533857143 Mon Sep 17 00:00:00 2001 From: chenqi Date: Thu, 12 Mar 2026 15:44:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20Bug=20#177=20=E9=97=A8=E8=AF=8A=E5=8C=BB?= =?UTF-8?q?=E7=94=9F=E7=AB=99=E8=80=97=E6=9D=90=E5=8C=BB=E5=98=B1=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E6=8F=90=E7=A4=BA=E6=9C=AA=E5=8C=B9=E9=85=8D=E5=BA=93?= =?UTF-8?q?=E5=AD=98=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题原因: 1. 前端查询耗材列表时未设置 adviceTableName 字段 2. 后端库存校验时严格要求 adviceTableName 匹配,导致耗材无法匹配库存 修复方案: 1. 前端(adviceBaseList.vue): 添加 adviceTableName = 'adm_device_definition' 字段 2. 后端(AdviceUtils.java): 添加容错处理,当 adviceTableName 为空时跳过该项匹配 双保险策略确保问题彻底解决。 --- .../com/openhis/web/doctorstation/utils/AdviceUtils.java | 5 ++++- .../src/views/doctorstation/components/adviceBaseList.vue | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) 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 || '',