update:修复军保统计页面bug
This commit is contained in:
121
src/main/java/com/saye/hospitalgd/util/AmountUtil.java
Normal file
121
src/main/java/com/saye/hospitalgd/util/AmountUtil.java
Normal file
@@ -0,0 +1,121 @@
|
||||
package com.saye.hospitalgd.util;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
|
||||
/**
|
||||
* 金额处理工具类
|
||||
* 用于处理金额比较、格式化等操作
|
||||
*
|
||||
* @author system
|
||||
* @version 1.0
|
||||
* @date 2024/10/22
|
||||
*/
|
||||
public class AmountUtil {
|
||||
|
||||
/**
|
||||
* 默认精度为2位小数
|
||||
*/
|
||||
private static final int DEFAULT_SCALE = 2;
|
||||
|
||||
/**
|
||||
* 默认舍入模式为四舍五入
|
||||
*/
|
||||
private static final RoundingMode DEFAULT_ROUNDING_MODE = RoundingMode.HALF_UP;
|
||||
|
||||
/**
|
||||
* 比较两个金额是否相等
|
||||
* 会自动处理精度问题,如8.00和8会被认为是相等的
|
||||
*
|
||||
* @param amount1 金额1(字符串格式)
|
||||
* @param amount2 金额2(字符串格式)
|
||||
* @return true表示相等,false表示不相等
|
||||
*/
|
||||
public static boolean isAmountEqual(String amount1, String amount2) {
|
||||
if (amount1 == null || amount2 == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 处理空字符串情况
|
||||
if (amount1.trim().isEmpty() || amount2.trim().isEmpty()) {
|
||||
return amount1.trim().equals(amount2.trim());
|
||||
}
|
||||
|
||||
try {
|
||||
BigDecimal bd1 = new BigDecimal(amount1.trim()).setScale(DEFAULT_SCALE, DEFAULT_ROUNDING_MODE);
|
||||
BigDecimal bd2 = new BigDecimal(amount2.trim()).setScale(DEFAULT_SCALE, DEFAULT_ROUNDING_MODE);
|
||||
return bd1.compareTo(bd2) == 0;
|
||||
} catch (NumberFormatException e) {
|
||||
// 如果转换失败,则进行字符串比较
|
||||
return amount1.trim().equals(amount2.trim());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 比较两个金额是否相等
|
||||
*
|
||||
* @param amount1 金额1(BigDecimal格式)
|
||||
* @param amount2 金额2(BigDecimal格式)
|
||||
* @return true表示相等,false表示不相等
|
||||
*/
|
||||
public static boolean isAmountEqual(BigDecimal amount1, BigDecimal amount2) {
|
||||
if (amount1 == null || amount2 == null) {
|
||||
return amount1 == amount2;
|
||||
}
|
||||
|
||||
BigDecimal bd1 = amount1.setScale(DEFAULT_SCALE, DEFAULT_ROUNDING_MODE);
|
||||
BigDecimal bd2 = amount2.setScale(DEFAULT_SCALE, DEFAULT_ROUNDING_MODE);
|
||||
return bd1.compareTo(bd2) == 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化金额为标准格式(保留2位小数)
|
||||
*
|
||||
* @param amount 金额字符串
|
||||
* @return 格式化后的金额字符串
|
||||
*/
|
||||
public static String formatAmount(String amount) {
|
||||
if (amount == null || amount.trim().isEmpty()) {
|
||||
return "0.00";
|
||||
}
|
||||
|
||||
try {
|
||||
BigDecimal bd = new BigDecimal(amount.trim()).setScale(DEFAULT_SCALE, DEFAULT_ROUNDING_MODE);
|
||||
return bd.toString();
|
||||
} catch (NumberFormatException e) {
|
||||
return amount;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化金额为标准格式(保留2位小数)
|
||||
*
|
||||
* @param amount 金额BigDecimal
|
||||
* @return 格式化后的金额字符串
|
||||
*/
|
||||
public static String formatAmount(BigDecimal amount) {
|
||||
if (amount == null) {
|
||||
return "0.00";
|
||||
}
|
||||
|
||||
return amount.setScale(DEFAULT_SCALE, DEFAULT_ROUNDING_MODE).toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 将字符串金额转换为BigDecimal
|
||||
*
|
||||
* @param amount 金额字符串
|
||||
* @return BigDecimal对象
|
||||
*/
|
||||
public static BigDecimal toBigDecimal(String amount) {
|
||||
if (amount == null || amount.trim().isEmpty()) {
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
try {
|
||||
return new BigDecimal(amount.trim()).setScale(DEFAULT_SCALE, DEFAULT_ROUNDING_MODE);
|
||||
} catch (NumberFormatException e) {
|
||||
return BigDecimal.ZERO;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -202,3 +202,10 @@ public class HttpClientUtil {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user