From 56d555668db600018857376306b5b07e6c66de11 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Thu, 10 Sep 2026 17:13:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/InboundMeasurementService.java | 4 ++ .../InboundMeasurementServiceTest.java | 39 ++++++++++++++----- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/firstleg/src/main/java/com/baiyue/firstleg/service/InboundMeasurementService.java b/firstleg/src/main/java/com/baiyue/firstleg/service/InboundMeasurementService.java index f76ccca26..66a9db379 100644 --- a/firstleg/src/main/java/com/baiyue/firstleg/service/InboundMeasurementService.java +++ b/firstleg/src/main/java/com/baiyue/firstleg/service/InboundMeasurementService.java @@ -245,6 +245,10 @@ public class InboundMeasurementService { List items = repository.listItems(tenantId, measurement.getId()); List weights = repository.listWeights(tenantId, inboundId); ConfirmedWeightTotals confirmedTotals = confirmedWeightTotals(weights); + if (confirmedTotals.palletCount() == 0) { + throw new BizException(ResultCode.VALIDATION_FAILED, + "请至少上传并确认一张称重图片后再提交测量审核"); + } requireConfirmedPackageTotal(inbound, items); measurement.setStatus(STATUS_SUBMITTED); diff --git a/firstleg/src/test/java/com/baiyue/firstleg/service/InboundMeasurementServiceTest.java b/firstleg/src/test/java/com/baiyue/firstleg/service/InboundMeasurementServiceTest.java index d0666670a..b4aeb5d9f 100644 --- a/firstleg/src/test/java/com/baiyue/firstleg/service/InboundMeasurementServiceTest.java +++ b/firstleg/src/test/java/com/baiyue/firstleg/service/InboundMeasurementServiceTest.java @@ -1171,7 +1171,7 @@ class InboundMeasurementServiceTest { } @Test - void submitDoesNotBlockOnUnconfirmedWeight() { + void submitRejectsWhenNoWeightImageHasBeenConfirmed() { InboundOrderEntity inbound = inbound("MEASURING"); InboundMeasurementEntity measurement = new InboundMeasurementEntity(); measurement.setId(30L); @@ -1185,16 +1185,37 @@ class InboundMeasurementServiceTest { when(repository.listItems(1L, 30L)).thenReturn(List.of(item)); when(repository.listWeights(1L, 10L)).thenReturn(List.of( weight(20L, "20", "KG", "PENDING_CONFIRM", 0))); - when(repository.updateMeasurement(measurement)).thenReturn(true); - when(repository.updateInbound(inbound)).thenReturn(true); + assertThatThrownBy(() -> service.submit(1L, 10L, 9L, + new InboundMeasurementRequests.SubmitRequest(30L, 0))) + .isInstanceOf(BizException.class) + .hasMessageContaining("至少上传并确认一张称重图片"); - InboundMeasurementResponses.MeasurementSubmitted result = service.submit(1L, 10L, 9L, - new InboundMeasurementRequests.SubmitRequest(30L, 0)); + verify(repository, never()).updateMeasurement(any()); + verify(repository, never()).updateInbound(any()); + } - assertThat(result.processStatus()).isEqualTo("MEASURE_PENDING"); - assertThat(inbound.getActualGrossWeightKg()).isNull(); - verify(repository).updateMeasurement(measurement); - verify(repository).updateInbound(inbound); + @Test + void submitRejectsWhenThereIsNoWeightImage() { + InboundOrderEntity inbound = inbound("MEASURING"); + InboundMeasurementEntity measurement = new InboundMeasurementEntity(); + measurement.setId(30L); + measurement.setStatus("DRAFT"); + measurement.setVersion(0); + InboundMeasurementItemEntity item = new InboundMeasurementItemEntity(); + item.setPackageCount(1); + item.setSourceImageFileId(500L); + when(repository.findInbound(1L, 10L)).thenReturn(inbound); + when(repository.findMeasurement(1L, 10L, 30L)).thenReturn(measurement); + when(repository.listItems(1L, 30L)).thenReturn(List.of(item)); + when(repository.listWeights(1L, 10L)).thenReturn(List.of()); + + assertThatThrownBy(() -> service.submit(1L, 10L, 9L, + new InboundMeasurementRequests.SubmitRequest(30L, 0))) + .isInstanceOf(BizException.class) + .hasMessageContaining("至少上传并确认一张称重图片"); + + verify(repository, never()).updateMeasurement(any()); + verify(repository, never()).updateInbound(any()); } @Test