fix: aggregate mixed cartons by fulfillment type
This commit is contained in:
@@ -67,7 +67,7 @@ public class UnifiedOrderQueryService {
|
|||||||
List<Long> orderIds = selected.stream().map(OrderEntity::getId).toList();
|
List<Long> orderIds = selected.stream().map(OrderEntity::getId).toList();
|
||||||
Map<Long, FirstlegUnifiedOrderClient.Summary> inboundByOrder = summaries(null, orderIds);
|
Map<Long, FirstlegUnifiedOrderClient.Summary> inboundByOrder = summaries(null, orderIds);
|
||||||
Map<Long, String> latestNotes = latestNotes(null, orderIds);
|
Map<Long, String> latestNotes = latestNotes(null, orderIds);
|
||||||
Map<Long, CargoSummary> cargoSummaries = cargoSummaries(null, orderIds);
|
Map<Long, CargoSummary> cargoSummaries = cargoSummaries(null, selected);
|
||||||
Map<Long, Integer> childCounts = childCounts(selected);
|
Map<Long, Integer> childCounts = childCounts(selected);
|
||||||
return selected.stream().map(order -> row(order, inboundByOrder.get(order.getId()),
|
return selected.stream().map(order -> row(order, inboundByOrder.get(order.getId()),
|
||||||
latestNotes.get(order.getId()), childCounts, cargoSummaries.get(order.getId()), null)).toList();
|
latestNotes.get(order.getId()), childCounts, cargoSummaries.get(order.getId()), null)).toList();
|
||||||
@@ -90,8 +90,7 @@ public class UnifiedOrderQueryService {
|
|||||||
? optionalSummaries(tenantId, sourceOrderIds)
|
? optionalSummaries(tenantId, sourceOrderIds)
|
||||||
: summaries(tenantId, sourceOrderIds);
|
: summaries(tenantId, sourceOrderIds);
|
||||||
Map<Long, String> latestNotes = latestNotes(tenantId, source.records().stream().map(OrderEntity::getId).toList());
|
Map<Long, String> latestNotes = latestNotes(tenantId, source.records().stream().map(OrderEntity::getId).toList());
|
||||||
Map<Long, CargoSummary> cargoSummaries = cargoSummaries(tenantId,
|
Map<Long, CargoSummary> cargoSummaries = cargoSummaries(tenantId, source.records());
|
||||||
source.records().stream().map(OrderEntity::getId).toList());
|
|
||||||
Map<Long, Integer> childCounts = childCounts(source.records());
|
Map<Long, Integer> childCounts = childCounts(source.records());
|
||||||
Map<Long, UnifiedOrderResponse.CoLoadGroupSummary> coLoadByOrder = coLoadGroups(
|
Map<Long, UnifiedOrderResponse.CoLoadGroupSummary> coLoadByOrder = coLoadGroups(
|
||||||
source.records().stream().map(OrderEntity::getId).toList(), includeCoLoadGroups);
|
source.records().stream().map(OrderEntity::getId).toList(), includeCoLoadGroups);
|
||||||
@@ -168,7 +167,7 @@ public class UnifiedOrderQueryService {
|
|||||||
Map<Long, OrderEntity> orderById = orders.findByIds(tenantId, orderIds).stream()
|
Map<Long, OrderEntity> orderById = orders.findByIds(tenantId, orderIds).stream()
|
||||||
.collect(Collectors.toMap(OrderEntity::getId, Function.identity(), (left, right) -> left));
|
.collect(Collectors.toMap(OrderEntity::getId, Function.identity(), (left, right) -> left));
|
||||||
Map<Long, String> latestNotes = latestNotes(tenantId, orderIds);
|
Map<Long, String> latestNotes = latestNotes(tenantId, orderIds);
|
||||||
Map<Long, CargoSummary> cargoSummaries = cargoSummaries(tenantId, orderIds);
|
Map<Long, CargoSummary> cargoSummaries = cargoSummaries(tenantId, List.copyOf(orderById.values()));
|
||||||
Map<Long, Integer> childCounts = childCounts(List.copyOf(orderById.values()));
|
Map<Long, Integer> childCounts = childCounts(List.copyOf(orderById.values()));
|
||||||
Map<Long, UnifiedOrderResponse.CoLoadGroupSummary> coLoadByOrder = coLoadGroups(
|
Map<Long, UnifiedOrderResponse.CoLoadGroupSummary> coLoadByOrder = coLoadGroups(
|
||||||
orderIds, includeCoLoadGroups);
|
orderIds, includeCoLoadGroups);
|
||||||
@@ -239,11 +238,15 @@ public class UnifiedOrderQueryService {
|
|||||||
OrderInternalNoteEntity::getOrderId, OrderInternalNoteEntity::getContent, (latest, ignored) -> latest));
|
OrderInternalNoteEntity::getOrderId, OrderInternalNoteEntity::getContent, (latest, ignored) -> latest));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<Long, CargoSummary> cargoSummaries(Long tenantId, List<Long> orderIds) {
|
private Map<Long, CargoSummary> cargoSummaries(Long tenantId, List<OrderEntity> pageOrders) {
|
||||||
if (orderIds.isEmpty()) return Map.of();
|
if (pageOrders.isEmpty()) return Map.of();
|
||||||
|
List<Long> orderIds = pageOrders.stream().map(OrderEntity::getId).toList();
|
||||||
|
Map<Long, String> fulfillmentTypes = new HashMap<>();
|
||||||
|
pageOrders.forEach(order -> fulfillmentTypes.put(order.getId(), order.getFulfillmentType()));
|
||||||
return orders.findCargoByOrderIds(tenantId, orderIds).stream()
|
return orders.findCargoByOrderIds(tenantId, orderIds).stream()
|
||||||
.collect(Collectors.groupingBy(OrderCargoEntity::getOrderId,
|
.collect(Collectors.groupingBy(OrderCargoEntity::getOrderId)).entrySet().stream()
|
||||||
Collectors.collectingAndThen(Collectors.toList(), CargoSummary::from)));
|
.collect(Collectors.toMap(Map.Entry::getKey,
|
||||||
|
entry -> CargoSummary.from(entry.getValue(), fulfillmentTypes.get(entry.getKey()))));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<Long, Integer> childCounts(List<OrderEntity> pageOrders) {
|
private Map<Long, Integer> childCounts(List<OrderEntity> pageOrders) {
|
||||||
|
|||||||
Reference in New Issue
Block a user