1 /**
2 * 计算个人所得税3 * www.xcc.cn 版权所有4 *@paramminusAmount 扣除社保的金额5 *@paramminusAmount2 当月工资(扣除社保后)(算年终奖)6 *@paramsalaryType 收入类型7 *@paramminimumAmount 个税基数,50008 **/
9 public GeshuiDto calc(double originAmount, double minusAmount, double minusAmount2, String salaryType, intminimumAmount) {10 GeshuiDto dto = newGeshuiDto();11 dto.originAmount =originAmount;12 dto.minusAmount =minusAmount;13 dto.taxAmount = 0;14 dto.finalAmount = 0;15
16 if(originAmount == 0){17 returndto;18 }19
20 //工资、薪金所得
21 if(Objects.equal("1", salaryType)){22 double balanceAmount =BigDecimal.valueOf(originAmount)23 .subtract(BigDecimal.valueOf(minusAmount))24 .subtract(BigDecimal.valueOf(minimumAmount)).doubleValue();25 dto.balanceAmount =balanceAmount;26 if(minimumAmount == 5000) {27 if(balanceAmount >0 && balanceAmount <=3000){28 dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.03)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();29 }30 if(balanceAmount >3000 && balanceAmount <=12000){31 dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.1)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(210)).doubleValue();32 }33 if(balanceAmount >12000 && balanceAmount <=25000){34 dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.2)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(1410)).doubleValue();35 }36 if(balanceAmount >25000 && balanceAmount <=35000){37 dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.25)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(2660)).doubleValue();38 }39 if(balanceAmount >35000 && balanceAmount <=55000){40 dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.3)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(4410)).doubleValue();41 }42 if(balanceAmount >55000 && balanceAmount <=80000){43 dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.35)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(7160)).doubleValue();44 }45 if(balanceAmount >80000){46 dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.45)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(15160)).doubleValue();47 }48 }else{49 if(balanceAmount >0 && balanceAmount <=1500){50 dto.taxAmount &#