完善一件代发整托拣货回归
This commit is contained in:
+64
@@ -735,6 +735,69 @@ class DeliveryTransferServiceTest {
|
||||
assertEquals("SKU-1", detail.items().get(0).positions().get(0).skuCode());
|
||||
}
|
||||
|
||||
@Test
|
||||
void dropshipPalletScanAtomicallyPicksEveryRemainingCartonOnThePallet() {
|
||||
var commands = org.mockito.Mockito.mock(com.baiyue.lastleg.inventory.command.service.InventoryCommandService.class);
|
||||
ReflectionTestUtils.setField(service, "inventoryCommands", commands);
|
||||
OutboundOrder outbound = outbound(301L, null, null, "OD-WH-1", "whole-pallet");
|
||||
outbound.setOverseasWarehouseId("WH-1"); outbound.setOutboundType("ONE_CLICK_DROPSHIP"); outbound.setStatus("WAIT_PICK");
|
||||
OutboundPdaTask task = new OutboundPdaTask(); task.setId(701L); task.setCustomerId("TENANT-A");
|
||||
task.setOutboundOrderId(301L); task.setTaskNo("PDA-701"); task.setStatus("PENDING");
|
||||
OutboundPalletItem item = pallet(501L, "DP-1", "ONT8", "Ontario", "IN-A", 2);
|
||||
item.setSkuCode("SKU-1"); item.setCartonMarks("BOX-A,BOX-B"); item.setStatus("WAIT_PICK"); item.setPickedPackageCount(0);
|
||||
OutboundPalletItem secondItem = pallet(501L, "DP-1", "ONT8", "Ontario", "IN-A", 1);
|
||||
secondItem.setId(1502L); secondItem.setSkuCode("SKU-2"); secondItem.setCartonMarks("BOX-C");
|
||||
secondItem.setStatus("WAIT_PICK"); secondItem.setPickedPackageCount(0);
|
||||
InventoryPosition position = new InventoryPosition(); position.setId(901L); position.setCustomerId("TENANT-A");
|
||||
position.setBalanceId(801L); position.setPalletId(501L); position.setPalletNo("DP-1");
|
||||
position.setOverseasWarehouseId("WH-1"); position.setAvailablePackages(2L);
|
||||
InventoryPosition secondPosition = new InventoryPosition(); secondPosition.setId(902L); secondPosition.setCustomerId("TENANT-A");
|
||||
secondPosition.setBalanceId(802L); secondPosition.setPalletId(501L); secondPosition.setPalletNo("DP-1");
|
||||
secondPosition.setOverseasWarehouseId("WH-1"); secondPosition.setAvailablePackages(1L);
|
||||
InventoryBalance balance = new InventoryBalance(); balance.setCustomerId("TENANT-A"); balance.setInboundCode("IN-A"); balance.setSkuCode("SKU-1");
|
||||
InventoryBalance secondBalance = new InventoryBalance(); secondBalance.setCustomerId("TENANT-A"); secondBalance.setInboundCode("IN-A"); secondBalance.setSkuCode("SKU-2");
|
||||
DropshipOrderProfile profile = new DropshipOrderProfile(); profile.setId(1001L);
|
||||
DropshipOrderProfile secondProfile = new DropshipOrderProfile(); secondProfile.setId(1002L);
|
||||
DropshipCarton first = new DropshipCarton(); first.setId(1101L); first.setProductQuantity(7L);
|
||||
DropshipCarton second = new DropshipCarton(); second.setId(1102L); second.setProductQuantity(13L);
|
||||
first.setStatus("AVAILABLE"); first.setSkuCode("SKU-1"); first.setCartonMark("BOX-A");
|
||||
second.setStatus("AVAILABLE"); second.setSkuCode("SKU-1"); second.setCartonMark("BOX-B");
|
||||
DropshipCarton third = new DropshipCarton(); third.setId(1103L); third.setProductQuantity(5L);
|
||||
third.setStatus("AVAILABLE"); third.setSkuCode("SKU-2"); third.setCartonMark("BOX-C");
|
||||
when(pdaTasks.lockByNoAndWarehouse("PDA-701", "WH-1")).thenReturn(task);
|
||||
when(outboundOrders.selectById(301L)).thenReturn(outbound);
|
||||
when(outboundOrders.lockByNo("TENANT-A", "OD-WH-1")).thenReturn(outbound);
|
||||
when(outboundPallets.findByOutbound("TENANT-A", 301L)).thenReturn(List.of(item, secondItem));
|
||||
when(outboundPallets.selectById(item.getId())).thenReturn(item);
|
||||
when(outboundPallets.selectById(secondItem.getId())).thenReturn(secondItem);
|
||||
when(inventoryPositions.listPallet("TENANT-A", 501L)).thenReturn(List.of(position, secondPosition));
|
||||
when(inventoryPositions.selectById(901L)).thenReturn(position);
|
||||
when(inventoryPositions.selectById(902L)).thenReturn(secondPosition);
|
||||
when(inventoryBalances.selectById(801L)).thenReturn(balance);
|
||||
when(inventoryBalances.selectById(802L)).thenReturn(secondBalance);
|
||||
when(dropshipProfiles.findPosition("TENANT-A", 901L)).thenReturn(profile);
|
||||
when(dropshipProfiles.findPosition("TENANT-A", 902L)).thenReturn(secondProfile);
|
||||
when(dropshipCartons.listProfile("TENANT-A", 1001L)).thenReturn(List.of(first, second));
|
||||
when(dropshipCartons.listProfile("TENANT-A", 1002L)).thenReturn(List.of(third));
|
||||
when(dropshipCartons.findByProfileAndMark("TENANT-A", 1001L, "BOX-A")).thenReturn(first);
|
||||
when(dropshipCartons.findByProfileAndMark("TENANT-A", 1001L, "BOX-B")).thenReturn(second);
|
||||
when(dropshipCartons.findByProfileAndMark("TENANT-A", 1002L, "BOX-C")).thenReturn(third);
|
||||
when(dropshipSkuInventory.deduct("TENANT-A", 1001L, "SKU-1", 2L, 20L)).thenReturn(1);
|
||||
when(dropshipSkuInventory.deduct("TENANT-A", 1002L, "SKU-2", 1L, 5L)).thenReturn(1);
|
||||
|
||||
DeliveryResponses.PdaTask result = service.pdaPickPallet("WH-1", "U-1", "PDA-701", "DP-1",
|
||||
new DeliveryRequests.PdaPalletPick("whole-pallet-1"));
|
||||
|
||||
assertEquals("IN_PROGRESS", result.status());
|
||||
assertEquals(2, item.getPickedPackageCount()); assertEquals("PICKED", item.getStatus());
|
||||
assertEquals(1, secondItem.getPickedPackageCount()); assertEquals("PICKED", secondItem.getStatus());
|
||||
assertEquals("SHIPPED", first.getStatus()); assertEquals("SHIPPED", second.getStatus());
|
||||
assertEquals("SHIPPED", third.getStatus());
|
||||
assertEquals("PICKED", outbound.getStatus());
|
||||
verify(dropshipSkuInventory).deduct("TENANT-A", 1001L, "SKU-1", 2L, 20L);
|
||||
verify(dropshipSkuInventory).deduct("TENANT-A", 1002L, "SKU-2", 1L, 5L);
|
||||
}
|
||||
|
||||
@Test
|
||||
void dropshipPartialPicksDeductExactCartonProductQuantities() {
|
||||
var commands = org.mockito.Mockito.mock(com.baiyue.lastleg.inventory.command.service.InventoryCommandService.class);
|
||||
@@ -769,6 +832,7 @@ class DeliveryTransferServiceTest {
|
||||
new DeliveryRequests.PdaPick(item.getId(), 901L, 1L, "wrong-mark", List.of("WRONG-BOX"))));
|
||||
service.pdaPick("WH-1", "U-1", "PDA-701", new DeliveryRequests.PdaPick(item.getId(), 901L, 1L, "pick-7", List.of("BOX-A")));
|
||||
assertEquals(1, item.getPickedPackageCount()); assertEquals("AVAILABLE", second.getStatus());
|
||||
assertEquals("PICKING", outbound.getStatus());
|
||||
assertThrows(ResponseStatusException.class, () -> service.pdaPick("WH-1", "U-1", "PDA-701",
|
||||
new DeliveryRequests.PdaPick(item.getId(), 901L, 1L, "repeat-box-new-key", List.of("BOX-A"))));
|
||||
service.pdaPick("WH-1", "U-1", "PDA-701", new DeliveryRequests.PdaPick(item.getId(), 901L, 1L, "pick-13", List.of("BOX-B")));
|
||||
|
||||
Reference in New Issue
Block a user