liusheng
2023-11-17 054cfdd53b732d2f60627fc9ac7cf92233d3c200
ruoyi-common/src/main/java/com/ruoyi/common/tax/TaxtUtils.java
@@ -5,6 +5,7 @@
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.text.DecimalFormat;
@@ -12,10 +13,11 @@
import java.util.List;
/**
 * 劳务报酬个税计算规则 (可能不答公共用法,用前先看看是否适合)
 * 劳务报酬个税计算规则 (可能不适合公共用法,用前先看看是否适合)
 *
 * @author ls
 */
@Slf4j
public class TaxtUtils {
    /**
     * 分隔符
@@ -67,35 +69,39 @@
    public static String getTaxationBefore(BigDecimal money) {
        //当X<=800时,个税T=0
        BigDecimal taxMoney = new BigDecimal(0.0);
        if (money.doubleValue() <= 800) {
            taxMoney = money;
        }
//第一个参数是除数,第二个参数代表保留几位小数,第三个代表的是使用的模式
        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_UP);
        }
        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_DOWN);
        }
        if (money.doubleValue() > 21000 && money.doubleValue() <= 40000) {
            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_DOWN);
        }
        if (money.doubleValue() > 40000) {
            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_DOWN);
        }
        DecimalFormat decimalFormat = new DecimalFormat("#.00");
        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(new BigDecimal(400));
        String taxationBefore = getTaxationBefore(new BigDecimal(400));
        System.out.println(taxation + "        " + taxationBefore);