From fa8521a23af37854e7a23d35467147bd00e008b2 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期四, 14 九月 2023 18:57:31 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxMoneySumEO.java                     |   25 +++++
 ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml                    |   24 ++++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailController.java    |    6 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java |    4 
 ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml                          |    2 
 ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java              |    7 +
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java         |   66 ------------
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java          |    5 +
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxMoneyByItemEO.java                  |   39 +++++++
 ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetail.java                    |    8 +
 ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFunddetailService.java           |    7 +
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java   |  101 +++++++++++++++++++
 12 files changed, 225 insertions(+), 69 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java
index 982ecc3..6f79bf9 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java
@@ -541,6 +541,11 @@
             }
             serviceFundflow.setFlowlevel(OriginalFlowLevel + 1);
             serviceFundflowService.save(serviceFundflow);
+
+            //001瀹℃壒閫氳繃涔嬪悗锛屽氨闇�瑕佹妸鈥滃姙鍏涓讳换鈥濈殑鍚嶅瓧濉笂
+            if (checkFundVO.getFlowconclusion() == 1 && user.getUserId().equals("001")) {
+                serviceFund.setOfficedirector(user.getNickName());
+            }
             serviceFundService.updateById(serviceFund);
 
             ServiceSystemmessage serviceSystemmessage = new ServiceSystemmessage();
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 8ff1b29..69d353b 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
@@ -161,4 +161,10 @@
     public AjaxResult getFundDetail(@PathVariable("id") Long id) {
         return AjaxResult.success(serviceFunddetailService.getFundDetail(id));
     }
+
+    @ApiOperation("鏍规嵁鏉′欢绠楃◣")
+    @PostMapping("/calculateTax")
+    public AjaxResult calculateTax(@RequestBody List<ServiceFunddetail> serviceFunddetails) {
+        return AjaxResult.success(serviceFunddetailService.calculateTax(serviceFunddetails));
+    }
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java
index c7957f2..0a759dd 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java
@@ -628,6 +628,10 @@
                 }
 
             }
+            //001瀹℃壒閫氳繃涔嬪悗锛屽氨闇�瑕佹妸鈥滃姙鍏涓讳换鈥濈殑鍚嶅瓧濉笂
+            if (checkFundVO.getFlowconclusion() == 1 && user.getUserId().equals("001")) {
+                serviceReimbursement.setOfficedirector(user.getNickName());
+            }
 
             serviceReimbursementService.updateById(serviceReimbursement);
 
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetail.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetail.java
index c663897..2854d23 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetail.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetail.java
@@ -333,5 +333,13 @@
     @ApiModelProperty("闄勪欢鏂囦欢鍦板潃")
     private String annexfiles;
 
