From 37f52097847f9025589c79034be2454432c55433 Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期五, 02 十月 2026 10:12:27 +0800
Subject: [PATCH] docs(交接): 记录关机前开发服务已停止
---
traffic-audit-server/src/main/java/com/trafficaudit/holiday/HolidayNumberUtils.java | 70 +++++++++++++++++++++++++++++++++++
1 files changed, 70 insertions(+), 0 deletions(-)
diff --git a/traffic-audit-server/src/main/java/com/trafficaudit/holiday/HolidayNumberUtils.java b/traffic-audit-server/src/main/java/com/trafficaudit/holiday/HolidayNumberUtils.java
new file mode 100644
index 0000000..fb0ea58
--- /dev/null
+++ b/traffic-audit-server/src/main/java/com/trafficaudit/holiday/HolidayNumberUtils.java
@@ -0,0 +1,70 @@
+package com.trafficaudit.holiday;
+
+import org.apache.poi.ss.util.NumberToTextConverter;
+
+import java.math.BigDecimal;
+import java.math.MathContext;
+import java.math.RoundingMode;
+
+public final class HolidayNumberUtils {
+
+ public static final MathContext EXCEL_MC = new MathContext(15, RoundingMode.HALF_UP);
+ public static final BigDecimal ZERO = BigDecimal.ZERO;
+
+ private HolidayNumberUtils() {
+ }
+
+ public static BigDecimal excelValue(double value) {
+ return normalize(new BigDecimal(NumberToTextConverter.toText(value)));
+ }
+
+ public static BigDecimal decimalValue(Object value) {
+ if (value == null || value.toString().trim().isEmpty()) return null;
+ return normalize(new BigDecimal(value.toString().trim()));
+ }
+
+ public static BigDecimal normalize(BigDecimal value) {
+ if (value == null) return null;
+ BigDecimal rounded = value.round(EXCEL_MC);
+ return rounded.signum() == 0 ? ZERO : rounded.stripTrailingZeros();
+ }
+
+ public static BigDecimal valueOrZero(BigDecimal value) {
+ return value == null ? ZERO : value;
+ }
+
+ public static BigDecimal sumNullable(BigDecimal left, BigDecimal right) {
+ if (left == null && right == null) return null;
+ return normalize(valueOrZero(left).add(valueOrZero(right)));
+ }
+
+ public static BigDecimal multiply(BigDecimal left, BigDecimal right) {
+ if (left == null || right == null) return null;
+ return normalize(left.multiply(right));
+ }
+
+ public static BigDecimal divide(BigDecimal dividend, BigDecimal divisor) {
+ if (dividend == null || divisor == null || divisor.signum() == 0) return null;
+ return normalize(dividend.divide(divisor, EXCEL_MC));
+ }
+
+ public static boolean sameValue(BigDecimal left, BigDecimal right) {
+ if (left == null || right == null) return false;
+ return normalize(left).compareTo(normalize(right)) == 0;
+ }
+
+ public static String changeText(BigDecimal value) {
+ if (value == null) return "";
+ return normalize(value).toPlainString();
+ }
+
+ public static String format1(BigDecimal value) {
+ if (value == null) return "";
+ return value.setScale(1, RoundingMode.HALF_UP).toPlainString();
+ }
+
+ public static String format2(BigDecimal value) {
+ if (value == null) return "";
+ return value.setScale(2, RoundingMode.HALF_UP).toPlainString();
+ }
+}
--
Gitblit v1.9.1