From 4c42cd3d556ea72d70ea43a734cc38acd6b81e74 Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期五, 15 三月 2024 18:26:43 +0800 Subject: [PATCH] 代码提交 --- ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java | 210 +++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 183 insertions(+), 27 deletions(-) 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 51d2606..1734a45 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 @@ -6,16 +6,18 @@ 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.tax.TaxtUtils; +import com.ruoyi.common.exception.base.BaseException; +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; import com.ruoyi.project.domain.*; import com.ruoyi.project.domain.vo.*; import com.ruoyi.project.mapper.*; @@ -25,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; @@ -87,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()); } @@ -108,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); } @@ -138,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()); @@ -667,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(); @@ -681,36 +705,54 @@ } @Override - @Transactional + @Transactional(rollbackFor = Exception.class) 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); - //灏囬檮浠惰浆鎴恓son - 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); + //灏囬檮浠惰浆鎴恓son + 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; } @@ -750,6 +792,120 @@ return map; } + @Override + 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); + } + List<ServiceFunddetail> serviceFunddetails = serviceFunddetailMapper.totlaTax(totalTaxVO.getFundids()); + if (CollectionUtils.isEmpty(serviceFunddetails)) { + throw new BaseException("鏌ヨ鐨勮鎯呮暟鎹负绌�"); + } + + //鐢ㄤ簬杩斿洖excel + List<ServiceFunddetailExcel> serviceFunddetailList = new ArrayList<>(); + + 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); + } + //杩斿洖绠楄繃绋庝箣鍚庣殑锛屽悎璁� + map.put("鍚堣涓◣锛堢◣鍚庯級", serviceFunddetailList); + return map; + + } 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 (StringUtils.isEmpty(serviceFunddetail2.getServicesscopename())) { + 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("绋庡悗"))) { + //绱绋庡墠 + 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().equals(serviceFunddetail2.getBeneficiaryname()) && serviceFunddetail2.getServicesscopename().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); + + } + //杩斿洖绠楃◣涔嬪墠鐨勶紝鍚堣 + map.put("鍚堣涓◣锛堢◣鍓嶏級", serviceFunddetailList); + return map; + } + } + int uploadOAFileAndUpdateDb(ServiceFunddetailShared remShare) { //涓婁紶OA鏂囦欢 -- Gitblit v1.9.3