+
+    /**
+     * 璁$畻绋庤垂鏃堕棿
+     */
+    @ApiModelProperty("璁$畻绋庤垂鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date taxTime;
+
 }
 
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxMoneyByItemEO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxMoneyByItemEO.java
new file mode 100644
index 0000000..62a54d7
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxMoneyByItemEO.java
@@ -0,0 +1,39 @@
+package com.ruoyi.project.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class TaxMoneyByItemEO extends BaseEntity {
+
+    /**
+     * 鍙楃泭浜虹紪鍙�
+     */
+    private String beneficiaryNo;
+
+    /**
+     * 璐圭敤鍒涘缓鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date taxTime;
+
+    /**
+     * 鏈湀绗竴澶╃殑鏃堕棿  YYYY-MM-DD hh-mm-ss
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date firstDay;
+
+    /**
+     * 浜哄憳绫诲埆
+     */
+    private Long applyType;
+
+    /**
+     * 璧勯噾鐢宠涓昏〃ID
+     */
+    private Long fundID;
+
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxMoneySumEO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxMoneySumEO.java
new file mode 100644
index 0000000..0855132
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/TaxMoneySumEO.java
@@ -0,0 +1,25 @@
+package com.ruoyi.project.domain.vo;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+public class TaxMoneySumEO extends BaseEntity {
+
+    /**
+     * 绋庡墠鎬婚
+     */
+    private double amounts;
+
+    /**
+     * 绋庢�婚
+     */
+    private double taxAmounts;
+
+    /**
+     * 绋庡悗鎬婚
+     */
+    private double taxedAmounts;
+
+
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java
index 5f5e1ab..efd46f0 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java
@@ -7,6 +7,8 @@
 
 import com.ruoyi.project.domain.FunddetailReqVo;
 import com.ruoyi.project.domain.ServiceFunddetail;
+import com.ruoyi.project.domain.vo.TaxMoneyByItemEO;
+import com.ruoyi.project.domain.vo.TaxMoneySumEO;
 import com.ruoyi.project.domain.vo.TaxMoneyVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -47,6 +49,9 @@
 
     List<ServiceFunddetail> getTaxBeforeByBeneFiciaryNo(TaxMoneyVO taxMoneyV);
 
+    boolean updateTaxTime(ServiceFunddetail serviceFunddetail);
+
+    TaxMoneySumEO getTaxSum(TaxMoneyByItemEO taxMoneyByItemEO);
 
 
-    }
+}
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 fba73b6..799ea55 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
@@ -60,4 +60,11 @@
     int deleteDetail(Long id);
 
     List<ServiceFunddetailVO> getFundDetail(Long id);
+
+    /**
+     * 鏍规嵁鏉′欢绠楃◣
+     *
+     * @param serviceFunddetails
+     */
+    public Boolean calculateTax(List<ServiceFunddetail> serviceFunddetails);
 }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java
