From 160ed62b3eca5e6b57efd945c95fb5a719bea785 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 06 六月 2023 11:35:37 +0800
Subject: [PATCH] 根据税后求税前金额

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailController.java  |   12 +++
 ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFundMapper.java                  |   11 ++-
 ruoyi-common/src/main/java/com/ruoyi/common/tax/TaxtUtils.java                               |   44 +++++++++++++-
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxedMoneyVO.java                    |   35 +++++++++++
 ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFunddetailService.java         |    3 +
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java |   62 ++++++++++++++++++--
 6 files changed, 152 insertions(+), 15 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailController.java
index e75e0ff..5e5ec5a 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailController.java
+++ b/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));
+    }
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/tax/TaxtUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/tax/TaxtUtils.java
index 3a78e57..894d7f4 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/tax/TaxtUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/tax/TaxtUtils.java
@@ -41,7 +41,7 @@
         // 褰揦>4000鏃�
         //(1)褰揦*(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) {
+        //褰揦<=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);
     }
 
 }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxedMoneyVO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxedMoneyVO.java
new file mode 100644
index 0000000..7ce3e34
--- /dev/null
+++ b/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;
+
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFundMapper.java b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFundMapper.java
index 9cda208..d0e5cce 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFundMapper.java
+++ b/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;
 
 /**
  * 璐圭敤鐢宠涓籑apper鎺ュ彛
- * 
+ *
  * @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);
 
 
 }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFunddetailService.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFunddetailService.java
index 27ef39d..c2850ab 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFunddetailService.java
+++ b/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);
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java
index 32b0637..f7add24 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java
+++ b/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) {

--
Gitblit v1.9.3