优化
This commit is contained in:
+1
-1
@@ -38,7 +38,7 @@ class InboundCartonLabelSqlContractTest {
|
||||
.contains("uk_carton_label_box_code")
|
||||
.contains("uk_carton_label_index")
|
||||
.contains("稳定箱号映射表未创建")
|
||||
.contains("箱唛版本化字段未完整创建")
|
||||
.contains("稳定箱码映射兼容字段未完整创建")
|
||||
.contains("箱唛有效批次索引未完整创建");
|
||||
}
|
||||
|
||||
|
||||
+22
-29
@@ -50,7 +50,6 @@ class InboundCartonLabelServiceTest {
|
||||
var first = cargo(80001L, 1, 3, "60", "40", "30");
|
||||
when(orderCargoClient.listForCartonLabels("internal-token", 10001L, 60001L))
|
||||
.thenReturn(ApiResponse.success(List.of(second, first)));
|
||||
when(repository.nextVersion(10001L, 70001L)).thenReturn(1);
|
||||
List<InboundCartonLabelEntity> inserted = new ArrayList<>();
|
||||
org.mockito.Mockito.doAnswer(invocation -> {
|
||||
inserted.add(invocation.getArgument(0));
|
||||
@@ -61,8 +60,8 @@ class InboundCartonLabelServiceTest {
|
||||
|
||||
assertThat(batch.totalCount()).isEqualTo(5);
|
||||
assertThat(batch.labels()).extracting(label -> label.boxCode())
|
||||
.containsExactly("PCHK2608040174#V1#5-1", "PCHK2608040174#V1#5-2", "PCHK2608040174#V1#5-3",
|
||||
"PCHK2608040174#V1#5-4", "PCHK2608040174#V1#5-5");
|
||||
.containsExactly("PCHK2608040174#5-1", "PCHK2608040174#5-2", "PCHK2608040174#5-3",
|
||||
"PCHK2608040174#5-4", "PCHK2608040174#5-5");
|
||||
assertThat(batch.labels()).extracting(label -> label.inboundDetailId())
|
||||
.containsExactly(80001L, 80001L, 80001L, 80002L, 80002L);
|
||||
assertThat(batch.labels().get(0).boxSpecification()).isEqualTo("60x40x30cm");
|
||||
@@ -73,7 +72,7 @@ class InboundCartonLabelServiceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
void repeatedAndPartialPrintsReadCurrentVersionWithoutReallocation() {
|
||||
void repeatedAndPartialPrintsReadFrozenMappingWithoutReallocation() {
|
||||
InboundOrderEntity inbound = inbound();
|
||||
inbound.setTotalPackageCount(5);
|
||||
List<InboundCartonLabelEntity> existing = labels(inbound, 5);
|
||||
@@ -92,7 +91,7 @@ class InboundCartonLabelServiceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
void changedCargoCreatesNewVersion() {
|
||||
void changedCargoKeepsTheFirstFrozenBoxCodes() {
|
||||
InboundOrderEntity inbound = inbound();
|
||||
inbound.setTotalPackageCount(4);
|
||||
when(repository.lockInbound(10001L, 70001L)).thenReturn(inbound);
|
||||
@@ -101,13 +100,11 @@ class InboundCartonLabelServiceTest {
|
||||
when(repository.findActiveByInbound(10001L, 70001L)).thenReturn(existing);
|
||||
when(orderCargoClient.listForCartonLabels("internal-token", 10001L, 60001L))
|
||||
.thenReturn(ApiResponse.success(List.of(cargo(80001L, 1, 2, "60", "40", "30"))));
|
||||
when(repository.nextVersion(10001L, 70001L)).thenReturn(2);
|
||||
org.mockito.Mockito.doAnswer(invocation -> null).when(repository).insert(any());
|
||||
var result = service.getOrCreate(10001L, 70001L);
|
||||
assertThat(result.labels()).extracting(label -> label.boxCode())
|
||||
.containsExactly("PCHK2608040174#V2#2-1", "PCHK2608040174#V2#2-2");
|
||||
verify(repository).voidActive(org.mockito.ArgumentMatchers.eq(10001L),
|
||||
org.mockito.ArgumentMatchers.eq(70001L), any());
|
||||
.containsExactly("PCHK2608040174#5-1", "PCHK2608040174#5-2", "PCHK2608040174#5-3",
|
||||
"PCHK2608040174#5-4", "PCHK2608040174#5-5");
|
||||
verify(repository, never()).insert(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -119,14 +116,13 @@ class InboundCartonLabelServiceTest {
|
||||
when(repository.findByInbound(10001L, 70001L)).thenReturn(new ArrayList<>());
|
||||
when(orderCargoClient.listForCartonLabels("internal-token", 10001L, 60001L))
|
||||
.thenReturn(ApiResponse.success(List.of(cargo(80001L, 1, 2, "60", "40", "30"))));
|
||||
when(repository.nextVersion(10001L, 70001L)).thenReturn(1);
|
||||
org.mockito.Mockito.doAnswer(invocation -> null).when(repository).insert(any());
|
||||
|
||||
var result = service.getOrCreate(10001L, 70001L);
|
||||
|
||||
assertThat(result.totalCount()).isEqualTo(2);
|
||||
assertThat(result.labels()).extracting(label -> label.boxCode())
|
||||
.containsExactly("PCHK2608040174#V1#2-1", "PCHK2608040174#V1#2-2");
|
||||
.containsExactly("PCHK2608040174#2-1", "PCHK2608040174#2-2");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -143,7 +139,7 @@ class InboundCartonLabelServiceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
void changedCargoAfterLoadingVoidsCurrentBatchAndCreatesNextVersion() {
|
||||
void changedCargoAfterLoadingKeepsTheFirstFrozenBoxCodes() {
|
||||
InboundOrderEntity inbound = inbound();
|
||||
inbound.setProcessStatus("LOADING");
|
||||
List<InboundCartonLabelEntity> existing = labels(inbound, 1);
|
||||
@@ -155,22 +151,19 @@ class InboundCartonLabelServiceTest {
|
||||
when(repository.findActiveByInbound(10001L, 70001L)).thenReturn(existing);
|
||||
when(orderCargoClient.listForCartonLabels("internal-token", 10001L, 60001L))
|
||||
.thenReturn(ApiResponse.success(List.of(cargo(80001L, 1, 2, "60", "40", "30"))));
|
||||
when(repository.nextVersion(10001L, 70001L)).thenReturn(2);
|
||||
|
||||
var result = service.getOrCreate(10001L, 70001L);
|
||||
|
||||
assertThat(result.labels()).extracting(label -> label.boxCode())
|
||||
.containsExactly("PCHK2608040174#V2#2-1", "PCHK2608040174#V2#2-2");
|
||||
verify(repository).voidActive(org.mockito.ArgumentMatchers.eq(10001L),
|
||||
org.mockito.ArgumentMatchers.eq(70001L), any());
|
||||
.containsExactly("PCHK2608040174#1-1");
|
||||
verify(repository, never()).insert(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void resolvesBoxCodeInsideCustomerBoundary() {
|
||||
InboundCartonLabelEntity label = labels(inbound(), 1).get(0);
|
||||
when(repository.findByBoxCode(10001L, "PCHK2608040174#V1#1-1")).thenReturn(label);
|
||||
when(repository.findByBoxCode(10001L, "PCHK2608040174#1-1")).thenReturn(label);
|
||||
|
||||
var resolved = service.resolveByBoxCode(10001L, " PCHK2608040174#V1#1-1 ");
|
||||
var resolved = service.resolveByBoxCode(10001L, " PCHK2608040174#1-1 ");
|
||||
|
||||
assertThat(resolved.inboundId()).isEqualTo(70001L);
|
||||
assertThat(resolved.inboundDetailId()).isEqualTo(80001L);
|
||||
@@ -178,30 +171,30 @@ class InboundCartonLabelServiceTest {
|
||||
assertThat(resolved.cartonIndex()).isEqualTo(1);
|
||||
assertThat(resolved.totalCartons()).isEqualTo(1);
|
||||
assertThat(resolved.boxSpecification()).isEqualTo("60x40x30cm");
|
||||
verify(repository).findByBoxCode(10001L, "PCHK2608040174#V1#1-1");
|
||||
verify(repository).findByBoxCode(10001L, "PCHK2608040174#1-1");
|
||||
}
|
||||
|
||||
@Test
|
||||
void exposesDetailedResolutionForFirstlegConsumers() {
|
||||
InboundCartonLabelEntity label = labels(inbound(), 1).get(0);
|
||||
when(repository.findByBoxCode(10001L, "PCHK2608040174#V1#1-1")).thenReturn(label);
|
||||
when(repository.findByBoxCode(10001L, "PCHK2608040174#1-1")).thenReturn(label);
|
||||
|
||||
var resolved = service.resolveDetailsByBoxCode(10001L, "PCHK2608040174#V1#1-1");
|
||||
var resolved = service.resolveDetailsByBoxCode(10001L, "PCHK2608040174#1-1");
|
||||
|
||||
assertThat(resolved.orderId()).isEqualTo(60001L);
|
||||
assertThat(resolved.boxCode()).isEqualTo("PCHK2608040174#V1#1-1");
|
||||
assertThat(resolved.boxCode()).isEqualTo("PCHK2608040174#1-1");
|
||||
assertThat(resolved.cargoItemNo()).isEqualTo(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
void rejectsVoidedLabelVersionDuringScanResolution() {
|
||||
void rejectsInactiveBoxCodeDuringScanResolution() {
|
||||
InboundCartonLabelEntity label = labels(inbound(), 1).get(0);
|
||||
label.setBatchStatus("VOID");
|
||||
when(repository.findByBoxCode(10001L, "PCHK2608040174#V1#1-1")).thenReturn(label);
|
||||
when(repository.findByBoxCode(10001L, "PCHK2608040174#1-1")).thenReturn(label);
|
||||
|
||||
assertThatThrownBy(() -> service.resolveByBoxCode(10001L, "PCHK2608040174#V1#1-1"))
|
||||
assertThatThrownBy(() -> service.resolveByBoxCode(10001L, "PCHK2608040174#1-1"))
|
||||
.isInstanceOf(BizException.class)
|
||||
.hasMessage("箱唛版本已作废,请重新打印");
|
||||
.hasMessage("箱码已失效,请重新打印");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -284,7 +277,7 @@ class InboundCartonLabelServiceTest {
|
||||
label.setCargoName("货物1");
|
||||
label.setDetailPackageCount(total);
|
||||
label.setInboundCode(inbound.getInboundCode());
|
||||
label.setBoxCode(inbound.getInboundCode() + "#V1#" + total + "-" + index);
|
||||
label.setBoxCode(inbound.getInboundCode() + "#" + total + "-" + index);
|
||||
label.setTotalCartonCount(total);
|
||||
label.setCartonIndex(index);
|
||||
label.setLabelVersion(1);
|
||||
|
||||
Reference in New Issue
Block a user