diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/batchDetail/BatchDetailApplicationService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/batchDetail/BatchDetailApplicationService.java index 9ca5b92f5..4bcf0b956 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/batchDetail/BatchDetailApplicationService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/batchDetail/BatchDetailApplicationService.java @@ -106,7 +106,8 @@ public class BatchDetailApplicationService { throw new ServiceException("获取物料规则信息失败"); } MaterialGoodsRuleFeign materialGoodsRuleFeign = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), MaterialGoodsRuleFeign.class); - if (ObjectUtil.isNull(materialGoodsRuleFeign)){ + // 无商品规则或未绑定批次模板时,不返回任何批次属性(避免 batchId 空导致查全表) + if (ObjectUtil.isNull(materialGoodsRuleFeign) || materialGoodsRuleFeign.getBatchId() == null) { return new ArrayList<>(); } return getBatchDetailListByBatchId(materialGoodsRuleFeign.getBatchId()); diff --git a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/batchDetail/service/BatchDetailDomainService.java b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/batchDetail/service/BatchDetailDomainService.java index 17fec80d7..f35e219fe 100644 --- a/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/batchDetail/service/BatchDetailDomainService.java +++ b/mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/batchDetail/service/BatchDetailDomainService.java @@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** * 批次管理详情 @@ -66,6 +67,10 @@ public class BatchDetailDomainService { * 获取批次管理详情详细信息 */ public List getBatchDetailListByBatchId(Long batchId) { + // batchId 为空时不能查列表:XML 中 batchId 为 null 不拼条件,会返回全部批次属性 + if (batchId == null) { + return new ArrayList<>(); + } BatchDetailDO batchDetailDO = new BatchDetailDO(); batchDetailDO.setBatchId(batchId); return batchDetailService.queryList(batchDetailDO); diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java index fdf823e1d..6fa84ad4d 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java @@ -24,9 +24,11 @@ import com.mhd.wms.domain.pickingMaterialDetail.service.PickingMaterialDetailDom import com.mhd.wms.domain.pickingOrder.repository.po.PickingOrderPO; import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO; import com.mhd.wms.domain.pickingOrder.service.PickingOrderDomainService; +import com.mhd.wms.domain.materialGoodsRule.repository.facade.IMaterialGoodsRuleService; import com.mhd.wms.domain.outMaterialDetail.repository.facade.IOutMaterialDetailService; import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO; +import com.mhd.wms.util.ReceiptBatchDetailFilter; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -58,6 +60,8 @@ public class PickingOrderApplicationService { @Autowired private SystemServiceFeign systemServiceFeign; @Autowired + private IMaterialGoodsRuleService materialGoodsRuleService; + @Autowired private IOutMaterialDetailService outMaterialDetailService; @@ -212,11 +216,19 @@ public class PickingOrderApplicationService { if (ajaxResult != null && "200".equals(String.valueOf(ajaxResult.get("code")))) { List batchDetailFeignPOList = JSON.parseArray( JSONObject.toJSONString(ajaxResult.get("data")), BatchDetailFeignPO.class); - if (!CollectionUtils.isEmpty(batchDetailFeignPOList)) { - // 过滤isDisplay=1的属性 - List filteredList = batchDetailFeignPOList.stream() - .filter(batchDetail -> batchDetail.getIsDisplay() != null && batchDetail.getIsDisplay() == 1) - .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(batchDetailFeignPOList)) { + continue; + } + // 物料未在商品规则中绑定批次模板时不返回批次属性(与收货单组装逻辑一致) + List alignedToRule = ReceiptBatchDetailFilter.filterByMaterialGoodsRule( + materialBaseInfoId, batchDetailFeignPOList, materialGoodsRuleService); + if (CollectionUtils.isEmpty(alignedToRule)) { + continue; + } + List filteredList = alignedToRule.stream() + .filter(batchDetail -> batchDetail.getIsDisplay() != null && batchDetail.getIsDisplay() == 1) + .collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(filteredList)) { batchDetailMap.put(materialBaseInfoId, filteredList); } }