feat(lastleg): query commercial sources independently of fulfillment types

This commit is contained in:
2026-10-09 16:12:02 +08:00
parent c4a7c2a22d
commit 3b5454fb99
13 changed files with 156 additions and 19 deletions
@@ -75,6 +75,19 @@ class LastlegExportProviderServiceTest {
assertTrue(result.columns().stream().noneMatch(c -> c.key().equals("id") || c.key().equals("customerId")));
}
@Test void exportsBusinessReferencesUsingTheSameFiltersAndProjectionAsTheList() {
var order = new ObjectMapper().findAndRegisterModules().convertValue(Map.of(
"id", "1", "orderNo", "WT-1", "orderTypeName", "仓储转运", "businessSource", Map.of(
"businessType", "LOCAL_LOOSEBOARD", "label", "本土散板 · 拼车需求池", "businessOrderNo", "LB-1", "externalBookingNo", "FB-1")), com.baiyue.lastleg.dto.LastlegOrderSummary.class);
when(orders.page(isNull(), any(), isNull())).thenReturn(new PageResult<>(List.of(order),1,1,1,1));
var result = service.batch("LAST_MILE_ORDER_LIST",request(Map.of("businessType","LOCAL_LOOSEBOARD","businessOrderNo","LB-1","externalBookingNo","FB-1"),null,null));
verify(orders).page(isNull(),argThat(q -> "LOCAL_LOOSEBOARD".equals(q.businessType()) && "LB-1".equals(q.businessOrderNo()) && "FB-1".equals(q.externalBookingNo())),isNull());
assertEquals("仓储转运",result.rows().get(0).get("orderTypeName"));
assertEquals("本土散板 · 拼车需求池",result.rows().get(0).get("businessSource.label"));
assertEquals("LB-1",result.rows().get(0).get("businessSource.businessOrderNo"));
assertEquals("FB-1",result.rows().get(0).get("businessSource.externalBookingNo"));
}
@Test void keepsCustomerScopeAndLedgerCustomerFilter() {
when(inventory.ledgers(eq("200"), any())).thenReturn(new PageResult<>(List.of(),1,1,0,0));
service.batch("OVERSEAS_INVENTORY_LEDGER", request(Map.of("customerId","200","customerName","客户"),null,null));