liusheng
2023-11-08 dc0ce40d1ae331a054017ae322da930f07094f52
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java
@@ -6,14 +6,19 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.LockSupport;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.tax.TaxtUtils;
import com.ruoyi.common.utils.HttpClientKit;
import com.ruoyi.common.utils.bean.DtoConversionUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.project.domain.*;
import com.ruoyi.project.domain.vo.*;
import com.ruoyi.project.mapper.*;
@@ -23,6 +28,7 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -659,8 +665,8 @@
    }
    @Override
    public List<SpFinancialExpensesFundOut> getListBypower(String PAUSERNO, Integer PAFUNDTYPE, String PAAPPLICANT, String PAAPPLICATIONBEGTIME, String PAAPPLICATIONENDTIME, String PADEPARTMENT, Integer CHECKFLAG, Integer APPLYTYPE, Integer CHECKSTATUS) {
        return serviceFundMapper.getListBypower(PAUSERNO, PAFUNDTYPE, PAAPPLICANT, PAAPPLICATIONBEGTIME, PAAPPLICATIONENDTIME, PADEPARTMENT, CHECKFLAG, APPLYTYPE, CHECKSTATUS);
    public List<SpFinancialExpensesFundOut> getListBypower(String PAUSERNO, Integer PAFUNDTYPE, String PAAPPLICANT, String PAAPPLICATIONBEGTIME, String PAAPPLICATIONENDTIME, String PADEPARTMENT, Integer CHECKFLAG, Integer APPLYTYPE, Integer CHECKSTATUS, String donorname) {
        return serviceFundMapper.getListBypower(PAUSERNO, PAFUNDTYPE, PAAPPLICANT, PAAPPLICATIONBEGTIME, PAAPPLICATIONENDTIME, PADEPARTMENT, CHECKFLAG, APPLYTYPE, CHECKSTATUS, donorname);
    }
    @Override
@@ -678,7 +684,7 @@
    }
    @Override
    @Transactional
    @Transactional(rollbackFor = Exception.class)
    public Long addOrUpdateNew(ServiceFundVO serviceFundVO) {
        Long id = null;
        //将数据保存到fund表
@@ -747,6 +753,112 @@
        return map;
    }
    @Override
    public Boolean totaltax(TotalTaxVO totalTaxVO) {
        if (totalTaxVO.getIsTaxAfter() == null) {
            //如何为空,默认当没有算过税,进行合计
            totalTaxVO.setIsTaxAfter(0);
        }
        List<ServiceFunddetail> serviceFunddetails = serviceFunddetailMapper.totlaTax(totalTaxVO.getFundids());
        if (CollectionUtils.isEmpty(serviceFunddetails)) {
            throw new BaseException("查询的详情数据为空");
        }
        //用于返回excel
        List<ServiceFunddetailExcel> serviceFunddetailList = new ArrayList<>();
        //打印excel
        ExcelUtil<ServiceFunddetailExcel> util = new ExcelUtil<ServiceFunddetailExcel>(ServiceFunddetailExcel.class);
        if (totalTaxVO.getIsTaxAfter() == 1) {
            //通过受益人名称,将税前、税后的值相加
            Map<String, Double> sumAmount = serviceFunddetails.stream().collect(Collectors.groupingBy(ServiceFunddetail::getBeneficiaryname, Collectors.summingDouble(ServiceFunddetail::getAmount)));
            Map<String, Double> sumTaxdAmount = serviceFunddetails.stream().collect(Collectors.groupingBy(ServiceFunddetail::getBeneficiaryname, Collectors.summingDouble(ServiceFunddetail::getTaxedamount)));
            for (String key : sumAmount.keySet()) {
                ServiceFunddetailExcel serviceFunddetailExcel = new ServiceFunddetailExcel();
                serviceFunddetailExcel.setAmount(sumAmount.getOrDefault(key, 0.0));
                serviceFunddetailExcel.setTaxedamount(sumTaxdAmount.getOrDefault(key, 0.0));
                for (ServiceFunddetail serviceFunddetail2 : serviceFunddetails) {
                    if (serviceFunddetail2.getBeneficiaryname().equals(key)) {
                        serviceFunddetailExcel.setIdcardno(serviceFunddetail2.getIdcardno());
                        serviceFunddetailExcel.setBankcardno(serviceFunddetail2.getBankcardno());
                        serviceFunddetailExcel.setBeneficiaryname(serviceFunddetail2.getBeneficiaryname());
                        serviceFunddetailExcel.setDepositbank(serviceFunddetail2.getDepositbank());
                        serviceFunddetailExcel.setBranchbankname(serviceFunddetail2.getBranchbankname());
                        serviceFunddetailExcel.setDonorname(serviceFunddetail2.getDonorname());
                        serviceFunddetailExcel.setPhone(serviceFunddetail2.getPhone());
                        break;
                    }
                }
                serviceFunddetailList.add(serviceFunddetailExcel);
            }
            //打印算过税之后的,合计excel
            util.exportExcel(serviceFunddetailList, "合计个税(税后)");
        } else {
            a:
            for (ServiceFunddetail serviceFunddetail : serviceFunddetails) {
                ServiceFunddetailExcel sfeBefore = new ServiceFunddetailExcel();
                ServiceFunddetailExcel sfeAfter = new ServiceFunddetailExcel();
                for (ServiceFunddetailExcel serviceFunddetailExcel : serviceFunddetailList) {
                    //判断一下,该受益人是否已经计算过,已经计算过了,就不算了
                    if (serviceFunddetail.getBeneficiaryname().trim().equals(serviceFunddetailExcel.getBeneficiaryname().trim())) {
                        continue a;
                    }
                }
                for (ServiceFunddetail serviceFunddetail2 : serviceFunddetails) {
                    if (StringUtils.isEmpty(serviceFunddetail2.getServicesscopename())) {
                        throw new BaseException("服务说明为空,请检查后再计算");
                    }
                    if (serviceFunddetail.getBeneficiaryname().equals(serviceFunddetail2.getBeneficiaryname()) && !(serviceFunddetail2.getServicesscopename().equals("税后"))) {
                        //累计税前
                        sfeBefore.setIdcardno(serviceFunddetail2.getIdcardno());
                        sfeBefore.setBankcardno(serviceFunddetail2.getBankcardno());
                        sfeBefore.setBeneficiaryname(serviceFunddetail2.getBeneficiaryname());
                        sfeBefore.setDepositbank(serviceFunddetail2.getDepositbank());
                        sfeBefore.setBranchbankname(serviceFunddetail2.getBranchbankname());
                        sfeBefore.setDonorname(serviceFunddetail2.getDonorname());
                        sfeBefore.setPhone(serviceFunddetail2.getPhone());
                        if (sfeBefore.getAmount() == null) {
                            sfeBefore.setAmount(serviceFunddetail2.getAmount());
                        } else {
                            sfeBefore.setAmount(sfeBefore.getAmount() + serviceFunddetail2.getAmount());
                        }
                        sfeBefore.setTaxedamount(null);
                    } else if (serviceFunddetail.getBeneficiaryname().equals(serviceFunddetail2.getBeneficiaryname()) && serviceFunddetail2.getServicesscopename().equals("税后")) {
                        //累计税后
                        sfeAfter.setIdcardno(serviceFunddetail2.getIdcardno());
                        sfeAfter.setBankcardno(serviceFunddetail2.getBankcardno());
                        sfeAfter.setBeneficiaryname(serviceFunddetail2.getBeneficiaryname());
                        sfeAfter.setDepositbank(serviceFunddetail2.getDepositbank());
                        sfeAfter.setBranchbankname(serviceFunddetail2.getBranchbankname());
                        sfeAfter.setDonorname(serviceFunddetail2.getDonorname());
                        sfeAfter.setPhone(serviceFunddetail2.getPhone());
                        sfeAfter.setAmount(null);
                        if (sfeAfter.getTaxedamount() == null) {
                            sfeAfter.setTaxedamount(serviceFunddetail2.getTaxedamount());
                        } else {
                            sfeAfter.setTaxedamount(sfeAfter.getTaxedamount() + serviceFunddetail2.getTaxedamount());
                        }
                    }
                }
                //将计算好的税前总值、税后总值,放到List中
                if (ObjectUtils.isNotEmpty(sfeBefore.getBeneficiaryname())) serviceFunddetailList.add(sfeBefore);
                if (ObjectUtils.isNotEmpty(sfeAfter.getBeneficiaryname())) serviceFunddetailList.add(sfeAfter);
            }
            //打印算税之前的,合计excel
            util.exportExcel(serviceFunddetailList, "合计个税(税前)");
        }
        return true;
    }
    int uploadOAFileAndUpdateDb(ServiceFunddetailShared remShare) {
        //上传OA文件
        //String strUrl = "http://129.88.242.39:8899/seeyon/rest/token?userName=opo&password=127814f8-84e8-4304-84a5-a71573567efd&loginName=demo3";