From bc822c6ca3e1ce3e16a38ba877449fc697be9511 Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期二, 06 十月 2026 14:09:41 +0800
Subject: [PATCH] fix(holiday): 折线图按标签精度绘制

---
 traffic-audit-server/src/main/java/com/trafficaudit/holiday/service/HolidayTrendChartService.java |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/traffic-audit-server/src/main/java/com/trafficaudit/holiday/service/HolidayTrendChartService.java b/traffic-audit-server/src/main/java/com/trafficaudit/holiday/service/HolidayTrendChartService.java
index e0b9c88..d01765e 100644
--- a/traffic-audit-server/src/main/java/com/trafficaudit/holiday/service/HolidayTrendChartService.java
+++ b/traffic-audit-server/src/main/java/com/trafficaudit/holiday/service/HolidayTrendChartService.java
@@ -49,6 +49,7 @@
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.DecimalFormat;
 import java.text.NumberFormat;
 import java.util.ArrayList;
@@ -76,6 +77,7 @@
     private static final double RIGHT_LABEL_BAND = 74.0;
     private static final double ITEM_LABEL_GAP = 10.0;
     private static final float HALO_OUTLINE_WIDTH = 4.0f;
+    private static final int PERCENT_ITEM_LABEL_DECIMALS = 1;
     private static final Color ITEM_LABEL_COLOR = new Color(55, 55, 55);
     private static final Color[] SERIES_COLORS = {
             new Color(192, 80, 77),
@@ -107,7 +109,7 @@
             for (int i = 0; i < item.getValues().size(); i++) {
                 BigDecimal value = item.getValues().get(i);
                 if (value != null) {
-                    xySeries.add(i, value.doubleValue());
+                    xySeries.add(i, displayValue(value, percentAxis, valueDecimals).doubleValue());
                 }
             }
             dataset.addSeries(xySeries);
@@ -1113,10 +1115,16 @@
         return total;
     }
 
+    static BigDecimal displayValue(BigDecimal value, boolean percentItemLabels, int valueDecimals) {
+        if (value == null) return null;
+        int scale = percentItemLabels ? PERCENT_ITEM_LABEL_DECIMALS + 2 : valueDecimals;
+        return value.setScale(scale, RoundingMode.HALF_UP);
+    }
+
     private String formatLineLabel(Number value, boolean percentItemLabels, int valueDecimals) {
         if (percentItemLabels) {
             NumberFormat formatter = NumberFormat.getPercentInstance();
-            formatter.setMaximumFractionDigits(1);
+            formatter.setMaximumFractionDigits(PERCENT_ITEM_LABEL_DECIMALS);
             return formatter.format(value.doubleValue());
         }
         DecimalFormat formatter = new DecimalFormat("#,##0");

--
Gitblit v1.9.1