liusheng
2024-03-15 4c42cd3d556ea72d70ea43a734cc38acd6b81e74
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java
@@ -6,16 +6,15 @@
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.annotation.NotRepeatCommit;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.tax.TaxtUtils;
import com.ruoyi.common.utils.ChineseUtils;
import com.ruoyi.common.utils.HttpClientKit;
import com.ruoyi.common.utils.bean.DtoConversionUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
@@ -28,7 +27,6 @@
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;
@@ -90,6 +88,9 @@
        if (serviceFund.getId() != null) {
            wrappers.eq(ServiceFund::getId, serviceFund.getId());
        }
        if (serviceFund.getFundTaxId() != null) {
            wrappers.eq(ServiceFund::getFundTaxId, serviceFund.getFundTaxId());
        }
        if (StringUtils.isNotBlank(serviceFund.getUserno())) {
            wrappers.eq(ServiceFund::getUserno, serviceFund.getUserno());
        }
@@ -111,8 +112,14 @@
        if (serviceFund.getUploadtime() != null) {
            wrappers.eq(ServiceFund::getUploadtime, serviceFund.getUploadtime());
        }
        if (serviceFund.getUploadStates() != null) {
            wrappers.eq(ServiceFund::getUploadStates, serviceFund.getUploadStates());
        }
        if (serviceFund.getFlowlevel() != null) {
            wrappers.eq(ServiceFund::getFlowlevel, serviceFund.getFlowlevel());
        }
        if (serviceFund.getJxrq() != null) {
            wrappers.eq(ServiceFund::getJxrq, serviceFund.getJxrq());
        }
        return this.list(wrappers);
    }
