From 64bce2eb858b95e7851b6c05fa34938dbfb701e6 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期四, 30 五月 2024 16:49:13 +0800
Subject: [PATCH] 修改因算税时间一税,导致获取历史数据不准的问题(加上xh字段) 个税汇总里的功能,删除时一个fund时,将相应的fund的“算税时间” 和"funddetail"表里的“算税时间”、“序号”置空

---
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java |  104 ++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 92 insertions(+), 12 deletions(-)

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 bf6a358..a7038e2 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,13 +9,16 @@
 
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.tax.PerformanceTaxtUtils;
 import com.ruoyi.common.tax.TaxtUtils;
 import com.ruoyi.common.utils.bean.DtoConversionUtils;
 import com.ruoyi.project.domain.*;
 import com.ruoyi.project.domain.vo.*;
 import com.ruoyi.project.mapper.ServiceFundMapper;
+import com.ruoyi.project.mapper.SpStatBonusMapper;
 import lombok.extern.flogger.Flogger;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -35,6 +38,7 @@
  * @author ruoyi
  * @date 2022-01-25
  */
+@Slf4j
 @Service
 public class ServiceFunddetailServiceImpl extends ServiceImpl<ServiceFunddetailMapper, ServiceFunddetail> implements IServiceFunddetailService {
     protected final Logger logger = LoggerFactory.getLogger(this.getClass());
@@ -43,6 +47,9 @@
 
     @Autowired
     ServiceFundMapper serviceFundMapper;
+
+    @Autowired
+    SpStatBonusMapper spStatBonusMapper;
 
 
     /**
@@ -95,6 +102,12 @@
         }
         if (serviceFunddetail.getDel_flag() != null) {
             wrappers.eq(ServiceFunddetail::getDel_flag, serviceFunddetail.getDel_flag());
+        }
+        if (serviceFunddetail.getDeptId() != null) {
+            wrappers.eq(ServiceFunddetail::getDeptId, serviceFunddetail.getDeptId());
+        }
+        if (serviceFunddetail.getDeptName() != null) {
+            wrappers.eq(ServiceFunddetail::getDeptName, serviceFunddetail.getDeptName());
         }
         return this.list(wrappers);
     }
@@ -260,11 +273,30 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean calculateTax(List<ServiceFunddetail> serviceFunddetails) {
-        //鐢ㄤ簬涓存椂淇濆瓨宸茬粡绠楀ソ鐨�"璐圭敤璇︽儏鏁版嵁"
-        List<ServiceFunddetail> temporarySave = new ArrayList<>();
+        if (CollectionUtils.isEmpty(serviceFunddetails)) {
+            throw new BaseException("绠楃◣鏉′欢涓虹┖锛岃妫�鏌ュ悗锛屽啀杩涜璁$畻");
+        }
+        // 鍏堝serviceFunddetails鎺掑簭
+        Comparator<ServiceFunddetail> customComparator = Comparator.comparing(obj -> {
+            if (ObjectUtils.isEmpty(obj.getTaxTime())) {
+                return 1; // 杩斿洖1琛ㄧず瀛楁涓虹┖鐨勫璞℃帓鍦ㄥ悗闈�
+            } else {
+                return 0; // 杩斿洖0琛ㄧず瀛楁涓嶄负绌虹殑瀵硅薄淇濇寔鍘熼『搴�
+            }
+        });
+        Collections.sort(serviceFunddetails, customComparator);
 
+        //杩欎釜鏄负浜嗚幏鍙杅und_tax_time
+        Long fundid = serviceFunddetails.get(0).getFundid();
+        log.info("绠楃◣鐨刦undid鐨勫�间负锛歿}", fundid);
+        ServiceFund serviceFund1 = serviceFundMapper.selectById(fundid);
+        log.info("fund琛ㄧ殑fundtextime鍊间负锛歿}", serviceFund1.getFundtaxtime());
+
+//        //鐢ㄤ簬涓存椂淇濆瓨宸茬粡绠楀ソ鐨�"璐圭敤璇︽儏鏁版嵁"
+        List<ServiceFunddetail> temporarySave = new ArrayList<>();
         //淇濆瓨鎬荤◣鍓嶉噾棰濓紙鐢ㄤ簬鏇存柊fund琛ㄩ噷鐨勶級
         BigDecimal pretaxcost = BigDecimal.valueOf(0.00);
+        BigDecimal taxedcost = BigDecimal.valueOf(0.00);
         for (ServiceFunddetail serviceFunddetail : serviceFunddetails) {
             if (StringUtils.isEmpty(serviceFunddetail.getIdcardno())) {
                 logger.info("serviceFunddetail鏁版嵁鍏ュ弬 锛� {}", serviceFunddetail);
@@ -274,6 +306,10 @@
                 } else {
                     serviceFunddetail.setAmount(serviceFunddetail.getTaxedamount());
                 }
+                //鍏徃鐨勭敵璇烽噾棰濅篃瑕佸姞杩涘幓
+                pretaxcost = pretaxcost.add(BigDecimal.valueOf(serviceFunddetail.getAmount()));
+                taxedcost = taxedcost.add(BigDecimal.valueOf(serviceFunddetail.getTaxedamount()));
+
                 serviceFunddetail.setTaxamount(0.0);
                 logger.info("serviceFunddetail鏇存柊鍚庣殑鏁版嵁 锛� {}", serviceFunddetail);
                 boolean b = this.updateById(serviceFunddetail);
@@ -283,16 +319,30 @@
 
             //鑾峰彇褰撴湀鐨勭涓�澶�
             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();
+            //鑾峰彇鍒板綋鍓嶄汉鐨勬湰鏈堢畻绋庡簭鍙锋渶澶у��
+            TaxMoneyByItemEO taxMoneyByItemEO = new TaxMoneyByItemEO();
+            taxMoneyByItemEO.setFirstDay(firstDay);
+            taxMoneyByItemEO.setIDCard(serviceFunddetail.getIdcardno());
+            taxMoneyByItemEO.setTaxTime(new Date());
+            Long maxXH = serviceFunddetailMapper.getMaxXH(taxMoneyByItemEO);
+            if (maxXH == null) {
+                maxXH = 0L;
+            }
 
-            taxMoneyVO.setTaxTime(new Date());
+            TaxMoneyByItemEO taxMoneyVO = new TaxMoneyByItemEO();
+            if (serviceFund1.getFundtaxtime() != null) {
+                taxMoneyVO.setTaxTime(serviceFund1.getFundtaxtime());
+            } else {
+                taxMoneyVO.setTaxTime(new Date());
+            }
             taxMoneyVO.setFirstDay(firstDay);
-//            taxMoneyVO.setApplyType(Long.valueOf(serviceFunddetail.getApplytype()));
             taxMoneyVO.setFundID(serviceFunddetail.getFundid());
-//            taxMoneyVO.setBeneficiaryNo(serviceFunddetail.getBeneficiaryno());
             taxMoneyVO.setIDCard(serviceFunddetail.getIdcardno());
+            if (serviceFunddetail.getXh() != null) {
+                taxMoneyVO.setXh(serviceFunddetail.getXh());
+            } else {
+                taxMoneyVO.setXh(maxXH + 1);
+            }
             //鏌ュ嚭绋庡墠銆佺◣銆佺◣鍚庣殑鎬婚锛堜笉鍖呭惈鏈锛�
             TaxMoneySumEO taxSum = serviceFunddetailMapper.getTaxSum(taxMoneyVO);
             logger.info("鏌ヨ鐨則axSum鐨勫�� 锛� {}", taxSum);
@@ -318,6 +368,9 @@
                     continue;
                 }
             }
+            if (serviceFunddetail.getXh() == null) {
+                serviceFunddetail.setXh(maxXH + 1);
+            }
 
             if (StringUtils.isEmpty(serviceFunddetail.getServicesscopename()) || !serviceFunddetail.getServicesscopename().contains("绋庡悗")) {
                 logger.info("璁$畻绋庡墠淇℃伅寮�濮嬶細{}", serviceFunddetail);
@@ -338,13 +391,19 @@
                 ServiceFunddetail serviceFunddetail3 = DtoConversionUtils.sourceToTarget(serviceFunddetail, ServiceFunddetail.class);
                 serviceFunddetail3.setTaxamount(taxAmountNow.doubleValue());
                 serviceFunddetail3.setTaxedamount(texdAfterNow.doubleValue());
-                serviceFunddetail3.setTaxTime(new Date());
+                if (ObjectUtils.isEmpty(serviceFund1.getFundtaxtime())) {
+                    serviceFunddetail3.setTaxTime(new Date());
+                } else {
+                    serviceFunddetail3.setTaxTime(serviceFund1.getFundtaxtime());
+                }
                 logger.info("鎵撳嵃绋庡墠serviceFunddetail3鏁版嵁 :{}", serviceFunddetail3);
 
                 // 灏嗚鏉℃暟鎹洿鏂�
+
                 boolean b = this.updateById(serviceFunddetail3);
                 pretaxcost = pretaxcost.add(BigDecimal.valueOf(serviceFunddetail.getAmount()));
-                // 鎶婅鏁版嵁锛屾斁鍒颁复鏃剁殑闆嗗悎涓�
+                taxedcost = taxedcost.add(BigDecimal.valueOf(serviceFunddetail.getTaxedamount()));
+//                // 鎶婅鏁版嵁锛屾斁鍒颁复鏃剁殑闆嗗悎涓�
                 temporarySave.add(serviceFunddetail3);
             } else if (serviceFunddetail.getServicesscopename().contains("绋庡悗")) {
                 logger.info("璁$畻绋庡悗淇℃伅寮�濮嬶細{}", serviceFunddetail);
@@ -365,18 +424,34 @@
                 ServiceFunddetail serviceFunddetail3 = DtoConversionUtils.sourceToTarget(serviceFunddetail, ServiceFunddetail.class);
                 serviceFunddetail3.setAmount(amountNow.doubleValue());
                 serviceFunddetail3.setTaxamount(tax.doubleValue());
-                serviceFunddetail3.setTaxTime(new Date());
+                if (ObjectUtils.isEmpty(serviceFund1.getFundtaxtime())) {
+                    serviceFunddetail3.setTaxTime(new Date());
+                } else {
+                    serviceFunddetail3.setTaxTime(serviceFund1.getFundtaxtime());
+                }
                 logger.info("鎵撳嵃serviceFunddetail3:{}", serviceFunddetail3);
+                //鑾峰彇鍒板綋鍓嶄汉鐨勬湰鏈堢畻绋庡簭鍙锋渶澶у��
+                TaxMoneyByItemEO byItemEO = new TaxMoneyByItemEO();
+                byItemEO.setFirstDay(firstDay);
+                byItemEO.setIDCard(serviceFunddetail.getIdcardno());
+                byItemEO.setTaxTime(new Date());
                 // 灏嗚鏉℃暟鎹洿鏂�
                 updateById(serviceFunddetail3);
                 pretaxcost = pretaxcost.add(BigDecimal.valueOf(serviceFunddetail3.getAmount()));
-                // 鎶婅鏁版嵁锛屾斁鍒颁复鏃剁殑闆嗗悎涓�
+                taxedcost = taxedcost.add(BigDecimal.valueOf(serviceFunddetail3.getTaxedamount()));
+//                // 鎶婅鏁版嵁锛屾斁鍒颁复鏃剁殑闆嗗悎涓�
                 temporarySave.add(serviceFunddetail3);
             }
         }
         ServiceFund serviceFund = new ServiceFund();
         serviceFund.setPretaxcost(pretaxcost.doubleValue());
+        serviceFund.setTaxedcost(taxedcost.doubleValue());
         serviceFund.setId(serviceFunddetails.get(0).getFundid());
+        if (ObjectUtils.isEmpty(serviceFund1.getFundtaxtime())) {
+            serviceFund.setFundtaxtime(new Date());
+        }
+        // 1 宸茬畻绋�
+        serviceFund.setIstax(1);
         serviceFundMapper.updateById(serviceFund);
 
         return true;
@@ -439,4 +514,9 @@
         return map;
     }
 
+
+    @Override
+    public List<SpStatBonus> getListBySpStatBonus(SpStatBonusReq spStatBonusReq) {
+        return spStatBonusMapper.getListBySpStatBonus(spStatBonusReq.getPabegtime(), spStatBonusReq.getPaendtime(), spStatBonusReq.getPadeptno(), spStatBonusReq.getPausername(), spStatBonusReq.getPabonustype());
+    }
 }

--
Gitblit v1.9.3