拣货单管理物料种类显示修改
This commit is contained in:
+46
-1
@@ -69,7 +69,52 @@ public class PickingOrderApplicationService {
|
|||||||
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
|
AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
|
||||||
pickingOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
|
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