From 3cefbecd698c1b21d1aead5b0b8c92c4f3a91c54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Mon, 27 Apr 2026 13:39:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E6=AC=A1=E8=A7=84=E5=88=99=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/util/ReceiptBatchDetailFilter.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 mhd_wms/src/main/java/com/mhd/wms/util/ReceiptBatchDetailFilter.java diff --git a/mhd_wms/src/main/java/com/mhd/wms/util/ReceiptBatchDetailFilter.java b/mhd_wms/src/main/java/com/mhd/wms/util/ReceiptBatchDetailFilter.java new file mode 100644 index 000000000..d020b9f40 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/util/ReceiptBatchDetailFilter.java @@ -0,0 +1,43 @@ +package com.mhd.wms.util; + +import com.mhd.system.api.domain.BatchDetailFeignPO; +import com.mhd.wms.domain.materialGoodsRule.repository.facade.IMaterialGoodsRuleService; +import com.mhd.wms.domain.materialGoodsRule.repository.po.MaterialGoodsRulePO; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 收货单明细「批次更多属性」与物料商品规则对齐:只展示 material_goods_rule 中绑定的 batchId 下的批次属性,避免多批次模板并集导致几十条空壳。 + */ +public final class ReceiptBatchDetailFilter { + + private ReceiptBatchDetailFilter() { + } + + /** + * 按物料商品规则中的 batchId 过滤 system 返回的批次属性行。 + * 无商品规则或规则未绑定 batchId 时返回空列表(不展示跨批次模板的并集)。 + */ + public static List filterByMaterialGoodsRule( + Long materialBaseInfoId, + List fromSystem, + IMaterialGoodsRuleService materialGoodsRuleService) { + if (materialBaseInfoId == null) { + return fromSystem == null ? new ArrayList<>() : fromSystem; + } + if (CollectionUtils.isEmpty(fromSystem)) { + return new ArrayList<>(); + } + MaterialGoodsRulePO rule = materialGoodsRuleService.getInfoByMaterialBaseInfoIds(materialBaseInfoId); + if (rule == null || rule.getBatchId() == null) { + return new ArrayList<>(); + } + final Long targetBatchId = rule.getBatchId(); + return fromSystem.stream() + .filter(b -> b.getBatchId() != null && targetBatchId.equals(b.getBatchId())) + .collect(Collectors.toList()); + } +}