From 26c2d7aacddbc4dd8226fba010959ee2944eb057 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Thu, 3 Sep 2026 21:29:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AE=BE=E5=A4=87=E6=B5=8B?= =?UTF-8?q?=E9=87=8F=E7=AE=B1=E8=A7=84=E8=AE=A1=E7=AE=97=E7=BC=96=E8=AF=91?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/CustomerDimensionWeightingService.java | 2 +- .../CustomerDimensionWeightingServiceTest.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/firstleg/src/main/java/com/baiyue/firstleg/service/CustomerDimensionWeightingService.java b/firstleg/src/main/java/com/baiyue/firstleg/service/CustomerDimensionWeightingService.java index 637dd601b..a4c1c73ce 100644 --- a/firstleg/src/main/java/com/baiyue/firstleg/service/CustomerDimensionWeightingService.java +++ b/firstleg/src/main/java/com/baiyue/firstleg/service/CustomerDimensionWeightingService.java @@ -72,7 +72,7 @@ public class CustomerDimensionWeightingService { return rules.stream() .filter(rule -> rule.contains(measured)) .findFirst() - .map(Rule::weighted) + .map(rule -> rule.weightedActualDimensions(lengthCm, widthCm, heightCm)) .orElseGet(() -> actualDimensions(lengthCm, widthCm, heightCm)); } diff --git a/firstleg/src/test/java/com/baiyue/firstleg/service/CustomerDimensionWeightingServiceTest.java b/firstleg/src/test/java/com/baiyue/firstleg/service/CustomerDimensionWeightingServiceTest.java index ad60942b4..ba21cdcd6 100644 --- a/firstleg/src/test/java/com/baiyue/firstleg/service/CustomerDimensionWeightingServiceTest.java +++ b/firstleg/src/test/java/com/baiyue/firstleg/service/CustomerDimensionWeightingServiceTest.java @@ -38,6 +38,18 @@ class CustomerDimensionWeightingServiceTest { assertThat(weighted.unitVolumeCbm()).isEqualByComparingTo("0.003"); } + @Test + void deviceMeasurementsUseActualDimensionsAndAddEachSideWhenRuleMatches() { + var weighted = service.load(10001L).resolveDeviceMeasurement( + new BigDecimal("10"), new BigDecimal("10"), new BigDecimal("10")); + + assertThat(weighted.boxType()).isEqualTo(CustomerDimensionBoxType.SMALL); + assertThat(weighted.outerLengthCm()).isEqualByComparingTo("14.000"); + assertThat(weighted.outerWidthCm()).isEqualByComparingTo("14.000"); + assertThat(weighted.outerHeightCm()).isEqualByComparingTo("14.000"); + assertThat(weighted.calculationRuleVersion()).isEqualTo("CUSTOMER_DIMENSION_SMALL_V3"); + } + @Test void cartonRotationDoesNotChangeTheMatchedRule() { var weighted = service.load(10001L).resolve(