From 50fca2904188834b6d891ff8ddb24108c8c9eed2 Mon Sep 17 00:00:00 2001 From: dimengzhe Date: Mon, 11 Mar 2024 09:39:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B3=A8=E9=87=8A=E5=BC=80=E7=A5=A8=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=90=88=E5=90=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusBillApplicationService.java | 265 +++++++++++++++++- .../FinBillApplicationService.java | 34 ++- 2 files changed, 281 insertions(+), 18 deletions(-) diff --git a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationService.java b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationService.java index 6e7dab054a..ccbc5a7605 100644 --- a/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationService.java +++ b/anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationService.java @@ -87,6 +87,7 @@ import java.io.InputStream; import java.math.BigDecimal; import java.util.*; import java.util.concurrent.*; +import java.util.stream.Collectors; @Service public class BusBillApplicationService extends MybatisBaseService { @@ -144,10 +145,7 @@ public class BusBillApplicationService extends MybatisBaseService map = new HashMap<>(); Map carMap = new HashMap<>(); Map filemap = new HashMap<>(); @@ -778,7 +778,7 @@ public class BusBillApplicationService extends MybatisBaseService map) { String ftl = "dai_existingvehicles_black"; @@ -839,4 +839,257 @@ public class BusBillApplicationService extends MybatisBaseService 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()))) { + List finBillVehicles = dto.getFinBillVehicles(); + BusSalesOrderModel busSalesOrderModel = baseMapper.selectByOrderSid(busSalesOrder.getSid()); + BusSalesOrderPrice busSalesOrderPrice = baseMapper.selectByPrices(busSalesOrder.getSid()); + //按开票名称sid分组 + Map> groupedByOpenTickSid = finBillVehicles.stream() + .collect(Collectors.groupingBy(BusBillVehicleDto::getOpenTickSid)); + //遍历分组并组装每组的数据 + groupedByOpenTickSid.forEach((openTickSid, sameOpenTickSidList) -> { + Map map = new HashMap<>(); + Map carMap = new HashMap<>(); + Map filemap = new HashMap<>(); + Map checkMap = new HashMap<>(); + FinCompanyInvoicingDetailsVo finCompanyInvoicingDetailsVo = finCompanyInvoicingFeign.fetchDetailsVoBySid(openTickSid).getData(); + if (!openTickSid.equals(busSalesOrder.getAffiliatedCompanySid())) { + BusBillVehicleDto finBillVehicleDto = sameOpenTickSidList.get(0); + //生成开票申请书 + if (StringUtils.isNotBlank(busSalesOrder.getPurchaseSystemSid())) { + ResultBean invoicingDetailsVoResultBean = finCompanyInvoicingFeign.getDetailsByUseOrgAndSystem(busSalesOrder.getUseOrgSid(), busSalesOrder.getPurchaseSystemSid()); + if (invoicingDetailsVoResultBean.getData() != null) { + map.put("createOrgName", invoicingDetailsVoResultBean.getData().getName()); + } + } + map.put("contractNo", busSalesOrder.getContractNo()); + List list = new ArrayList<>(); + + BillFileVo billFileVo = new BillFileVo(); + if (busSalesOrderModel != null) { + billFileVo.setCarName(busSalesOrderModel.getModelName()); + billFileVo.setNum(String.valueOf(sameOpenTickSidList.size())); + billFileVo.setPrice(busSalesOrderPrice.getSingleFinalPrice().toString()); + } + 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++) { + BusBillTrailerDto 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); + } + } + } + } + } + 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", 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); + 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 = finCompanyInvoicingFeign.getDetailsByUseOrgAndSystem(busSalesOrder.getUseOrgSid(), busSalesOrder.getPurchaseSystemSid()); + if (invoicingDetailsVoResultBean.getData() != null) { + carMap.put("createOrgName", invoicingDetailsVoResultBean.getData().getName()); + } + } + carMap.put("date", date); + List carContractListVos = new ArrayList<>(); + for (BusBillVehicleDto 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); + } + } + } + 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()); + } + } + 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); + } + } + 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); + } + } + } + + + } 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; + } + } + if(StringUtils.isNotBlank(fileUrl)){ + BusBillApplication finBillApplication = fetchBySid(dto.getSid()); + finBillApplication.setFileUrl(fileUrl); + baseMapper.updateById(finBillApplication); + } + return fileUrl; + } + + public void createContractNo(BusBillApplicationDto dto){ + /* 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()); + Future future1 = pool.submit(() -> { + String fileUrl = getFileUrl(dto); + }); + } catch (Exception e) { + e.printStackTrace(); + log.error("生成文件失败:==========================" + e.getMessage()); + }*/ + } } \ No newline at end of file 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 65212a1fa3..3c7b78ac80 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 @@ -502,10 +502,7 @@ public class FinBillApplicationService extends MybatisBaseService(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); + Future future1 = pool.submit(() -> { + String fileUrl = getFileUrl(dto); + }); + } catch (Exception e) { + e.printStackTrace(); + log.error("生成文件失败:==========================" + e.getMessage()); + }*/ + } } \ No newline at end of file