fix: complete phase4 receiving acceptance chain

This commit is contained in:
2026-08-24 22:14:41 +08:00
parent 8cc4c6f6da
commit 3fbb7653f7
12 changed files with 79 additions and 22 deletions
@@ -1,7 +1,10 @@
package com.baiyue.lastleg.inboundplan.pda;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baiyue.lastleg.inboundplan.pda.controller.ReceivingContainerController;
import com.baiyue.lastleg.inboundplan.pda.dto.ReceivingContainerRequests;
import com.baiyue.lastleg.inboundplan.pda.entity.ReceivingContainerSession;
import org.junit.jupiter.api.Test;
import org.springframework.security.access.prepost.PreAuthorize;
import jakarta.validation.constraints.Size;
@@ -46,6 +49,15 @@ class ReceivingContainerContractTest {
assertTrue("hasAuthority('lastleg:pda:operate')".equals(permission.value()));
}
@Test
void completedSessionAlwaysPersistsClearedGlobalLockKeys() throws NoSuchFieldException {
for (String fieldName : List.of("activeOperatorKey", "activeContainerKey")) {
TableField field = ReceivingContainerSession.class.getDeclaredField(fieldName)
.getAnnotation(TableField.class);
assertTrue(field != null && field.updateStrategy() == FieldStrategy.ALWAYS, fieldName);
}
}
@Test
void schemaContainsCustomerScopedPlanChildrenAndGlobalPlatformPickerLocks() throws IOException {
String schema = resource("db/lastleg.sql").toLowerCase();
@@ -81,6 +93,7 @@ class ReceivingContainerContractTest {
assertTrue(unified.contains("customer_id is null or a.customer_id=''"));
assertTrue(unified.contains("signal sqlstate '45000'"));
assertTrue(unified.contains("assert_receiving_global_locks_migratable"));
assertTrue(unified.contains("where status='completed' and (active_operator_key is not null or active_container_key is not null)"));
assertTrue(unified.contains("concat('operator:',operator_key)"));
assertTrue(unified.contains("concat('container:',upper(trim(container_no)))"));
assertTrue(unified.contains("assert_receiving_operation_global_key_migratable"));
@@ -172,11 +172,10 @@ class ReceivingContainerServiceBehaviorTest {
org.mockito.Mockito.reset(plans, lines, orders, sessions, operations, cartons, warehouse);
stubCurrent("FBA", "CONT-A");
InboundPlanCarton carton = carton(1L, "BOX-1");
when(cartons.selectOne(any())).thenReturn(carton);
assertThatThrownBy(() -> service.receiveCarton("7", "receiver",
new ReceivingContainerRequests.CartonReceive("BOX-1", "PAL-1", "carton-key")))
.isInstanceOf(ResponseStatusException.class).hasMessageContaining("409");
verifyNoInteractions(cartons);
verifyNoInteractions(warehouse);
}