From c7ecb0f33189aff5f8234666c26b75c6621bb83b Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期一, 08 十二月 2025 18:43:18 +0800
Subject: [PATCH] 单仓移库页面

---
 fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/MoneyUtil.java |  129 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 129 insertions(+), 0 deletions(-)

diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/MoneyUtil.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/MoneyUtil.java
new file mode 100644
index 0000000..2c4ea14
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/MoneyUtil.java
@@ -0,0 +1,129 @@
+package com.fzzy.igds.utils;
+
+import java.math.BigDecimal;
+
+/**
+ *
+ *
+ * 鏁板瓧杞崲涓烘眽璇腑浜烘皯甯佺殑澶у啓<br>
+ *
+ */
+public class MoneyUtil {
+    /**
+     * 姹夎涓暟瀛楀ぇ鍐�
+     */
+    private static final String[] CN_UPPER_NUMBER = { "闆�", "澹�", "璐�", "鍙�", "鑲�",
+            "浼�", "闄�", "鏌�", "鎹�", "鐜�" };
+    /**
+     * 姹夎涓揣甯佸崟浣嶅ぇ鍐欙紝杩欐牱鐨勮璁$被浼间簬鍗犱綅绗�
+     */
+    private static final String[] CN_UPPER_MONETRAY_UNIT = { "鍒�", "瑙�", "鍏�",
+            "鎷�", "浣�", "浠�", "涓�", "鎷�", "浣�", "浠�", "浜�", "鎷�", "浣�", "浠�", "鍏�", "鎷�",
+            "浣�", "浠�" };
+    /**
+     * 鐗规畩瀛楃锛氭暣
+     */
+    private static final String CN_FULL = "鏁�";
+    /**
+     * 鐗规畩瀛楃锛氳礋
+     */
+    private static final String CN_NEGATIVE = "璐�";
+    /**
+     * 閲戦鐨勭簿搴︼紝榛樿鍊间负2
+     */
+    private static final int MONEY_PRECISION = 2;
+    /**
+     * 鐗规畩瀛楃锛氶浂鍏冩暣
+     */
+    private static final String CN_ZEOR_FULL = "闆跺厓" + CN_FULL;
+
+    /**
+     * 鎶婅緭鍏ョ殑閲戦杞崲涓烘眽璇腑浜烘皯甯佺殑澶у啓
+     *
+     * @param numberOfMoney
+     *            杈撳叆鐨勯噾棰�
+     * @return 瀵瑰簲鐨勬眽璇ぇ鍐�
+     */
+    public static String formatToCN(BigDecimal numberOfMoney) {
+        StringBuffer sb = new StringBuffer();
+        // -1, 0, or 1 as the value of this BigDecimal is negative, zero, or
+        // positive.
+        int signum = numberOfMoney.signum();
+        // 闆跺厓鏁寸殑鎯呭喌
+        if (signum == 0) {
+            return CN_ZEOR_FULL;
+        }
+        // 杩欓噷浼氳繘琛岄噾棰濈殑鍥涜垗浜斿叆
+        long number = numberOfMoney.movePointRight(MONEY_PRECISION)
+                .setScale(0, 4).abs().longValue();
+        // 寰楀埌灏忔暟鐐瑰悗涓や綅鍊�
+        long scale = number % 100;
+        int numUnit = 0;
+        int numIndex = 0;
+        boolean getZero = false;
+        // 鍒ゆ柇鏈�鍚庝袱浣嶆暟锛屼竴鍏辨湁鍥涗腑鎯呭喌锛�00 = 0, 01 = 1, 10, 11
+        if (!(scale > 0)) {
+            numIndex = 2;
+            number = number / 100;
+            getZero = true;
+        }
+        if ((scale > 0) && (!(scale % 10 > 0))) {
+            numIndex = 1;
+            number = number / 10;
+            getZero = true;
+        }
+        int zeroSize = 0;
+        while (true) {
+            if (number <= 0) {
+                break;
+            }
+            // 姣忔鑾峰彇鍒版渶鍚庝竴涓暟
+            numUnit = (int) (number % 10);
+            if (numUnit > 0) {
+                if ((numIndex == 9) && (zeroSize >= 3)) {
+                    sb.insert(0, CN_UPPER_MONETRAY_UNIT[6]);
+                }
+                if ((numIndex == 13) && (zeroSize >= 3)) {
+                    sb.insert(0, CN_UPPER_MONETRAY_UNIT[10]);
+                }
+                sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);
+                sb.insert(0, CN_UPPER_NUMBER[numUnit]);
+                getZero = false;
+                zeroSize = 0;
+            } else {
+                ++zeroSize;
+                if (!(getZero)) {
+                    sb.insert(0, CN_UPPER_NUMBER[numUnit]);
+                }
+                if (numIndex == 2) {
+                    if (number > 0) {
+                        sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);
+                    }
+                } else if (((numIndex - 2) % 4 == 0) && (number % 1000 > 0)) {
+                    sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);
+                }
+                getZero = true;
+            }
+            // 璁﹏umber姣忔閮藉幓鎺夋渶鍚庝竴涓暟
+            number = number / 10;
+            ++numIndex;
+        }
+        // 濡傛灉signum == -1锛屽垯璇存槑杈撳叆鐨勬暟瀛椾负璐熸暟锛屽氨鍦ㄦ渶鍓嶉潰杩藉姞鐗规畩瀛楃锛氳礋
+        if (signum == -1) {
+            sb.insert(0, CN_NEGATIVE);
+        }
+        // 杈撳叆鐨勬暟瀛楀皬鏁扮偣鍚庝袱浣嶄负"00"鐨勬儏鍐碉紝鍒欒鍦ㄦ渶鍚庤拷鍔犵壒娈婂瓧绗︼細鏁�
+        if (!(scale > 0)) {
+            sb.append(CN_FULL);
+        }
+        return sb.toString();
+    }
+
+    public static void main(String[] args) {
+        double money = 11901.1;
+        BigDecimal numberOfMoney = new BigDecimal(money);
+        String s = MoneyUtil.formatToCN(numberOfMoney);
+        System.out.println("浣犺緭鍏ョ殑閲戦涓猴細銆�" + money + "銆�   #--# [" + s.toString()
+                + "]");
+    }
+}

--
Gitblit v1.9.3