From 071f807b87cd0050db2443dde17d12a1eb8ee5d5 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Fri, 11 Sep 2026 15:45:05 +0800 Subject: [PATCH] fix: aggregate mixed cartons by fulfillment type --- .../service/UnifiedOrderQueryService.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/order/src/main/java/com/baiyue/order/service/UnifiedOrderQueryService.java b/order/src/main/java/com/baiyue/order/service/UnifiedOrderQueryService.java index 779068add..e40838a64 100644 --- a/order/src/main/java/com/baiyue/order/service/UnifiedOrderQueryService.java +++ b/order/src/main/java/com/baiyue/order/service/UnifiedOrderQueryService.java @@ -67,7 +67,7 @@ public class UnifiedOrderQueryService { List orderIds = selected.stream().map(OrderEntity::getId).toList(); Map inboundByOrder = summaries(null, orderIds); Map latestNotes = latestNotes(null, orderIds); - Map cargoSummaries = cargoSummaries(null, orderIds); + Map cargoSummaries = cargoSummaries(null, selected); Map childCounts = childCounts(selected); return selected.stream().map(order -> row(order, inboundByOrder.get(order.getId()), latestNotes.get(order.getId()), childCounts, cargoSummaries.get(order.getId()), null)).toList(); @@ -90,8 +90,7 @@ public class UnifiedOrderQueryService { ? optionalSummaries(tenantId, sourceOrderIds) : summaries(tenantId, sourceOrderIds); Map latestNotes = latestNotes(tenantId, source.records().stream().map(OrderEntity::getId).toList()); - Map cargoSummaries = cargoSummaries(tenantId, - source.records().stream().map(OrderEntity::getId).toList()); + Map cargoSummaries = cargoSummaries(tenantId, source.records()); Map childCounts = childCounts(source.records()); Map coLoadByOrder = coLoadGroups( source.records().stream().map(OrderEntity::getId).toList(), includeCoLoadGroups); @@ -168,7 +167,7 @@ public class UnifiedOrderQueryService { Map orderById = orders.findByIds(tenantId, orderIds).stream() .collect(Collectors.toMap(OrderEntity::getId, Function.identity(), (left, right) -> left)); Map latestNotes = latestNotes(tenantId, orderIds); - Map cargoSummaries = cargoSummaries(tenantId, orderIds); + Map cargoSummaries = cargoSummaries(tenantId, List.copyOf(orderById.values())); Map childCounts = childCounts(List.copyOf(orderById.values())); Map coLoadByOrder = coLoadGroups( orderIds, includeCoLoadGroups); @@ -239,11 +238,15 @@ public class UnifiedOrderQueryService { OrderInternalNoteEntity::getOrderId, OrderInternalNoteEntity::getContent, (latest, ignored) -> latest)); } - private Map cargoSummaries(Long tenantId, List orderIds) { - if (orderIds.isEmpty()) return Map.of(); + private Map cargoSummaries(Long tenantId, List pageOrders) { + if (pageOrders.isEmpty()) return Map.of(); + List orderIds = pageOrders.stream().map(OrderEntity::getId).toList(); + Map fulfillmentTypes = new HashMap<>(); + pageOrders.forEach(order -> fulfillmentTypes.put(order.getId(), order.getFulfillmentType())); return orders.findCargoByOrderIds(tenantId, orderIds).stream() - .collect(Collectors.groupingBy(OrderCargoEntity::getOrderId, - Collectors.collectingAndThen(Collectors.toList(), CargoSummary::from))); + .collect(Collectors.groupingBy(OrderCargoEntity::getOrderId)).entrySet().stream() + .collect(Collectors.toMap(Map.Entry::getKey, + entry -> CargoSummary.from(entry.getValue(), fulfillmentTypes.get(entry.getKey())))); } private Map childCounts(List pageOrders) {