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 d62472c54..bacfda9e7 100644 --- a/order/src/main/java/com/baiyue/order/service/UnifiedOrderQueryService.java +++ b/order/src/main/java/com/baiyue/order/service/UnifiedOrderQueryService.java @@ -110,7 +110,7 @@ public class UnifiedOrderQueryService { boolean includeCoLoadGroups) { OrderEntity order = orders.findOwned(tenantId, orderId); if (order == null) throw new BizException(ResultCode.NOT_FOUND, "订单不存在"); - OrderDetailResponse orderDetail = new OrderDetailResponse(order, orders.findCargo(tenantId, orderId), + OrderDetailResponse orderDetail = new OrderDetailResponse(order, orders.findCargoInheritedByOrder(tenantId, orderId), orders.findParties(tenantId, orderId), includeInternalNotes ? orders.findNotes(tenantId, orderId) : List.of(), orders.findHistory(tenantId, orderId)); FirstlegUnifiedOrderClient.Detail inbound = order.getStatus() == OrderStatus.SUBMITTED diff --git a/order/src/test/java/com/baiyue/order/service/UnifiedOrderQueryServiceTest.java b/order/src/test/java/com/baiyue/order/service/UnifiedOrderQueryServiceTest.java index 685449005..106ff2e31 100644 --- a/order/src/test/java/com/baiyue/order/service/UnifiedOrderQueryServiceTest.java +++ b/order/src/test/java/com/baiyue/order/service/UnifiedOrderQueryServiceTest.java @@ -497,6 +497,31 @@ class UnifiedOrderQueryServiceTest { verify(firstleg).detail(eq("internal-token"), any()); } + @Test + void childDetailInheritsCargoFromRootOrderWhenItHasNoOwnCargo() { + OrderEntity child = order(OrderStatus.SUBMITTED); + child.setId(78L); + child.setOrderNo("FL-77-1"); + child.setOrderRole("CHILD"); + child.setRootOrderId(77L); + OrderCargoEntity inheritedCargo = new OrderCargoEntity(); + inheritedCargo.setId(901L); + inheritedCargo.setOrderId(77L); + inheritedCargo.setSkuNo("SKU-ROOT"); + when(orders.findOwned(10001L, 78L)).thenReturn(child); + when(orders.findCargoInheritedByOrder(10001L, 78L)).thenReturn(List.of(inheritedCargo)); + when(orders.findParties(10001L, 78L)).thenReturn(List.of()); + when(orders.findHistory(10001L, 78L)).thenReturn(List.of()); + + var result = service.detail(10001L, 78L, false); + + assertThat(result.order().cargoes()).singleElement().satisfies(cargo -> { + assertThat(cargo.getId()).isEqualTo(901L); + assertThat(cargo.getSkuNo()).isEqualTo("SKU-ROOT"); + }); + verify(orders).findCargoInheritedByOrder(10001L, 78L); + } + @Test void detailUsesCreateHistoryOperatorNameInsteadOfNumericCreatorId() { OrderEntity order = order(OrderStatus.SUBMITTED);