贴标申请,仓储转运

This commit is contained in:
2026-10-09 11:49:17 +08:00
parent 7fd7699f6e
commit 2ec5414b39
13 changed files with 335 additions and 11 deletions
@@ -74,6 +74,7 @@ class LastlegOrderServiceTest {
@Mock ContainerArrivalTimeOperationMapper containerArrivalTimeOperations;
@Mock WarehouseResourceGateway warehouseResourceGateway;
@Mock ContainerShippingGateMapper containerShippingGates;
@Mock ReturnOrderReferenceResolver returnOrderReferences;
LastlegOrderService service;
@Test
@@ -105,7 +106,10 @@ class LastlegOrderServiceTest {
@BeforeEach
void setUp() {
com.baomidou.mybatisplus.core.metadata.TableInfoHelper.initTableInfo(
new org.apache.ibatis.builder.MapperBuilderAssistant(new org.apache.ibatis.session.Configuration(), ""), LastlegOrder.class);
service = new LastlegOrderService();
ReflectionTestUtils.setField(service, "returnOrderReferences", returnOrderReferences);
ReflectionTestUtils.setField(service, "orderMapper", orders);
ReflectionTestUtils.setField(service, "detailMapper", details);
ReflectionTestUtils.setField(service, "historyMapper", histories);
@@ -0,0 +1,49 @@
package com.baiyue.lastleg.service;
import com.baiyue.lastleg.entity.LastlegOrder;
import com.baiyue.lastleg.fleet.customer.FleetCustomerDirectory;
import com.baiyue.lastleg.inboundplan.pda.gateway.WarehouseResourceGateway;
import org.junit.jupiter.api.Test;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.*;
class ReturnOrderReferenceResolverTest {
@Test
void directoryFailureBlocksNewSnapshotButDoesNotHideHistoricalOrders() {
var customers = mock(FleetCustomerDirectory.class);
var warehouses = mock(WarehouseResourceGateway.class);
when(customers.find("1")).thenThrow(new org.springframework.web.server.ResponseStatusException(org.springframework.http.HttpStatus.SERVICE_UNAVAILABLE));
when(warehouses.requireActiveSharedWarehouse(10L)).thenReturn(new WarehouseResourceGateway.WarehouseReference(10L, "USLAX01", "洛杉矶仓", "ACTIVE"));
var resolver = new ReturnOrderReferenceResolver(customers, warehouses);
org.junit.jupiter.api.Assertions.assertThrows(org.springframework.web.server.ResponseStatusException.class, () -> resolver.populate(List.of(order())));
var historical = order();
resolver.populateForRead(List.of(historical));
assertEquals("洛杉矶仓", historical.getOverseasWarehouseName());
}
@Test
void resolvesMissingReturnReferencesOncePerCustomerAndWarehouseAndPreservesSnapshots() {
var customers = mock(FleetCustomerDirectory.class);
var warehouses = mock(WarehouseResourceGateway.class);
when(customers.find("1")).thenReturn(new FleetCustomerDirectory.Customer("1", "C1", "测试货主", null, null));
when(warehouses.requireActiveSharedWarehouse(10L)).thenReturn(new WarehouseResourceGateway.WarehouseReference(10L, "USLAX01", "洛杉矶仓", "ACTIVE"));
LastlegOrder first = order(), second = order(), frozen = order();
frozen.setCustomerName("原货主快照"); frozen.setOverseasWarehouseCode("OLD"); frozen.setOverseasWarehouseName("原仓库快照");
new ReturnOrderReferenceResolver(customers, warehouses).populate(List.of(first, second, frozen));
assertEquals("测试货主", first.getCustomerName());
assertEquals("USLAX01", second.getOverseasWarehouseCode());
assertEquals("洛杉矶仓", second.getOverseasWarehouseName());
assertEquals("原货主快照", frozen.getCustomerName());
assertEquals("原仓库快照", frozen.getOverseasWarehouseName());
verify(customers, times(1)).find("1");
verify(warehouses, times(1)).requireActiveSharedWarehouse(10L);
}
private LastlegOrder order() {
var order = new LastlegOrder(); order.setOrderType("RETURN_RELABEL");
order.setCustomerId("1"); order.setOverseasWarehouseId("10"); return order;
}
}