fix(lastleg): keep completed containers editable

This commit is contained in:
2026-09-08 11:51:04 +08:00
parent cc6df5993f
commit 847df6a85f
5 changed files with 63 additions and 18 deletions
@@ -86,7 +86,7 @@ class LastlegOrderServiceTest {
}
@Test
void changesReceivingWarehouseForWholeContainerBeforePdaSession() {
void changesReceivingWarehouseForAllPlansReadyContainerBeforePdaSession() {
LastlegOrder first = order(1L, "100", "PENDING_ASSIGNMENT", null);
LastlegOrder second = order(2L, "200", "PENDING_ASSIGNMENT", null);
for (LastlegOrder value : List.of(first, second)) {
@@ -94,8 +94,8 @@ class LastlegOrderServiceTest {
value.setOverseasWarehouseCode("US-LAX-01"); value.setOverseasWarehouseName("洛杉矶仓");
}
var updated = new ContainerPlanProgressSummary("BOOKING-1", "MSCU6639870", "900",
"US-NYC-01", "纽约仓", 1, true, null, 2, 2, 0, 0, 0, 2,
null, false, "存在2票尚未生成有效入库计划");
"US-NYC-01", "纽约仓", 1, true, null, 2, 2, 0, 2, 2, 0,
null, true, null);
when(orders.lockContainerOrders("BOOKING-1")).thenReturn(List.of(first, second));
when(warehouseResourceGateway.requireActiveSharedWarehouse(900L)).thenReturn(
new WarehouseResourceGateway.WarehouseReference(900L, "US-NYC-01", "纽约仓", "ACTIVE"));
@@ -107,6 +107,8 @@ class LastlegOrderServiceTest {
new LastlegOrderRequests.ChangeReceivingWarehouse(900L, 0, "改派纽约"), "admin");
assertEquals("US-NYC-01", result.overseasWarehouseCode());
assertTrue(result.allPlansReady());
assertTrue(result.canChangeReceivingWarehouse());
verify(orders).updateContainerPlanReceivingWarehouse("BOOKING-1", 900L);
verify(receivingWarehouseOperations).insert(any(com.baiyue.lastleg.entity.ReceivingWarehouseOperation.class));
}
@@ -360,6 +362,27 @@ class LastlegOrderServiceTest {
assertTrue(result.records().get(1).canChangeReceivingWarehouse());
}
@Test
void containerProgressPageKeepsReadyAndPdaLockedContainersVisible() {
var query = new LastlegOrderRequests.ContainerProgressQuery(1, 10, null, null, null);
var ready = summary(true, 0, null);
var locked = new ContainerPlanProgressSummary("BOOKING-2", "TSTU0000061",
"193000000000200003", "US-LAX-01", "洛杉矶仓", 4, false,
"海外PDA已建立接柜会话,接柜仓已永久锁定", 1, 1, 0, 1, 1, 0,
LocalDateTime.of(2026, 10, 4, 9, 0), true, null);
when(orders.countContainerProgress(query)).thenReturn(2L);
when(orders.pageContainerProgress(query, 0, 10)).thenReturn(List.of(ready, locked));
var result = service.containerProgressPage(query);
assertEquals(List.of(ready, locked), result.records());
assertTrue(result.records().get(0).allPlansReady());
assertTrue(result.records().get(0).canChangeReceivingWarehouse());
assertFalse(result.records().get(1).canChangeReceivingWarehouse());
assertEquals("海外PDA已建立接柜会话,接柜仓已永久锁定",
result.records().get(1).receivingWarehouseLockReason());
}
private static ContainerPlanProgressSummary summary(boolean ready, long pending, String reason) {
return new ContainerPlanProgressSummary("BOOKING-1", "MSCU6639870", "193000000000200003",
"US-LAX-01", "洛杉矶仓", 0, true, null, 15, 15, 0,