liusheng
2023-06-14 d6f2f458d9c8156981880c987d861423ce9af146
ruoyi-common/src/main/java/com/ruoyi/common/tax/TaxtUtils.java
@@ -41,7 +41,7 @@
        // 当X>4000时
        //(1)当X*(1-20%)<=20000时,个税T=X*(1-20%)*20%
        if (money.doubleValue() > 4000 && multiply.doubleValue() <= 20000) {
            taxMoney = multiply.multiply(new BigDecimal(0.8));
            taxMoney = multiply.multiply(new BigDecimal(0.2));
        }
        //(2)当20000<X*(1-20%)<=50000时,个税T=X*(1-20%)*30%-2000
@@ -58,9 +58,47 @@
        return format;
    }
    /**
     * 通过税后工资,算出税前工资
     *
     * @param money
     * @return
     */
    public static String getTaxationBefore(BigDecimal money) {
        //当X<=800时,个税T=0
        BigDecimal taxMoney = new BigDecimal(0.0);
        if (money.doubleValue() > 800 && money.doubleValue() <= 3360) {
            taxMoney = money.divide(new BigDecimal(0.2),2,BigDecimal.ROUND_DOWN).add(new BigDecimal(800));
        }
        if (money.doubleValue() > 3360 && money.doubleValue() <= 21000) {
            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);
        }
        if (money.doubleValue() > 40000) {
            money = money.subtract(new BigDecimal(7000));
            taxMoney = money.divide(new BigDecimal(0.68),2,BigDecimal.ROUND_DOWN);
        }
        DecimalFormat decimalFormat = new DecimalFormat("#.00");
        String format = decimalFormat.format(taxMoney);
        return format;
    }
    public static void main(String[] args) {
        String taxation = getTaxation(new BigDecimal(70000));
        System.out.println(taxation);
        String taxation = getTaxation(new BigDecimal(21000));
        String taxationBefore = getTaxationBefore(new BigDecimal(52000));
        System.out.println(taxation + "        " + taxationBefore);
    }
}