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>