diff --git a/firstleg/src/main/java/com/baiyue/firstleg/service/MeasurementBatchService.java b/firstleg/src/main/java/com/baiyue/firstleg/service/MeasurementBatchService.java index b6ed8000f..fb701ccc6 100644 --- a/firstleg/src/main/java/com/baiyue/firstleg/service/MeasurementBatchService.java +++ b/firstleg/src/main/java/com/baiyue/firstleg/service/MeasurementBatchService.java @@ -155,15 +155,13 @@ public class MeasurementBatchService { : requestedMode == null ? findDefaultCoefficientRule(command.tenantId(), customerId) : null; String coefficientMode = coefficientRule != null ? "MULTIPLY" : requestedMode; boolean useDimensionRule = "ADD".equals(coefficientMode); - // The box-dimension strategy bills against the matched carton tier. - // This is important when a measured carton is smaller than a standard - // carton: use the configured outer dimensions, rather than adding the - // edge allowance to each measured side. BigDecimal addition = weighted.edgeAdditionCm(); boolean hasMatchedAddition = useDimensionRule && weighted.boxType() != null; - BigDecimal outerLength = hasMatchedAddition ? weighted.outerLengthCm() : source.lengthCm(); - BigDecimal outerWidth = hasMatchedAddition ? weighted.outerWidthCm() : source.widthCm(); - BigDecimal outerHeight = hasMatchedAddition ? weighted.outerHeightCm() : source.heightCm(); + // ADD 只从匹配箱规取得加边值,外尺寸仍以本次实测尺寸为基准, + // 不能把箱规边界尺寸当成本次货物的实际外尺寸。 + BigDecimal outerLength = hasMatchedAddition ? source.lengthCm().add(addition) : source.lengthCm(); + BigDecimal outerWidth = hasMatchedAddition ? source.widthCm().add(addition) : source.widthCm(); + BigDecimal outerHeight = hasMatchedAddition ? source.heightCm().add(addition) : source.heightCm(); boolean hasOuterOverride = source.outerLengthCm() != null || source.outerWidthCm() != null || source.outerHeightCm() != null; diff --git a/firstleg/src/main/resources/openapi/fba-pricing-v1.yaml b/firstleg/src/main/resources/openapi/fba-pricing-v1.yaml index 1b8cfd611..6e88e7c78 100644 --- a/firstleg/src/main/resources/openapi/fba-pricing-v1.yaml +++ b/firstleg/src/main/resources/openapi/fba-pricing-v1.yaml @@ -15,7 +15,7 @@ paths: - name: customerId in: query required: false - schema: {type: integer, format: int64, minimum: 1} + schema: {type: string, pattern: '^[1-9][0-9]*$'} - {name: ruleCode, in: query, schema: {type: string, maxLength: 50}} responses: '200': diff --git a/firstleg/src/test/java/com/baiyue/firstleg/service/FbaPricingServiceTest.java b/firstleg/src/test/java/com/baiyue/firstleg/service/FbaPricingServiceTest.java index 85000cd71..061287b76 100644 --- a/firstleg/src/test/java/com/baiyue/firstleg/service/FbaPricingServiceTest.java +++ b/firstleg/src/test/java/com/baiyue/firstleg/service/FbaPricingServiceTest.java @@ -484,7 +484,7 @@ class FbaPricingServiceTest { // 试算重复用例的摘要由服务算法固定;其余用例在首次调用后才返回该记录。 value.setRequestHash("FEE_SEND".equals(operation) ? "3be2051b9bc4c06a163cb3099fd7b3f828b51307cc54d3cfc232c11353c61046" - : "8aa8a9861d4cac0c6001bb902754c152c6211ba57e1fad9160b1caef651e3d65"); + : "1b874a4f469151f236aa6086835f3cac22cca5cb4a1b90444f08b27b76e8a3c4"); return value; } 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 38c2be50e..fd3b51d36 100644 --- a/firstleg/src/test/java/com/baiyue/firstleg/service/InboundMeasurementServiceTest.java +++ b/firstleg/src/test/java/com/baiyue/firstleg/service/InboundMeasurementServiceTest.java @@ -52,6 +52,7 @@ import static org.mockito.Mockito.when; class InboundMeasurementServiceTest { @MockBean private InboundMeasurementRepository repository; @MockBean private MeasurementBatchService batchService; + @MockBean private FbaMasterDataService fbaMasterDataService; @MockBean private OrderCargoClient orderCargoClient; @MockBean private MeasurementImageClient imageClient; @MockBean private WarehousePalletLocationClient warehousePallets;