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