index db211f1..1cb4537 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java
@@ -670,6 +670,7 @@
     @Transactional
     public Long addOrUpdateNew(ServiceFundVO serviceFundVO) {
         Long id = null;
+        //灏嗘暟鎹繚瀛樺埌fund琛�
         if (serviceFundVO.getId() == null) {
             save(serviceFundVO);
             id = serviceFundVO.getId();
@@ -682,82 +683,21 @@
             System.out.println("serviceFunddetails涓虹┖鍠�");
             return null;
         }
-        // 鐢ㄤ簬璁板綍绋庡墠銆佺◣鍚庣殑鎬诲拰
-        double taxBefore = 0.0;
-        double taxAfter = 0.0;
-
+        // 淇濆瓨璇︽儏鏁版嵁
         for (ServiceFunddetailVO serviceFunddetailVO : serviceFunddetails) {
             serviceFunddetailVO.setFundid(id);
             //灏囬檮浠惰浆鎴恓son
             if (!CollectionUtils.isEmpty(serviceFunddetailVO.getAnnexfilesList())) {
                 serviceFunddetailVO.setAnnexfiles(JSON.toJSONString(serviceFunddetailVO.getAnnexfilesList()));
             }
-            if (serviceFunddetailVO.getTaxedamount() != null && serviceFunddetailVO.getAmount() != null && serviceFunddetailVO.getTaxedamount() != 0.0 && serviceFunddetailVO.getAmount() != 0.0) {
-                // 绋庡墠绋庡悗閮戒笉涓虹┖
-                ServiceFunddetail serviceFunddetail = DtoConversionUtils.sourceToTarget(serviceFunddetailVO, ServiceFunddetail.class);
-
-
-                if (serviceFunddetailVO.getId() == null) {
-                    serviceFunddetailService.save(serviceFunddetail);
-                } else {
-                    serviceFunddetailService.updateById(serviceFunddetail);
-                }
-                //璁$畻绋庨噾
-                if (serviceFunddetail.getAmount() != null) {
-                    taxBefore = taxBefore + serviceFunddetail.getAmount();
-                }
-                if (serviceFunddetail.getTaxedamount() != null) {
-                    taxAfter = taxAfter + serviceFunddetail.getTaxedamount();
-                }
-                continue;
-            } else if (serviceFunddetailVO.getTaxedamount() != null && serviceFunddetailVO.getTaxedamount() != 0.0) {
-                // 绋庡悗姹傜◣鍓�,濡傛灉鏄笓瀹惰垂鐢宠  鎴� 浼︾悊涓撳璐圭敵璇�   鎵嶄細璁$畻绋庡墠绋庡悗
-                if (StringUtils.isNotEmpty(serviceFundVO.getApplytype()) && serviceFundVO.getApplytype().equals("1") || serviceFundVO.getApplytype().equals("2")) {
-                    Double taxationBefore = Double.valueOf(TaxtUtils.getTaxationBefore(BigDecimal.valueOf(serviceFunddetailVO.getTaxedamount())));
-                    // 绋庨噾
-                    String taxation = TaxtUtils.getTaxation(BigDecimal.valueOf(taxationBefore));
-                    serviceFunddetailVO.setAmount(Double.valueOf(taxationBefore));
-                    serviceFunddetailVO.setTaxamount(Double.parseDouble(taxation));
-                }
-            } else if (serviceFunddetailVO.getAmount() != null && serviceFunddetailVO.getAmount() != 0.0) {
-                // 绋庡墠姹傜◣鍚�,濡傛灉鏄笓瀹惰垂鐢宠  鎴� 浼︾悊涓撳璐圭敵璇�   鎵嶄細璁$畻绋庡墠绋庡悗
-                if (StringUtils.isNotEmpty(serviceFundVO.getApplytype()) && serviceFundVO.getApplytype().equals("1") || serviceFundVO.getApplytype().equals("2")) {
-                    double tax = Double.parseDouble(TaxtUtils.getTaxation(BigDecimal.valueOf(serviceFunddetailVO.getAmount())));
-                    BigDecimal taxAfterMoney = BigDecimal.valueOf(serviceFunddetailVO.getAmount()).subtract(BigDecimal.valueOf(tax));
-                    serviceFunddetailVO.setTaxamount(tax);
-                    serviceFunddetailVO.setTaxedamount(taxAfterMoney.doubleValue());
-                }
-            }
-
-            //鏍规嵁id鍒ゆ柇鏄柊澧炶繕鏄慨鏀�
             ServiceFunddetail serviceFunddetail = DtoConversionUtils.sourceToTarget(serviceFunddetailVO, ServiceFunddetail.class);
+
             if (serviceFunddetailVO.getId() == null) {
                 serviceFunddetailService.save(serviceFunddetail);
             } else {
                 serviceFunddetailService.updateById(serviceFunddetail);
             }
-//            if (serviceFundVO.getApplytype().equals("1") || serviceFundVO.getApplytype().equals("2")) {
-            //濡傛灉鏄笓瀹惰垂鐢宠  鎴� 浼︾悊涓撳璐圭敵璇�   鎵嶄細璁$畻绋庡墠绋庡悗
-            if (serviceFunddetail.getAmount() != null) {
-                taxBefore = taxBefore + serviceFunddetail.getAmount();
-            }
-            if (serviceFunddetail.getTaxedamount() != null) {
-                taxAfter = taxAfter + serviceFunddetail.getTaxedamount();
-            }
         }
-        //灏嗙◣鍓嶃�佺◣鍚庨噾棰濇洿鏂板埌fund琛ㄤ腑
-        serviceFundVO.setPretaxcost(taxBefore);
-        serviceFundVO.setTaxedcost(taxAfter);
-        //鐢宠閲戦涓哄惈绋庨噾棰�
-        if (serviceFundVO.getApplytype().equals("1") || serviceFundVO.getApplytype().equals("2")) {
-            //涓◣   绋庡墠锛堟湁绋庯級 - 绋� = 绋庡悗
-            serviceFundVO.setAmountrequested(taxBefore);
-        } else {
-            //閲囪喘   绋庡墠锛堟棤绋庯級 + 绋� = 绋庡悗锛堝惈绋庨噾棰濓級
-            serviceFundVO.setAmountrequested(taxAfter);
-        }
-
-        updateById(serviceFundVO);
 
         return 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 698d830..aae29db 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
@@ -1,8 +1,11 @@
 package com.ruoyi.project.service.impl;
 
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
+import java.time.ZoneId;
 import java.time.temporal.TemporalAdjusters;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -11,8 +14,7 @@
 import com.ruoyi.common.tax.TaxtUtils;
 import com.ruoyi.common.utils.bean.DtoConversionUtils;
 import com.ruoyi.project.domain.*;
-import com.ruoyi.project.domain.vo.TaxMoneyVO;
-import com.ruoyi.project.domain.vo.TaxedMoneyVO;
+import com.ruoyi.project.domain.vo.*;
 import com.ruoyi.project.mapper.ServiceFundMapper;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -23,6 +25,7 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.project.mapper.ServiceFunddetailMapper;
 import com.ruoyi.project.service.IServiceFunddetailService;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 璐圭敤鐢宠鏄庣粏Service涓氬姟灞傚鐞�
@@ -231,4 +234,98 @@
         return serviceFunddetailVOS;
     }
 
