update:修复军保统计页面bug

This commit is contained in:
Yuan
2025-10-23 15:11:04 +08:00
parent ff5bad9967
commit 94e8850a40
16 changed files with 237 additions and 355 deletions

View 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 金额1BigDecimal格式
* @param amount2 金额2BigDecimal格式
* @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;
}
}
}

View File

@@ -202,3 +202,10 @@ public class HttpClientUtil {