| | |
| | | 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; |
| | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 劳务报酬个税计算规则 (可能不答公共用法,用前先看看是否适合) |
| | | * 劳务报酬个税计算规则 (可能不适合公共用法,用前先看看是否适合) |
| | | * |
| | | * @author ls |
| | | */ |
| | | @Slf4j |
| | | public class TaxtUtils { |
| | | /** |
| | | * 分隔符 |
| | |
| | | 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); |