fix: persist PDA movement state semantics
This commit is contained in:
+25
@@ -3,6 +3,9 @@ package com.baiyue.lastleg.palletops.service;
|
||||
import com.baiyue.lastleg.inventory.mapper.InventoryBalanceMapper;
|
||||
import com.baiyue.lastleg.inventory.mapper.InventoryLedgerMapper;
|
||||
import com.baiyue.lastleg.inventory.mapper.InventoryPositionMapper;
|
||||
import com.baiyue.lastleg.inventory.entity.InventoryBalance;
|
||||
import com.baiyue.lastleg.inventory.entity.InventoryLedger;
|
||||
import com.baiyue.lastleg.inventory.entity.InventoryPosition;
|
||||
import com.baiyue.lastleg.palletops.dto.PalletOperationRequests;
|
||||
import com.baiyue.lastleg.palletops.entity.PdaPalletOperation;
|
||||
import com.baiyue.lastleg.palletops.gateway.PalletPhysicalGateway;
|
||||
@@ -15,6 +18,7 @@ import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
import org.springframework.transaction.TransactionDefinition;
|
||||
@@ -94,6 +98,27 @@ class PdaPalletOperationServiceTest {
|
||||
verifyNoInteractions(ledgers, history);
|
||||
}
|
||||
|
||||
@Test void inventoryLedgerStoresStateSemanticsInsteadOfLongPalletCodes() {
|
||||
InventoryBalance balance = new InventoryBalance(); balance.setId(200L); balance.setCustomerId("100");
|
||||
balance.setOverseasWarehouseId("88"); balance.setInboundOrderId(300L); balance.setInboundCode("IN-1");
|
||||
InventoryPosition position = new InventoryPosition(); position.setId(100L); position.setPalletId(20L);
|
||||
position.setPalletNo("PDAOPS-ADMIN-API-20260825095854036-SWAP-TARGET");
|
||||
position.setBatchNo("DEFAULT"); position.setWarehouseLocationCode("PDAOPS-LONG-LOCATION-CODE");
|
||||
PdaPalletOperation operation = new PdaPalletOperation(); operation.setId(400L);
|
||||
operation.setOperationType("PALLET_SWAP");
|
||||
|
||||
ReflectionTestUtils.invokeMethod(service, "ledger", identity(), operation, balance, position,
|
||||
"idem:out", 5L, -5L, 0L,
|
||||
"PDAOPS-ADMIN-API-20260825095854036-SOURCE",
|
||||
"PDAOPS-ADMIN-API-20260825095854036-TARGET", "swap");
|
||||
|
||||
ArgumentCaptor<InventoryLedger> ledger = ArgumentCaptor.forClass(InventoryLedger.class);
|
||||
verify(ledgers).insert(ledger.capture());
|
||||
assertEquals("OCCUPIED", ledger.getValue().getStatusFrom());
|
||||
assertEquals("OCCUPIED", ledger.getValue().getStatusTo());
|
||||
assertEquals("PDAOPS-LONG-LOCATION-CODE", ledger.getValue().getWarehouseLocationCode());
|
||||
}
|
||||
|
||||
private static PdaWarehouseIdentity identity() { return new PdaWarehouseIdentity("7", "picker", 88L); }
|
||||
private static PalletPhysicalGateway.PalletReference pallet(long id, String code, long warehouse, int version) {
|
||||
return new PalletPhysicalGateway.PalletReference(id, code, warehouse, 1000L + id,
|
||||
|
||||
Reference in New Issue
Block a user