From 520bdcba17d90b07d7d63fdcdb0e98a2a0a87300 Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期六, 03 十月 2026 19:30:25 +0800
Subject: [PATCH] fix(holiday): 快报表格改用带符号百分比并保留模板样式

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

diff --git a/traffic-audit-server/src/main/java/com/trafficaudit/holiday/service/HolidayBulletinService.java b/traffic-audit-server/src/main/java/com/trafficaudit/holiday/service/HolidayBulletinService.java
index e6ef8ac..1ef5884 100644
--- a/traffic-audit-server/src/main/java/com/trafficaudit/holiday/service/HolidayBulletinService.java
+++ b/traffic-audit-server/src/main/java/com/trafficaudit/holiday/service/HolidayBulletinService.java
@@ -24,6 +24,7 @@
 import java.io.FileInputStream;
 import java.io.InputStream;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.nio.file.Files;
 import java.time.LocalDate;
 import java.util.ArrayList;
@@ -250,7 +251,10 @@
             Element pPr = firstChildElement(templateParagraph, "pPr");
             if (pPr != null) paragraph.appendChild(pPr.cloneNode(true));
         }
+        Element templateRun = templateParagraph == null ? null : firstChildElement(templateParagraph, "r");
+        Element rPr = templateRun == null ? null : firstChildElement(templateRun, "rPr");
         Element run = createElement("r");
+        if (rPr != null) run.appendChild(rPr.cloneNode(true));
         Element t = createElement("t");
         t.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space", "preserve");
         t.setTextContent(text == null ? "" : text);
@@ -330,7 +334,12 @@
 
     private String ratio(BigDecimal current, BigDecimal base) {
         if (current == null || base == null || base.abs().compareTo(EPSILON) < 0) return "鈥�";
-        return ratioPhrase(current, base);
+        BigDecimal ratio = HolidayNumberUtils.divide(current, base);
+        if (ratio == null) return "鈥�";
+        BigDecimal percent = HolidayNumberUtils.multiply(ratio.subtract(BigDecimal.ONE), BigDecimal.valueOf(100));
+        if (percent == null) return "鈥�";
+        BigDecimal rounded = percent.setScale(1, RoundingMode.HALF_UP);
+        return rounded.signum() == 0 ? "0%" : rounded.toPlainString() + "%";
     }
 
     private String number(BigDecimal value) {

--
Gitblit v1.9.1