From ee089a8ac4a9d99ef0a0491bbf1d80a2d4fbc393 Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期二, 10 十一月 2026 09:15:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ruoyi-common/src/main/java/com/ruoyi/common/tax/TaxtUtils.java | 54 +++++++++++++++++++++++++++++++++++-------------------
1 files changed, 35 insertions(+), 19 deletions(-)
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/tax/TaxtUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/tax/TaxtUtils.java
index 1669734..a28381d 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/tax/TaxtUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/tax/TaxtUtils.java
@@ -5,17 +5,20 @@
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
+import lombok.extern.slf4j.Slf4j;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.Collection;
import java.util.List;
/**
- * 鍔冲姟鎶ラ叕涓◣璁$畻瑙勫垯 (鍙兘涓嶇瓟鍏叡鐢ㄦ硶锛岀敤鍓嶅厛鐪嬬湅鏄惁閫傚悎)
+ * 鍔冲姟鎶ラ叕涓◣璁$畻瑙勫垯 (鍙兘涓嶉�傚悎鍏叡鐢ㄦ硶锛岀敤鍓嶅厛鐪嬬湅鏄惁閫傚悎)
*
* @author ls
*/
+@Slf4j
public class TaxtUtils {
/**
* 鍒嗛殧绗�
@@ -29,76 +32,89 @@
*/
public static String getTaxation(BigDecimal money) {
//褰揦<=800鏃讹紝涓◣T=0
- BigDecimal taxMoney = new BigDecimal(0.0);
+ BigDecimal taxMoney = BigDecimal.valueOf(0.0);
//褰�800<X<=4000鏃讹紝涓◣T=(X-800)*20%
if (money.doubleValue() > 800 && money.doubleValue() <= 4000) {
BigDecimal subtract = money.subtract(new BigDecimal(800));
- taxMoney = subtract.multiply(new BigDecimal(0.2));
+ taxMoney = subtract.multiply(BigDecimal.valueOf(0.2));
}
- BigDecimal multiply = money.multiply(new BigDecimal(0.8));
+ BigDecimal multiply = money.multiply(BigDecimal.valueOf(0.8));
// 褰揦>4000鏃�
//(1)褰揦*(1-20%)<=20000鏃讹紝涓◣T=X*(1-20%)*20%
if (money.doubleValue() > 4000 && multiply.doubleValue() <= 20000) {
- taxMoney = multiply.multiply(new BigDecimal(0.2));
+ taxMoney = multiply.multiply(BigDecimal.valueOf(0.2));
}
//(2)褰�20000<X*(1-20%)<=50000鏃讹紝涓◣T=X*(1-20%)*30%-2000
if (multiply.doubleValue() > 20000 && multiply.doubleValue() <= 50000) {
- taxMoney = multiply.multiply(new BigDecimal(0.3)).subtract(new BigDecimal(2000));
+ taxMoney = multiply.multiply(BigDecimal.valueOf(0.3)).subtract(BigDecimal.valueOf(2000));
}
//X*(1-20%)>50000鏃讹紝涓◣T=X*(1-20%)*40%-7000
if (multiply.doubleValue() > 50000) {
- taxMoney = multiply.multiply(new BigDecimal(0.4)).subtract(new BigDecimal(7000));
+ taxMoney = multiply.multiply(BigDecimal.valueOf(0.4)).subtract(BigDecimal.valueOf(7000));
}
- DecimalFormat decimalFormat = new DecimalFormat("#.00");
+ DecimalFormat decimalFormat = new DecimalFormat("#0.00");
+ //杩涗竴娉�
+ decimalFormat.setRoundingMode(RoundingMode.CEILING);
String format = decimalFormat.format(taxMoney);
+ log.info("绋庨噾涓猴細{}", format);
return format;
}
/**
* 閫氳繃绋庡悗宸ヨ祫锛岀畻鍑虹◣鍓嶅伐璧�
+ * <p>
+ * 娉ㄦ剰锛氶櫎鏁板繀椤荤敤瀛楃涓�/甯搁噺鏋勯�犵殑绮剧‘鍊笺�傚師鍏堝啓鎴� {@code new BigDecimal(0.84)} 绛夛紝
+ * 浼氭妸 double 鐨勪簩杩涘埗璇樊甯﹁繘闄ゆ硶锛堝 8313.06 / 0.84 鍙樻垚 9896.500000鈥�001锛夛紝
+ * 鍐嶅彔鍔犲悜涓婂彇鏁村氨澶氬嚭 1 鍒嗛挶锛屽鑷粹�滅◣鍚庡弽绠楃◣鍓嶁�濇棤娉曡繕鍘燂紙8300.00 绫婚噾棰濆弽瑙e嚭 10000.03锛夈��
*
* @param money
* @return
*/
public static String getTaxationBefore(BigDecimal money) {
//褰揦<=800鏃讹紝涓◣T=0
- BigDecimal taxMoney = new BigDecimal(0.0);
+ BigDecimal taxMoney = BigDecimal.valueOf(0.00);
+ if (money.doubleValue() <= 800) {
+ taxMoney = money;
+ }
//绗竴涓弬鏁版槸闄ゆ暟锛岀浜屼釜鍙傛暟浠h〃淇濈暀鍑犱綅灏忔暟锛岀涓変釜浠h〃鐨勬槸浣跨敤鐨勬ā寮�
if (money.doubleValue() > 800 && money.doubleValue() <= 3360) {
- taxMoney = money.subtract(new BigDecimal(160)).divide(new BigDecimal(0.8),2,BigDecimal.ROUND_UP);
+ taxMoney = money.subtract(new BigDecimal(160)).divide(new BigDecimal("0.8"), 2, BigDecimal.ROUND_CEILING);
}
if (money.doubleValue() > 3360 && money.doubleValue() <= 21000) {
- taxMoney = money.divide(new BigDecimal(0.84),2,BigDecimal.ROUND_DOWN);
+ taxMoney = money.divide(new BigDecimal("0.84"), 2, BigDecimal.ROUND_CEILING);
}
- if (money.doubleValue() > 21000 && money.doubleValue() <= 40000) {
+ if (money.doubleValue() > 21000 && money.doubleValue() <= 49500) {
money = money.subtract(new BigDecimal(2000));
- taxMoney = money.divide(new BigDecimal(0.76),2,BigDecimal.ROUND_DOWN);
+ taxMoney = money.divide(new BigDecimal("0.76"), 2, BigDecimal.ROUND_CEILING);
}
- if (money.doubleValue() > 40000) {
+ if (money.doubleValue() > 49500) {
money = money.subtract(new BigDecimal(7000));
- taxMoney = money.divide(new BigDecimal(0.68),2,BigDecimal.ROUND_DOWN);
+ taxMoney = money.divide(new BigDecimal("0.68"), 2, BigDecimal.ROUND_CEILING);
}
- DecimalFormat decimalFormat = new DecimalFormat("#.00");
+ DecimalFormat decimalFormat = new DecimalFormat("#0.00");
+ //杩涗竴娉�
+ decimalFormat.setRoundingMode(RoundingMode.CEILING);
String format = decimalFormat.format(taxMoney);
+ log.info("绋庡墠閲戦涓猴細{}", format);
return format;
}
public static void main(String[] args) {
- String taxation = getTaxation(new BigDecimal(21000));
- String taxationBefore = getTaxationBefore(new BigDecimal(52000));
+ String taxation = getTaxation(BigDecimal.valueOf(43000));
+ String taxationBefore = getTaxationBefore(BigDecimal.valueOf(205892.36));
- System.out.println(taxation + " " + taxationBefore);
+ System.out.println("taxation:" + taxation + "============taxationBefore: " + taxationBefore);
}
}
--
Gitblit v1.9.3