From 55aac55195dc2bd404042ec099045fee8ac73e81 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期三, 02 七月 2025 21:48:53 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundtaxServiceImpl.java |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 55 insertions(+), 4 deletions(-)

diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundtaxServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundtaxServiceImpl.java
index e34b7e8..04b4c89 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundtaxServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundtaxServiceImpl.java
@@ -9,16 +9,24 @@
 import com.ruoyi.project.domain.ServiceFunddetail;
 import com.ruoyi.project.domain.ServiceFundtax;
 import com.ruoyi.project.domain.vo.FundTaxVO;
+import com.ruoyi.project.domain.vo.TaxMoneyByItemEO;
+import com.ruoyi.project.domain.vo.TaxMoneySumEO;
+import com.ruoyi.project.mapper.ServiceFundMapper;
 import com.ruoyi.project.mapper.ServiceFunddetailMapper;
 import com.ruoyi.project.mapper.ServiceFundtaxMapper;
 import com.ruoyi.project.service.IServiceFundService;
 import com.ruoyi.project.service.IServiceFunddetailService;
 import com.ruoyi.project.service.IServiceFundtaxService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.List;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.time.temporal.TemporalAdjusters;
+import java.util.*;
 
 /**
  * 涓撳璐圭敤绠楃◣鐢宠涓籗ervice涓氬姟灞傚鐞�
@@ -26,6 +34,7 @@
  * @author ruoyi
  * @date 2024-03-13
  */
+@Slf4j
 @Service
 public class ServiceFundtaxServiceImpl extends ServiceImpl<ServiceFundtaxMapper, ServiceFundtax> implements IServiceFundtaxService {
 
@@ -37,6 +46,9 @@
     private IServiceFundService serviceFundService;
     @Autowired
     private ServiceFundtaxMapper serviceFundtaxMapper;
+
+    @Autowired
+    private ServiceFundMapper serviceFundMapper;
 
 
     /**
@@ -155,28 +167,67 @@
         return serviceFundtaxMapper.getMaxFundTaxId();
     }
 
+    /**
+     * 鎵归噺绠楃◣涓诲叆鍙�
+     * 1. 鏍¢獙鍙傛暟
+     * 2. 鏍¢獙鎵规鍚堟硶鎬э紙濡傛湁蹇呰锛�
+     * 3. 鏌ヨ鏈壒娆℃墍鏈塖erviceFund锛堟寜id鍗囧簭锛�
+     * 4. 棰勬煡璇㈡湰鏈堟墍鏈夎韩浠借瘉鍙风殑绱閲戦锛岀紦瀛樺埌Map锛屾彁鍗囧悗缁畻绋庢晥鐜�
+     * 5. 閬嶅巻姣忎釜ServiceFund锛屾壒閲忕畻绋�
+     *
+     * @param fundTaxVO 鎵规绠楃◣鍙傛暟
+     * @return 鏄惁绠楃◣鎴愬姛
+     */
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public Boolean batchFundTax(FundTaxVO fundTaxVO) {
+        log.info("鎵归噺绠楃◣鐨刦undTaxVO鍏ュ弬涓猴細{}", fundTaxVO);
+        // 1. 鏍¢獙鍙傛暟
         if (fundTaxVO.getFundTaxId() == null) {
             throw new BaseException("鍒嗘壒绠楃◣鍑洪棶棰樹簡,璇锋鏌ュ悗鍐嶈繘琛岃绠�");
         }
+        // 2. 鏍¢獙鎵规鍚堟硶鎬э紙浠呴檺淇敼鎿嶄綔锛�
         if (fundTaxVO.getAddOrupdate() == 1) {
             Integer maxFundTaxId = serviceFundtaxMapper.getMaxFundTaxId();
-            if (fundTaxVO.getFundTaxId() != maxFundTaxId.longValue()) {
+            log.info("鎵归噺绠楃◣鐨刴axFundTaxId涓猴細{}", maxFundTaxId);
+            if (!fundTaxVO.getFundTaxId().equals(Long.valueOf(maxFundTaxId))) {
                 throw new BaseException("璇ユ壒鏁版嵁涓嶈兘绠楃◣");
             }
         }
 
+        // 3. 鏌ヨ鏈壒娆℃墍鏈塖erviceFund锛堟寜id鍗囧簭锛�
         ServiceFund serviceFund = new ServiceFund();
         serviceFund.setFundTaxId(fundTaxVO.getFundTaxId());
         serviceFund.setDel_flag(0);
         List<ServiceFund> serviceFunds = serviceFundService.selectServiceFundList(serviceFund);
         for (ServiceFund serviceFund1 : serviceFunds) {
+            serviceFundMapper.updateFundIsTexById(serviceFund1.getId(), 0L);
+        }
+
+        // 鎸塱d鍗囧簭鎺掑簭锛屼繚璇佸鐞嗛『搴忎竴鑷�
+        serviceFunds.sort(Comparator.comparing(ServiceFund::getId));
+        if (CollectionUtils.isEmpty(serviceFunds)) {
+            log.warn("鏈煡璇㈠埌鐩稿叧ServiceFund锛宖undTaxId={}", fundTaxVO.getFundTaxId());
+            return false;
+        }
+
+        // 4. 棰勬煡璇㈡湰鏈堟墍鏈夎韩浠借瘉鍙风殑绱閲戦锛岀紦瀛樺埌Map锛屾彁鍗囧悗缁畻绋庢晥鐜�
+        TaxMoneyByItemEO taxMoneyVO = new TaxMoneyByItemEO();
+        Date firstDay = Date.from(LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()).atStartOfDay(ZoneId.systemDefault()).toInstant());
+        taxMoneyVO.setFirstDay(firstDay);
+        taxMoneyVO.setTaxTime(new Date());
+        Map<String, TaxMoneySumEO> tempTaxSumMap = new HashMap<>();
+        List<TaxMoneySumEO> taxSum = serviceFunddetailMapper.getTaxSum(taxMoneyVO);
+        for (TaxMoneySumEO taxMoneySumEO : taxSum) {
+            tempTaxSumMap.put(taxMoneySumEO.getIDCardNo(), taxMoneySumEO);
+        }
+
+        // 5. 閬嶅巻姣忎釜ServiceFund锛屾壒閲忕畻绋�
+        for (ServiceFund serviceFund1 : serviceFunds) {
             ServiceFunddetail serviceFunddetail = new ServiceFunddetail();
             serviceFunddetail.setFundid(serviceFund1.getId());
             List<ServiceFunddetail> serviceFunddetails = serviceFunddetailMapper.selectServiceFunddetailList(serviceFunddetail);
-            serviceFunddetailService.calculateTax(serviceFunddetails);
+            // 浼犲叆绱閲戦缂撳瓨锛屾彁鍗囩畻绋庢晥鐜�
+            serviceFunddetailService.calculateTax(serviceFunddetails, tempTaxSumMap);
         }
         return true;
     }

--
Gitblit v1.9.3