fix(lastleg): search frozen warehouse code and name

This commit is contained in:
2026-09-08 13:14:13 +08:00
parent 096ab8d48b
commit 3c05525e27
5 changed files with 71 additions and 6 deletions
@@ -282,6 +282,26 @@ class LastlegOrderServiceTest {
assertEquals(25, page.getValue().getSize());
}
@Test
void pageWarehouseFilterMatchesFrozenWarehouseName() {
assertWarehouseFilter("洛杉矶仓", "洛杉矶仓", true);
}
@Test
void pageWarehouseFilterMatchesFrozenWarehouseCodeIgnoringCaseAndSpaces() {
assertWarehouseFilter(" us-lax-01 ", "us-lax-01", true);
}
@Test
void pageWarehouseFilterMatchesPartialFrozenWarehouseCode() {
assertWarehouseFilter("LAX-0", "LAX-0", true);
}
@Test
void pageWarehouseFilterReturnsEmptyPageWhenNothingMatches() {
assertWarehouseFilter("WAREHOUSE-NOT-FOUND", "WAREHOUSE-NOT-FOUND", false);
}
@Test
void containerProgressPageUsesServerSideAggregatePagination() {
var query = new LastlegOrderRequests.ContainerProgressQuery(2, 10, "CONT-", null, null);
@@ -480,4 +500,30 @@ class LastlegOrderServiceTest {
return order;
}
@SuppressWarnings({"rawtypes", "unchecked"})
private void assertWarehouseFilter(String input, String normalized, boolean matched) {
var resultPage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<LastlegOrder>(1, 10);
LastlegOrder row = order(11L, "100", "PENDING_ASSIGNMENT", null);
row.setOverseasWarehouseCode("US-LAX-01");
row.setOverseasWarehouseName("洛杉矶仓");
resultPage.setRecords(matched ? List.of(row) : List.of());
resultPage.setTotal(matched ? 1 : 0);
when(orders.selectPage(any(), any())).thenReturn(resultPage);
var result = service.page(null, new LastlegOrderRequests.Query(1L, 10L, null, null, null, null,
null, null, null, null, input, null, null, null, null, null));
ArgumentCaptor<com.baomidou.mybatisplus.core.conditions.Wrapper<LastlegOrder>> filter =
ArgumentCaptor.forClass(com.baomidou.mybatisplus.core.conditions.Wrapper.class);
verify(orders).selectPage(any(), filter.capture());
var wrapper = (com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<LastlegOrder>) filter.getValue();
String warehouseSql = wrapper.getExpression().getNormal().getSqlSegment();
assertTrue(warehouseSql.contains("LOWER(TRIM(overseas_warehouse_code))"));
assertTrue(warehouseSql.contains("LOWER(TRIM(overseas_warehouse_name))"));
assertTrue(wrapper.getParamNameValuePairs().containsValue(normalized),
wrapper.getParamNameValuePairs().toString());
assertEquals(matched ? 1 : 0, result.total());
assertEquals(matched ? 1 : 0, result.records().size());
}
}