From af540c67f91a8be680e5d713a2b48be41acfa933 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, 9 Feb 2026 10:54:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=A3=E8=B4=A7=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=89=A9=E6=96=99=E7=A7=8D=E7=B1=BB=E6=98=BE=E7=A4=BA=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PickingOrderApplicationService.java | 47 ++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) 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 22a2338ea..c6049a450 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 @@ -69,7 +69,52 @@ public class PickingOrderApplicationService { AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); pickingOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); } - return pickingOrderDomainService.queryList(pickingOrderDO); + List pickingOrderPOList = pickingOrderDomainService.queryList(pickingOrderDO); + + // 重新计算物料种类数:按料号去重,一个料号算一种物料 + if (!CollectionUtils.isEmpty(pickingOrderPOList)) { + // 收集所有拣货单号 + List pickingOrderNumbers = pickingOrderPOList.stream() + .map(PickingOrderPO::getPickingOrderNumber) + .filter(Objects::nonNull) + .filter(number -> !number.trim().isEmpty()) + .collect(Collectors.toList()); + + if (!pickingOrderNumbers.isEmpty()) { + // 批量查询所有拣货单的物料明细(循环查询每个拣货单的物料明细) + Map> materialDetailsByOrderNumber = new HashMap<>(); + for (String pickingOrderNumber : pickingOrderNumbers) { + PickingMaterialDetailDO pickingMaterialDetailDO = new PickingMaterialDetailDO(); + pickingMaterialDetailDO.setPickingOrderNumber(pickingOrderNumber); + List materialDetails = pickingMaterialDetailDomainService.queryList(pickingMaterialDetailDO); + if (!CollectionUtils.isEmpty(materialDetails)) { + materialDetailsByOrderNumber.put(pickingOrderNumber, materialDetails); + } + } + + // 为每个拣货单计算物料种类数(按料号去重) + for (PickingOrderPO pickingOrderPO : pickingOrderPOList) { + String pickingOrderNumber = pickingOrderPO.getPickingOrderNumber(); + if (pickingOrderNumber != null && materialDetailsByOrderNumber.containsKey(pickingOrderNumber)) { + List materialDetails = materialDetailsByOrderNumber.get(pickingOrderNumber); + // 按料号去重,计算物料种类数 + long materialQuantity = materialDetails.stream() + .map(PickingMaterialDetailPO::getMaterialCode) + .filter(Objects::nonNull) + .filter(code -> !code.trim().isEmpty()) + .distinct() + .count(); + pickingOrderPO.setMaterialQuantity((int) materialQuantity); + log.debug("重新计算物料种类数 - 拣货单号: {}, 物料种类数: {}", pickingOrderNumber, materialQuantity); + } else { + // 如果没有物料明细,物料种类数为0 + pickingOrderPO.setMaterialQuantity(0); + } + } + } + } + + return pickingOrderPOList; }