From 3ff6604c75c887f4056ee03545d204bc9323286c Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 15 十月 2026 17:47:19 +0800
Subject: [PATCH] feat(mes): 新增报工设备快照功能并优化状态校验

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/qc/MesQcReportApiImpl.java |   40 +++++++++++++++++++++++++++++++++++-----
 1 files changed, 35 insertions(+), 5 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/qc/MesQcReportApiImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/qc/MesQcReportApiImpl.java
index 19e538a..377edbf 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/qc/MesQcReportApiImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/api/qc/MesQcReportApiImpl.java
@@ -352,7 +352,7 @@
                 row.setGroupHidden(i == 0 ? "" : GROUP_CELL_HIDDEN);
                 row.setRequirement(i < anchorCount
                         ? anchorRequirement(entry.indicator(), row)
-                        : defaultStr(row.getStandardValue()));
+                        : defaultStr(row.getRequirement()));
                 items.add(row);
             }
         }
@@ -394,7 +394,7 @@
     /** 缁勫ご鐨勩�屾娴嬭姹傘�嶆斁鍏紡锛堝垎缁勯」鍙湁鍏紡銆佹病鏈夎鏍硷級锛屾病閰嶅叕寮忓氨鐓у父鏀炬爣鍑嗚姹� */
     private static String anchorRequirement(MesQcIndicatorDO head, MesQcReportItemRespDTO row) {
         String formula = defaultStr(head.getFormulaText());
-        return formula.isEmpty() ? defaultStr(row.getStandardValue()) : formula;
+        return formula.isEmpty() ? defaultStr(row.getRequirement()) : formula;
     }
 
     /** 缁勫ご娌℃帓杩涙湰鍗曟椂琛ュ嚭鏉ョ殑閭d竴琛岋細鍙湁鎸囨爣鏈韩锛屾病鏈夊崟鎹 */
@@ -445,8 +445,11 @@
                                           String detailRemark, Map<Long, MesMdUnitMeasureDO> unitMap,
                                           MesMdItemDO item) {
         MesMdUnitMeasureDO unit = unitMap.get(line.unitMeasureId());
-        if (unit == null && item != null) {
-            unit = unitMap.get(item.getUnitMeasureId());
+        String measureUnit = inspectionUnit(indicator, unit);
+        String requirement = inspectionRequirement(line.minThreshold(), line.maxThreshold(),
+                line.checkMethod(), line.remark());
+        if ((line.minThreshold() != null || line.maxThreshold() != null) && !measureUnit.isEmpty()) {
+            requirement += " " + measureUnit;
         }
         return new MesQcReportItemRespDTO()
                 .setIndicatorId(indicator.getId())
@@ -455,8 +458,9 @@
                 .setCheckMethod(defaultStr(line.checkMethod()))
                 .setTool(defaultStr(line.tool()))
                 .setStandardValue(plain(line.standardValue()))
+                .setRequirement(requirement)
                 .setActualValue(defaultStr(value))
-                .setUnit(unit == null ? "" : defaultStr(unit.getName()))
+                .setUnit(measureUnit)
                 .setUpperLimit(line.maxThreshold())
                 .setLowerLimit(line.minThreshold())
                 .setValueType(indicator.getResultType())
@@ -469,6 +473,32 @@
                 .setRemark(mergeRemark(line.remark(), detailRemark));
     }
 
+    /** 妫�娴嬪崟浣嶆潵鑷娴嬮」鎴栨楠岃锛屼骇鍝佺殑鍖呰鍗曚綅涓嶈兘浣滀负妫�娴嬪崟浣嶃�� */
+    static String inspectionUnit(MesQcIndicatorDO indicator, MesMdUnitMeasureDO unit) {
+        if (MesQcIndicatorItemTypeEnum.isGroup(indicator.getItemType())) {
+            return "";
+        }
+        return unit == null ? defaultStr(indicator.getUnitText()) : defaultStr(unit.getName());
+    }
+
+    /** 鏁板�奸」灞曠ず鍏佽鍖洪棿锛涘畾鎬у強鍒嗙骇椤圭洰淇濈暀鏂规姝f枃涓殑瀹屾暣瑕佹眰銆� */
+    static String inspectionRequirement(BigDecimal lower, BigDecimal upper, String method, String remark) {
+        if (lower != null && upper != null) {
+            return lower.compareTo(upper) == 0 ? "=" + plain(lower) : plain(lower) + "锝�" + plain(upper);
+        }
+        if (lower != null) {
+            return "鈮�" + plain(lower);
+        }
+        if (upper != null) {
+            return "鈮�" + plain(upper);
+        }
+        if (method != null && method.startsWith("瑕佹眰锛�")) {
+            int end = method.indexOf("锛涙柟娉曪細");
+            return end < 0 ? method.substring(3) : method.substring(3, end);
+        }
+        return remark != null && !remark.startsWith("10鏈�8鏃ヨ嚦14鏃ヤ笟鍔¢摼") ? remark : "";
+    }
+
     // ==================== 鍙栬锛堝洓绫诲悓鏋勶級 ====================
 
     private List<LineRow> loadIqcLines(Long qcId) {

--
Gitblit v1.9.3