@@ -141,8 +148,18 @@
    }
    @Override
    @Transactional
    @Transactional(rollbackFor = Exception.class)
    public Boolean addFundSharedInfo(Long id) {
        log.info("fund表的id:{}", id);
        //判断一下,share表是否已经存在了
        Map<String, Object> map = new HashMap<>();
        map.put("serfunid", id);
        map.put("del_flag", 0);
        List<ServiceFundShared> serviceFundSharedList = serviceFundSharedMapper.selectByMap(map);
        if (!CollectionUtils.isEmpty(serviceFundSharedList)) {
            return true;
        }
        ServiceFund serviceFund = serviceFundMapper.selectById(id);
        ServiceFundShared serviceFundShared = DtoConversionUtils.sourceToTarget(serviceFund, ServiceFundShared.class);
        serviceFundShared.setSerfunid(serviceFundShared.getId());
@@ -670,9 +687,13 @@
    }
    @Override
    public List<SpFinancialExpensesFundOut> getExpertfeeList(SpSelectExpertfee spSelectExpertfee) {
        return serviceFundMapper.getExpertfeeList(spSelectExpertfee.getPaApplyType(), spSelectExpertfee.getDonorname(), spSelectExpertfee.getPacheckno(), spSelectExpertfee.getCheckstatus(), spSelectExpertfee.getPadepartno(), spSelectExpertfee.getPausername());
    }
    @Override
    public int countItem(Long infoid, Long itemid) {
        List<ServiceFund> serviceFunds = serviceFundMapper.getInfoByInfoId(infoid);
        int count = 0;
        for (ServiceFund s : serviceFunds) {
            long fundid = s.getId();
@@ -688,32 +709,50 @@
    public Long addOrUpdateNew(ServiceFundVO serviceFundVO) {
        Long id = null;
        //将数据保存到fund表
        serviceFundVO.setUploadStates(0);
        id = saveFund(serviceFundVO);
        List<ServiceFunddetailVO> serviceFunddetails = serviceFundVO.getServiceFunddetails();
        if (CollectionUtils.isEmpty(serviceFunddetails)) {
            System.out.println("serviceFunddetails为空喽");
            return null;
        }
        // 保存详情数据
        for (ServiceFunddetailVO serviceFunddetailVO : serviceFunddetails) {
            serviceFunddetailVO.setFundid(id);
            //將附件转成json
            if (!CollectionUtils.isEmpty(serviceFunddetailVO.getAnnexfilesList())) {
                serviceFunddetailVO.setAnnexfiles(JSON.toJSONString(serviceFunddetailVO.getAnnexfilesList()));
            }
            if (!CollectionUtils.isEmpty(serviceFunddetailVO.getInvoicefilesList())) {
                serviceFunddetailVO.setInvoicefiles(JSON.toJSONString(serviceFunddetailVO.getInvoicefilesList()));
            }
            ServiceFunddetail serviceFunddetail = DtoConversionUtils.sourceToTarget(serviceFunddetailVO, ServiceFunddetail.class);
            if (serviceFunddetailVO.getId() == null) {
                serviceFunddetailService.save(serviceFunddetail);
            } else {
                serviceFunddetailService.updateById(serviceFunddetail);
        BigDecimal bigDecimal = new BigDecimal(0.0);
        if (!CollectionUtils.isEmpty(serviceFunddetails)) {
            // 保存详情数据
            for (ServiceFunddetailVO serviceFunddetailVO : serviceFunddetails) {
                //去掉身份证的首尾空格
                if (StringUtils.isNotEmpty(serviceFunddetailVO.getIdcardno())) {
                    serviceFunddetailVO.setIdcardno(serviceFunddetailVO.getIdcardno().trim());
                }
                if (StringUtils.isEmpty(serviceFunddetailVO.getBankcardno())) {
                    throw new BaseException("请检查银行卡号是否为空,姓名:" + serviceFunddetailVO.getBeneficiaryname());
                }
                serviceFunddetailVO.setFundid(id);
                //將附件转成json
                if (!CollectionUtils.isEmpty(serviceFunddetailVO.getAnnexfilesList())) {
                    serviceFunddetailVO.setAnnexfiles(JSON.toJSONString(serviceFunddetailVO.getAnnexfilesList()));
                } else {
                    serviceFunddetailVO.setAnnexfiles(null);
                }
                if (!CollectionUtils.isEmpty(serviceFunddetailVO.getInvoicefilesList())) {
                    serviceFunddetailVO.setInvoicefiles(JSON.toJSONString(serviceFunddetailVO.getInvoicefilesList()));
                } else {
                    serviceFunddetailVO.setInvoicefiles(null);
                }
                ServiceFunddetail serviceFunddetail = DtoConversionUtils.sourceToTarget(serviceFunddetailVO, ServiceFunddetail.class);
                if (serviceFunddetailVO.getId() == null) {
                    serviceFunddetailService.save(serviceFunddetail);
                } else {
                    serviceFunddetailService.updateById(serviceFunddetail);
                }
                bigDecimal = bigDecimal.add(BigDecimal.valueOf(serviceFunddetailVO.getAmount()));
            }
        }
        serviceFundVO.setPretaxcost(bigDecimal.doubleValue());
        serviceFundMapper.updateById(serviceFundVO);
        return id;
    }
@@ -754,7 +793,12 @@
    }
    @Override
    public Boolean totaltax(TotalTaxVO totalTaxVO) {
    public Map<String, List<ServiceFunddetailExcel>> totaltax(TotalTaxVO totalTaxVO) {
        if (CollectionUtils.isEmpty(totalTaxVO.getFundids())) {
            throw new BaseException("请勾选之后,再进行合计个税");
        }
        Map<String, List<ServiceFunddetailExcel>> map = new HashMap<>();
        if (totalTaxVO.getIsTaxAfter() == null) {
            //如何为空,默认当没有算过税,进行合计
            totalTaxVO.setIsTaxAfter(0);
@@ -766,8 +810,6 @@
        //用于返回excel
        List<ServiceFunddetailExcel> serviceFunddetailList = new ArrayList<>();
        //打印excel
        ExcelUtil<ServiceFunddetailExcel> util = new ExcelUtil<ServiceFunddetailExcel>(ServiceFunddetailExcel.class);
        if (totalTaxVO.getIsTaxAfter() == 1) {
            //通过受益人名称,将税前、税后的值相加
@@ -792,8 +834,10 @@
                }
                serviceFunddetailList.add(serviceFunddetailExcel);
            }
            //打印算过税之后的,合计excel
            util.exportExcel(serviceFunddetailList, "合计个税(税后)");
            //返回算过税之后的,合计
            map.put("合计个税(税后)", serviceFunddetailList);
            return map;
        } else {
            a:
            for (ServiceFunddetail serviceFunddetail : serviceFunddetails) {
@@ -810,7 +854,11 @@
                for (ServiceFunddetail serviceFunddetail2 : serviceFunddetails) {
                    if (StringUtils.isEmpty(serviceFunddetail2.getServicesscopename())) {
                        throw new BaseException("服务说明为空,请检查后再计算");
                        ServiceFund serviceFund = null;
                        if (serviceFunddetail2.getFundid() == null) {
                            serviceFund = serviceFundMapper.selectById(serviceFunddetail2.getFundid());
                        }
                        throw new BaseException("服务说明为空,请检查后再计算,捐献者为 :" + serviceFund.getDonorname());
                    }
                    if (serviceFunddetail.getBeneficiaryname().equals(serviceFunddetail2.getBeneficiaryname()) && !(serviceFunddetail2.getServicesscopename().equals("税后"))) {
                        //累计税前
@@ -852,10 +900,10 @@
                if (ObjectUtils.isNotEmpty(sfeAfter.getBeneficiaryname())) serviceFunddetailList.add(sfeAfter);
            }
            //打印算税之前的,合计excel
            util.exportExcel(serviceFunddetailList, "合计个税(税前)");
            //返回算税之前的,合计
            map.put("合计个税(税前)", serviceFunddetailList);
            return map;
        }
        return true;
    }