From b1f41c066b0b7c38faffddbfe73b9be8d0bd508e Mon Sep 17 00:00:00 2001
From: yxh <172933527@qq.com>
Date: 星期日, 08 十一月 2026 23:42:09 +0800
Subject: [PATCH] 修改了增值税城建税

---
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundtaxServiceImpl.java |  305 +++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 236 insertions(+), 69 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 fe98469..b9033a8 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
@@ -3,131 +3,298 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.tax.VatTaxUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.project.domain.ServiceFund;
+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.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.time.temporal.TemporalAdjusters;
+import java.util.*;
 
 /**
  * 涓撳璐圭敤绠楃◣鐢宠涓籗ervice涓氬姟灞傚鐞�
- * 
+ *
  * @author ruoyi
  * @date 2024-03-13
  */
+@Slf4j
 @Service
-public class ServiceFundtaxServiceImpl extends ServiceImpl<ServiceFundtaxMapper, ServiceFundtax> implements IServiceFundtaxService
-{
+public class ServiceFundtaxServiceImpl extends ServiceImpl<ServiceFundtaxMapper, ServiceFundtax> implements IServiceFundtaxService {
+
+    @Autowired
+    private ServiceFunddetailMapper serviceFunddetailMapper;
+    @Autowired
+    private IServiceFunddetailService serviceFunddetailService;
+    @Autowired
+    private IServiceFundService serviceFundService;
+    @Autowired
+    private ServiceFundtaxMapper serviceFundtaxMapper;
+
+    @Autowired
+    private ServiceFundMapper serviceFundMapper;
 
 
     /**
      * 鏌ヨ涓撳璐圭敤绠楃◣鐢宠涓诲垪琛�
-     * 
+     *
      * @param serviceFundtax 涓撳璐圭敤绠楃◣鐢宠涓�
      * @return 涓撳璐圭敤绠楃◣鐢宠涓�
      */
     @Override
     public List<ServiceFundtax> queryList(ServiceFundtax serviceFundtax) {
         LambdaQueryWrapper<ServiceFundtax> wrappers = Wrappers.lambdaQuery();
-        if (StringUtils.isNotBlank(serviceFundtax.getApplyno())){
-            wrappers.eq(ServiceFundtax::getApplyno ,serviceFundtax.getApplyno());
+        if (StringUtils.isNotBlank(serviceFundtax.getApplyno())) {
+            wrappers.eq(ServiceFundtax::getApplyno, serviceFundtax.getApplyno());
         }
-        if (serviceFundtax.getTaxedtime() != null){
-            wrappers.eq(ServiceFundtax::getTaxedtime ,serviceFundtax.getTaxedtime());
+        if (serviceFundtax.getTaxedtime() != null) {
+            wrappers.eq(ServiceFundtax::getTaxedtime, serviceFundtax.getTaxedtime());
         }
-        if (StringUtils.isNotBlank(serviceFundtax.getUserno())){
-            wrappers.eq(ServiceFundtax::getUserno ,serviceFundtax.getUserno());
+        if (StringUtils.isNotBlank(serviceFundtax.getUserno())) {
+            wrappers.eq(ServiceFundtax::getUserno, serviceFundtax.getUserno());
         }
-        if (StringUtils.isNotBlank(serviceFundtax.getUsername())){
-            wrappers.like(ServiceFundtax::getUsername ,serviceFundtax.getUsername());
+        if (StringUtils.isNotBlank(serviceFundtax.getUsername())) {
+            wrappers.like(ServiceFundtax::getUsername, serviceFundtax.getUsername());
         }
-        if (StringUtils.isNotBlank(serviceFundtax.getDeptmentno())){
-            wrappers.eq(ServiceFundtax::getDeptmentno ,serviceFundtax.getDeptmentno());
+        if (StringUtils.isNotBlank(serviceFundtax.getDeptmentno())) {
+            wrappers.eq(ServiceFundtax::getDeptmentno, serviceFundtax.getDeptmentno());
         }
-        if (StringUtils.isNotBlank(serviceFundtax.getDeptmentname())){
-            wrappers.like(ServiceFundtax::getDeptmentname ,serviceFundtax.getDeptmentname());
+        if (StringUtils.isNotBlank(serviceFundtax.getDeptmentname())) {
+            wrappers.like(ServiceFundtax::getDeptmentname, serviceFundtax.getDeptmentname());
         }
-        if (StringUtils.isNotBlank(serviceFundtax.getManagerno())){
-            wrappers.eq(ServiceFundtax::getManagerno ,serviceFundtax.getManagerno());
+        if (StringUtils.isNotBlank(serviceFundtax.getManagerno())) {
+            wrappers.eq(ServiceFundtax::getManagerno, serviceFundtax.getManagerno());
         }
-        if (StringUtils.isNotBlank(serviceFundtax.getManagername())){
-            wrappers.like(ServiceFundtax::getManagername ,serviceFundtax.getManagername());
+        if (StringUtils.isNotBlank(serviceFundtax.getManagername())) {
+            wrappers.like(ServiceFundtax::getManagername, serviceFundtax.getManagername());
         }
-        if (serviceFundtax.getPretaxamount() != null){
-            wrappers.eq(ServiceFundtax::getPretaxamount ,serviceFundtax.getPretaxamount());
+        if (serviceFundtax.getPretaxamount() != null) {
+            wrappers.eq(ServiceFundtax::getPretaxamount, serviceFundtax.getPretaxamount());
         }
-        if (serviceFundtax.getTaxedamount() != null){
-            wrappers.eq(ServiceFundtax::getTaxedamount ,serviceFundtax.getTaxedamount());
+        if (serviceFundtax.getTaxedamount() != null) {
+            wrappers.eq(ServiceFundtax::getTaxedamount, serviceFundtax.getTaxedamount());
         }
-        if (serviceFundtax.getTaxamount() != null){
-            wrappers.eq(ServiceFundtax::getTaxamount ,serviceFundtax.getTaxamount());
+        if (serviceFundtax.getTaxamount() != null) {
+            wrappers.eq(ServiceFundtax::getTaxamount, serviceFundtax.getTaxamount());
         }
-        if (serviceFundtax.getMedicalcost() != null){
-            wrappers.eq(ServiceFundtax::getMedicalcost ,serviceFundtax.getMedicalcost());
+        if (serviceFundtax.getIstax() != null) {
+            wrappers.eq(ServiceFundtax::getIstax, serviceFundtax.getIstax());
         }
-        if (serviceFundtax.getBodymaintaincost() != null){
-            wrappers.eq(ServiceFundtax::getBodymaintaincost ,serviceFundtax.getBodymaintaincost());
+        if (serviceFundtax.getMedicalcost() != null) {
+            wrappers.eq(ServiceFundtax::getMedicalcost, serviceFundtax.getMedicalcost());
         }
-        if (serviceFundtax.getOrgangaincost() != null){
-            wrappers.eq(ServiceFundtax::getOrgangaincost ,serviceFundtax.getOrgangaincost());
+        if (serviceFundtax.getBodymaintaincost() != null) {
+            wrappers.eq(ServiceFundtax::getBodymaintaincost, serviceFundtax.getBodymaintaincost());
         }
-        if (serviceFundtax.getOrganmaintaincost() != null){
-            wrappers.eq(ServiceFundtax::getOrganmaintaincost ,serviceFundtax.getOrganmaintaincost());
+        if (serviceFundtax.getOrgangaincost() != null) {
+            wrappers.eq(ServiceFundtax::getOrgangaincost, serviceFundtax.getOrgangaincost());
         }
-        if (StringUtils.isNotBlank(serviceFundtax.getRemark())){
-            wrappers.eq(ServiceFundtax::getRemark ,serviceFundtax.getRemark());
+        if (serviceFundtax.getOrganmaintaincost() != null) {
+            wrappers.eq(ServiceFundtax::getOrganmaintaincost, serviceFundtax.getOrganmaintaincost());
         }
-        if (serviceFundtax.getRecordstatus() != null){
-            wrappers.eq(ServiceFundtax::getRecordstatus ,serviceFundtax.getRecordstatus());
+        if (StringUtils.isNotBlank(serviceFundtax.getRemark())) {
+            wrappers.eq(ServiceFundtax::getRemark, serviceFundtax.getRemark());
         }
-        if (serviceFundtax.getCheckstatus() != null){
-            wrappers.eq(ServiceFundtax::getCheckstatus ,serviceFundtax.getCheckstatus());
+        if (serviceFundtax.getRecordstatus() != null) {
+            wrappers.eq(ServiceFundtax::getRecordstatus, serviceFundtax.getRecordstatus());
         }
-        if (serviceFundtax.getFlowlevel() != null){
-            wrappers.eq(ServiceFundtax::getFlowlevel ,serviceFundtax.getFlowlevel());
+        if (serviceFundtax.getCheckstatus() != null) {
+            wrappers.eq(ServiceFundtax::getCheckstatus, serviceFundtax.getCheckstatus());
         }
-        if (serviceFundtax.getBackflowlevel() != null){
-            wrappers.eq(ServiceFundtax::getBackflowlevel ,serviceFundtax.getBackflowlevel());
+        if (serviceFundtax.getFlowlevel() != null) {
+            wrappers.eq(ServiceFundtax::getFlowlevel, serviceFundtax.getFlowlevel());
         }
-        if (StringUtils.isNotBlank(serviceFundtax.getIsdistribute())){
-            wrappers.eq(ServiceFundtax::getIsdistribute ,serviceFundtax.getIsdistribute());
+        if (serviceFundtax.getBackflowlevel() != null) {
+            wrappers.eq(ServiceFundtax::getBackflowlevel, serviceFundtax.getBackflowlevel());
         }
-        if (StringUtils.isNotBlank(serviceFundtax.getRiqi())){
-            wrappers.eq(ServiceFundtax::getRiqi ,serviceFundtax.getRiqi());
+        if (StringUtils.isNotBlank(serviceFundtax.getIsdistribute())) {
+            wrappers.eq(ServiceFundtax::getIsdistribute, serviceFundtax.getIsdistribute());
         }
-        if (StringUtils.isNotBlank(serviceFundtax.getOpochecker())){
-            wrappers.eq(ServiceFundtax::getOpochecker ,serviceFundtax.getOpochecker());
+        if (StringUtils.isNotBlank(serviceFundtax.getRiqi())) {
+            wrappers.eq(ServiceFundtax::getRiqi, serviceFundtax.getRiqi());
         }
-        if (StringUtils.isNotBlank(serviceFundtax.getFinvicepresident())){
-            wrappers.eq(ServiceFundtax::getFinvicepresident ,serviceFundtax.getFinvicepresident());
+        if (StringUtils.isNotBlank(serviceFundtax.getOpochecker())) {
+            wrappers.eq(ServiceFundtax::getOpochecker, serviceFundtax.getOpochecker());
         }
-        if (StringUtils.isNotBlank(serviceFundtax.getBusvicepresident())){
-            wrappers.eq(ServiceFundtax::getBusvicepresident ,serviceFundtax.getBusvicepresident());
+        if (StringUtils.isNotBlank(serviceFundtax.getFinvicepresident())) {
+            wrappers.eq(ServiceFundtax::getFinvicepresident, serviceFundtax.getFinvicepresident());
         }
-        if (StringUtils.isNotBlank(serviceFundtax.getPresident())){
-            wrappers.eq(ServiceFundtax::getPresident ,serviceFundtax.getPresident());
+        if (StringUtils.isNotBlank(serviceFundtax.getBusvicepresident())) {
+            wrappers.eq(ServiceFundtax::getBusvicepresident, serviceFundtax.getBusvicepresident());
         }
-        if (StringUtils.isNotBlank(serviceFundtax.getOfficedirector())){
-            wrappers.eq(ServiceFundtax::getOfficedirector ,serviceFundtax.getOfficedirector());
+        if (StringUtils.isNotBlank(serviceFundtax.getPresident())) {
+            wrappers.eq(ServiceFundtax::getPresident, serviceFundtax.getPresident());
         }
-        if (StringUtils.isNotBlank(serviceFundtax.getFinancedirector())){
-            wrappers.eq(ServiceFundtax::getFinancedirector ,serviceFundtax.getFinancedirector());
+        if (StringUtils.isNotBlank(serviceFundtax.getOfficedirector())) {
+            wrappers.eq(ServiceFundtax::getOfficedirector, serviceFundtax.getOfficedirector());
         }
-        if (StringUtils.isNotBlank(serviceFundtax.getFinancechecher())){
-            wrappers.eq(ServiceFundtax::getFinancechecher ,serviceFundtax.getFinancechecher());
+        if (StringUtils.isNotBlank(serviceFundtax.getFinancedirector())) {
+            wrappers.eq(ServiceFundtax::getFinancedirector, serviceFundtax.getFinancedirector());
         }
-        if (StringUtils.isNotBlank(serviceFundtax.getUploadflag())){
-            wrappers.eq(ServiceFundtax::getUploadflag ,serviceFundtax.getUploadflag());
+        if (StringUtils.isNotBlank(serviceFundtax.getFinancechecher())) {
+            wrappers.eq(ServiceFundtax::getFinancechecher, serviceFundtax.getFinancechecher());
         }
-        if (serviceFundtax.getUploadtime() != null){
-            wrappers.eq(ServiceFundtax::getUploadtime ,serviceFundtax.getUploadtime());
+        if (StringUtils.isNotBlank(serviceFundtax.getUploadflag())) {
+            wrappers.eq(ServiceFundtax::getUploadflag, serviceFundtax.getUploadflag());
         }
-        if (StringUtils.isNotBlank(serviceFundtax.getUpdownremark())){
-            wrappers.eq(ServiceFundtax::getUpdownremark ,serviceFundtax.getUpdownremark());
+        if (serviceFundtax.getUploadtime() != null) {
+            wrappers.eq(ServiceFundtax::getUploadtime, serviceFundtax.getUploadtime());
         }
+        if (StringUtils.isNotBlank(serviceFundtax.getUpdownremark())) {
+            wrappers.eq(ServiceFundtax::getUpdownremark, serviceFundtax.getUpdownremark());
+        }
+        wrappers.orderByDesc(ServiceFundtax::getCreateTime);
         return this.list(wrappers);
     }
 
+    @Override
+    public Integer getMaxFundTaxId() {
+        return serviceFundtaxMapper.getMaxFundTaxId();
+    }
+
+    /**
+     * 鎵归噺绠楃◣涓诲叆鍙�
+     * 1. 鏍¢獙鍙傛暟
+     * 2. 鍙厑璁告渶鏂版壒娆$畻绋�
+     * 3. 瀵瑰綋鍓嶆壒娆� service_fundtax 鍔犺閿侊紝闃插苟鍙戦噸澶嶇畻绋�
+     * 4. 鏌ヨ鏈壒娆℃墍鏈� ServiceFund锛堟寜 id 鍗囧簭锛夛紝骞堕噸缃� istax
+     * 5. 棰勬煡璇㈡湰鏈堟墍鏈夎韩浠借瘉鍙风殑绱閲戦锛岀紦瀛樺埌 Map
+     * 6. 鏍¢獙褰撴湀鏄惁瀛樺湪鍘嗗彶鍙e緞锛坴1锛夌畻绋庤褰曪紝闃叉鏂版棫鍙e緞娣风畻
+     * 7. 閬嶅巻姣忎釜 ServiceFund 閫愬崟绠楃◣锛屾眹鎬诲悗鍥炲啓 service_fundtax
+     * <p>
+     * 鏁存壒鍦ㄤ竴涓簨鍔″唴瀹屾垚锛氫换涓�鏉″け璐ュ垯鏁存壒鍥炴粴锛屼笉浼氬嚭鐜板崐鎵规暟鎹��
+     *
+     * @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();
+            log.info("鎵归噺绠楃◣鐨刴axFundTaxId涓猴細{}", maxFundTaxId);
+            if (maxFundTaxId == null || !fundTaxVO.getFundTaxId().equals(Long.valueOf(maxFundTaxId))) {
+                throw new BaseException("璇ユ壒鏁版嵁涓嶈兘绠楃◣");
+            }
+        }
+
+        // 3. 瀵瑰綋鍓嶆壒娆℃眹鎬诲崟鍔犺閿侊紙浜嬪姟鍐呮湁鏁堬級锛岄槻姝㈠苟鍙戦噸澶嶇畻绋�
+        ServiceFundtax fundtax = serviceFundtaxMapper.selectByIdForUpdate(fundTaxVO.getFundTaxId());
+        if (fundtax == null) {
+            throw new BaseException("鏈壘鍒扮畻绋庢眹鎬诲崟锛孖D=" + fundTaxVO.getFundTaxId());
+        }
+
+        // 4. 鏌ヨ鏈壒娆℃墍鏈� ServiceFund锛堟寜 id 鍗囧簭锛�
+        ServiceFund serviceFund = new ServiceFund();
+        serviceFund.setFundTaxId(fundTaxVO.getFundTaxId());
+        serviceFund.setDel_flag(0);
+        List<ServiceFund> serviceFunds = serviceFundService.selectServiceFundList(serviceFund);
+        if (CollectionUtils.isEmpty(serviceFunds)) {
+            log.warn("鏈煡璇㈠埌鐩稿叧ServiceFund锛宖undTaxId={}", fundTaxVO.getFundTaxId());
+            return false;
+        }
+        // 閲嶇疆鏈壒 istax 涓庣畻绋庢椂闂达紝浣挎湰鏈堢疮璁℃煡璇笉浼氶噸澶嶈鍏ユ湰鎵�
+        for (ServiceFund serviceFund1 : serviceFunds) {
+            serviceFundMapper.updateFundIsTexById(serviceFund1.getId(), 0L);
+        }
+        // 鎸� id 鍗囧簭鎺掑簭锛屼繚璇佸鐞嗛『搴忎竴鑷�
+        serviceFunds.sort(Comparator.comparing(ServiceFund::getId));
+
+        // 5. 棰勬煡璇㈡湰鏈堟墍鏈夎韩浠借瘉鍙风殑绱閲戦锛岀紦瀛樺埌 Map锛屾彁鍗囧悗缁畻绋庢晥鐜�
+        Date taxTime = new Date();
+        Date firstDay = Date.from(LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()).atStartOfDay(ZoneId.systemDefault()).toInstant());
+        TaxMoneyByItemEO taxMoneyVO = new TaxMoneyByItemEO();
+        taxMoneyVO.setFirstDay(firstDay);
+        taxMoneyVO.setTaxTime(taxTime);
+        Map<String, TaxMoneySumEO> tempTaxSumMap = new HashMap<>();
+        List<TaxMoneySumEO> taxSum = serviceFunddetailMapper.getTaxSum(taxMoneyVO);
+        if (CollectionUtils.isNotEmpty(taxSum)) {
+            for (TaxMoneySumEO taxMoneySumEO : taxSum) {
+                tempTaxSumMap.put(taxMoneySumEO.getIDCardNo(), taxMoneySumEO);
+                // 6. 褰撴湀宸插瓨鍦ㄧ殑鍘嗗彶鍙e緞锛坴1锛夎褰曚細璁╃疮璁″熀鏁版柊鏃ф贩绠楋紝鐩存帴闃绘
+                if (taxMoneySumEO.getV1Count() != null && taxMoneySumEO.getV1Count() > 0) {
+                    throw new BaseException("褰撴湀宸插瓨鍦ㄦ棫鍙e緞锛坴1锛夌畻绋庤褰曪紝涓洪伩鍏嶆柊鏃у彛寰勬贩绠楋紝"
+                            + "鏈湀璇风户缁娇鐢ㄦ棫鍙e緞鎴栦粠涓嬩釜鏈堣捣鍐嶆寜鏂板彛寰勭畻绋庛�備汉鍛樿韩浠借瘉鍙凤細"
+                            + taxMoneySumEO.getIDCardNo());
+                }
+            }
+        }
+
+        // 7. 閬嶅巻姣忎釜 ServiceFund锛岄�愬崟绠楃◣骞舵眹鎬�
+        BigDecimal pretaxTotal = BigDecimal.ZERO;
+        BigDecimal vatTotal = BigDecimal.ZERO;
+        BigDecimal cityTaxTotal = BigDecimal.ZERO;
+        BigDecimal laborPretaxTotal = BigDecimal.ZERO;
+        BigDecimal taxTotal = BigDecimal.ZERO;
+        BigDecimal taxedTotal = BigDecimal.ZERO;
+        for (ServiceFund serviceFund1 : serviceFunds) {
+            ServiceFunddetail serviceFunddetail = new ServiceFunddetail();
+            serviceFunddetail.setFundid(serviceFund1.getId());
+            List<ServiceFunddetail> serviceFunddetails = serviceFunddetailMapper.selectServiceFunddetailList(serviceFunddetail);
+            if (CollectionUtils.isEmpty(serviceFunddetails)) {
+                throw new BaseException("鍗曟嵁娌℃湁鍙畻绋庣殑鏄庣粏锛屽崟鎹甀D=" + serviceFund1.getId()
+                        + "锛屾崘鐚渚�=" + serviceFund1.getDonorname());
+            }
+            // 浼犲叆绱閲戦缂撳瓨涓庣粺涓�绠楃◣鏃堕棿
+            serviceFunddetailService.calculateTax(serviceFunddetails, tempTaxSumMap, taxTime);
+            for (ServiceFunddetail detail : serviceFunddetails) {
+                pretaxTotal = pretaxTotal.add(toMoney(detail.getAmount()));
+                vatTotal = vatTotal.add(toMoney(detail.getVatAmount()));
+                cityTaxTotal = cityTaxTotal.add(toMoney(detail.getCityTaxAmount()));
+                laborPretaxTotal = laborPretaxTotal.add(toMoney(detail.getLaborPretaxAmount()));
+                taxTotal = taxTotal.add(toMoney(detail.getTaxamount()));
+                taxedTotal = taxedTotal.add(toMoney(detail.getTaxedamount()));
+            }
+        }
+
+        // 8. 鍥炲啓姹囨�诲崟 service_fundtax锛�6 涓噾棰� + 绠楃◣鐘舵�� + 鐗堟湰锛�
+        ServiceFundtax updateFundtax = new ServiceFundtax();
+        updateFundtax.setId(fundTaxVO.getFundTaxId());
+        updateFundtax.setPretaxamount(VatTaxUtils.roundMoney(pretaxTotal));
+        updateFundtax.setVatAmount(VatTaxUtils.roundMoney(vatTotal));
+        updateFundtax.setCityTaxAmount(VatTaxUtils.roundMoney(cityTaxTotal));
+        updateFundtax.setLaborPretaxAmount(VatTaxUtils.roundMoney(laborPretaxTotal));
+        updateFundtax.setTaxamount(VatTaxUtils.roundMoney(taxTotal));
+        updateFundtax.setTaxMoney(VatTaxUtils.roundMoney(taxTotal));
+        updateFundtax.setTaxedamount(VatTaxUtils.roundMoney(taxedTotal));
+        updateFundtax.setTaxVersion(VatTaxUtils.TAX_VERSION_V2);
+        updateFundtax.setIstax(1);
+        updateFundtax.setTaxedtime(taxTime);
+        serviceFundtaxMapper.updateById(updateFundtax);
+        log.info("鎵归噺绠楃◣瀹屾垚锛宖undTaxId={}锛岀◣鍓�={}锛屽鍊肩◣={}锛屽煄寤虹◣={}锛屽姵鍔$◣鍓�={}锛屽姵鍔′釜绋�={}锛屽姵鍔$◣鍚�={}",
+                fundTaxVO.getFundTaxId(), pretaxTotal, vatTotal, cityTaxTotal, laborPretaxTotal, taxTotal, taxedTotal);
+        return true;
+    }
+
+    /**
+     * null 瀹夊叏鐨勯噾棰濊浆鎹�
+     */
+    private static BigDecimal toMoney(Double value) {
+        return value == null ? BigDecimal.ZERO : BigDecimal.valueOf(value);
+    }
+
 }

--
Gitblit v1.9.3