+    /**
+     * 鏍规嵁鏉′欢绠楃◣
+     *
+     * @param serviceFunddetails
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean calculateTax(List<ServiceFunddetail> serviceFunddetails) {
+        //鐢ㄤ簬涓存椂淇濆瓨宸茬粡绠楀ソ鐨�"璐圭敤璇︽儏鏁版嵁"
+        List<ServiceFunddetail> temporarySave = new ArrayList<>();
+
+        for (ServiceFunddetail serviceFunddetail : serviceFunddetails) {
+            //鑾峰彇褰撴湀鐨勭涓�澶�
+            Date firstDay = Date.from(LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()).atStartOfDay(ZoneId.systemDefault()).toInstant());
+            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            String firstDatStr = dateFormat.format(firstDay);
+            TaxMoneyByItemEO taxMoneyVO = new TaxMoneyByItemEO();
+
+            taxMoneyVO.setTaxTime(new Date());
+            taxMoneyVO.setFirstDay(firstDay);
+            taxMoneyVO.setApplyType(Long.valueOf(serviceFunddetail.getApplytype()));
+            taxMoneyVO.setFundID(serviceFunddetail.getFundid());
+            taxMoneyVO.setBeneficiaryNo(serviceFunddetail.getBeneficiaryno());
+            //鏌ュ嚭绋庡墠銆佺◣銆佺◣鍚庣殑鎬婚锛堜笉鍖呭惈鏈锛�
+            TaxMoneySumEO taxSum = serviceFunddetailMapper.getTaxSum(taxMoneyVO);
+            if (ObjectUtils.isEmpty(taxSum)) {
+                taxSum = new TaxMoneySumEO();
+            }
+
+            //鍒ゆ柇涓存椂闆嗗悎temporarySave涓紝鏈夋病鏈夊凡缁忕畻杩囩殑鏁版嵁
+            if (CollectionUtils.isNotEmpty(temporarySave)) {
+                for (ServiceFunddetail serviceFunddetail1 : temporarySave) {
+                    //濡傛灉鏈鐨勨�濅汉鍛樼被鍨嬧�溿�佲�濆彈鐩婁汉缂栧彿鈥滃湪涓存椂闆嗗悎涓瓨鍦紝鍒欏皢闆嗗悎鏁版嵁涓殑璇ュ彈鐩婁汉鐨勶紝绋庡墠銆佺◣閲戙�佺◣鍚庯紝鍜屾�荤殑鐩稿姞锛屽苟灏嗚�佺殑瑕嗙洊
+                    if (serviceFunddetail1.getApplytype().equals(serviceFunddetail.getApplytype()) && serviceFunddetail1.getBeneficiaryno().equals(serviceFunddetail.getBeneficiaryno())) {
+                        //灏嗛泦鍚堟暟鎹腑鐨勮鍙楃泭浜虹殑锛岀◣鍓嶃�佺◣閲戙�佺◣鍚庯紝鍜屾�荤殑鐩稿姞
+                        BigDecimal amounts = BigDecimal.valueOf(taxSum.getAmounts()).add(new BigDecimal(String.valueOf(serviceFunddetail1.getAmount())));
+                        BigDecimal taxAmounts = BigDecimal.valueOf(taxSum.getTaxAmounts()).add(new BigDecimal(String.valueOf(serviceFunddetail1.getTaxamount())));
+                        BigDecimal TaxedAmounts = BigDecimal.valueOf(taxSum.getTaxedAmounts()).add(new BigDecimal(String.valueOf(serviceFunddetail1.getTaxedamount())));
+                        //灏嗚�佺殑瑕嗙洊
+                        taxSum.setAmounts(amounts.doubleValue());
+                        taxSum.setTaxAmounts(taxAmounts.doubleValue());
+                        taxSum.setTaxedAmounts(TaxedAmounts.doubleValue());
+                    }
+                    continue;
+                }
+            }
+
+            if (!serviceFunddetail.getServicesscopename().contains("绋庡悗")) {
+                // 濡備綍绋庡墠閲戦涓嶄负绌猴紝鐢ㄤ箣鍓嶇殑鈥濇�荤◣鍓嶉噾棰濃�滐紝鍔犱笂褰撳墠鈥濈◣鍓嶉噾棰濃��
+                BigDecimal newAmounts = BigDecimal.valueOf(taxSum.getAmounts()).add(BigDecimal.valueOf(serviceFunddetail.getAmount()));
+
+                // 璁$畻鎬荤◣閲戯紙鍖呭惈鏈锛�
+                String taxation = TaxtUtils.getTaxation(newAmounts);
+                //璁$畻鏈绋庨噾锛堟�荤◣閲戯紙鍖呭惈鏈锛� - 鎬荤◣閲戯紙涓嶅寘鍚湰娆★級锛�
+                BigDecimal taxAmountNow = new BigDecimal(taxation).subtract(new BigDecimal(String.valueOf(taxSum.getTaxAmounts())));
+
+                //璁$畻鏈鐨勭◣鍚庨噾棰�(鏈鐨勭◣鍓嶉噾棰� - 绋庨噾)
+                BigDecimal texdAfterNow = BigDecimal.valueOf(serviceFunddetail.getAmount()).subtract(taxAmountNow);
+
+                //灏嗗惊鐜殑鏁版嵁閲嶆柊鏀惧埌涓�涓柊瀵硅薄涓�
+                ServiceFunddetail serviceFunddetail3 = DtoConversionUtils.sourceToTarget(serviceFunddetail, ServiceFunddetail.class);
+                serviceFunddetail3.setTaxamount(taxAmountNow.doubleValue());
+                serviceFunddetail3.setTaxedamount(texdAfterNow.doubleValue());
+                serviceFunddetail3.setTaxTime(new Date());
+                // 灏嗚鏉℃暟鎹洿鏂�
+                updateById(serviceFunddetail3);
+                // 鎶婅鏁版嵁锛屾斁鍒颁复鏃剁殑闆嗗悎涓�
+                temporarySave.add(serviceFunddetail3);
+            } else if (serviceFunddetail.getServicesscopename().contains("绋庡悗")) {
+                //绋庡悗涓嶄负绌�, 鐢ㄤ箣鍓嶇殑鈥濇�荤◣鍚庨噾棰濃�滐紝鍔犱笂褰撳墠鈥濈◣鍚庨噾棰濃��
+                BigDecimal newTaxedAmounts = BigDecimal.valueOf(taxSum.getTaxedAmounts()).add(BigDecimal.valueOf(serviceFunddetail.getTaxedamount()));
+
+                //閫氳繃鎬荤◣鍚庯紙鍖呭惈鏈锛夌畻鍑烘�荤◣鍓�
+                String taxationBefore = TaxtUtils.getTaxationBefore(newTaxedAmounts);
+                //绠楀嚭鏈绋庡墠锛堟�荤◣鍓嶏紙鍖呭惈鏈锛� - 鎬荤◣鍓嶏紙涓嶅寘鍚湰娆★級锛�
+                BigDecimal amountNow = new BigDecimal(taxationBefore).subtract(BigDecimal.valueOf(taxSum.getAmounts()));
+
+                //绠楀嚭鏈绋庨噾(鏈绋庡墠 - 鏈绋庡悗)
+                BigDecimal tax = amountNow.subtract(BigDecimal.valueOf(serviceFunddetail.getTaxedamount()));
+
+                //灏嗗惊鐜殑鏁版嵁閲嶆柊鏀惧埌涓�涓柊瀵硅薄涓�
+                ServiceFunddetail serviceFunddetail3 = DtoConversionUtils.sourceToTarget(serviceFunddetail, ServiceFunddetail.class);
+                serviceFunddetail3.setAmount(amountNow.doubleValue());
+                serviceFunddetail3.setTaxamount(tax.doubleValue());
+                serviceFunddetail3.setTaxTime(new Date());
+                // 灏嗚鏉℃暟鎹洿鏂�
+                updateById(serviceFunddetail3);
+                // 鎶婅鏁版嵁锛屾斁鍒颁复鏃剁殑闆嗗悎涓�
+                temporarySave.add(serviceFunddetail3);
+            }
+        }
+        return true;
+    }
+
 }
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml
index 030503a..bea6317 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml
@@ -113,7 +113,7 @@
         from service_fund
     </sql>
 
-    <select id="selectServiceFundList" parameterType="ServiceFund" resultMap="ServiceFundResult">
+    <select id="selectServiceFundList" parameterType="com.ruoyi.project.domain.ServiceFund" resultMap="ServiceFundResult">
         <include refid="selectServiceFundVo"/>
 
         where del_flag = '0'
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml
index 73de6cd..1447548 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml
@@ -56,7 +56,8 @@
         <result property="itemcode" column="ItemCode"/>
         <result property="subjecttype" column="subjecttype"/>
         <result property="subjecttypename" column="subjecttypename"/>
-        <result property="AnnexFiles" column="AnnexFiles"/>
+        <result property="annexfiles" column="AnnexFiles"/>
+        <result property="taxTime" column="tax_time"/>
     </resultMap>
 
     <sql id="selectServiceFunddetailVo">
@@ -111,7 +112,8 @@
                SERVICETYPENAME,
                subjecttype,
                subjecttypename,
-               AnnexFiles
+               AnnexFiles,
+               tax_time
         from service_funddetail
     </sql>
 
@@ -244,4 +246,22 @@
 
     </select>
 
+    <update id="updateTaxTime" parameterType="com.ruoyi.project.domain.ServiceFunddetail">
+        update com.ruoyi.project.domain.
+        <set>
+            tax_time = #{taxTime},
+        </set>
+        where fundID = #{fundid}
+    </update>
+
+    <select id="getTaxSum" parameterType="com.ruoyi.project.domain.vo.TaxMoneyByItemEO" resultType="com.ruoyi.project.domain.vo.TaxMoneySumEO">
+        SELECT sum(Amount) amounts, sum(TaxAmount) taxAmounts, sum(TaxedAmount) taxedAmounts
+        FROM service_funddetail
+        where fundID &lt; #{fundID}
+          and tax_time &lt; #{taxTime}
+          and tax_time >= #{firstDay}
+          and ApplyType = #{applyType}
+          and BeneficiaryNo = #{beneficiaryNo}
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3