liusheng
2023-11-07 940da0ee2cb7360710acf054de4dc07d2b7dafcc
合计个税
已添加1个文件
已修改8个文件
231 ■■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFund.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetailExcel.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFundService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java
@@ -2117,4 +2117,16 @@
        return AjaxResult.success(serviceFundService.performance(serviceFundVO));
    }
    /**
     * åˆè®¡ä¸ªç¨Ž
     */
    @ApiOperation("合计个税")
    @Log(title = "合计个税", businessType = BusinessType.INSERT)
    @PostMapping("/totaltax")
    @RepeatSubmit
    public AjaxResult totaltax(@RequestBody TotalTaxVO totalTaxVO) {
        return AjaxResult.success(serviceFundService.totaltax(totalTaxVO));
    }
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFund.java
@@ -339,5 +339,13 @@
    @ApiModelProperty("绩效:1、月度、2季度、3年度")
    @Excel(name = "绩效:1、月度、2季度、3年度")
    private Integer performancetype;
    /**
     * æ˜¯å¦ç®—税:0未算税,1已算税
     */
    @ApiModelProperty("是否算税:0未算税,1已算税")
    private Integer istax;
}
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetailExcel.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
package com.ruoyi.project.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
 * è´¹ç”¨ç”³è¯·æ˜Žç»†å¯¹è±¡ service_funddetail
 *
 * @author ruoyi
 * @date 2022-01-25
 */
@Data
public class ServiceFunddetailExcel {
    /**
     * æ”¶ç›Šäººå§“名 å®¶å±žæˆ–专家
     */
    @ApiModelProperty("收益人姓名 å®¶å±žæˆ–专家")
    @Excel(name = "收益人姓名")
    private String beneficiaryname;
    /**
     * è¯ä»¶å·ç 
     */
    @ApiModelProperty("证件号码")
    @Excel(name = "证件号码")
    private String idcardno;
    /**
     * è”系电话
     */
    @ApiModelProperty("受益人联系电话")
    @Excel(name = "受益人联系电话")
    private String phone;
    /**
     * å¼€æˆ·é“¶è¡Œ
     */
    @ApiModelProperty("开户银行")
    @Excel(name = "开户银行")
    private String depositbank;
    /**
     * å¡å·
     */
    @ApiModelProperty("卡号")
    @Excel(name = "卡号")
    private String bankcardno;
    /**
     * æ”¯è¡Œåç§°
     */
    @ApiModelProperty("支行名称")
    @Excel(name = "支行名称")
    private String branchbankname;
    /**
     * ç”³è¯·é‡‘额
     */
    @ApiModelProperty("申请金额(税前金额)")
    @Excel(name = "税前金额")
    private Double amount;
    /**
     * ç¨ŽåŽé‡‘额
     */
    @ApiModelProperty("税后金额")
    @Excel(name = "税后金额")
    private Double taxedamount;
    /**
     * æçŒ®äººå§“名
     */
    @ApiModelProperty("捐献人姓名")
    private String donorname;
}
ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java
@@ -53,5 +53,5 @@
    TaxMoneySumEO getTaxSum(TaxMoneyByItemEO taxMoneyByItemEO);
    List<ServiceFunddetail> totlaTax(List<Long> fundids);
}
ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFundService.java
@@ -66,4 +66,6 @@
     */
    Map<String, Long> performance(ServiceFundVO serviceFundVO);
    Boolean totaltax(TotalTaxVO totalTaxVO);
}
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java
@@ -8,6 +8,7 @@
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;
@@ -16,6 +17,7 @@
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.*;
@@ -750,6 +752,104 @@
        return map;
    }
    @Override
    public Boolean totaltax(TotalTaxVO totalTaxVO) {
        if (totalTaxVO.getIsTaxAfter() == null) {
            //如何为空,默认当没有算过税,进行合计
            totalTaxVO.setIsTaxAfter(0);
        }
        List<ServiceFunddetail> serviceFunddetails = serviceFunddetailMapper.totlaTax(totalTaxVO.getFundids());
        //用于返回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 (serviceFunddetail.getBeneficiaryname().trim().equals(serviceFunddetail2.getBeneficiaryname().trim()) && !(serviceFunddetail2.getServicesscopename().trim().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().trim().equals(serviceFunddetail2.getBeneficiaryname().trim()) && serviceFunddetail2.getServicesscopename().trim().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文件
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java
@@ -377,6 +377,8 @@
        ServiceFund serviceFund = new ServiceFund();
        serviceFund.setPretaxcost(pretaxcost.doubleValue());
        serviceFund.setId(serviceFunddetails.get(0).getFundid());
        // 1 å·²ç®—税
        serviceFund.setIstax(1);
        serviceFundMapper.updateById(serviceFund);
        return true;
ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml
@@ -57,6 +57,7 @@
        <result property="bh" column="bh"/>
        <result property="checkstatus" column="checkstatus"/>
        <result property="performancetype" column="performancetype"/>
        <result property="istax" column="istax"/>
    </resultMap>
@@ -113,7 +114,8 @@
               riqi,
               bh,
               checkstatus,
               performancetype
               performancetype,
               istax
        from service_fund
    </sql>
ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml
@@ -270,6 +270,16 @@
          and tax_time >= #{firstDay}
          and IDCardNo = #{IDCard}
          and ApplyType in (1, 2)
    </select>
    <select id="totlaTax" resultType="com.ruoyi.project.domain.ServiceFunddetail">
        <include refid="selectServiceFunddetailVo"/>
        where fundID in
        <foreach item="item" index="index" collection="list"
                 open="(" separator="," close=")">
            #{item}
        </foreach>
        and del_flag=0
    </select>
</mapper>