From 940da0ee2cb7360710acf054de4dc07d2b7dafcc Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期二, 07 十一月 2023 17:40:07 +0800 Subject: [PATCH] 合计个税 --- ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml | 124 +++++++++++--------- ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFund.java | 8 + ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml | 4 ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java | 2 ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFundService.java | 2 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java | 100 ++++++++++++++++ ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java | 12 ++ ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetailExcel.java | 91 +++++++++++++++ ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java | 2 9 files changed, 286 insertions(+), 59 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java index 110f1db..07ad7cd 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java +++ b/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)); + } + } diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFund.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFund.java index e7fad0f..e7a2428 100644 --- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFund.java +++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFund.java @@ -339,5 +339,13 @@ @ApiModelProperty("缁╂晥锛�1銆佹湀搴︺��2瀛e害銆�3骞村害") @Excel(name = "缁╂晥锛�1銆佹湀搴︺��2瀛e害銆�3骞村害") private Integer performancetype; + + + /** + * 鏄惁绠楃◣锛�0鏈畻绋庯紝1宸茬畻绋� + */ + @ApiModelProperty("鏄惁绠楃◣锛�0鏈畻绋庯紝1宸茬畻绋�") + private Integer istax; + } diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetailExcel.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceFunddetailExcel.java new file mode 100644 index 0000000..ce4672a --- /dev/null +++ b/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; + +} + diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java b/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java index efd46f0..59f3295 100644 --- a/ruoyi-project/src/main/java/com/ruoyi/project/mapper/ServiceFunddetailMapper.java +++ b/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); } diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFundService.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFundService.java index 72bc8b7..85836bb 100644 --- a/ruoyi-project/src/main/java/com/ruoyi/project/service/IServiceFundService.java +++ b/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); + } \ No newline at end of file diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java index 89b93c7..01c8600 100644 --- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java +++ b/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); + } + //鎵撳嵃绠楄繃绋庝箣鍚庣殑锛屽悎璁xcel + 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鏂囦欢 diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java index bf6a358..122dc77 100644 --- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFunddetailServiceImpl.java +++ b/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; diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml index e292570..3dc5bd9 100644 --- a/ruoyi-project/src/main/resources/mapper/project/ServiceFundMapper.xml +++ b/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> diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml index 31e3320..c7bbbb4 100644 --- a/ruoyi-project/src/main/resources/mapper/project/ServiceFunddetailMapper.xml +++ b/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> \ No newline at end of file -- Gitblit v1.9.3