From d5250b30f2eb24e683528e01159a5592ea1403f8 Mon Sep 17 00:00:00 2001 From: God <10745413@qq.com> Date: Tue, 7 Nov 2023 18:16:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=88=E8=B4=B7=E7=B3=BB=E5=88=97=E7=94=9F?= =?UTF-8?q?=E6=88=90=E6=96=B0=E8=BD=A6=E4=B9=B0=E5=8D=96=E5=90=88=E5=90=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commoncontract/CommonContractFeign.java | 3 + .../api/commoncontract/PrintConfirmDto.java | 5 + .../api/commoncontract/xcmmContractQuery.java | 44 ++ .../commoncontract/CommonContractRest.java | 5 + .../commoncontract/CommonContractService.java | 392 +++++++++++++++++- .../FinBillApplicationService.java | 17 +- .../LoanHomevisitPrepFeign.java | 2 +- .../LoanHomevisitPrepFeignFallback.java | 2 +- .../LoanHomevisitPrepRest.java | 3 +- .../LoanHomevisitPrepService.java | 37 +- 10 files changed, 485 insertions(+), 25 deletions(-) create mode 100644 anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/xcmmContractQuery.java diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeign.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeign.java index adc9274d3b..1de957286f 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeign.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeign.java @@ -155,6 +155,9 @@ public interface CommonContractFeign { @PostMapping("/printConfirm") public ResultBean> printConfirm(@RequestBody PrintConfirmDto dto); + @ApiOperation(value = "新车买卖合同打印pdf") + @PostMapping("/xcmmContract") + public ResultBean> xcmmContract(@RequestBody PrintConfirmDto dto); /******************************************************新车买卖合同审核(流程)******************************************************/ diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/PrintConfirmDto.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/PrintConfirmDto.java index 0314497ad1..3101f7c853 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/PrintConfirmDto.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/PrintConfirmDto.java @@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + /** * @author liuguohui * @version 1.0 @@ -24,6 +26,9 @@ public class PrintConfirmDto implements Dto { @ApiModelProperty("客户sid") private String customerSid; + @ApiModelProperty("贷款人sid") + private String borrowerSid; + @ApiModelProperty("合同编号") private String contractNo; diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/xcmmContractQuery.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/xcmmContractQuery.java new file mode 100644 index 0000000000..93daa09486 --- /dev/null +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/xcmmContractQuery.java @@ -0,0 +1,44 @@ +package com.yxt.anrui.base.api.commoncontract; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("新车买卖合同条件") +@Data +public class xcmmContractQuery implements Query { + + @ApiModelProperty("合同sid") + private String contractSid; + + @ApiModelProperty("合同编号") + private String contractNo; + + @ApiModelProperty("销售订单sid") + private String saleOrderSid; + + @ApiModelProperty("客户sid") + private String customerSid; + + @ApiModelProperty("客户名称") + private String customerName; + + @ApiModelProperty("是否优惠:1是0否") + private String discountKey; + + @ApiModelProperty("是否在保险公司购买保险:1是0否") + private String insuranceKey; + + @ApiModelProperty("用户sid") + private String userSid; + + @ApiModelProperty("甲方主体") + private String partyA; + + @ApiModelProperty("乙方主体") + private String partyB; + + @ApiModelProperty("预估报价方案") + private String revalencySchemeKey; +} diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractRest.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractRest.java index 53ae886ab7..12716627a0 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractRest.java +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractRest.java @@ -441,6 +441,11 @@ public class CommonContractRest implements CommonContractFeign { return commonContractService.printConfirm(dto); } + @Override + public ResultBean> xcmmContract(PrintConfirmDto dto) { + return commonContractService.xcmmContract(dto); + } + public List getSheetVal(Sheet sheet, int[] resultCell) throws ParseException { SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); List punishmentList = new ArrayList<>(); diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java index 444e97c2b4..30cd23a7ac 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java @@ -47,6 +47,7 @@ import com.yxt.anrui.buscenter.api.busvehicleinformationhandover.BusVehicleInfor import com.yxt.anrui.crm.api.crmcustomer.CrmCustomerFeign; import com.yxt.anrui.crm.api.crmcustomerfile.CrmCustomerFileFeign; import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerFileDDto; +import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTemp; import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign; import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo; import com.yxt.anrui.fin.api.finbillvehicle.FinBillVehicleFeign; @@ -801,29 +802,56 @@ public class CommonContractService extends MybatisBaseService map, AppOrderDetailsVo appOrderDetailsVo) { String ftl = ""; AppOrderPriceInfoVo priceInfo = appOrderDetailsVo.getPriceInfo(); + AppOrderModelInfoVo orderModelInfoVo = appOrderDetailsVo.getModelInfo(); + //车架号集合 + List stringList = new ArrayList<>(); //查询台数 - String num = priceInfo.getNumber(); + String num = ""; + if (StringUtils.isNotBlank(dto.getBorrowerSid())){ + List busSalesOrderVehicles = busSalesOrderVehicleFeign.selectListByOrderSidAndDkrSid(dto.getBusSid(),dto.getBorrowerSid()).getData(); + num = String.valueOf(busSalesOrderVehicles.size()); + for (BusSalesOrderVehicle busSalesOrderVehicle : busSalesOrderVehicles) { + stringList.add(busSalesOrderVehicle.getLinkNo().substring(busSalesOrderVehicle.getLinkNo().length() - 8)); + } + }else { + num = priceInfo.getNumber(); + stringList = orderModelInfoVo.getOrderVinList(); + } //单台成交价 String transactionPrice = priceInfo.getSingleFinalPrice(); String remarks = ""; if ("现车".equals(appOrderDetailsVo.getOrderType())) { //获取模板 ftl = "existingvehicles"; - AppOrderModelInfoVo orderModelInfoVo = appOrderDetailsVo.getModelInfo(); - List stringList = orderModelInfoVo.getOrderVinList(); if (stringList.size() > 0) { remarks = "数量" + num + "台,单台成交价:" + transactionPrice + "元。车架号:" + String.join("、", stringList); } else { remarks = "数量" + num + "台,单台成交价:" + transactionPrice + "元。"; } } else { - map.put("dayOne", appOrderDetailsVo.getDepositInfo().getPayDepositDays()); + map.put("dayOne", new BigDecimal(appOrderDetailsVo.getDepositInfo().getDeposit()).multiply(new BigDecimal(num)).toString()); //获取模板 ftl = "orderacar"; remarks = "数量" + num + "台,单台成交价:" + transactionPrice + "元。"; } map.put("remarks", remarks); - + //车价合计 + String totalPrice = new BigDecimal(priceInfo.getSingleFinalPrice()).multiply(new BigDecimal(num)).toString(); + map.put("totalPrice", totalPrice); + //车价合计大写 + String priceRemarks = ""; + if (StringUtils.isNotBlank(totalPrice)) { + priceRemarks = TransformMoney.transform(TransformMoney.getDecimalStr(Double.valueOf(totalPrice).doubleValue())); + } + map.put("priceRemarks", priceRemarks); + //订金合计 + AppOrderDepositInfoVo depositInfo = appOrderDetailsVo.getDepositInfo(); + String depositTotal = new BigDecimal(depositInfo.getDeposit()).multiply(new BigDecimal(num)).toString(); + if ("0".equals(depositTotal)) { + map.put("depositTotal", "/"); + } else { + map.put("depositTotal", depositTotal); + } InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/" + ftl + ".ftl"); //生成word文件名 String targetPath = docPdfComponent.getUploadTemplateUrl(); @@ -845,29 +873,56 @@ public class CommonContractService extends MybatisBaseService map, AppOrderDetailsVo appOrderDetailsVo) { String ftl = ""; AppOrderPriceInfoVo priceInfo = appOrderDetailsVo.getPriceInfo(); + AppOrderModelInfoVo orderModelInfoVo = appOrderDetailsVo.getModelInfo(); + //车架号集合 + List stringList = new ArrayList<>(); //查询台数 - String num = priceInfo.getNumber(); + String num = ""; + if (StringUtils.isNotBlank(dto.getBorrowerSid())){ + List busSalesOrderVehicles = busSalesOrderVehicleFeign.selectListByOrderSidAndDkrSid(dto.getBusSid(),dto.getBorrowerSid()).getData(); + num = String.valueOf(busSalesOrderVehicles.size()); + for (BusSalesOrderVehicle busSalesOrderVehicle : busSalesOrderVehicles) { + stringList.add(busSalesOrderVehicle.getLinkNo().substring(busSalesOrderVehicle.getLinkNo().length() - 8)); + } + }else { + num = priceInfo.getNumber(); + stringList = orderModelInfoVo.getOrderVinList(); + } //单台成交价 String transactionPrice = priceInfo.getSingleFinalPrice(); String remarks = ""; if ("现车".equals(appOrderDetailsVo.getOrderType())) { //获取模板 - ftl = "existingvehicles2"; - AppOrderModelInfoVo orderModelInfoVo = appOrderDetailsVo.getModelInfo(); - List stringList = orderModelInfoVo.getOrderVinList(); + ftl = "existingvehicles"; if (stringList.size() > 0) { remarks = "数量" + num + "台,单台成交价:" + transactionPrice + "元。车架号:" + String.join("、", stringList); } else { remarks = "数量" + num + "台,单台成交价:" + transactionPrice + "元。"; } } else { - map.put("dayOne", appOrderDetailsVo.getDepositInfo().getPayDepositDays()); + map.put("dayOne", new BigDecimal(appOrderDetailsVo.getDepositInfo().getDeposit()).multiply(new BigDecimal(num)).toString()); //获取模板 ftl = "orderacar"; remarks = "数量" + num + "台,单台成交价:" + transactionPrice + "元。"; } map.put("remarks", remarks); - + //车价合计 + String totalPrice = new BigDecimal(priceInfo.getSingleFinalPrice()).multiply(new BigDecimal(num)).toString(); + map.put("totalPrice", totalPrice); + //车价合计大写 + String priceRemarks = ""; + if (StringUtils.isNotBlank(totalPrice)) { + priceRemarks = TransformMoney.transform(TransformMoney.getDecimalStr(Double.valueOf(totalPrice).doubleValue())); + } + map.put("priceRemarks", priceRemarks); + //订金合计 + AppOrderDepositInfoVo depositInfo = appOrderDetailsVo.getDepositInfo(); + String depositTotal = new BigDecimal(depositInfo.getDeposit()).multiply(new BigDecimal(num)).toString(); + if ("0".equals(depositTotal)) { + map.put("depositTotal", "/"); + } else { + map.put("depositTotal", depositTotal); + } InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/" + ftl + ".ftl"); //生成word文件名 String targetPath = docPdfComponent.getUploadTemplateUrl(); @@ -1617,6 +1672,319 @@ public class CommonContractService extends MybatisBaseService> xcmmContract(PrintConfirmDto dto) { + ResultBean> rb = ResultBean.fireFail(); + List list = new ArrayList<>(); + Map map = new HashMap<>(); + //客户信息 + CrmCustomerTemp crmCustomerTemp = crmCustomerTempFeign.fetchEntity(dto.getCustomerSid()).getData(); + //查询销售订单的信息 + ResultBean resultBean = busSalesOrderFeign.getSaleOrderDetails(dto.getBusSid()); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + AppOrderDetailsVo appOrderDetailsVo = resultBean.getData(); + //查询销售订单的车型信息 + AppOrderModelInfoVo appOrderModelInfoVo = appOrderDetailsVo.getModelInfo(); + //根据车型sid查询车型的全称 + BaseVehicleModel baseVehicleModel = baseVehicleModelService.fetchBySid(appOrderModelInfoVo.getModelSid()); + BaseModelConfig baseModelConfig = baseModelConfigService.fetchBySid(appOrderModelInfoVo.getConfigSid()); + String modelName = "车型:"; + StringBuilder modeNameValue = new StringBuilder(); + //车型名称(小名):系列+驱动+功能+空格+版本 + if (StringUtils.isNotBlank(baseVehicleModel.getProductLineValue()) && !"-".equals(baseVehicleModel.getProductLineValue())) { + modeNameValue.append(baseVehicleModel.getProductLineValue()); + } + //驱动 + if (StringUtils.isNotBlank(baseVehicleModel.getDriveFormValue()) && !"-".equals(baseVehicleModel.getDriveFormValue())) { + modeNameValue.append(baseVehicleModel.getDriveFormValue()); + } + //功能 + if (StringUtils.isNotBlank(baseVehicleModel.getVehicleTypeValue()) && !"-".equals(baseVehicleModel.getVehicleTypeValue())) { + modeNameValue.append(baseVehicleModel.getVehicleTypeValue()); + } + //版本 + if (StringUtils.isNotBlank(baseVehicleModel.getVehicleVersionValue()) && !"-".equals(baseVehicleModel.getVehicleVersionValue())) { + modeNameValue.append(baseVehicleModel.getVehicleVersionValue()); + } + modelName = modelName + modeNameValue.toString(); + //车型全名称:发动机型号(空格)xxx马力+燃料+排放标准发动机、变速箱、缓速器、 + // 后桥(若存在“桥”字样后不带“后桥”)、速比、轴距、悬架(若存在“悬架”字样后不带“悬架”)、 + // 鞍座(若存在“鞍座”字样后不带“鞍座”)、燃料箱(若存在“油箱”字样后不带“燃料箱”)、轮胎(若存在“胎”字样后不带“轮胎”)、 + // 轮毂材质、护轮罩。换行 + //驾驶室+颜色驾驶室、导流罩、保险杠、后视镜、座椅、空调、独立热源、多媒体 + StringBuilder modelAllName = new StringBuilder(); + //发动机型号 + if (StringUtils.isNotBlank(baseVehicleModel.getEngineTypeValue()) && !"-".equals(baseVehicleModel.getEngineTypeValue())) { + modelAllName.append(baseVehicleModel.getEngineTypeValue()); + } + //马力 + if (StringUtils.isNotBlank(baseVehicleModel.getPowerValue()) && !"-".equals(baseVehicleModel.getPowerValue())) { + modelAllName.append(" ").append(baseVehicleModel.getPowerValue()).append("马力"); + } + //燃料 + if (StringUtils.isNotBlank(baseVehicleModel.getFuelTypeValue()) && !"-".equals(baseVehicleModel.getFuelTypeValue())) { + modelAllName.append(baseVehicleModel.getFuelTypeValue()); + } + //排放标准 + if (StringUtils.isNotBlank(baseVehicleModel.getEmissionStandardValue()) && !"-".equals(baseVehicleModel.getEmissionStandardValue())) { + modelAllName.append(baseVehicleModel.getEmissionStandardValue()); + } + modelAllName.append("发动机"); + //变速箱 + if (StringUtils.isNotBlank(baseVehicleModel.getGearboxTypeValue()) && !"-".equals(baseVehicleModel.getGearboxTypeValue())) { + modelAllName.append("、").append(baseVehicleModel.getGearboxTypeValue()).append("变速箱"); + } + //缓速器 + if (StringUtils.isNotBlank(baseModelConfig.getSlowMachine()) && !"-".equals(baseModelConfig.getSlowMachine())) { + modelAllName.append("、").append(baseModelConfig.getSlowMachine()); + } + //后桥 + if (StringUtils.isNotBlank(baseModelConfig.getRearAxleValue()) && !"-".equals(baseModelConfig.getRearAxleValue())) { + modelAllName.append("、").append(baseModelConfig.getRearAxleValue()); + if (!baseModelConfig.getRearAxleValue().contains("桥")) { + modelAllName.append("后桥"); + } + } + //速比 + if (StringUtils.isNotBlank(baseModelConfig.getRearAxleRatio()) && !"-".equals(baseModelConfig.getRearAxleRatio())) { + modelAllName.append("、").append(baseModelConfig.getRearAxleRatio()).append("速比"); + } + //轴距 + if (StringUtils.isNotBlank(baseModelConfig.getWheelbase()) && !"-".equals(baseModelConfig.getWheelbase())) { + modelAllName.append("、").append(baseModelConfig.getWheelbase()).append("mm轴距"); + } + //悬架 + if (StringUtils.isNotBlank(baseModelConfig.getSuspension()) && !"-".equals(baseModelConfig.getSuspension())) { + modelAllName.append("、").append(baseModelConfig.getSuspension()); + if (!baseModelConfig.getSuspension().contains("悬架")) { + modelAllName.append("悬架"); + } + } + //鞍座 + if (StringUtils.isNotBlank(baseModelConfig.getSaddle()) && !"-".equals(baseModelConfig.getSaddle())) { + modelAllName.append("、").append(baseModelConfig.getSaddle()); + if (!baseModelConfig.getSaddle().contains("鞍座")) { + modelAllName.append("鞍座"); + } + } + //燃料箱 + if (StringUtils.isNotBlank(baseModelConfig.getFuelTank()) && !"-".equals(baseModelConfig.getFuelTank())) { + modelAllName.append("、").append(baseModelConfig.getFuelTank()); + if (!baseModelConfig.getFuelTank().contains("油箱")) { + modelAllName.append("燃料箱"); + } + } + //轮胎 + if (StringUtils.isNotBlank(baseModelConfig.getTireSize()) && !"-".equals(baseModelConfig.getTireSize())) { + modelAllName.append("、").append(baseModelConfig.getTireSize()); + if (!baseModelConfig.getTireSize().contains("胎")) { + modelAllName.append("轮胎"); + } + } + //轮毂材质 + if (StringUtils.isNotBlank(baseModelConfig.getHubMaterial()) && !"-".equals(baseModelConfig.getHubMaterial())) { + modelAllName.append("、").append(baseModelConfig.getHubMaterial()); + } + //护轮罩 + if (StringUtils.isNotBlank(baseModelConfig.getTireCover()) && !"-".equals(baseModelConfig.getTireCover())) { + modelAllName.append("、").append(baseModelConfig.getTireCover()); + } + StringBuilder modelAllName2 = new StringBuilder(); + modelAllName2.append("\t"); + //驾驶室 + if (StringUtils.isNotBlank(baseModelConfig.getSpecification()) && !"-".equals(baseModelConfig.getSpecification())) { + modelAllName2.append(baseModelConfig.getSpecification()); + } + //颜色 + if (StringUtils.isNotBlank(baseModelConfig.getCarColor()) && !"-".equals(baseModelConfig.getCarColor())) { + modelAllName2.append("/").append(baseModelConfig.getCarColor()).append("驾驶室"); + } + //导流罩 + if (StringUtils.isNotBlank(baseModelConfig.getBaffleModel()) && !"-".equals(baseModelConfig.getBaffleModel())) { + modelAllName2.append("、").append(baseModelConfig.getBaffleModel()); + } + //保险杠 + if (StringUtils.isNotBlank(baseModelConfig.getBumper()) && !"-".equals(baseModelConfig.getBumper())) { + modelAllName2.append("、").append(baseModelConfig.getBumper()); + } + //后视镜 + if (StringUtils.isNotBlank(baseModelConfig.getRearViewMirror()) && !"-".equals(baseModelConfig.getRearViewMirror())) { + modelAllName2.append("、").append(baseModelConfig.getRearViewMirror()); + } + //座椅 + if (StringUtils.isNotBlank(baseModelConfig.getSeat()) && !"-".equals(baseModelConfig.getSeat())) { + modelAllName2.append("、").append(baseModelConfig.getSeat()); + if (!baseModelConfig.getSeat().contains("椅")) { + modelAllName2.append("座椅"); + } + } + //空调 + if (StringUtils.isNotBlank(baseModelConfig.getAirConditioner()) && !"-".equals(baseModelConfig.getAirConditioner())) { + modelAllName2.append("、").append(baseModelConfig.getAirConditioner()); + } + //独立热源 + if (StringUtils.isNotBlank(baseModelConfig.getIndependentSources()) && !"-".equals(baseModelConfig.getIndependentSources())) { + modelAllName2.append("、").append(baseModelConfig.getIndependentSources()); + } + //多媒体 + if (StringUtils.isNotBlank(baseModelConfig.getMultimedia()) && !"-".equals(baseModelConfig.getMultimedia())) { + modelAllName2.append("、").append(baseModelConfig.getMultimedia()); + } + //特殊配置说明 + if (StringUtils.isNotBlank(appOrderModelInfoVo.getSpecialInstructions())) { + modelAllName2.append("、").append("特殊配置说明:" + appOrderModelInfoVo.getSpecialInstructions()); + + } + modelAllName2.append("。"); + String modelConfig = "配置:" + modelAllName + "。"; + //上装:外廓尺寸+颜色+上装名称、板材厚度、板材材质、篷布滑道、冷藏冷机、自卸液压盖板、底板加热、更多配置 + if (appOrderDetailsVo.getTopInfo() != null) { + AppOrderTopInfoVo topInfo = appOrderDetailsVo.getTopInfo(); + String topName = appOrderDetailsVo.getTopMessage(); + topName = "上装:制造尺寸与公告一致、" + topName + "。"; + //只有为公司采购时才显示 + if ("01".equals(topInfo.getBuyTypeKey())) { + map.put("topName", topName); + } + } + //优惠说明 + String discountDetail = ""; + if (StringUtils.isNotBlank(appOrderDetailsVo.getTotaldiscount())) { + List discountList = appOrderDetailsVo.getDiscountList(); + discountDetail = "优惠说明:赠送价值" + appOrderDetailsVo.getTotaldiscount() + "元优惠包。包括"; + for (int iii = 0; iii < discountList.size(); iii++) { + AppOrderDiscountListVo vv = discountList.get(iii); + String discountName = vv.getDiscountName(); + if (iii == discountList.size() - 1) { + discountDetail = discountDetail + "价值" + vv.getPrice() + "元" + discountName + vv.getNumber() + "份(每份包含" + vv.getDiscountExplain() + ")。"; + } else { + discountDetail = discountDetail + "价值" + vv.getPrice() + "元" + discountName + vv.getNumber() + "份(每份包含" + vv.getDiscountExplain() + "),"; + } + } + map.put("discountDetail", discountDetail); + } + //交纳订金 + AppOrderDepositInfoVo depositInfo = appOrderDetailsVo.getDepositInfo(); + String depositTotal = depositInfo.getDepositTotal(); + if ("02".equals(depositInfo.getDepositTypeKey())) { + ResultBean> listResultBean = busDepositFictitiousFeign.detailsList(depositInfo.getSid()); + List listResultBeanData = listResultBean.getData(); + listResultBeanData.removeAll(Collections.singleton(null)); + if (!listResultBeanData.isEmpty()) { + String depositRemarks = "(其中"; + for (int ii = 0; ii < listResultBeanData.size(); ii++) { + BusDepositFictitiousDetailsVo v = listResultBeanData.get(ii); + if (StringUtils.isNotBlank(v.getPayPath())) { + depositRemarks = depositRemarks + v.getDraweeName() + "在"; + } else { + depositRemarks = depositRemarks + "乙方在"; + } + if (ii == listResultBeanData.size() - 1) { + String b = v.getPaymentDate() + "转入甲方的" + v.getDeposit() + "元中的" + v.getPrice() + "元用于本次订金。"; + depositRemarks = depositRemarks + b; + } else { + String b = v.getPaymentDate() + "转入甲方的" + v.getDeposit() + "元中的" + v.getPrice() + "元用于本次订金,"; + depositRemarks = depositRemarks + b; + } + + } + depositRemarks = depositRemarks + ")"; + map.put("depositRemarks", depositRemarks); + } + } + map.put("createOrgName", dto.getCreateOrgName()); + map.put("modelConfigs", modelAllName2.toString()); + map.put("customerName", dto.getCustomerName()); + map.put("mobile", crmCustomerTemp.getMobile()); + map.put("idNo", crmCustomerTemp.getIDNumber()); + map.put("modelName", modelName); + map.put("modelConfig", modelConfig); + if ("1".equals(appOrderDetailsVo.getIsInsurance())) { + //保险说明 + String insuranceInfo = "保险说明:" + appOrderDetailsVo.getInsuranceInfoMessage() + "。"; + map.put("insuranceInfo", insuranceInfo); + } + //车辆交付地点 + //根据存放地点查询 + String address = ""; + AppOrderPriceInfoVo priceInfo = appOrderDetailsVo.getPriceInfo(); + if (StringUtils.isNotBlank(priceInfo.getPlannedPickUpLocationKey())) { + ScmWarehouseVo scmWarehouseVo = scmWarehouseFeign.fetchBySid(priceInfo.getPlannedPickUpLocationKey()).getData(); + if (scmWarehouseVo != null) { + address = scmWarehouseVo.getWarehouseAttribute(); + } + } + map.put("address", address); + //查询是否有公告型号 + String publics = "公告型号:"; + String publicModel = appOrderModelInfoVo.getPublicModel(); + String publicModelSon = appOrderModelInfoVo.getPublicModelSon(); + if (StringUtils.isNotBlank(publicModel)) { + publics = publics + publicModel; + map.put("publicModel", publics + "。"); + if (StringUtils.isNotBlank(publicModelSon)) { + map.put("publicModel", publics + "、" + publicModelSon + "。"); + } + } + map.put("contractNo", dto.getContractNo()); + String url = ""; + PrintConfirmVo printConfirmVo = null; + String urlAll = ""; + 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(() -> { + return genCarSaleContract(dto, map, appOrderDetailsVo); + }); + Future future1_2 = pool.submit(() -> { + return genCarSaleContract2(dto, map, appOrderDetailsVo); + }); + Future future8 = null; + List filesList = new ArrayList<>(); + if (future1 != null) { + if (StringUtils.isNotBlank(future1.get())) { + File file = new File(docPdfComponent.getUploadTemplateUrl() + future1.get()); + filesList.add(file); + } + } + if (future1_2 != null) { + if (StringUtils.isNotBlank(future1_2.get())) { + File file = new File(docPdfComponent.getUploadTemplateUrl() + future1_2.get()); + filesList.add(file); + } + } + //合并pdf文件 + if (future8 != null) { + if (StringUtils.isNotBlank(future8.get())) { + File file = new File(docPdfComponent.getUploadTemplateUrl() + future8.get()); + filesList.add(file); + } + } + if (filesList.size() > 0) { + String typeName = appOrderDetailsVo.getPayType() + dto.getContractNo() + ".pdf"; + File allFile = WordConvertUtils.mulFile2One(filesList, docPdfComponent.getUploadTemplateUrl() + typeName); + System.out.println("-========" + docPdfComponent.getUploadTemplateUrl() + typeName); + urlAll = typeName; + } + if (StringUtils.isNotBlank(urlAll)) { + printConfirmVo = new PrintConfirmVo(); + printConfirmVo.setName(MessageFormat.format("《{0}》", appOrderDetailsVo.getPayType() + dto.getContractNo())); + printConfirmVo.setDownloadUrl(docPdfComponent.getPrefixTemplateUrl() + urlAll); + list.add(printConfirmVo); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("生成文件失败:==========================" + e.getMessage()); + return rb.setMsg("生成文件失败"); + } + return rb.success().setData(list); + } + public ResultBean> printConfirm(PrintConfirmDto dto) { ResultBean> rb = ResultBean.fireFail(); List list = new ArrayList<>(); @@ -2983,4 +3351,6 @@ public class CommonContractService extends MybatisBaseService finBillApplicationDetailsVos = baseMapper.selectByContractNo(contractNo); - /*if (finBillApplicationDetailsVos != null) { - for (FinBillApplicationDetailsVo finBillApplicationDetailsVo : finBillApplicationDetailsVos) { - String nodeState = finBillApplicationDetailsVo.getNodeState(); - if (!"待提交".equals(nodeState) && !"已办结".equals(nodeState) && !"终止".equals(nodeState) && !"发起申请".equals(nodeState)) { - return rb.setMsg("该合同已有开票/欠款开票申请正在审批中,不可提交"); - } - } - }*/ //判断车辆是否发起过开票申请 List finBillVehicles = dto.getFinBillVehicles(); for (FinBillVehicleDto finBillVehicle : finBillVehicles) { @@ -1403,6 +1394,14 @@ public class FinBillApplicationService extends MybatisBaseService variables = new HashMap<>(); + //判断是否担保贷款,若是,则isdbdk网关参数为true=============添加 + BusSalesOrder busSalesOrder = busSalesOrderFeign.selectOrderByContractNo(contractNo).getData(); + variables.put("isdbdk", "2".equals(busSalesOrder.getPayTypeKey())); + //判断是否是高低开,若是,则isAdj网关参数为true=============添加 + BusSalesOrderPrice data = busSalesOrderFeign.selectByContractNo(contractNo).getData(); + if (data != null) { + variables.put("isAdj", !data.getSingleFinalPrice().equals(finBillApplication.getOneBillMoney())); + } Map appMap = new HashMap<>(); appMap.put("sid", businessSid); variables.put("app", appMap); diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanhomevisitprep/LoanHomevisitPrepFeign.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanhomevisitprep/LoanHomevisitPrepFeign.java index 672884bd71..2956623862 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanhomevisitprep/LoanHomevisitPrepFeign.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanhomevisitprep/LoanHomevisitPrepFeign.java @@ -89,7 +89,7 @@ public interface LoanHomevisitPrepFeign { @ApiOperation("生成消贷合同") @PostMapping("/saveLoanCon") @ResponseBody - public ResultBean saveLoanCon(@RequestParam("sid") String sid, @RequestParam("conSetUpKey") String conSetUpKey); + public ResultBean saveLoanCon(@RequestParam("sid") String sid, @RequestParam("conSetUpKey") String conSetUpKey); @ApiOperation("确定贷款人推送家纺准备") @PostMapping("/saveHomeVisit") diff --git a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanhomevisitprep/LoanHomevisitPrepFeignFallback.java b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanhomevisitprep/LoanHomevisitPrepFeignFallback.java index d1a7e5c115..a38993e07c 100644 --- a/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanhomevisitprep/LoanHomevisitPrepFeignFallback.java +++ b/anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanhomevisitprep/LoanHomevisitPrepFeignFallback.java @@ -81,7 +81,7 @@ public class LoanHomevisitPrepFeignFallback implements LoanHomevisitPrepFeign { } @Override - public ResultBean saveLoanCon(String sid, String conSetUpKey) { + public ResultBean saveLoanCon(String sid, String conSetUpKey) { return null; } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanhomevisitprep/LoanHomevisitPrepRest.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanhomevisitprep/LoanHomevisitPrepRest.java index 1e3835ef5b..aa448cc1d8 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanhomevisitprep/LoanHomevisitPrepRest.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanhomevisitprep/LoanHomevisitPrepRest.java @@ -25,6 +25,7 @@ *********************************************************/ package com.yxt.anrui.riskcenter.biz.loanhomevisitprep; +import com.yxt.anrui.base.api.commoncontract.PrintConfirmVo; import com.yxt.anrui.riskcenter.api.loanhomevisitprep.*; import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; @@ -104,7 +105,7 @@ public class LoanHomevisitPrepRest implements LoanHomevisitPrepFeign { } @Override - public ResultBean saveLoanCon(String sid, String conSetUpKey) { + public ResultBean saveLoanCon(String sid, String conSetUpKey) { return loanHomevisitPrepService.saveLoanCon(sid, conSetUpKey); } diff --git a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanhomevisitprep/LoanHomevisitPrepService.java b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanhomevisitprep/LoanHomevisitPrepService.java index deec96b473..abd5f8009b 100644 --- a/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanhomevisitprep/LoanHomevisitPrepService.java +++ b/anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanhomevisitprep/LoanHomevisitPrepService.java @@ -31,8 +31,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleStateDto; import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleStateEnum; import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleStateFeign; +import com.yxt.anrui.base.api.commoncontract.CommonContract; +import com.yxt.anrui.base.api.commoncontract.CommonContractFeign; +import com.yxt.anrui.base.api.commoncontract.PrintConfirmDto; +import com.yxt.anrui.base.api.commoncontract.PrintConfirmVo; import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder; import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign; +import com.yxt.anrui.buscenter.api.bussalesorder.app.order.AppOrderDetailsVo; +import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerDetailsVo; import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerFeign; import com.yxt.anrui.buscenter.api.bussalesorderloancontract.BusSalesOrderLoancontract; import com.yxt.anrui.buscenter.api.bussalesorderloancontract.BusSalesOrderLoancontractDto; @@ -89,6 +95,8 @@ public class LoanHomevisitPrepService extends MybatisBaseService listPageVo(PagerQuery pq) { LoanHomevisitPrepQuery query = pq.getParams(); @@ -235,8 +243,8 @@ public class LoanHomevisitPrepService extends MybatisBaseService saveLoanCon(String sid, String conSetUpKey) { + ResultBean rb = ResultBean.fireFail(); LoanHomevisitPrepVo loanHomevisitPrepVo = baseMapper.selectDetails(sid); List busSalesOrderVehicles = busSalesOrderVehicleFeign.selectListByOrderSidAndDkrSid(loanHomevisitPrepVo.getSaleOrderSid(),loanHomevisitPrepVo.getBorrowerSid()).getData(); BusSalesOrder busSalesOrder = busSalesOrderFeign.fetchBySid(loanHomevisitPrepVo.getSaleOrderSid()).getData(); @@ -286,6 +294,31 @@ public class LoanHomevisitPrepService extends MybatisBaseService resultBean = busSalesOrderFeign.getSaleOrderDetails(loanHomevisitPrepVo.getSaleOrderSid()); + if (!resultBean.getSuccess()) { + return rb.setMsg(resultBean.getMsg()); + } + AppOrderDetailsVo appOrderDetailsVo = resultBean.getData(); + //甲方 + String createOrgName = appOrderDetailsVo.getSalesOrg(); + printConfirmDto.setCreateOrgName(createOrgName); + List printConfirmVos = commonContractFeign.xcmmContract(printConfirmDto).getData(); + String xcmmContractUrl = printConfirmVos.get(0).getDownloadUrl(); return rb.success(); }