From fadd75018c5cce0586e761b875ac6bb268033f73 Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期三, 24 四月 2024 16:44:14 +0800 Subject: [PATCH] 代码提交 --- ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java | 284 ++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 211 insertions(+), 73 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 01c8600..37b6adb 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 @@ -1,41 +1,41 @@ package com.ruoyi.project.service.impl; -import java.io.File; -import java.math.BigDecimal; -import java.util.ArrayList; -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.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.config.RuoYiConfig; -import com.ruoyi.common.tax.TaxtUtils; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.HttpClientKit; +import com.ruoyi.common.utils.StringUtils; 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.*; -import com.ruoyi.project.service.IServiceFundSharedService; -import com.ruoyi.project.service.IServiceFunddetailService; -import com.ruoyi.project.service.IServiceFunddetailSharedService; +import com.ruoyi.project.service.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; +import org.apache.ibatis.annotations.Param; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.usermodel.XSSFColor; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; 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; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.project.service.IServiceFundService; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; /** * 璐圭敤鐢宠涓籗ervice涓氬姟灞傚鐞� @@ -73,6 +73,12 @@ @Autowired private IServiceFunddetailService serviceFunddetailService; + @Autowired + private VExpertfeeExpertMapper vExpertfeeExpertMapper; + + @Autowired + private VExpertfeeTotalMapper vExpertfeeTotalMapper; + /** * 鏌ヨ璐圭敤鐢宠涓诲垪琛�(鍖呭惈鍒犻櫎鐨�) @@ -88,6 +94,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()); @@ -110,8 +119,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); } @@ -140,8 +155,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()); @@ -161,7 +186,16 @@ serviceFunddetailShareds.get(i).setFundid(serviceFundShared.getId()); serviceFunddetailShareds.get(i).setId(null); //鏁版嵁鍙戦�佺粰璐㈠姟 - uploadOAFileAndUpdateDb(serviceFunddetailShareds.get(i)); + try { + uploadOAFileAndUpdateDb(serviceFunddetailShareds.get(i)); + } catch (Exception e) { + log.error("Exception涓叆鍙傜殑ID涓猴細{}", id); + if (id != null) { + Boolean aBoolean = sharedService.delfundsharedInfoById(null, id); + log.error("fund2鍒嗕韩琛ㄩ噷鐨勬暟鎹槸鍚﹀垹闄ゆ垚鍔燂細{}", aBoolean); + } + return false; + } } boolean result = false; for (ServiceFunddetailShared serviceFunddetailShared : serviceFunddetailShareds) { @@ -669,9 +703,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(); @@ -687,32 +725,50 @@ 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; } @@ -753,17 +809,23 @@ } @Override - public Boolean totaltax(TotalTaxVO totalTaxVO) { + 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<>(); - //鎵撳嵃excel - ExcelUtil<ServiceFunddetailExcel> util = new ExcelUtil<ServiceFunddetailExcel>(ServiceFunddetailExcel.class); if (totalTaxVO.getIsTaxAfter() == 1) { //閫氳繃鍙楃泭浜哄悕绉帮紝灏嗙◣鍓嶃�佺◣鍚庣殑鍊肩浉鍔� @@ -788,10 +850,13 @@ } serviceFunddetailList.add(serviceFunddetailExcel); } - //鎵撳嵃绠楄繃绋庝箣鍚庣殑锛屽悎璁xcel - util.exportExcel(serviceFunddetailList, "鍚堣涓◣锛堢◣鍚庯級"); + //杩斿洖绠楄繃绋庝箣鍚庣殑锛屽悎璁� + map.put("鍚堣涓◣锛堢◣鍚庯級", serviceFunddetailList); + return map; + } else { - a : for (ServiceFunddetail serviceFunddetail : serviceFunddetails) { + a: + for (ServiceFunddetail serviceFunddetail : serviceFunddetails) { ServiceFunddetailExcel sfeBefore = new ServiceFunddetailExcel(); ServiceFunddetailExcel sfeAfter = new ServiceFunddetailExcel(); @@ -804,7 +869,14 @@ for (ServiceFunddetail serviceFunddetail2 : serviceFunddetails) { - if (serviceFunddetail.getBeneficiaryname().trim().equals(serviceFunddetail2.getBeneficiaryname().trim()) && !(serviceFunddetail2.getServicesscopename().trim().equals("绋庡悗"))) { + 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()); @@ -820,7 +892,7 @@ } sfeBefore.setTaxedamount(null); - } else if (serviceFunddetail.getBeneficiaryname().trim().equals(serviceFunddetail2.getBeneficiaryname().trim()) && serviceFunddetail2.getServicesscopename().trim().equals("绋庡悗")) { + } else if (serviceFunddetail.getBeneficiaryname().equals(serviceFunddetail2.getBeneficiaryname()) && serviceFunddetail2.getServicesscopename().equals("绋庡悗")) { //绱绋庡悗 sfeAfter.setIdcardno(serviceFunddetail2.getIdcardno()); sfeAfter.setBankcardno(serviceFunddetail2.getBankcardno()); @@ -844,14 +916,41 @@ if (ObjectUtils.isNotEmpty(sfeAfter.getBeneficiaryname())) serviceFunddetailList.add(sfeAfter); } - //鎵撳嵃绠楃◣涔嬪墠鐨勶紝鍚堣excel - util.exportExcel(serviceFunddetailList, "鍚堣涓◣锛堢◣鍓嶏級"); + //杩斿洖绠楃◣涔嬪墠鐨勶紝鍚堣 + map.put("鍚堣涓◣锛堢◣鍓嶏級", serviceFunddetailList); + return map; } - return true; + } + + @Override + public Map<String, Object> exportFeeSum(Integer faxId) { + List<VExpertfeeTotal> list = vExpertfeeTotalMapper.selectVExpertfeeTotalListByTaxId(faxId); + ExcelUtil<VExpertfeeTotal> util = new ExcelUtil<VExpertfeeTotal>(VExpertfeeTotal.class); + AjaxResult ajaxResult = util.exportExcel(list, "vExpertfeeTotal"); + String filePath = RuoYiConfig.getDownloadPath() + ajaxResult.get("msg"); + + List<VExpertfeeExpert> list2 = vExpertfeeExpertMapper.selectVExpertfeeExpertListByFaxId(faxId); + ExcelUtil<VExpertfeeExpert> util2 = new ExcelUtil<VExpertfeeExpert>(VExpertfeeExpert.class); + AjaxResult ajaxResult1 = util2.exportExcel(list2, "vExpertfeeExpert"); + + List<String> list1 = new ArrayList<>(); + list1.add(ajaxResult.get("msg").toString()); + list1.add(ajaxResult1.get("msg").toString()); + + + String name = "涓撳璐规眹鎬诲崟" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xlsx"; + mergeExcel(list1, RuoYiConfig.getDownloadPath() + name); + for (String path : list1) { + new File(RuoYiConfig.getDownloadPath() + path).delete(); + } + Map<String, Object> map = new HashMap<>(); + map.put("downloadUrl", "/profile/download/" + name); + map.put("downloadName", name); + return map; } - int uploadOAFileAndUpdateDb(ServiceFunddetailShared remShare) { + int uploadOAFileAndUpdateDb(ServiceFunddetailShared remShare) throws Exception { //涓婁紶OA鏂囦欢 //String strUrl = "http://129.88.242.39:8899/seeyon/rest/token?userName=opo&password=127814f8-84e8-4304-84a5-a71573567efd&loginName=demo3"; String strUrl = "http://129.88.242.39:8899/seeyon/rest/token"; @@ -891,7 +990,7 @@ } - private Integer uploadFile(String filePath, String strFUrl, List<RbDetailFile> parseArray2, List<RbDetailFile> parseArray, ServiceFunddetailShared remShare, String flag) { + private Integer uploadFile(String filePath, String strFUrl, List<RbDetailFile> parseArray2, List<RbDetailFile> parseArray, ServiceFunddetailShared remShare, String flag) throws Exception { if (!CollectionUtils.isEmpty(parseArray)) { for (int i = 0; i < parseArray.size(); i++) { RbDetailFile rbDetailFile = parseArray.get(i); @@ -903,24 +1002,21 @@ System.out.println("fund鏈嶅姟鐨刦ilePath + substring: " + filePath + substring); File filetest = new File(filePath + substring); - try { - String struploadResult = HttpClientKit.sendPostWithFile(filetest, strFUrl); - log.info("绗笁鏂逛紶鍥炵殑鏁版嵁: {}", struploadResult); - if (StringUtils.isEmpty(struploadResult)) { - log.error("HttpClientKit.sendPostWithFile 璇锋眰涓虹┖浜� filetest:{}, strFUrl:{} ", filetest, strFUrl); - return 0; - } - //鑾峰彇fileid - JSONObject jsonR = JSONObject.parseObject(struploadResult); - JSONArray jsonArr = jsonR.getJSONArray("atts"); - log.info("绗笁鏂逛紶鍥炵殑鏁版嵁鑾峰彇鐨刟tts : {}", jsonArr); - for (int j = 0; j < jsonArr.size(); j++) { - JSONObject jsonRet = jsonArr.getJSONObject(j); - rbDetailFile.setFileid(jsonRet.get("fileUrl").toString()); - } - } catch (Exception e) { - e.printStackTrace(); + String struploadResult = HttpClientKit.sendPostWithFile(filetest, strFUrl); + log.info("绗笁鏂逛紶鍥炵殑鏁版嵁: {}", struploadResult); + if (StringUtils.isEmpty(struploadResult)) { + log.error("HttpClientKit.sendPostWithFile 璇锋眰涓虹┖浜� filetest:{}, strFUrl:{} ", filetest, strFUrl); + return 0; } + //鑾峰彇fileid + JSONObject jsonR = JSONObject.parseObject(struploadResult); + JSONArray jsonArr = jsonR.getJSONArray("atts"); + log.info("绗笁鏂逛紶鍥炵殑鏁版嵁鑾峰彇鐨刟tts : {}", jsonArr); + for (int j = 0; j < jsonArr.size(); j++) { + JSONObject jsonRet = jsonArr.getJSONObject(j); + rbDetailFile.setFileid(jsonRet.get("fileUrl").toString()); + } + parseArray2.add(rbDetailFile); } if (flag.equals("1")) { @@ -1041,4 +1137,46 @@ return id; } + public void mergeExcel(List<String> files, String outputFile) { + try { + Workbook resultWorkbook = new XSSFWorkbook(); + for (String file : files) { + InputStream is1 = new FileInputStream(RuoYiConfig.getDownloadPath() + file); + Workbook workbook1 = new XSSFWorkbook(is1); + Sheet sheet1 = workbook1.getSheetAt(0); + // 澶嶅埗绗竴涓枃浠剁殑Sheet + Sheet newSheet1 = resultWorkbook.createSheet(file.substring(0, file.indexOf("."))); + for (Row row : sheet1) { + Row newRow = newSheet1.createRow(row.getRowNum()); + int columns = row.getLastCellNum(); + for (int i = 0; i < columns; i++) { + newSheet1.setColumnWidth(i, 5000); + Cell cell = row.getCell(i); + Cell newCell = newRow.createCell(cell.getColumnIndex()); + newCell.setCellValue(cell.getStringCellValue()); + // 鍒涘缓鍗曞厓鏍兼牱寮� + CellStyle style = resultWorkbook.createCellStyle(); + style.setAlignment(HorizontalAlignment.CENTER); // 姘村钩灞呬腑 + style.setVerticalAlignment(VerticalAlignment.CENTER); // 鍨傜洿灞呬腑 + if (row.getRowNum() == 0) { + // 璁剧疆绗竴琛岃儗鏅壊 + style.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex()); + style.setFillPattern(FillPatternType.SOLID_FOREGROUND); + } + + newCell.setCellStyle(style); + } + } + } + FileOutputStream out = new FileOutputStream(outputFile); + resultWorkbook.write(out); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Transactional(rollbackFor = Exception.class) + public Boolean updateFundTaxIdById(Long id, Long fundTaxId) { + return serviceFundMapper.updateFundTaxIdById(id, fundTaxId); + } } -- Gitblit v1.9.3