fix(wms/coil): 修复理论厚度与长度计算中宽度为零的除零异常
在钢卷理论计算逻辑中,当实际宽度为零时,计算理论厚度和理论长度会导致除零异常。调整前,仅校验实际长度不为空;调整后,增加实际宽度大于零的校验,避免无效计算。同时修正理论厚度和理论长度的计算公式,统一使用乘1000替代除1000,确保计算精度和单位转换正确。
This commit is contained in:
@@ -1089,15 +1089,15 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
BigDecimal volume = weight.multiply(new BigDecimal("1000")).divide(new BigDecimal("7.85"), 10, RoundingMode.HALF_UP);
|
BigDecimal volume = weight.multiply(new BigDecimal("1000")).divide(new BigDecimal("7.85"), 10, RoundingMode.HALF_UP);
|
||||||
|
|
||||||
// 计算理论厚度(需要实测长度)
|
// 计算理论厚度(需要实测长度)
|
||||||
if (bo.getTheoreticalThickness() == null && bo.getActualLength() != null) {
|
if (bo.getTheoreticalThickness() == null && bo.getActualLength() != null && bo.getActualWidth().compareTo(BigDecimal.ZERO) > 0) {
|
||||||
BigDecimal length = new BigDecimal(bo.getActualLength());
|
BigDecimal length = new BigDecimal(bo.getActualLength());
|
||||||
BigDecimal theoreticalThickness = volume.divide(length, 10, RoundingMode.HALF_UP).divide(width, 3, RoundingMode.HALF_UP).divide(new BigDecimal("1000"), 3, RoundingMode.HALF_UP);
|
BigDecimal theoreticalThickness = volume.divide(length, 10, RoundingMode.HALF_UP).divide(width, 10, RoundingMode.HALF_UP).multiply(new BigDecimal("1000"));
|
||||||
bo.setTheoreticalThickness(theoreticalThickness);
|
bo.setTheoreticalThickness(theoreticalThickness);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 计算理论长度
|
// 计算理论长度
|
||||||
if (bo.getTheoreticalLength() == null) {
|
if (bo.getTheoreticalLength() == null) {
|
||||||
BigDecimal theoreticalLength = volume.divide(thickness, 10, RoundingMode.HALF_UP).divide(width, 10, RoundingMode.HALF_UP).divide(new BigDecimal("1000"), 3, RoundingMode.HALF_UP);
|
BigDecimal theoreticalLength = volume.divide(thickness, 10, RoundingMode.HALF_UP).divide(width, 10, RoundingMode.HALF_UP).multiply(new BigDecimal("1000"));
|
||||||
bo.setTheoreticalLength(theoreticalLength);
|
bo.setTheoreticalLength(theoreticalLength);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user