From 8ad75d5872872b79abada58589adad0df4614db6 Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期三, 07 十月 2026 11:59:44 +0800
Subject: [PATCH] fix(holiday): 走势图按年度配置截取假期天数
---
traffic-audit-server/src/test/java/com/trafficaudit/holiday/service/HolidayBulletinServiceTest.java | 46 +++++++++++++++++++++++++++++++++++-----------
1 files changed, 35 insertions(+), 11 deletions(-)
diff --git a/traffic-audit-server/src/test/java/com/trafficaudit/holiday/service/HolidayBulletinServiceTest.java b/traffic-audit-server/src/test/java/com/trafficaudit/holiday/service/HolidayBulletinServiceTest.java
index bdef3e2..cc81b4a 100644
--- a/traffic-audit-server/src/test/java/com/trafficaudit/holiday/service/HolidayBulletinServiceTest.java
+++ b/traffic-audit-server/src/test/java/com/trafficaudit/holiday/service/HolidayBulletinServiceTest.java
@@ -21,12 +21,18 @@
void formatsTableRatiosAsSignedPercentages() throws Exception {
HolidayBulletinService service = new HolidayBulletinService(null);
- assertEquals("-4.7%", ratio(service, "95.3", "100"));
- assertEquals("1.0%", ratio(service, "101", "100"));
- assertEquals("0%", ratio(service, "100", "100"));
- assertEquals("0%", ratio(service, "10004", "10000"));
- assertEquals("鈥�", ratio(service, "100", null));
- assertEquals("鈥�", ratio(service, "100", "0"));
+ assertEquals("-4.7%", ratio(service, "95.3", "100", 1));
+ assertEquals("-4.4%", ratio(service, "95.551398", "100", 1));
+ assertEquals("-4.5%", ratio(service, "95.551398", "100", 2));
+ assertEquals("-0.1%", ratio(service, "99.955", "100", 2));
+ assertEquals("0%", ratio(service, "99.955", "100", 1));
+ assertEquals("6.7%", ratio(service, "106.649", "100", 2));
+ assertEquals("6.6%", ratio(service, "106.649", "100", 1));
+ assertEquals("1.0%", ratio(service, "101", "100", 1));
+ assertEquals("0%", ratio(service, "100", "100", 1));
+ assertEquals("0%", ratio(service, "10004", "10000", 1));
+ assertEquals("鈥�", ratio(service, "100", null, 1));
+ assertEquals("鈥�", ratio(service, "100", "0", 1));
}
@Test
@@ -78,7 +84,7 @@
}
@Test
- void cumulativeParagraphUsesWanUnitAndSingleRounding() throws Exception {
+ void cumulativeParagraphUsesExcelDisplayThenBulletinRounding() throws Exception {
HolidayBulletinService service = new HolidayBulletinService(null);
DailyMetrics current = new DailyMetrics();
@@ -94,8 +100,24 @@
String text = (String) method.invoke(service, current, previousYear, twoYearsAgo);
assertEquals(
- "鍋囨湡浠ユ潵锛屽叏鐪佸叏绀句細璺ㄥ尯鍩熶汉鍛樻祦鍔ㄩ噺绱3088.63涓囦汉娆★紝姣�2025骞村悓鏈熶笅闄�4.4%锛屾瘮2024骞村悓鏈熶笅闄�1.6%銆�",
+ "鍋囨湡浠ユ潵锛屽叏鐪佸叏绀句細璺ㄥ尯鍩熶汉鍛樻祦鍔ㄩ噺绱3088.63涓囦汉娆★紝姣�2025骞村悓鏈熶笅闄�4.5%锛屾瘮2024骞村悓鏈熶笅闄�1.6%銆�",
text);
+ }
+
+ @Test
+ void cumulativeAmountsUseExcelYiDisplayBeforeWanRounding() throws Exception {
+ HolidayBulletinService service = new HolidayBulletinService(null);
+
+ assertEquals("3961.77", cumulativeNumber(service, "3961.76472"));
+ assertEquals("4189.32", cumulativeNumber(service, "4189.31472"));
+ assertEquals("4486.63", cumulativeNumber(service, "4486.62652"));
+ }
+
+ private String cumulativeNumber(HolidayBulletinService service, String value) throws Exception {
+ Method method = HolidayBulletinService.class.getDeclaredMethod("numberCumulative", BigDecimal.class);
+ method.setAccessible(true);
+ BigDecimal number = value == null ? null : new BigDecimal(value);
+ return (String) method.invoke(service, number);
}
private Object comparableCumulative(HolidayBulletinService service, DailyMetrics current,
@@ -107,11 +129,13 @@
return method.invoke(service, current, comparisonYear, selector);
}
- private String ratio(HolidayBulletinService service, String current, String base) throws Exception {
- Method method = HolidayBulletinService.class.getDeclaredMethod("ratio", BigDecimal.class, BigDecimal.class);
+ private String ratio(HolidayBulletinService service, String current, String base,
+ int excelPercentScale) throws Exception {
+ Method method = HolidayBulletinService.class.getDeclaredMethod(
+ "ratio", BigDecimal.class, BigDecimal.class, int.class);
method.setAccessible(true);
BigDecimal currentValue = current == null ? null : new BigDecimal(current);
BigDecimal baseValue = base == null ? null : new BigDecimal(base);
- return (String) method.invoke(service, currentValue, baseValue);
+ return (String) method.invoke(service, currentValue, baseValue, excelPercentScale);
}
}
--
Gitblit v1.9.1