This commit is contained in:
2026-09-18 09:59:07 +08:00
parent 13a8dde0a5
commit 4f59f7bd28
45 changed files with 358 additions and 157 deletions
@@ -85,6 +85,22 @@ class ContainerInboundPlanPreviewTest {
assertFalse(result.ready());
}
@Test
void heldHistoricalOrderRemainsReadyBecauseHoldOnlyBlocksOutbound() {
when(orderMapper.containerPreviewOrders("BOOKING-HELD")).thenReturn(List.of(
new InboundPlanOrderMapper.ContainerPreviewOrderRow("100", 1L, "LM-HELD", "FO-1",
"测试客户", "FIRST_LEG", "FBA", "IN-1", "PENDING_ASSIGNMENT", null,
"MSCU6639870", 1, 10, new BigDecimal("1.0000"), "193000000000200003", "US-LAX-01",
"洛杉矶仓", "ACY2", null, null, "Amazon ACY2", 0, true, 1,
null, null, null, null, 1)));
var result = service.previewContainer("BOOKING-HELD");
assertEquals(true, result.ready());
assertEquals("READY", result.groups().get(0).orders().get(0).readiness());
assertEquals(List.of(), result.groups().get(0).orders().get(0).blockers());
}
@Test
void dropshipPreviewKeepsUnderlyingFbaFactSeparateFromItsDisplayCategory() {
when(orderMapper.containerPreviewOrders("BOOKING-DROPSHIP")).thenReturn(List.of(
@@ -352,21 +352,23 @@ class InboundPlanServiceTest {
}
@Test
void refusesManualPlanForHeldOrderBeforeWriting() {
void createsManualPlanForHeldHistoricalOrderBecauseHoldOnlyBlocksOutbound() {
SourceOrderSnapshot held = new SourceOrderSnapshot(2L, "100", "MSCU6639870", "RK-2",
"PENDING_ASSIGNMENT", null, new BigDecimal("1.0000"), 10, 0,
"193000000000200003", "US-LAX-01", "洛杉矶仓", null,
null, "WH-A", "仓A", 1, 0, true, 5);
"WH-A", "WH-A", "仓A", 1, 0, true, 5);
when(orderMapper.lockOrder("100", 2L)).thenReturn(List.of(held));
when(orderMapper.markPlannedManual(eq("100"), eq(2L), any(), eq(1), eq(false), eq(5), any()))
.thenReturn(1);
ResponseStatusException error = assertThrows(ResponseStatusException.class, () -> service.convertManual(
var result = service.convertManual(
new ManualInboundPlanRequest("100", 2L, 5,
1, "STANDARD", false, false, false, null),
"manual-held", "900"));
"manual-held", "900");
assertEquals(409, error.getStatusCode().value());
verify(planMapper, never()).insert(any(InboundPlan.class));
verify(commandMapper, never()).insert(any(com.baiyue.lastleg.entity.LastlegOrderCommandRecord.class));
assertEquals(2L, result.sourceOrderId());
verify(planMapper).insert(any(InboundPlan.class));
verify(orderMapper).markPlannedManual(eq("100"), eq(2L), any(), eq(1), eq(false), eq(5), any());
}
@Test