fix(fleet): compare pooled cargo identifiers without collation conflicts

This commit is contained in:
2026-10-21 14:16:17 +08:00
parent be79b90a4a
commit 0af977bdef
2 changed files with 27 additions and 6 deletions
@@ -157,6 +157,25 @@ class OwnedBusinessScopePersistenceTest {
assertEquals(2,outsourced.list(actor(),query).total());
assertThrows(BizException.class,()->outsourced.detail(actor(),"DS-OUT-2"));
}
/** 同前缀编号末位必须参与来源匹配,128字符的多字节入仓码不能被二进制宽度截断。 */
@Test void completeIdentifiersDeterminePoolScopeWithoutPrefixTruncation() {
String transfer="T".repeat(63)+"A",dispatch="D".repeat(63)+"A",inbound="仓".repeat(127)+"甲";
baseline.jdbc.update("UPDATE ll_warehouse_transfer_order SET transfer_no=?,inbound_code=? WHERE transfer_no='INCOMING-2'",transfer,inbound);
baseline.jdbc.update("UPDATE ll_inbound_plan_line SET inbound_code=? WHERE plan_id=2000",inbound);
baseline.jdbc.update("UPDATE ll_dispatch_order SET dispatch_no=? WHERE id=2",dispatch);
baseline.jdbc.update("UPDATE ll_fleet_external_booking SET dispatch_no=?,incoming_no=? WHERE id=2",dispatch,transfer);
assertNotNull(outsourced.detail(actor(),dispatch));
baseline.jdbc.update("UPDATE ll_fleet_external_booking SET incoming_no=? WHERE id=2","T".repeat(63)+"B");
assertNotNull(queries.detail(OwnedBusinessFixtures.actor(),dispatch));
baseline.jdbc.update("UPDATE ll_fleet_external_booking SET incoming_no=?,dispatch_no=? WHERE id=2",transfer,"D".repeat(63)+"B");
assertNotNull(queries.detail(OwnedBusinessFixtures.actor(),dispatch));
baseline.jdbc.update("UPDATE ll_fleet_external_booking SET dispatch_no=? WHERE id=2",dispatch);
baseline.jdbc.update("UPDATE ll_inbound_plan_line SET inbound_code=? WHERE plan_id=2000","仓".repeat(127)+"乙");
assertNotNull(queries.detail(OwnedBusinessFixtures.actor(),dispatch));
baseline.jdbc.update("UPDATE ll_inbound_plan_line SET inbound_code=? WHERE plan_id=2000",inbound);
assertNotNull(outsourced.detail(actor(),dispatch));
assertEquals(3,outsourced.list(actor(),new OwnedBusinessModels.Query(1,1,null,null,null,null,null)).summary().dispatchCount());
}
/** 外配档案和临时车辆分别保持真实ID/空ID及原承运商,GET不建记录。 */
@Test void masterAndExternalReadOriginalSnapshotWithoutBackfill() {
var master=outsourced.detail(actor(),"DS-OUT-2");var external=outsourced.detail(actor(),"DS-OUT-3");