From a9e6c0b1ddc8c2683ea604f3d5146ce8c310816e Mon Sep 17 00:00:00 2001
From: zhizhijie <zhizhijie@users.noreply.gitee.com>
Date: 星期五, 04 九月 2026 16:54:34 +0800
Subject: [PATCH] fix: 整车吨位按平均吨位口径审核、提示数字去科学计数;拆分导入按目标期取月页签(重导04-06验证);数据查看全屏可翻页 + 测试报告

---
 traffic-audit-server/src/main/java/com/trafficaudit/auditengine/service/AuditEngineService.java |   30 +++++++++++++++++++++++-------
 1 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/traffic-audit-server/src/main/java/com/trafficaudit/auditengine/service/AuditEngineService.java b/traffic-audit-server/src/main/java/com/trafficaudit/auditengine/service/AuditEngineService.java
index 8d16e0c..5d343bb 100644
--- a/traffic-audit-server/src/main/java/com/trafficaudit/auditengine/service/AuditEngineService.java
+++ b/traffic-audit-server/src/main/java/com/trafficaudit/auditengine/service/AuditEngineService.java
@@ -1679,15 +1679,29 @@
         return null;
     }
 
-    /** 鏁板�艰寖鍥存鏌ワ紙濡� 鏁磋溅鍚ㄤ綅 4鈮や笖鈮�40锛� */
+    /** 鏁板�艰寖鍥存鏌ワ紱鏁磋溅鍚ㄤ綅鎸夆�滃钩鍧囧惃浣�=鏁磋溅鍚ㄤ綅/鏁磋溅鏁扳�濆彛寰勫垽瀹� 4~40 */
     private AuditResult checkOutRange(AuditRule rule, H2032EnterpriseMonthly report) {
         String[] bounds = rule.getThreshold().split(",");
         if (bounds.length < 2) return null;
-        double value = getH2032FieldValue(report, rule.getCheckField());
+        String field = rule.getCheckField();
+        String label = h2032FieldLabel(field);
+        double value;
+        if ("tonsWhole".equals(field)) {
+            double vehicles = report.getVehicleWhole() == null ? 0.0 : report.getVehicleWhole().doubleValue();
+            double tons = nvl(report.getTonsWhole());
+            if (vehicles > 0) {
+                value = tons / vehicles;
+                label = "鏁磋溅骞冲潎鍚ㄤ綅(鏁磋溅鍚ㄤ綅/鏁磋溅鏁�)";
+            } else {
+                value = tons; // 鏃犳暣杞︽暟浣嗘湁鍚ㄤ綅鏃朵粛鎸夊師鍚ㄤ綅鍒ゅ畾
+            }
+        } else {
+            value = getH2032FieldValue(report, field);
+        }
         double low = Double.parseDouble(bounds[0].trim());
         double high = Double.parseDouble(bounds[1].trim());
         if (value > 0 && (value < low || value > high)) {
-            return buildResult(rule, report, h2032FieldLabel(rule.getCheckField()) + "=" + fmt(value),
+            return buildResult(rule, report, label + "=" + fmt(value),
                 "鑼冨洿 " + fmt(low) + "~" + fmt(high), "瓒呭嚭鑼冨洿");
         }
         return null;
@@ -1805,18 +1819,20 @@
     }
 
     private String fmt(double v) {
-        if (v == Math.floor(v) && !Double.isInfinite(v)) {
+        if (v == Math.floor(v) && !Double.isInfinite(v) && Math.abs(v) < 1e15) {
             return String.valueOf((long) v);
         }
-        return String.valueOf(Math.round(v * 100.0) / 100.0);
+        return java.math.BigDecimal.valueOf(v).setScale(2, java.math.RoundingMode.HALF_UP)
+            .stripTrailingZeros().toPlainString();
     }
 
     /** 鍗犳瘮/灏忔暟鍊硷細淇濈暀 4 浣嶅皬鏁� */
     private String fmt4(double v) {
-        if (v == Math.floor(v) && !Double.isInfinite(v)) {
+        if (v == Math.floor(v) && !Double.isInfinite(v) && Math.abs(v) < 1e15) {
             return String.valueOf((long) v);
         }
-        return String.valueOf(Math.round(v * 10000.0) / 10000.0);
+        return java.math.BigDecimal.valueOf(v).setScale(4, java.math.RoundingMode.HALF_UP)
+            .stripTrailingZeros().toPlainString();
     }
 
     // ========== H2031 鏃呭瀹℃牳 ==========

--
Gitblit v1.9.1