diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java index 66ad09c45..5c9ab5d49 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java @@ -228,8 +228,10 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp // 医嘱定义ID集合 List adviceDefinitionIdList = adviceBaseDtoList.stream().map(AdviceBaseDto::getAdviceDefinitionId) .collect(Collectors.toList()); - // 费用定价主表ID集合 - List chargeItemDefinitionIdList = adviceBaseDtoList.stream().map(AdviceBaseDto::getChargeItemDefinitionId) + // 费用定价主表ID集合(过滤null值,手术项目无定价定义) + List chargeItemDefinitionIdList = adviceBaseDtoList.stream() + .map(AdviceBaseDto::getChargeItemDefinitionId) + .filter(Objects::nonNull) .collect(Collectors.toList()); // 判断是否包含药品或耗材类型(只有这些类型才需要库存相关查询) @@ -275,9 +277,9 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp medLocationConfig = Collections.emptyList(); allowedLocByCategory = Collections.emptyMap(); } - // 费用定价子表信息 - 使用分批处理避免大量参数问题 + // 费用定价子表信息 - 仅药品/耗材需要批次定价查询,手术/诊疗无库存概念不需要 List childCharge = new ArrayList<>(); - if (chargeItemDefinitionIdList != null && !chargeItemDefinitionIdList.isEmpty()) { + if (hasMedOrDevice && chargeItemDefinitionIdList != null && !chargeItemDefinitionIdList.isEmpty()) { // 分批处理,每批最多1000个ID,增加批次大小以减少查询次数 int batchSize = 1000; for (int i = 0; i < chargeItemDefinitionIdList.size(); i += batchSize) {