修复超限单箱测量尺寸计算
This commit is contained in:
@@ -267,7 +267,7 @@ public class CartonMeasurementService {
|
|||||||
|
|
||||||
private void applyCalculatedValues(InboundMeasurementItemEntity item,
|
private void applyCalculatedValues(InboundMeasurementItemEntity item,
|
||||||
CustomerDimensionWeightingService.RuleSet dimensionRules) {
|
CustomerDimensionWeightingService.RuleSet dimensionRules) {
|
||||||
CustomerDimensionWeightingService.WeightedDimensions weighted = dimensionRules.resolve(
|
CustomerDimensionWeightingService.WeightedDimensions weighted = dimensionRules.resolveDeviceMeasurement(
|
||||||
item.getLengthCm(), item.getWidthCm(), item.getHeightCm());
|
item.getLengthCm(), item.getWidthCm(), item.getHeightCm());
|
||||||
BigDecimal unitRaw = weighted.rawVolumeCbm();
|
BigDecimal unitRaw = weighted.rawVolumeCbm();
|
||||||
BigDecimal unitVolume = weighted.unitVolumeCbm();
|
BigDecimal unitVolume = weighted.unitVolumeCbm();
|
||||||
|
|||||||
+19
@@ -64,6 +64,25 @@ public class CustomerDimensionWeightingService {
|
|||||||
.orElseGet(() -> rules.get(rules.size() - 1)
|
.orElseGet(() -> rules.get(rules.size() - 1)
|
||||||
.weightedActualDimensions(lengthCm, widthCm, heightCm));
|
.weightedActualDimensions(lengthCm, widthCm, heightCm));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public WeightedDimensions resolveDeviceMeasurement(BigDecimal lengthCm, BigDecimal widthCm,
|
||||||
|
BigDecimal heightCm) {
|
||||||
|
List<BigDecimal> measured = sortedDimensions(lengthCm, widthCm, heightCm);
|
||||||
|
return rules.stream()
|
||||||
|
.filter(rule -> rule.contains(measured))
|
||||||
|
.findFirst()
|
||||||
|
.map(Rule::weighted)
|
||||||
|
.orElseGet(() -> actualDimensions(lengthCm, widthCm, heightCm));
|
||||||
|
}
|
||||||
|
|
||||||
|
private WeightedDimensions actualDimensions(BigDecimal lengthCm, BigDecimal widthCm,
|
||||||
|
BigDecimal heightCm) {
|
||||||
|
BigDecimal rawVolume = lengthCm.multiply(widthCm).multiply(heightCm)
|
||||||
|
.divide(CUBIC_CENTIMETERS_PER_CBM, 6, RoundingMode.HALF_UP);
|
||||||
|
return new WeightedDimensions(null, null, null, lengthCm, widthCm, heightCm,
|
||||||
|
rawVolume, rawVolume.setScale(3, RoundingMode.HALF_UP),
|
||||||
|
"ACTUAL_DIMENSION_V1");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public record WeightedDimensions(
|
public record WeightedDimensions(
|
||||||
|
|||||||
Reference in New Issue
Block a user