From 2b1bfd1f5fa86378f2a86541d16d7e46963a0631 Mon Sep 17 00:00:00 2001
From: zhizhijie <zhizhijie@users.noreply.gitee.com>
Date: 星期二, 08 九月 2026 15:29:31 +0800
Subject: [PATCH] feat: 汇总大表日期格式/小数位复核+VBA列宽宏+DataView滚动加载+RULE_004双向与P005阈值联动

---
 traffic-audit-server/src/main/java/com/trafficaudit/rulemanage/controller/RuleManageController.java |   30 ++++++++++++++++++++++++++++--
 1 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/traffic-audit-server/src/main/java/com/trafficaudit/rulemanage/controller/RuleManageController.java b/traffic-audit-server/src/main/java/com/trafficaudit/rulemanage/controller/RuleManageController.java
index 1ed1c90..b55fea1 100644
--- a/traffic-audit-server/src/main/java/com/trafficaudit/rulemanage/controller/RuleManageController.java
+++ b/traffic-audit-server/src/main/java/com/trafficaudit/rulemanage/controller/RuleManageController.java
@@ -8,6 +8,8 @@
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
 import java.util.List;
 
 /** 瑙勫垯绠$悊锛氭寜鎶ヨ〃绫诲瀷鏌ョ湅/鍚仠/璋冩暣闃堝�� */
@@ -26,7 +28,9 @@
             qw.eq(AuditRule::getReportType, reportType.trim());
         }
         qw.orderByAsc(AuditRule::getSortOrder);
-        return Result.ok(ruleMapper.selectList(qw));
+        List<AuditRule> list = ruleMapper.selectList(qw);
+        for (AuditRule r : list) syncThresholdText(r); // 鍚嶇О/璇存槑闅忛槇鍊煎姩鎬佸睍绀猴紙濡� 卤10% 鈫� 卤20%锛�
+        return Result.ok(list);
     }
 
     /** 鍚仠瑙勫垯 */
@@ -47,11 +51,33 @@
         if (body.getId() == null) return Result.error("缂哄皯瑙勫垯ID");
         AuditRule rule = ruleMapper.selectById(body.getId());
         if (rule == null) return Result.error("瑙勫垯涓嶅瓨鍦�");
+        String oldThreshold = rule.getThreshold();
         if (body.getThreshold() != null) rule.setThreshold(body.getThreshold());
         if (body.getAlertLevel() != null) rule.setAlertLevel(body.getAlertLevel());
         if (body.getDescription() != null) rule.setDescription(body.getDescription());
+        // 闃堝�煎彉鍖栨椂鍚屾瑙勫垯鍚嶇О涓庤鏄庯紙鍚嶇О/璇存槑閲岀殑 卤N% 鎸夋柊闃堝�兼敼鍐欙級锛屽苟闅忎繚瀛樻寔涔呭寲
+        if (body.getThreshold() != null && !body.getThreshold().equals(oldThreshold)) {
+            syncThresholdText(rule);
+        }
         rule.setUpdatedAt(LocalDateTime.now());
         ruleMapper.updateById(rule);
         return Result.ok("宸蹭繚瀛�");
     }
-}
+
+    /** 卤N% 瀛楁牱鍖归厤锛堝悕绉�/璇存槑涓殢闃堝�煎姩鎬佸彉鍖栫殑鐗囨锛� */
+    private static final Pattern PCT_TOKEN = Pattern.compile("卤\\s*\\d+(?:\\.\\d+)?\\s*%");
+
+    /** 鎶婃枃鏈腑鐨� 卤N% 鏇挎崲涓� 卤threshold%锛堝惈宸插甫 卤 鐨勫墠缂�锛岄伩鍏嶅弻 卤锛� */
+    private String decorateThresholdText(String text, String threshold) {
+        if (text == null || text.trim().isEmpty() || threshold == null || threshold.trim().isEmpty()) return text;
+        String token = "卤" + threshold.trim() + "%";
+        return PCT_TOKEN.matcher(text).replaceAll(Matcher.quoteReplacement(token));
+    }
+
+    /** 鍚嶇О/璇存槑闅忛槇鍊煎悓姝ワ紙璇诲垪琛ㄦ椂涔熷姩鎬佹牎姝o紝DB 涓棫鏂囨湰涓嶉樆濉炴樉绀猴級 */
+    private void syncThresholdText(AuditRule rule) {
+        if (rule == null || rule.getThreshold() == null) return;
+        rule.setRuleName(decorateThresholdText(rule.getRuleName(), rule.getThreshold()));
+        rule.setDescription(decorateThresholdText(rule.getDescription(), rule.getThreshold()));
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.1