From 36b1e3da8258747625a50e58f7e10539a15e5a0a Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 12 Jun 2026 16:00:34 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(warning):=20=E8=A7=A3=E5=86=B3=E9=80=80?= =?UTF-8?q?=E7=81=AB=E5=B7=A5=E5=BA=8F=E5=91=8A=E8=AD=A6=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 退火工序没有actionId时不创建代操作记录,直接设置actionType=600 - 当actionId为空时使用bo中的actionType作为兜底方案 - 确保退火工序的告警能够正确关联到对应的操作类型 --- .../java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java | 4 ++++ .../com/klp/service/impl/WmsMaterialWarningServiceImpl.java | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java index 609cc1df..79780c1a 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java @@ -1870,6 +1870,10 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { } // 检查长度/厚度偏差并插入告警 + // 退火工序没有actionId(不创建代操作记录),直接设置actionType=600 + if ("annealing".equals(qrcodeStepType)) { + bo.setActionType(600); + } materialWarningService.checkAndInsertWarnings(newCoil, bo); // 如果实际库区id为-1,则清空钢卷上的实际库区绑定 diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialWarningServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialWarningServiceImpl.java index 77b60f97..dcebe400 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialWarningServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialWarningServiceImpl.java @@ -198,6 +198,10 @@ public class WmsMaterialWarningServiceImpl implements IWmsMaterialWarningService log.warn("查询产线类型失败, actionId={}", bo.getActionId(), e); } } + // 兜底:如果没有actionId(如退火工序不创建代操作记录),直接使用bo中的actionType + if (actionType == null && bo != null && bo.getActionType() != null) { + actionType = bo.getActionType(); + } if (actionType != null) { for (WmsMaterialWarning w : warnings) { w.setActionType(actionType); From f0656b57d45b7ed2d70703b7e78692aad4fceb73 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Sat, 13 Jun 2026 10:22:22 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix(wms):=20=E8=A7=A3=E5=86=B3=E6=9D=90?= =?UTF-8?q?=E6=96=99=E5=8E=9A=E5=BA=A6=E9=A2=84=E8=AD=A6=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E7=B2=BE=E5=BA=A6=E6=AF=94=E8=BE=83=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 统一将理论厚度和规格厚度四舍五入到3位小数后再进行比较 - 避免因高精度尾数导致的比较结果与存储值不一致问题 - 对阈值也进行相同的精度处理确保比较逻辑正确 - 修复偏差值计算中重复精度转换的问题 - 优化偏差率计算中的除法精度控制 --- .../service/impl/WmsMaterialWarningServiceImpl.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialWarningServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialWarningServiceImpl.java index dcebe400..f6c3f332 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialWarningServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialWarningServiceImpl.java @@ -285,16 +285,19 @@ public class WmsMaterialWarningServiceImpl implements IWmsMaterialWarningService } // 理论厚度 - 规格厚度 > 阈值 → 触发 - BigDecimal diff = theoreticalThickness.subtract(specThickness); - if (diff.compareTo(threshold) > 0) { + // 先统一 round 到 3 位小数再比较,避免理论厚度公式计算引入的高精度尾数 + // 导致比较结果与存储值不一致(如 diff=-0.0096 > -0.01 触发,但存储时都 round 成 -0.010) + BigDecimal diff = theoreticalThickness.subtract(specThickness).setScale(3, RoundingMode.HALF_UP); + BigDecimal scaledThreshold = threshold.setScale(3, RoundingMode.HALF_UP); + if (diff.compareTo(scaledThreshold) > 0) { WmsMaterialWarning warning = new WmsMaterialWarning(); warning.setCoilId(coil.getCoilId()); warning.setWarningType("THICKNESS"); 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) + warning.setAllowDeviation(scaledThreshold); + warning.setDeviationValue(diff); + BigDecimal rate = diff.divide(specThickness.setScale(3, RoundingMode.HALF_UP), 10, RoundingMode.HALF_UP) .multiply(new BigDecimal("100")).setScale(1, RoundingMode.HALF_UP); warning.setDeviationRate(rate); warning.setWarningLevel("WARNING");