最新版宁夏武警公众号项目后端

This commit is contained in:
sangchengzhi
2026-01-07 10:36:02 +08:00
parent 364a48d4c7
commit f8bb9dc094
1512 changed files with 531911 additions and 0 deletions

View File

@@ -0,0 +1,71 @@
package com.guahao.common.util;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
* 金额处理工具类
*/
public final class AmountUtil {
private AmountUtil() {
throw new AssertionError("No instances for utility class");
}
/**
* 将字符串金额转换为 BigDecimal
* 支持格式: "123", "123.45", " 123.45 ", "-123.45", "+123.45"
*
* @param amountStr 金额字符串
* @return BigDecimal 对象,如果输入为 null 或无效格式,返回 BigDecimal.ZERO
*/
public static BigDecimal parseAmount(String amountStr) {
return parseAmount(amountStr, BigDecimal.ZERO);
}
/**
* 将字符串金额转换为 BigDecimal支持指定默认值
*
* @param amountStr 金额字符串
* @param defaultValue 解析失败时返回的默认值
* @return BigDecimal 对象
*/
public static BigDecimal parseAmount(String amountStr, BigDecimal defaultValue) {
if (amountStr == null || amountStr.trim().isEmpty()) {
return defaultValue;
}
try {
return new BigDecimal(amountStr.trim());
} catch (NumberFormatException e) {
System.err.println("金额格式错误: " + amountStr);
return defaultValue;
}
}
/**
* 将字符串金额转换为 BigDecimal并指定小数位数和舍入模式
*
* @param amountStr 金额字符串
* @param scale 保留小数位数(如 2 表示保留两位小数)
* @param roundingMode 舍入模式,如 RoundingMode.HALF_UP四舍五入
* @return BigDecimal 对象,格式错误或 null 返回 0.00
*/
public static BigDecimal parseAmount(String amountStr, int scale, RoundingMode roundingMode) {
BigDecimal amount = parseAmount(amountStr, BigDecimal.ZERO);
return amount.setScale(scale, roundingMode);
}
/**
* 安全比较两个金额字符串大小
*
* @param a 金额A
* @param b 金额B
* @return a > b 返回 1, a < b 返回 -1, a == b 返回 0
*/
public static int compare(String a, String b) {
BigDecimal amountA = parseAmount(a, BigDecimal.ZERO);
BigDecimal amountB = parseAmount(b, BigDecimal.ZERO);
return amountA.compareTo(amountB);
}
}