This commit is contained in:
2026-09-16 15:57:37 +08:00
parent 8f0622058d
commit 4571e3ac16
3 changed files with 42 additions and 15 deletions
@@ -59,14 +59,39 @@ class DropshipPalletizationServiceTest {
verifyNoInteractions(numbers); verify(mapper,never()).insertPallet(anyLong(),anyLong(),anyLong(),anyLong(),anyLong(),anyString(),anyString(),anyLong(),anyString());
}
@Test void taskReadinessCountsGeneratedPalletsByInboundInsteadOfTaskId(){
when(mapper.task(10L,100L)).thenReturn(task());
when(mapper.palletCountByInbound(1L,30L)).thenReturn(2);
when(mapper.pallets(10L)).thenReturn(java.util.List.of());
when(mapper.unboundCartons(10L)).thenReturn(java.util.List.of());
var result=service.task(10L,100L,7L);
assertThat(result.generatedPalletCount()).isEqualTo(2);
assertThat(result.palletSetupReady()).isTrue();
verify(mapper).palletCountByInbound(1L,30L);
}
@Test void taskPrintReadsGeneratedPalletsFromTheInboundOrder(){
PalletRow generated=pallet(); generated.setTaskId(99L);
when(mapper.task(10L,100L)).thenReturn(task());
when(mapper.generatedPalletsByInbound(1L,30L)).thenReturn(java.util.List.of(generated));
when(mapper.cartons(20L)).thenReturn(java.util.List.of());
var result=service.generatedPallets(10L,100L,7L);
assertThat(result).singleElement().extracting("palletNo").isEqualTo("DP-260911-0001");
verify(mapper).generatedPalletsByInbound(1L,30L);
}
@Test void resolvesUncountedCartonBeforeQuantityConfirmation(){
when(mapper.task(10L,100L)).thenReturn(task()); when(mapper.palletCount(10L)).thenReturn(2); when(mapper.label(10L,"BOX-1")).thenReturn(label());
when(mapper.task(10L,100L)).thenReturn(task()); when(mapper.palletCountByInbound(1L,30L)).thenReturn(2); when(mapper.label(10L,"BOX-1")).thenReturn(label());
var result=service.resolveCarton(10L,100L,"BOX-1",7L);
assertThat(result.inboundCode()).isEqualTo("IN-1"); assertThat(result.skuLines()).extracting("expectedQuantity").containsExactly(12); assertThat(result.canCount()).isTrue();
}
@Test void cartonCanBindDirectlyToAPreGeneratedPallet(){
when(mapper.task(10L,100L)).thenReturn(task()); when(mapper.palletCount(10L)).thenReturn(2); when(mapper.label(10L,"BOX-1")).thenReturn(label()); when(mapper.palletByNo("DP-260911-0001")).thenReturn(pallet());
when(mapper.task(10L,100L)).thenReturn(task()); when(mapper.palletCountByInbound(1L,30L)).thenReturn(2); when(mapper.label(10L,"BOX-1")).thenReturn(label()); when(mapper.palletByNo("DP-260911-0001")).thenReturn(pallet());
when(mapper.addCounted(10L,7L,1,0)).thenReturn(1); when(mapper.carton(eq(10L),anyLong())).thenReturn(carton());
when(mapper.pallet(10L,20L,100L)).thenReturn(pallet()); when(mapper.cartons(20L)).thenReturn(java.util.List.of());
service.countCarton(10L,countRequest("DP-260911-0001"),7L,"张三");
@@ -76,7 +101,7 @@ class DropshipPalletizationServiceTest {
@Test void cartonCanBindToAnOpenPalletGeneratedForAnotherTaskInTheSameWarehouse(){
TaskRow current=task(); PalletRow shared=pallet(); shared.setTaskId(99L); shared.setTenantId(2L); shared.setInboundId(88L);
when(mapper.task(10L,100L)).thenReturn(current); when(mapper.palletCount(10L)).thenReturn(2);
when(mapper.task(10L,100L)).thenReturn(current); when(mapper.palletCountByInbound(1L,30L)).thenReturn(2);
when(mapper.label(10L,"BOX-1")).thenReturn(label()); when(mapper.palletByNo("DP-260911-0001")).thenReturn(shared);
when(mapper.addCounted(10L,7L,1,0)).thenReturn(1); when(mapper.carton(eq(10L),anyLong())).thenReturn(carton());
when(mapper.pallet(10L,20L,100L)).thenReturn(shared); when(mapper.cartons(20L)).thenReturn(java.util.List.of());
@@ -86,14 +111,14 @@ class DropshipPalletizationServiceTest {
@Test void palletFromAnotherWarehouseCannotBeMixed(){
PalletRow other=pallet(); other.setWarehouseId(101L);
when(mapper.task(10L,100L)).thenReturn(task()); when(mapper.palletCount(10L)).thenReturn(2);
when(mapper.task(10L,100L)).thenReturn(task()); when(mapper.palletCountByInbound(1L,30L)).thenReturn(2);
when(mapper.label(10L,"BOX-1")).thenReturn(label()); when(mapper.palletByNo("DP-260911-0001")).thenReturn(other);
assertThatThrownBy(()->service.countCarton(10L,countRequest("DP-260911-0001"),7L,"张三"))
.isInstanceOf(BizException.class).hasMessageContaining("当前作业仓库");
}
@Test void unknownPalletCodeCannotCreateAnAdHocPallet(){
when(mapper.task(10L,100L)).thenReturn(task()); when(mapper.palletCount(10L)).thenReturn(2); when(mapper.label(10L,"BOX-1")).thenReturn(label());
when(mapper.task(10L,100L)).thenReturn(task()); when(mapper.palletCountByInbound(1L,30L)).thenReturn(2); when(mapper.label(10L,"BOX-1")).thenReturn(label());
var request=countRequest("DP-260911-9999");
assertThatThrownBy(()->service.countCarton(10L,request,7L,"张三")).isInstanceOf(BizException.class).hasMessageContaining("测量审核后生成");
verify(mapper,never()).insertPallet(anyLong(),anyLong(),anyLong(),anyLong(),anyLong(),anyString(),anyString(),anyLong(),anyString());
@@ -101,7 +126,7 @@ class DropshipPalletizationServiceTest {
private static InboundOrderEntity dropshipInbound(){InboundOrderEntity i=new InboundOrderEntity();i.setId(30L);i.setTenantId(1L);i.setWarehouseId(100L);i.setFulfillmentType("ONE_CLICK_DROPSHIP");i.setTotalPackageCount(8);i.setPalletCount(2);return i;}
@Test void incompletePreGeneratedPalletsBlockCounting(){
when(mapper.task(10L,100L)).thenReturn(task()); when(mapper.palletCount(10L)).thenReturn(0); when(mapper.label(10L,"BOX-1")).thenReturn(label());
when(mapper.task(10L,100L)).thenReturn(task()); when(mapper.palletCountByInbound(1L,30L)).thenReturn(0); when(mapper.label(10L,"BOX-1")).thenReturn(label());
var result=service.resolveCarton(10L,100L,"BOX-1",7L);
assertThat(result.canCount()).isFalse(); assertThat(result.blockReason()).contains("预计 2 托").contains("当前仅生成 0 个托盘码");
assertThatThrownBy(()->service.countCarton(10L,countRequest(null),7L,"张三"))
@@ -112,7 +137,7 @@ class DropshipPalletizationServiceTest {
TaskRow current=task(); PalletRow sealed=sealedPallet();
when(mapper.task(10L,100L)).thenReturn(current); when(mapper.pallet(10L,20L,100L)).thenReturn(sealed);
when(mapper.taskIdsByPallet(20L)).thenReturn(java.util.List.of(10L)); when(mapper.unseal(10L,20L,1,100L,"undo-1")).thenReturn(1);
when(mapper.palletCount(10L)).thenReturn(2); when(mapper.pallets(10L)).thenReturn(java.util.List.of());
when(mapper.palletCountByInbound(1L,30L)).thenReturn(2); when(mapper.pallets(10L)).thenReturn(java.util.List.of());
var result=service.unseal(10L,20L,new UnsealPalletRequest(100L,"undo-1",1),7L,"张三");
assertThat(result.taskStatus()).isEqualTo("CLAIMED");
verify(mapper).activeLoadingAssignmentCount(20L); verify(mapper).unseal(10L,20L,1,100L,"undo-1");
@@ -128,7 +153,7 @@ class DropshipPalletizationServiceTest {
when(mapper.taskIdsByPallet(20L)).thenReturn(java.util.List.of(10L,11L)); when(mapper.unseal(10L,20L,1,100L,"undo-2")).thenReturn(1);
when(mapper.reopenTask(10L)).thenReturn(1); when(mapper.reopenTask(11L)).thenReturn(1);
when(mapper.reopenInbound(1L,30L,7L)).thenReturn(1); when(mapper.reopenInbound(2L,31L,7L)).thenReturn(1);
when(mapper.palletCount(10L)).thenReturn(2); when(mapper.pallets(10L)).thenReturn(java.util.List.of());
when(mapper.palletCountByInbound(1L,30L)).thenReturn(2); when(mapper.pallets(10L)).thenReturn(java.util.List.of());
service.unseal(10L,20L,new UnsealPalletRequest(100L,"undo-2",1),7L,"张三");
verify(mapper).reopenTask(10L); verify(mapper).reopenTask(11L);
verify(mapper).reopenInbound(1L,30L,7L); verify(mapper).reopenInbound(2L,31L,7L);