From 1d915922d8197aa5d5dc3e40e3088d983dd6e141 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 13 三月 2026 17:57:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New_kthg' into dev_New_kthg

---
 src/main/java/com/ruoyi/stock/word/ChineseNumberUtil.java |  101 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 101 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/stock/word/ChineseNumberUtil.java b/src/main/java/com/ruoyi/stock/word/ChineseNumberUtil.java
new file mode 100644
index 0000000..b72e35b
--- /dev/null
+++ b/src/main/java/com/ruoyi/stock/word/ChineseNumberUtil.java
@@ -0,0 +1,101 @@
+package com.ruoyi.stock.word;
+
+import java.math.BigDecimal;
+
+/**
+ * 閲戦鏁板瓧杞ぇ鍐欏伐鍏风被
+ */
+public class ChineseNumberUtil {
+
+    private static final String[] CN_UPPER_NUMBER = {"闆�", "澹�", "璐�", "鍙�", "鑲�", "浼�", "闄�", "鏌�", "鎹�", "鐜�"};
+    private static final String[] CN_UPPER_UNIT = {"", "鎷�", "浣�", "浠�", "涓�", "鎷�", "浣�", "浠�", "浜�", "鎷�", "浣�", "浠�"};
+    private static final String CN_DOLLAR = "";
+    private static final String CN_TEN_CENT = "鐐�";
+    private static final String CN_CENT = "";
+    private static final String CN_INTEGER = "鏁�";
+
+    /**
+     * 灏嗘暟瀛楄浆鎹负澶у啓閲戦
+     * @param number 鏁板瓧锛堝崟浣嶏細鍚級
+     * @return 澶у啓閲戦瀛楃涓�
+     */
+    public static String numberToChinese(BigDecimal number) {
+        if (number == null) {
+            return "闆�";
+        }
+
+        // 澶勭悊璐熸暟
+        boolean isNegative = false;
+        if (number.compareTo(BigDecimal.ZERO) < 0) {
+            isNegative = true;
+            number = number.abs();
+        }
+
+        StringBuilder result = new StringBuilder();
+
+        // 鍒嗙鏁存暟鍜屽皬鏁伴儴鍒�
+        String[] parts = number.toString().split("\\.");
+        String integerPart = parts[0];
+        String decimalPart = parts.length > 1 ? parts[1] : "";
+
+        // 杞崲鏁存暟閮ㄥ垎
+        if (!"0".equals(integerPart)) {
+            result.append(convertIntegerPart(integerPart));
+        } else {
+            result.append("闆�");
+        }
+
+        // 杞崲灏忔暟閮ㄥ垎
+        if (decimalPart.length() > 0 && !"00".equals(decimalPart) && !"0".equals(decimalPart)) {
+            result.append(CN_TEN_CENT);
+            char[] decimals = decimalPart.toCharArray();
+            for (int i = 0; i < decimals.length; i++) {
+                if (decimals[i] != '0') {
+                    result.append(CN_UPPER_NUMBER[Integer.parseInt(String.valueOf(decimals[i]))]);
+                } else {
+                    if (i < decimals.length - 1 && decimals[i + 1] != '0') {
+                        result.append(CN_UPPER_NUMBER[0]);
+                    }
+                }
+            }
+        }
+
+        return isNegative ? "璐�" + result.toString() : result.toString();
+    }
+
+    /**
+     * 杞崲鏁存暟閮ㄥ垎
+     */
+    private static String convertIntegerPart(String integerPart) {
+        StringBuilder result = new StringBuilder();
+        int length = integerPart.length();
+
+        for (int i = 0; i < length; i++) {
+            int digit = Integer.parseInt(String.valueOf(integerPart.charAt(i)));
+            int unitIndex = length - i - 1;
+
+            if (digit != 0) {
+                result.append(CN_UPPER_NUMBER[digit]).append(CN_UPPER_UNIT[unitIndex]);
+            } else {
+                // 澶勭悊杩炵画鐨勯浂
+                if (i > 0 && integerPart.charAt(i - 1) != '0') {
+                    result.append(CN_UPPER_NUMBER[0]);
+                }
+                // 澶勭悊涓囦綅鍜屼嚎浣�
+                if (unitIndex == 4 || unitIndex == 8) {
+                    if (result.length() > 0 && !result.toString().endsWith(CN_UPPER_NUMBER[0])) {
+                        result.append(CN_UPPER_UNIT[unitIndex]);
+                    }
+                }
+            }
+        }
+
+        String resultStr = result.toString();
+        // 鍘婚櫎鏈熬鐨勯浂
+        while (resultStr.endsWith(CN_UPPER_NUMBER[0])) {
+            resultStr = resultStr.substring(0, resultStr.length() - 1);
+        }
+
+        return resultStr;
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3