From b6dd47b05107fc36d8ff4f7f29a4446521f95503 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期四, 02 一月 2025 18:44:28 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-common/src/main/java/com/ruoyi/common/tax/TaxtUtils.java |   52 ++++++++++++++++++++++++++++++++--------------------
 1 files changed, 32 insertions(+), 20 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 894d7f4..a54caba 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,32 +32,35 @@
      */
     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;
     }
 
@@ -66,39 +72,45 @@
      */
     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.divide(new BigDecimal(0.2),2,BigDecimal.ROUND_DOWN).add(new BigDecimal(800));
+            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