ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailController.java
@@ -145,5 +145,15 @@ return AjaxResult.success(serviceFunddetailService.getTaxBeforeByBeneFiciaryNo(taxMoneyVo)); } /** * æ ¹æ®ç¨åéé¢è·åç¨åéé¢ * * @param money ç¨åå·¥èµ * @return */ @ApiOperation("æ ¹æ®ç¨åå·¥èµè·åç¨åéé¢") @PostMapping("/getTaxBeforeByAfterMoney") public AjaxResult getTaxBeforeByAfterMoney(@RequestBody TaxMoneyVO taxMoneyVo) { return AjaxResult.success(serviceFunddetailService.getTaxBeforeByAfterMoney(taxMoneyVo)); } } 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); } } ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxedMoneyVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,35 @@ package com.ruoyi.project.domain.vo; import com.ruoyi.common.core.domain.BaseEntity; import lombok.Data; @Data public class TaxedMoneyVO { /** * ç¨åéé¢ */ private String allTaxbeforeMoney; /** * ä¸ªç¨ */ private String allTax; /** * ç¨åéé¢ */ private String allAaxAfterMoney; /** * æ¬æ¬¡ç¨è´¹ */ private String nowTaxBeforeMoney; /** * æ¬æ¬¡ç¨è´¹ */ private String nowTax; } ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFundMapper.java
@@ -2,21 +2,24 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import java.util.List; import com.ruoyi.project.domain.ServiceFund; import com.ruoyi.project.domain.vo.FundVO; import com.ruoyi.project.domain.vo.SpFinancialExpensesFundOut; import com.ruoyi.project.domain.vo.SpFinancialExpensesReimbursementOut; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; /** * è´¹ç¨ç³è¯·ä¸»Mapperæ¥å£ * * * @author ruoyi * @date 2022-01-24 */ public interface ServiceFundMapper extends BaseMapper<ServiceFund> { @Mapper public interface ServiceFundMapper extends BaseMapper<ServiceFund> { /** * æ¥è¯¢è´¹ç¨ç³è¯·ä¸»å表 * @@ -31,7 +34,7 @@ List<FundVO> selectVOList(FundVO fundVO); List<SpFinancialExpensesFundOut> getListBypower(@Param("PAUSERNO") String PAUSERNO, @Param("PAFUNDTYPE") Integer PAFUNDTYPE, @Param("PAAPPLICANT") String PAAPPLICANT, @Param("PAAPPLICATIONBEGTIME") String PAAPPLICATIONBEGTIME, @Param("PAAPPLICATIONENDTIME") String PAAPPLICATIONENDTIME, @Param("PADEPARTMENT") String PADEPARTMENT, @Param("CHECKFLAG") Integer CHECKFLAG, @Param("APPLYTYPE") Integer APPLYTYPE); List<SpFinancialExpensesFundOut> getListBypower(@Param("PAUSERNO") String PAUSERNO, @Param("PAFUNDTYPE") Integer PAFUNDTYPE, @Param("PAAPPLICANT") String PAAPPLICANT, @Param("PAAPPLICATIONBEGTIME") String PAAPPLICATIONBEGTIME, @Param("PAAPPLICATIONENDTIME") String PAAPPLICATIONENDTIME, @Param("PADEPARTMENT") String PADEPARTMENT, @Param("CHECKFLAG") Integer CHECKFLAG, @Param("APPLYTYPE") Integer APPLYTYPE); } ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFunddetailService.java
@@ -7,6 +7,7 @@ import com.ruoyi.project.domain.FunddetailReqVo; import com.ruoyi.project.domain.ServiceFunddetail; import com.ruoyi.project.domain.vo.TaxMoneyVO; import com.ruoyi.project.domain.vo.TaxedMoneyVO; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; @@ -39,6 +40,8 @@ */ Double getTaxBeforeByBeneFiciaryNo(TaxMoneyVO taxMoneyVo); TaxedMoneyVO getTaxBeforeByAfterMoney(TaxMoneyVO taxMoneyVo); List<ServiceFunddetail> getAllDetailsByFDIDLW(Long id); List<ServiceFunddetail> getAllDetailsByFDIDSH(Long id); ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java
@@ -9,6 +9,7 @@ import com.ruoyi.common.tax.TaxtUtils; import com.ruoyi.project.domain.*; import com.ruoyi.project.domain.vo.TaxMoneyVO; import com.ruoyi.project.domain.vo.TaxedMoneyVO; import com.ruoyi.project.mapper.ServiceFundMapper; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -93,24 +94,71 @@ return dataBybeneficiaryNo; } /** * æ ¹æ®åç人ç¼å·è·åç¨è´¹éé¢ * * @param taxMoneyVo * @return */ @Override public Double getTaxBeforeByBeneFiciaryNo(TaxMoneyVO taxMoneyVo) { Double sum = 0.00; Double totalScore = 0.00; List<ServiceFunddetail> taxationByBeneFiciaryNo = serviceFunddetailMapper.getTaxBeforeByBeneFiciaryNo(taxMoneyVo); if (CollectionUtils.isEmpty(taxationByBeneFiciaryNo) && taxMoneyVo.getMoney() == 0) { //é½ä¸º0äºï¼å°±æ²¡æå¿ è¦å计ç®äº return 0.00; if (CollectionUtils.isNotEmpty(taxationByBeneFiciaryNo)) { //计ç®ç³è¯·é颿»åï¼ä¸å æ¬å½åä¼ è¿æ¥ç sum = taxationByBeneFiciaryNo.stream().mapToDouble(ServiceFunddetail::getAmount).sum(); //ä¸å æ¬æ¬¡èªé ¬çä¸ªç¨ totalScore = taxationByBeneFiciaryNo.stream().mapToDouble(ServiceFunddetail::getTaxamount).sum(); } double sum = taxationByBeneFiciaryNo.stream().mapToDouble(ServiceFunddetail::getAmount).sum(); sum = sum + new Double(taxMoneyVo.getMoney()); //å 䏿¬æ¬¡èªé ¬çä¸ªç¨ //å 䏿¬æ¬¡èªé ¬çæ»ä¸ªç¨ String taxation = TaxtUtils.getTaxation(new BigDecimal(sum)); //ä¸å æ¬æ¬¡èªé ¬çä¸ªç¨ Double totalScore = taxationByBeneFiciaryNo.stream().mapToDouble(ServiceFunddetail::getTaxamount).sum(); Double tax = Double.valueOf(taxation) - totalScore; return tax; } /** * æ ¹æ®ç¨åå·¥èµï¼ç®åºç¨åå·¥èµ * * @param money * @return */ @Override public TaxedMoneyVO getTaxBeforeByAfterMoney(TaxMoneyVO taxMoneyVo) { TaxedMoneyVO taxedMoneyVO = new TaxedMoneyVO(); Double sum = 0.00; Double totalScore = 0.00; List<ServiceFunddetail> taxationByBeneFiciaryNo = serviceFunddetailMapper.getTaxBeforeByBeneFiciaryNo(taxMoneyVo); if (CollectionUtils.isNotEmpty(taxationByBeneFiciaryNo)) { //计ç®åºç¨åæ»éé¢ï¼ä¸å 嫿¬æ¬¡ï¼ sum = taxationByBeneFiciaryNo.stream().mapToDouble(ServiceFunddetail::getTaxedamount).sum(); //æ±åºä¹åçæ»çä¸ªç¨ totalScore = taxationByBeneFiciaryNo.stream().mapToDouble(ServiceFunddetail::getTaxamount).sum(); } //计ç®åºæ»çç¨åèªé ¬ï¼å 嫿¬æ¬¡ï¼ sum = sum + taxMoneyVo.getMoney(); //ç¨åæ»éé¢ String taxationBefore = TaxtUtils.getTaxationBefore(new BigDecimal(sum)); //æ»ä¸ªç¨ BigDecimal tax = new BigDecimal(taxationBefore).subtract(new BigDecimal(sum)); //æ¬æ¬¡çç¨åéé¢ String nowTaxMoney = TaxtUtils.getTaxationBefore(new BigDecimal(taxMoneyVo.getMoney())); //æ¬æ¬¡çç¨è´¹ BigDecimal subtract = new BigDecimal(nowTaxMoney).subtract(new BigDecimal(taxMoneyVo.getMoney())); taxedMoneyVO.setAllTax(tax.toString()); taxedMoneyVO.setAllTaxbeforeMoney(taxationBefore); taxedMoneyVO.setAllAaxAfterMoney(sum.toString()); taxedMoneyVO.setNowTaxBeforeMoney(nowTaxMoney); taxedMoneyVO.setNowTax(subtract.toString()); return taxedMoneyVO; } @Override public List<ServiceFunddetail> getAllDetailsByFDIDLW(Long id) {