fix(lastleg): expose dispatch reviews and filter available capacity offers

This commit is contained in:
2026-10-08 14:11:55 +08:00
parent 1cb1f2d0c0
commit 136a2bc3b5
14 changed files with 194 additions and 18 deletions
@@ -38,7 +38,7 @@ class DispatchQueryControllerTest {
@Test
void platformPageQueriesAcrossCustomersWithoutCustomerId() {
DispatchRequests.Query query = new DispatchRequests.Query(1, 20, null, null, null, null);
DispatchRequests.Query query = new DispatchRequests.Query(1, 20, null, null, null, null, null);
when(service.platformPage(query)).thenReturn(new PageResult<>(List.of(), 1, 20, 0, 0));
var response = controller.page(platform(), query);
@@ -55,7 +55,7 @@ class DispatchBolPrintServiceTest {
null, null, null, LocalDateTime.of(2026, 9, 12, 2, 40, 20), "PENDING_DEPARTURE",
1, 1, 1, 0, 0, 1, null, LocalDateTime.of(2026, 9, 11, 10, 0), List.of(),
List.of(new DispatchResponse.BolLine("TSTU3539519", "DP-260911-0027", "ABE2", "ABE2",
"NYEXX2609110214", null, null, 1)));
"NYEXX2609110214", null, null, 1)), null);
var address = new DomesticWarehouseDirectoryClient.Address("OPERATING", "US", "California", "Rancho Cucamonga",
null, "91730", "10767 7th Street", null);
var warehouse = new DomesticWarehouseDirectoryClient.Warehouse(Long.parseLong(warehouseId), 0L,
@@ -87,7 +87,7 @@ class DispatchBolPrintServiceTest {
new DispatchResponse.BolLine("TSTU3539519", "DP-001", "ABE2", "ABE2 Warehouse",
"NYEXX2609110214", null, null, 1),
new DispatchResponse.BolLine("TSTU3539519", "DP-002", "ONT8", "ONT8 Warehouse",
"NYEXX2609110215", null, null, 1)));
"NYEXX2609110215", null, null, 1)), null);
var warehouse = new DomesticWarehouseDirectoryClient.Warehouse(Long.parseLong(warehouseId), 0L,
"US-LAX", "洛杉矶仓", "OVERSEAS", "US", "ACTIVE");
when(dispatches.platformDetail(detail.dispatchNo())).thenReturn(detail);
@@ -63,11 +63,13 @@ class DispatchServiceTest {
@Mock LastlegOrderMapper tailOrders;
@Mock OutboundOrderMapper outboundOrders;
@Mock com.baiyue.lastleg.fleet.trip.FleetDispatchBindingGuard fleetBindings;
@Mock com.baiyue.lastleg.fleet.trip.FleetDispatchWorkflowQuery fleetWorkflow;
private DispatchService service;
@BeforeEach
void setUp() {
service = new DispatchService();
ReflectionTestUtils.setField(service, "fleetWorkflow", fleetWorkflow);
ReflectionTestUtils.setField(service, "fleetBindings", fleetBindings);
ReflectionTestUtils.setField(service, "orders", orders);
ReflectionTestUtils.setField(service, "items", items);
@@ -435,6 +437,24 @@ class DispatchServiceTest {
verify(bolLines).findByDispatchOrder("200", 1L);
}
@Test
void filtersStageBeforePaginationAndPreservesTheServerTotal() {
com.baomidou.mybatisplus.core.metadata.TableInfoHelper.initTableInfo(
new org.apache.ibatis.builder.MapperBuilderAssistant(new com.baomidou.mybatisplus.core.MybatisConfiguration(), "test"), DispatchOrder.class);
Page<DispatchOrder> resultPage = new Page<>(2, 10, 47);
resultPage.setRecords(List.of());
when(orders.selectPage(any(Page.class), any(LambdaQueryWrapper.class))).thenAnswer(invocation -> {
LambdaQueryWrapper<DispatchOrder> wrapper = invocation.getArgument(1);
assertTrue(wrapper.getSqlSegment().contains("status IN"));
assertTrue(wrapper.getParamNameValuePairs().values().containsAll(
List.of("PICKING", "READY_TO_DEPART", "PARTIAL_READY_TO_DEPART")));
return resultPage;
});
var result = service.platformPage(new DispatchRequests.Query(2, 10, null, null, null, null, DispatchRequests.Stage.LOADING));
assertEquals(47, result.total());
assertEquals(List.of("DEPARTED", "PARTIAL_DEPARTED"), DispatchRequests.Stage.AFTER_LOADING.statuses());
}
@Test
void platformPageQueriesAllCustomersAndLoadsItemsInEachCustomerScope() {
DispatchOrder first = new DispatchOrder();
@@ -445,7 +465,7 @@ class DispatchServiceTest {
resultPage.setRecords(List.of(first, second));
when(orders.selectPage(any(Page.class), any(LambdaQueryWrapper.class))).thenReturn(resultPage);
var result = service.platformPage(new DispatchRequests.Query(1, 20, null, null, null, null));
var result = service.platformPage(new DispatchRequests.Query(1, 20, null, null, null, null, null));
assertEquals(2, result.total());
verify(items).findByDispatchOrder("100", 1L);