fix(wms): 修正材料预警服务中的数值精度计算问题
- 为理论值、实际值、允许偏差和偏差值设置统一的3位小数精度 - 将偏差率计算精度从4位小数调整为1位小数 - 修正厚度偏差计算公式中的减法运算顺序 - 在警告消息中应用相同的数值精度格式化 - 确保所有BigDecimal运算都使用HALF_UP舍入模式
This commit is contained in:
@@ -201,13 +201,13 @@ public class WmsMaterialWarningServiceImpl implements IWmsMaterialWarningService
|
||||
WmsMaterialWarning warning = new WmsMaterialWarning();
|
||||
warning.setCoilId(coil.getCoilId());
|
||||
warning.setWarningType("LENGTH");
|
||||
warning.setTheoreticalVal(theoreticalLength);
|
||||
warning.setActualVal(actual);
|
||||
warning.setAllowDeviation(threshold);
|
||||
warning.setDeviationValue(actual.subtract(theoreticalLength));
|
||||
warning.setDeviationRate(rate.multiply(new BigDecimal("100")).setScale(4, RoundingMode.HALF_UP));
|
||||
warning.setTheoreticalVal(theoreticalLength.setScale(3, RoundingMode.HALF_UP));
|
||||
warning.setActualVal(actual.setScale(3, RoundingMode.HALF_UP));
|
||||
warning.setAllowDeviation(threshold.setScale(3, RoundingMode.HALF_UP));
|
||||
warning.setDeviationValue(actual.subtract(theoreticalLength).setScale(3, RoundingMode.HALF_UP));
|
||||
warning.setDeviationRate(rate.multiply(new BigDecimal("100")).setScale(1, RoundingMode.HALF_UP));
|
||||
warning.setWarningLevel("WARNING");
|
||||
warning.setWarningMsg("钢卷长度偏差超过阈值,理论长度=" + theoreticalLength + "m,实测长度=" + actualLength + "mm");
|
||||
warning.setWarningMsg("钢卷长度偏差超过阈值,理论长度=" + theoreticalLength.setScale(3, RoundingMode.HALF_UP) + "m,实测长度=" + actualLength + "mm");
|
||||
warning.setWarningStatus(0);
|
||||
warnings.add(warning);
|
||||
}
|
||||
@@ -243,15 +243,15 @@ public class WmsMaterialWarningServiceImpl implements IWmsMaterialWarningService
|
||||
WmsMaterialWarning warning = new WmsMaterialWarning();
|
||||
warning.setCoilId(coil.getCoilId());
|
||||
warning.setWarningType("THICKNESS");
|
||||
warning.setTheoreticalVal(theoreticalThickness);
|
||||
warning.setActualVal(specThickness);
|
||||
warning.setAllowDeviation(threshold);
|
||||
warning.setDeviationValue(specThickness.subtract(theoreticalThickness));
|
||||
warning.setTheoreticalVal(theoreticalThickness.setScale(3, RoundingMode.HALF_UP));
|
||||
warning.setActualVal(specThickness.setScale(3, RoundingMode.HALF_UP));
|
||||
warning.setAllowDeviation(threshold.setScale(3, RoundingMode.HALF_UP));
|
||||
warning.setDeviationValue(theoreticalThickness.subtract(specThickness).setScale(3, RoundingMode.HALF_UP));
|
||||
BigDecimal rate = diff.divide(specThickness, 10, RoundingMode.HALF_UP)
|
||||
.multiply(new BigDecimal("100")).setScale(4, RoundingMode.HALF_UP);
|
||||
.multiply(new BigDecimal("100")).setScale(1, RoundingMode.HALF_UP);
|
||||
warning.setDeviationRate(rate);
|
||||
warning.setWarningLevel("WARNING");
|
||||
warning.setWarningMsg("钢卷厚度偏差超出允许范围,理论厚度=" + theoreticalThickness + "mm,规格厚度=" + specThickness + "mm");
|
||||
warning.setWarningMsg("钢卷厚度偏差超出允许范围,理论厚度=" + theoreticalThickness.setScale(3, RoundingMode.HALF_UP) + "mm,规格厚度=" + specThickness.setScale(3, RoundingMode.HALF_UP) + "mm");
|
||||
warning.setWarningStatus(0);
|
||||
warnings.add(warning);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user