拣货单管理物料种类显示修改
This commit is contained in:
+46
-1
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user