fix: reserve locations from measured volume

This commit is contained in:
2026-09-04 15:05:44 +08:00
parent 5e013489e0
commit 8a0366af5b
2 changed files with 39 additions and 3 deletions
@@ -174,9 +174,14 @@ public class MeasurementLocationOccupationService {
return order.getActualVolumeCbm();
}
var measurement = measurements.findLatestMeasurement(tenantId, inboundId);
if (measurement != null && measurement.getOriginalVolumeCbm() != null
&& measurement.getOriginalVolumeCbm().signum() > 0) {
return measurement.getOriginalVolumeCbm();
if (measurement != null) {
BigDecimal measuredVolume = positive(measurement.getTotalVolumeCbm());
BigDecimal declaredVolume = positive(measurement.getOriginalVolumeCbm());
if (measuredVolume != null || declaredVolume != null) {
if (measuredVolume == null) return declaredVolume;
if (declaredVolume == null) return measuredVolume;
return measuredVolume.max(declaredVolume);
}
}
if (order.getOrderId() == null || order.getOrderId() <= 0) {
throw new BizException(ResultCode.CONFLICT, "入库单缺少有效实测或客户申报体积");
@@ -200,6 +205,10 @@ public class MeasurementLocationOccupationService {
throw new BizException(ResultCode.CONFLICT, "入库单缺少有效实测或客户申报体积");
}
private static BigDecimal positive(BigDecimal value) {
return value != null && value.signum() > 0 ? value : null;
}
private static int requirePackageCount(InboundOrderEntity order) {
if (order.getTotalPackageCount() == null || order.getTotalPackageCount() <= 0) {
throw new BizException(ResultCode.CONFLICT, "入库单缺少有效总箱数");