liusheng
2023-11-07 940da0ee2cb7360710acf054de4dc07d2b7dafcc
合计个税
已添加1个文件
已修改8个文件
345 ■■■■ 文件已修改
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 124 ●●●● 补丁 | 查看 | 原始文档 | 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
@@ -5,63 +5,63 @@
<mapper namespace="com.ruoyi.project.mapper.ServiceFunddetailMapper">
    <resultMap type="com.ruoyi.project.domain.ServiceFunddetail" id="ServiceFunddetailResult">
        <result property="id"    column="ID"    />
        <result property="fundid"    column="fundID"    />
        <result property="orderno"    column="OrderNo"    />
        <result property="itemid"    column="ItemID"    />
        <result property="itemcode"    column="ItemCode"    />
        <result property="itemname"    column="ItemName"    />
        <result property="itemdescribe"    column="ItemDescribe"    />
        <result property="itemtype"    column="ItemType"    />
        <result property="applytype"    column="ApplyType"    />
        <result property="applytypename"    column="ApplyTypeName"    />
        <result property="beneficiaryname"    column="BeneficiaryName"    />
        <result property="beneficiaryno"    column="BeneficiaryNo"    />
        <result property="unitname"    column="UnitName"    />
        <result property="unitno"    column="UnitNo"    />
        <result property="unituserno"    column="UnitUserNo"    />
        <result property="title"    column="Title"    />
        <result property="idcardtype"    column="IDCardType"    />
        <result property="idcardno"    column="IDCardNo"    />
        <result property="sex"    column="Sex"    />
        <result property="familyrelations"    column="FamilyRelations"    />
        <result property="phone"    column="Phone"    />
        <result property="depositbank"    column="DepositBank"    />
        <result property="bankcardno"    column="BankCardNo"    />
        <result property="branchbankname"    column="BranchBankName"    />
        <result property="annexbankcard"    column="AnnexBankCard"    />
        <result property="annexregistform"    column="AnnexRegistForm"    />
        <result property="quantity"    column="Quantity"    />
        <result property="price"    column="Price"    />
        <result property="amount"    column="Amount"    />
        <result property="taxamount"    column="TaxAmount"    />
        <result property="taxedamount"    column="TaxedAmount"    />
        <result property="prepaidamount"    column="PrepaidAmount"    />
        <result property="invoicecount"    column="InvoiceCount"    />
        <result property="attachcount"    column="AttachCount"    />
        <result property="remark"    column="Remark"    />
        <result property="infoid"    column="InfoId"    />
        <result property="donorno"    column="DonorNo"    />
        <result property="donorname"    column="DonorName"    />
        <result property="recordstatus"    column="RecordStatus"    />
        <result property="del_flag"    column="del_flag"    />
        <result property="createBy"    column="create_by"    />
        <result property="createTime"    column="create_time"    />
        <result property="updateBy"    column="update_by"    />
        <result property="updateTime"    column="update_time"    />
        <result property="uploadflag"    column="uploadflag"    />
        <result property="uploadtime"    column="uploadtime"    />
        <result property="servicesscope"    column="SERVICESSCOPE"    />
        <result property="servicesscopename"    column="SERVICESSCOPENAME"    />
        <result property="servicetype"    column="SERVICETYPE"    />
        <result property="servicetypename"    column="SERVICETYPENAME"    />
        <result property="reimbursementamount"    column="REIMBURSEMENTAMOUNT"    />
        <result property="subjecttype"    column="subjecttype"    />
        <result property="subjecttypename"    column="subjecttypename"    />
        <result property="annexfiles"    column="AnnexFiles"    />
        <result property="taxTime"    column="tax_time"    />
        <result property="jxrq"    column="jxrq"    />
        <result property="invoicefiles"    column="InvoiceFiles"    />
        <result property="id" column="ID"/>
        <result property="fundid" column="fundID"/>
        <result property="orderno" column="OrderNo"/>
        <result property="itemid" column="ItemID"/>
        <result property="itemcode" column="ItemCode"/>
        <result property="itemname" column="ItemName"/>
        <result property="itemdescribe" column="ItemDescribe"/>
        <result property="itemtype" column="ItemType"/>
        <result property="applytype" column="ApplyType"/>
        <result property="applytypename" column="ApplyTypeName"/>
        <result property="beneficiaryname" column="BeneficiaryName"/>
        <result property="beneficiaryno" column="BeneficiaryNo"/>
        <result property="unitname" column="UnitName"/>
        <result property="unitno" column="UnitNo"/>
        <result property="unituserno" column="UnitUserNo"/>
        <result property="title" column="Title"/>
        <result property="idcardtype" column="IDCardType"/>
        <result property="idcardno" column="IDCardNo"/>
        <result property="sex" column="Sex"/>
        <result property="familyrelations" column="FamilyRelations"/>
        <result property="phone" column="Phone"/>
        <result property="depositbank" column="DepositBank"/>
        <result property="bankcardno" column="BankCardNo"/>
        <result property="branchbankname" column="BranchBankName"/>
        <result property="annexbankcard" column="AnnexBankCard"/>
        <result property="annexregistform" column="AnnexRegistForm"/>
        <result property="quantity" column="Quantity"/>
        <result property="price" column="Price"/>
        <result property="amount" column="Amount"/>
        <result property="taxamount" column="TaxAmount"/>
        <result property="taxedamount" column="TaxedAmount"/>
        <result property="prepaidamount" column="PrepaidAmount"/>
        <result property="invoicecount" column="InvoiceCount"/>
        <result property="attachcount" column="AttachCount"/>
        <result property="remark" column="Remark"/>
        <result property="infoid" column="InfoId"/>
        <result property="donorno" column="DonorNo"/>
        <result property="donorname" column="DonorName"/>
        <result property="recordstatus" column="RecordStatus"/>
        <result property="del_flag" column="del_flag"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="uploadflag" column="uploadflag"/>
        <result property="uploadtime" column="uploadtime"/>
        <result property="servicesscope" column="SERVICESSCOPE"/>
        <result property="servicesscopename" column="SERVICESSCOPENAME"/>
        <result property="servicetype" column="SERVICETYPE"/>
        <result property="servicetypename" column="SERVICETYPENAME"/>
        <result property="reimbursementamount" column="REIMBURSEMENTAMOUNT"/>
        <result property="subjecttype" column="subjecttype"/>
        <result property="subjecttypename" column="subjecttypename"/>
        <result property="annexfiles" column="AnnexFiles"/>
        <result property="taxTime" column="tax_time"/>
        <result property="jxrq" column="jxrq"/>
        <result property="invoicefiles" column="InvoiceFiles"/>
    </resultMap>
    <sql id="selectServiceFunddetailVo">
@@ -272,4 +272,14 @@
          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>