From df8610f45878db12b1971090efd9396d94da9182 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Mon, 7 Sep 2026 19:16:30 +0800 Subject: [PATCH] fix(lastleg): refresh received pallets before delivery transfer --- .../service/DeliveryTransferService.java | 1 + .../service/DeliveryTransferServiceTest.java | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/service/DeliveryTransferService.java b/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/service/DeliveryTransferService.java index de4652049..8dfbc5587 100644 --- a/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/service/DeliveryTransferService.java +++ b/lastleg-service/src/main/java/com/baiyue/lastleg/delivery/service/DeliveryTransferService.java @@ -114,6 +114,7 @@ public class DeliveryTransferService { if (Set.of("CANCELLED", "DEPARTED", "PARTIAL_DEPARTED", "COMPLETED").contains(dispatch.getStatus())) { throw conflict("Dispatch cannot be transferred to delivery in its current status"); } + dispatchItems.bindReceivedPallets(customerId, dispatch.getId()); List items = dispatchItems.findByDispatchOrder(customerId, dispatch.getId()); if (items.isEmpty()) throw conflict("Dispatch has no pallets"); if (items.stream().anyMatch(item -> item.getWarehousePalletId() == null)) { diff --git a/lastleg-service/src/test/java/com/baiyue/lastleg/delivery/service/DeliveryTransferServiceTest.java b/lastleg-service/src/test/java/com/baiyue/lastleg/delivery/service/DeliveryTransferServiceTest.java index 45efda206..062bf7bb8 100644 --- a/lastleg-service/src/test/java/com/baiyue/lastleg/delivery/service/DeliveryTransferServiceTest.java +++ b/lastleg-service/src/test/java/com/baiyue/lastleg/delivery/service/DeliveryTransferServiceTest.java @@ -53,6 +53,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -140,6 +141,21 @@ class DeliveryTransferServiceTest { assertTrue(!result.replayed()); } + @Test + void transferBackfillsReceivedPlanPalletsBeforeCheckingDispatchItems() { + DispatchOrder dispatch = dispatch(101L, "DSP-101", "TENANT-A"); + when(dispatchOrders.lockGlobalByDispatchNo("DSP-101")).thenReturn(dispatch); + when(dispatchItems.bindReceivedPallets("TENANT-A", 101L)).thenReturn(1); + when(dispatchItems.findByDispatchOrder("TENANT-A", 101L)).thenReturn(List.of( + item(201L, 501L, "PLT-501", "ONT8", "Ontario", "IN-A", 12))); + + service.platformTransfer("DSP-101", "U-1", transferRequest("transfer-after-receiving", null)); + + var ordered = inOrder(dispatchItems); + ordered.verify(dispatchItems).bindReceivedPallets("TENANT-A", 101L); + ordered.verify(dispatchItems).findByDispatchOrder("TENANT-A", 101L); + } + @Test void transferCollectsLxCodesWhenAnInboundCodeBelongsToMultipleTailOrders() { DispatchOrder dispatch = dispatch(101L, "DSP-101", "TENANT-A");