拣货单管理物料种类显示修改

This commit is contained in:
秦鸿展
2026-02-09 10:54:33 +08:00
parent 598a8b89e3
commit af540c67f9
@@ -69,7 +69,52 @@ public class PickingOrderApplicationService {
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
pickingOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
}
return pickingOrderDomainService.queryList(pickingOrderDO);
List<PickingOrderPO> pickingOrderPOList = pickingOrderDomainService.queryList(pickingOrderDO);
// 重新计算物料种类数:按料号去重,一个料号算一种物料
if (!CollectionUtils.isEmpty(pickingOrderPOList)) {
// 收集所有拣货单号
List<String> pickingOrderNumbers = pickingOrderPOList.stream()
.map(PickingOrderPO::getPickingOrderNumber)
.filter(Objects::nonNull)
.filter(number -> !number.trim().isEmpty())
.collect(Collectors.toList());
if (!pickingOrderNumbers.isEmpty()) {
// 批量查询所有拣货单的物料明细(循环查询每个拣货单的物料明细)
Map<String, List<PickingMaterialDetailPO>> materialDetailsByOrderNumber = new HashMap<>();
for (String pickingOrderNumber : pickingOrderNumbers) {
PickingMaterialDetailDO pickingMaterialDetailDO = new PickingMaterialDetailDO();
pickingMaterialDetailDO.setPickingOrderNumber(pickingOrderNumber);
List<PickingMaterialDetailPO> 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<PickingMaterialDetailPO> 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;
}