From b5767f89cb0e3c04d8a2ae2bc18914a421ee69d2 Mon Sep 17 00:00:00 2001 From: dimengzhe Date: Fri, 8 Mar 2024 10:34:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E7=A5=A8=E7=94=B3=E8=AF=B7=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=90=88=E5=90=8C=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FinBillApplicationService.java | 383 +++++++++--------- 1 file changed, 199 insertions(+), 184 deletions(-) diff --git a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationService.java b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationService.java index 154b517569..ea7af37cc5 100644 --- a/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationService.java +++ b/anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationService.java @@ -493,10 +493,10 @@ public class FinBillApplicationService extends MybatisBaseService map = new HashMap<>(); - Map carMap = new HashMap<>(); - Map filemap = new HashMap<>(); - Map checkMap = new HashMap<>(); String fileUrl = ""; String contractNo = dto.getContractNo(); + List filesList = new ArrayList<>(); //根据合同号查询销售订单数据 BusSalesOrder busSalesOrder = baseMapper.selectByContract(contractNo); SolutionsDetailsVo loanSolutions = loanSolutionsFeign.selectDetailss(busSalesOrder.getSid()).getData(); - if("1".equals(busSalesOrder.getPayTypeKey()) || ("2".equals(busSalesOrder.getPayTypeKey()) && StringUtils.isNotBlank(loanSolutions.getTypeKey()))) { + if ("1".equals(busSalesOrder.getPayTypeKey()) || ("2".equals(busSalesOrder.getPayTypeKey()) && StringUtils.isNotBlank(loanSolutions.getTypeKey()))) { List finBillVehicles = dto.getFinBillVehicles(); BusSalesOrderModel busSalesOrderModel = baseMapper.selectByOrderSid(busSalesOrder.getSid()); BusSalesOrderPrice busSalesOrderPrice = baseMapper.selectByPrices(busSalesOrder.getSid()); - FinCompanyInvoicingDetailsVo finCompanyInvoicingDetailsVo = finCompanyInvoicingService.fetchDetailsVoBySid(dto.getOpenTickSid()); - if (!dto.getOpenTickSid().equals(busSalesOrder.getAffiliatedCompanySid())) { - //生成开票申请书 - if (StringUtils.isNotBlank(busSalesOrder.getPurchaseSystemSid())) { - ResultBean invoicingDetailsVoResultBean = finCompanyInvoicingService.getDetailsByUseOrgAndSystem(busSalesOrder.getUseOrgSid(), busSalesOrder.getPurchaseSystemSid()); - if (invoicingDetailsVoResultBean.getData() != null) { - map.put("createOrgName", invoicingDetailsVoResultBean.getData().getName()); + //按开票名称sid分组 + Map> groupedByOpenTickSid = finBillVehicles.stream() + .collect(Collectors.groupingBy(FinBillVehicleDto::getOpenTickSid)); + //遍历分组并组装每组的数据 + groupedByOpenTickSid.forEach((openTickSid, sameOpenTickSidList) -> { + Map map = new HashMap<>(); + Map carMap = new HashMap<>(); + Map filemap = new HashMap<>(); + Map checkMap = new HashMap<>(); + FinCompanyInvoicingDetailsVo finCompanyInvoicingDetailsVo = finCompanyInvoicingService.fetchDetailsVoBySid(openTickSid); + if (!openTickSid.equals(busSalesOrder.getAffiliatedCompanySid())) { + FinBillVehicleDto finBillVehicleDto = sameOpenTickSidList.get(0); + //生成开票申请书 + if (StringUtils.isNotBlank(busSalesOrder.getPurchaseSystemSid())) { + ResultBean invoicingDetailsVoResultBean = finCompanyInvoicingService.getDetailsByUseOrgAndSystem(busSalesOrder.getUseOrgSid(), busSalesOrder.getPurchaseSystemSid()); + if (invoicingDetailsVoResultBean.getData() != null) { + map.put("createOrgName", invoicingDetailsVoResultBean.getData().getName()); + } } - } - map.put("contractNo", busSalesOrder.getContractNo()); - List list = new ArrayList<>(); + map.put("contractNo", busSalesOrder.getContractNo()); + List list = new ArrayList<>(); - BillFileVo billFileVo = new BillFileVo(); - if (busSalesOrderModel != null) { - billFileVo.setCarName(busSalesOrderModel.getModelName()); - billFileVo.setNum(String.valueOf(finBillVehicles.size())); - billFileVo.setPrice(busSalesOrderPrice.getSingleFinalPrice().toString()); - } - if (loanSolutions != null) { - if (StringUtils.isNotBlank(loanSolutions.getMainVehicleAmount())) { - billFileVo.setOpenPrice(loanSolutions.getMainVehicleAmount()); + BillFileVo billFileVo = new BillFileVo(); + if (busSalesOrderModel != null) { + billFileVo.setCarName(busSalesOrderModel.getModelName()); + billFileVo.setNum(String.valueOf(sameOpenTickSidList.size())); + billFileVo.setPrice(busSalesOrderPrice.getSingleFinalPrice().toString()); } - } - billFileVo.setType(busSalesOrder.getBillingType()); - list.add(billFileVo); - List finBillTrailers = dto.getFinBillTrailers(); - finBillTrailers.removeAll(Collections.singleton(null)); - Map carNameMap = new HashMap<>(); - if (!finBillTrailers.isEmpty()) { - for (int i = 0; i < finBillTrailers.size(); i++) { - FinBillTrailerDto finBillTrailerDto = finBillTrailers.get(i); - billFileVo = new BillFileVo(); - BaseTrailer baseTrailer = baseMapper.selectByTrailerNo(finBillTrailerDto.getGcVinNo()); - if (baseTrailer != null) { - BaseTrailerModel baseTrailerModel = baseMapper.selectByModelSid(baseTrailer.getTrailerModelSid()); - if (baseTrailerModel != null) { - String carName = "外廓-" + Integer.parseInt(baseTrailerModel.getAppearanceSizeLong()) / 1000 + "米" + "\t" + baseTrailerModel.getTrailerTypeValue(); - if (carNameMap.containsKey(carName)) { - carNameMap.put(carName, Integer.parseInt(carNameMap.get(carName).toString()) + 1); - continue; - } else { - billFileVo.setType(busSalesOrder.getBillingType()); - if (loanSolutions != null) { - if (StringUtils.isNotBlank(loanSolutions.getMainVehicleAmount())) { - billFileVo.setOpenPrice(loanSolutions.getMainVehicleAmount()); + if (loanSolutions != null) { + if (StringUtils.isNotBlank(loanSolutions.getMainVehicleAmount())) { + billFileVo.setOpenPrice(loanSolutions.getMainVehicleAmount()); + } + } + billFileVo.setType(finBillVehicleDto.getBillTypeValue());//开票类型 + list.add(billFileVo); + + List lllList = new ArrayList<>(); + sameOpenTickSidList.forEach(v -> { + List finBillTrailers = dto.getFinBillTrailers(); + finBillTrailers.removeAll(Collections.singleton(null)); + finBillTrailers = finBillTrailers.stream().filter(vv -> vv.getVinNo().contains(v.getVinNo())).collect(Collectors.toList()); + lllList.addAll(finBillTrailers); + }); + Map carNameMap = new HashMap<>(); + if (!lllList.isEmpty()) { + for (int i = 0; i < lllList.size(); i++) { + FinBillTrailerDto finBillTrailerDto = lllList.get(i); + billFileVo = new BillFileVo(); + BaseTrailer baseTrailer = baseMapper.selectByTrailerNo(finBillTrailerDto.getGcVinNo()); + if (baseTrailer != null) { + BaseTrailerModel baseTrailerModel = baseMapper.selectByModelSid(baseTrailer.getTrailerModelSid()); + if (baseTrailerModel != null) { + String carName = "外廓-" + Integer.parseInt(baseTrailerModel.getAppearanceSizeLong()) / 1000 + "米" + "\t" + baseTrailerModel.getTrailerTypeValue(); + if (carNameMap.containsKey(carName)) { + carNameMap.put(carName, Integer.parseInt(carNameMap.get(carName).toString()) + 1); + continue; + } else { + billFileVo.setType(busSalesOrder.getBillingType()); + if (loanSolutions != null) { + if (StringUtils.isNotBlank(loanSolutions.getMainVehicleAmount())) { + billFileVo.setOpenPrice(loanSolutions.getMainVehicleAmount()); + } } + billFileVo.setCarName(carName); + if (busSalesOrderModel != null) { + billFileVo.setPrice(busSalesOrderPrice.getSingleFinalPrice().toString()); + } + carNameMap.put(carName, 1); + list.add(billFileVo); } - billFileVo.setCarName(carName); - if (busSalesOrderModel != null) { - billFileVo.setPrice(busSalesOrderPrice.getSingleFinalPrice().toString()); - } - carNameMap.put(carName, 1); - list.add(billFileVo); } } } } - } - if (!list.isEmpty()) { - for (int i = 0; i < list.size(); i++) { - BillFileVo billFileVo1 = list.get(i); - String carName = billFileVo1.getCarName(); - if (carNameMap.containsKey(carName)) { - billFileVo1.setNum(carNameMap.get(carName).toString()); - } - } - } - map.put("list", list); - map.put("name", busSalesOrder.getAffiliatedCompany()); - String date = DateUtil.today(); - List dateString = Arrays.asList(date.split("-")); - String year = dateString.get(0); - String month = dateString.get(1); - String day = dateString.get(2); - map.put("year", year); - map.put("month", month); - map.put("day", day); - if (!"02".equals(dto.getOpenTickTypeKey())) { - if (finCompanyInvoicingDetailsVo != null) { - //生成车辆登记合同 - if (busSalesOrder != null) { - carMap.put("Yf", busSalesOrder.getCustomerName()); - carMap.put("invoiceName", finCompanyInvoicingDetailsVo.getName());//开票名称 - } - carMap.put("contractNo", "D" + map.get("contractNo")); - if (StringUtils.isNotBlank(busSalesOrder.getPurchaseSystemSid())) { - ResultBean invoicingDetailsVoResultBean = finCompanyInvoicingService.getDetailsByUseOrgAndSystem(busSalesOrder.getUseOrgSid(), busSalesOrder.getPurchaseSystemSid()); - if (invoicingDetailsVoResultBean.getData() != null) { - carMap.put("createOrgName", invoicingDetailsVoResultBean.getData().getName()); + if (!list.isEmpty()) { + for (int i = 0; i < list.size(); i++) { + BillFileVo billFileVo1 = list.get(i); + String carName = billFileVo1.getCarName(); + if (carNameMap.containsKey(carName)) { + billFileVo1.setNum(carNameMap.get(carName).toString()); } } - carMap.put("date", date); - List carContractListVos = new ArrayList<>(); - - for (FinBillVehicleDto salesOrderVehicle : finBillVehicles) { - CarContractListVo carContractListVo = new CarContractListVo(); - BaseVehicle baseVehicle = baseMapper.selectByVinSid(salesOrderVehicle.getVehSid()); - carContractListVo.setBrand(baseVehicle.getModelName()); - carContractListVo.setVinNo(baseVehicle.getVinNo()); - carContractListVo.setEnginNo(baseVehicle.getEngineNo()); - carContractListVos.add(carContractListVo); - } - carMap.put("carLists", carContractListVos); - } - } - } - - if (loanSolutions != null) { - if (!dto.getOneBillMoney().equals(loanSolutions.getMainVehicleAmount())) { - String remarks = ""; + map.put("list", list); + map.put("name", finBillVehicleDto.getOpenTickName()); String date = DateUtil.today(); List dateString = Arrays.asList(date.split("-")); String year = dateString.get(0); String month = dateString.get(1); String day = dateString.get(2); - filemap.put("year", year); - filemap.put("month", month); - filemap.put("day", day); - if (finCompanyInvoicingDetailsVo != null) { - filemap.put("invoiceName", finCompanyInvoicingDetailsVo.getName());//开票名称 - filemap.put("customerName", finCompanyInvoicingDetailsVo.getName());//乙方 - filemap.put("invoiceNo", finCompanyInvoicingDetailsVo.getTaxpayerNo());//纳税人识别号 - filemap.put("idNo", finCompanyInvoicingDetailsVo.getTaxpayerNo());//乙方证件号码 - filemap.put("adds", finCompanyInvoicingDetailsVo.getAddress());//户籍地址 - } else { - CrmCustomerTemp crmCustomerTemp = baseMapper.selectByCustomerSid(dto.getOpenTickSid()); - if (crmCustomerTemp != null) { - filemap.put("invoiceName", crmCustomerTemp.getName());//开票名称 - filemap.put("customerName", crmCustomerTemp.getName());//乙方 - filemap.put("invoiceNo", crmCustomerTemp.getIDNumber());//纳税人识别号 - filemap.put("idNo", crmCustomerTemp.getIDNumber());//乙方证件号码 - filemap.put("adds", crmCustomerTemp.getCertificateAddress());//户籍地址 + map.put("year", year); + map.put("month", month); + map.put("day", day); + if (!"02".equals(finBillVehicleDto.getBillTypeKey())) { + if (finCompanyInvoicingDetailsVo != null) { + //生成车辆登记合同 + if (busSalesOrder != null) { + carMap.put("Yf", busSalesOrder.getCustomerName()); + carMap.put("invoiceName", finCompanyInvoicingDetailsVo.getName());//开票名称 + } + carMap.put("contractNo", "D" + map.get("contractNo")); + if (StringUtils.isNotBlank(busSalesOrder.getPurchaseSystemSid())) { + ResultBean invoicingDetailsVoResultBean = finCompanyInvoicingService.getDetailsByUseOrgAndSystem(busSalesOrder.getUseOrgSid(), busSalesOrder.getPurchaseSystemSid()); + if (invoicingDetailsVoResultBean.getData() != null) { + carMap.put("createOrgName", invoicingDetailsVoResultBean.getData().getName()); + } + } + carMap.put("date", date); + List carContractListVos = new ArrayList<>(); + for (FinBillVehicleDto salesOrderVehicle : sameOpenTickSidList) { + CarContractListVo carContractListVo = new CarContractListVo(); + BaseVehicle baseVehicle = baseMapper.selectByVinSid(salesOrderVehicle.getVehSid()); + carContractListVo.setBrand(baseVehicle.getModelName()); + carContractListVo.setVinNo(baseVehicle.getVinNo()); + carContractListVo.setEnginNo(baseVehicle.getEngineNo()); + carContractListVos.add(carContractListVo); + } + carMap.put("carLists", carContractListVos); } } - filemap.put("invoiceType", dto.getOpenTickTypeValue());//开票类型 - remarks = "数量" + finBillVehicles.size() + "台,单台成交价: 元。"; - filemap.put("remarks", remarks); - filemap.put("busSid", busSalesOrder.getSid()); - ResultBean> mapResultBean = commonContractFeign.getModelMap(filemap); - checkMap = mapResultBean.getData(); - //生成新车空白合同 - checkMap.put("totalPrice", ""); - checkMap.put("priceRemarks", ""); - checkMap.put("depositTotal", ""); - checkMap.put("createOrgName", ""); - checkMap.put("payTypeKey", busSalesOrder.getPayTypeKey()); - - } - } - try { - ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() - .setNameFormat("demo-pool-%d").build(); - ExecutorService pool = new ThreadPoolExecutor(1, 2, - 1000, TimeUnit.MILLISECONDS, - new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); - List filesList = new ArrayList<>(); - if (!map.isEmpty()) { - Future future1 = pool.submit(() -> { - return getInvoiceApplyFile(map); - }); - if (StringUtils.isNotBlank(future1.get())) { - File file = new File(docPdfComponent.getUploadTemplateUrl() + future1.get()); - filesList.add(file); + if (loanSolutions != null) { + if (!dto.getOneBillMoney().equals(loanSolutions.getMainVehicleAmount())) { + String remarks = ""; + String date = DateUtil.today(); + List dateString = Arrays.asList(date.split("-")); + String year = dateString.get(0); + String month = dateString.get(1); + String day = dateString.get(2); + filemap.put("year", year); + filemap.put("month", month); + filemap.put("day", day); + if (finCompanyInvoicingDetailsVo != null) { + filemap.put("invoiceName", finCompanyInvoicingDetailsVo.getName());//开票名称 + filemap.put("customerName", finCompanyInvoicingDetailsVo.getName());//乙方 + filemap.put("invoiceNo", finCompanyInvoicingDetailsVo.getTaxpayerNo());//纳税人识别号 + filemap.put("idNo", finCompanyInvoicingDetailsVo.getTaxpayerNo());//乙方证件号码 + filemap.put("adds", finCompanyInvoicingDetailsVo.getAddress());//户籍地址 + } else { + CrmCustomerTemp crmCustomerTemp = baseMapper.selectByCustomerSid(dto.getOpenTickSid()); + if (crmCustomerTemp != null) { + filemap.put("invoiceName", crmCustomerTemp.getName());//开票名称 + filemap.put("customerName", crmCustomerTemp.getName());//乙方 + filemap.put("invoiceNo", crmCustomerTemp.getIDNumber());//纳税人识别号 + filemap.put("idNo", crmCustomerTemp.getIDNumber());//乙方证件号码 + filemap.put("adds", crmCustomerTemp.getCertificateAddress());//户籍地址 + } + } + filemap.put("invoiceType", dto.getOpenTickTypeValue());//开票类型 + remarks = "数量" + finBillVehicles.size() + "台,单台成交价: 元。"; + filemap.put("remarks", remarks); + filemap.put("busSid", busSalesOrder.getSid()); + ResultBean> mapResultBean = commonContractFeign.getModelMap(filemap); + checkMap = mapResultBean.getData(); + //生成新车空白合同 + checkMap.put("totalPrice", ""); + checkMap.put("priceRemarks", ""); + checkMap.put("depositTotal", ""); + checkMap.put("createOrgName", ""); + checkMap.put("payTypeKey", busSalesOrder.getPayTypeKey()); } } - if (!carMap.isEmpty()) { - Future future2 = pool.submit(() -> { - return getCarFile(carMap); - }); - if (StringUtils.isNotBlank(future2.get())) { - File file = new File(docPdfComponent.getUploadTemplateUrl() + future2.get()); - filesList.add(file); + try { + ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() + .setNameFormat("demo-pool-%d").build(); + ExecutorService pool = new ThreadPoolExecutor(1, 2, + 1000, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + + if (!map.isEmpty()) { + Future future1 = pool.submit(() -> { + return getInvoiceApplyFile(map); + }); + if (StringUtils.isNotBlank(future1.get())) { + File file = new File(docPdfComponent.getUploadTemplateUrl() + future1.get()); + filesList.add(file); + } } - } - Map finalCheckMap = checkMap; - if (!finalCheckMap.isEmpty()) { - Future future3 = pool.submit(() -> { - return blackFile(finalCheckMap); - }); - if (StringUtils.isNotBlank(future3.get())) { - File file = new File(docPdfComponent.getUploadTemplateUrl() + future3.get()); - filesList.add(file); + if (!carMap.isEmpty()) { + Future future2 = pool.submit(() -> { + return getCarFile(carMap); + }); + if (StringUtils.isNotBlank(future2.get())) { + File file = new File(docPdfComponent.getUploadTemplateUrl() + future2.get()); + filesList.add(file); + } + } + if("1".equals(busSalesOrder.getPayTypeKey())){ + Map finalCheckMap = checkMap; + if (!finalCheckMap.isEmpty()) { + Future future3 = pool.submit(() -> { + return blackFile(finalCheckMap); + }); + if (StringUtils.isNotBlank(future3.get())) { + File file = new File(docPdfComponent.getUploadTemplateUrl() + future3.get()); + filesList.add(file); + } + } } - } - if (filesList.size() > 0) { - String typeName = contractNo + "开票附件.pdf"; - File allFile = WordConvertUtils.mulFile2One(filesList, docPdfComponent.getUploadTemplateUrl() + typeName); - System.out.println("-========" + docPdfComponent.getUploadTemplateUrl() + typeName); - fileUrl = typeName; + } catch (Exception e) { + e.printStackTrace(); + log.error("生成文件失败:==========================" + e.getMessage()); } - } catch (Exception e) { - e.printStackTrace(); - log.error("生成文件失败:==========================" + e.getMessage()); + }); + if (filesList.size() > 0) { + String typeName = contractNo + "开票附件.pdf"; + try { + File allFile = WordConvertUtils.mulFile2One(filesList, docPdfComponent.getUploadTemplateUrl() + typeName); + } catch (Exception e) { + e.printStackTrace(); + } + System.out.println("-========" + docPdfComponent.getUploadTemplateUrl() + typeName); + fileUrl = typeName; } } @@ -899,10 +914,10 @@ public class FinBillApplicationService extends MybatisBaseService map) { String ftl = ""; String name = ""; - if("1".equals(map.get("payTypeKey").toString())){ + if ("1".equals(map.get("payTypeKey").toString())) { ftl = "existingvehicles_black"; name = "全款新车买卖空白合同_"; - }else{ + } else { ftl = "dai_existingvehicles_black"; name = "贷款新车买卖空白合同_"; } @@ -977,10 +992,10 @@ public class FinBillApplicationService extends MybatisBaseService