Browse Source

开票合同模板

master
dimengzhe 1 year ago
parent
commit
da76a778ed
  1. 2
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busbillapplication/BusBillApplication.java
  2. 21
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationMapper.java
  3. 27
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationMapper.xml
  4. 309
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationService.java
  5. 1545
      anrui-buscenter/anrui-buscenter-biz/src/main/resources/ftl/carContract.ftl
  6. 2891
      anrui-buscenter/anrui-buscenter-biz/src/main/resources/ftl/dai_existingvehicles_black.ftl
  7. 1535
      anrui-buscenter/anrui-buscenter-biz/src/main/resources/ftl/invoiceApply.ftl
  8. 23
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/BillFileVo.java

2
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busbillapplication/BusBillApplication.java

@ -146,4 +146,6 @@ public class BusBillApplication extends BaseEntity {
private String qkkpBillNo;
@ApiModelProperty("出库申请sid")
private String ckSid;
private String fileUrl;
}

21
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationMapper.java

@ -30,10 +30,17 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.base.api.basetrailer.BaseTrailer;
import com.yxt.anrui.base.api.basetrailermodel.BaseTrailerModel;
import com.yxt.anrui.base.api.basevehicle.BaseVehicle;
import com.yxt.anrui.buscenter.api.busbillapplication.BusBillApplication;
import com.yxt.anrui.buscenter.api.busbillapplication.BusBillApplicationDetailsVo;
import com.yxt.anrui.buscenter.api.busbillapplication.BusBillApplicationVo;
import com.yxt.anrui.buscenter.api.busbillapplication.*;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesordermodel.BusSalesOrderModel;
import com.yxt.anrui.buscenter.api.bussalesorderprice.BusSalesOrderPrice;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTemp;
import com.yxt.anrui.fin.api.finbillapplication.FinBillApplication;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -80,4 +87,18 @@ public interface BusBillApplicationMapper extends BaseMapper<BusBillApplication>
BusBillApplication selectByContractNoAndSid(@Param("contractNo") String contractNo, @Param("vinSid") String vinSid);
FinBillApplication selectByNo(String billNo);
BusSalesOrder selectByContract(String contractNo);
BusSalesOrderModel selectByOrderSid(String sid);
BusSalesOrderPrice selectByPrices(String sid);
BaseTrailer selectByTrailerNo(String gcVinNo);
BaseTrailerModel selectByModelSid(String trailerModelSid);
BaseVehicle selectByVinSid(String vehSid);
CrmCustomerTemp selectByCustomerSid(String openTickSid);
}

27
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationMapper.xml

@ -102,4 +102,31 @@
<select id="selectByNo" resultType="com.yxt.anrui.fin.api.finbillapplication.FinBillApplication">
select bi.* from anrui_fin.fin_bill_application bi where bi.qkkpBillNo = #{billNo} order by id desc limit 1
</select>
<select id="selectByContract" resultType="com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder">
select * from anrui_buscenter.bus_sales_order where contractNo = #{contractNo}
</select>
<select id="selectByOrderSid" resultType="com.yxt.anrui.buscenter.api.bussalesordermodel.BusSalesOrderModel">
select * from anrui_buscenter.bus_sales_order_model where salesOrderSid = #{sid}
</select>
<select id="selectByPrices" resultType="com.yxt.anrui.buscenter.api.bussalesorderprice.BusSalesOrderPrice">
select * from anrui_buscenter.bus_sales_order_price where salesOrderSid = #{sid}
</select>
<select id="selectByTrailerNo" resultType="com.yxt.anrui.base.api.basetrailer.BaseTrailer">
select * from anrui_base.base_trailer where vinNo = #{gcVinNo} order by id desc limit 1
</select>
<select id="selectByModelSid" resultType="com.yxt.anrui.base.api.basetrailermodel.BaseTrailerModel">
select * from anrui_base.base_trailer_model where sid = #{trailerModelSid}
</select>
<select id="selectByVinSid" resultType="com.yxt.anrui.base.api.basevehicle.BaseVehicle">
select * from anrui_base.base_vehicle where sid = #{vehSid}
</select>
<select id="selectByCustomerSid" resultType="com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTemp">
select * from anrui_crm.crm_customer_temp where sid = #{openTickSid}
</select>
</mapper>

309
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busbillapplication/BusBillApplicationService.java

@ -27,12 +27,16 @@ package com.yxt.anrui.buscenter.biz.busbillapplication;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.base.api.basetrailer.*;
import com.yxt.anrui.base.api.basetrailermodel.BaseTrailerModel;
import com.yxt.anrui.base.api.basevehicle.BaseVehicle;
import com.yxt.anrui.base.api.basevehicleappendix.BaseVehicleAppendixFeign;
import com.yxt.anrui.base.api.basevehiclecertificate.BaseVehicleCertificateFeign;
import com.yxt.anrui.base.api.basevehiclecertificate.BaseVehicleCertificateVo;
import com.yxt.anrui.base.api.commonappendix.CommonAppendixFeign;
import com.yxt.anrui.base.api.commonappendix.CommonAppendixVo;
import com.yxt.anrui.base.api.commoncontract.CarContractListVo;
import com.yxt.anrui.base.api.commoncontract.CommonContractFeign;
import com.yxt.anrui.buscenter.api.busbillfile.BusAttachTypeEnum;
import com.yxt.anrui.buscenter.api.busbillfile.BusBillFileDto;
@ -47,6 +51,7 @@ import com.yxt.anrui.buscenter.api.busdeliveredapply.BusDeliveredApply;
import com.yxt.anrui.buscenter.api.busdeliveredapplydetails.BusDeliveredApplyDetails;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesorder.app.order.AppOrderDetailsVo;
import com.yxt.anrui.buscenter.api.bussalesordermodel.BusSalesOrderModel;
import com.yxt.anrui.buscenter.api.bussalesorderprice.BusSalesOrderPrice;
import com.yxt.anrui.buscenter.biz.busbillfile.BusBillFileService;
import com.yxt.anrui.buscenter.biz.busbilltrailer.BusBillTrailerService;
@ -57,19 +62,31 @@ import com.yxt.anrui.buscenter.api.busbilltrailer.BusBillTrailerVo;
import com.yxt.anrui.buscenter.biz.busdeliveredapply.BusDeliveredApplyService;
import com.yxt.anrui.buscenter.biz.busdeliveredapplydetails.BusDeliveredApplyDetailsService;
import com.yxt.anrui.buscenter.biz.bussalesorder.BusSalesOrderService;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTemp;
import com.yxt.anrui.fin.api.finbillapplication.BillFileVo;
import com.yxt.anrui.fin.api.finbillapplication.FinBillApplication;
import com.yxt.anrui.fin.api.finbillapplication.FinBillApplicationDto;
import com.yxt.anrui.fin.api.finbilltrailer.FinBillTrailerDto;
import com.yxt.anrui.fin.api.finbillvehicle.FinBillVehicleDto;
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingDetailsVo;
import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingFeign;
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutionsFeign;
import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo;
import com.yxt.common.base.config.component.DocPdfComponent;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.WordConvertUtils;
import com.yxt.common.core.result.ResultBean;
import org.apache.commons.lang3.StringUtils;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.File;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import java.util.concurrent.*;
@Service
public class BusBillApplicationService extends MybatisBaseService<BusBillApplicationMapper, BusBillApplication> {
@ -98,6 +115,12 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica
private BusDeliveredApplyDetailsService busDeliveredApplyDetailsService;
@Autowired
private FinCompanyInvoicingFeign finCompanyInvoicingFeign;
@Autowired
private CommonContractFeign commonContractFeign;
@Autowired
private LoanSolutionsFeign loanSolutionsFeign;
@Autowired
private DocPdfComponent docPdfComponent;
public ResultBean<String> saveOrUpdateDto(BusBillApplicationDto dto) {
ResultBean rb = ResultBean.fireFail();
@ -112,6 +135,10 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica
BeanUtil.copyProperties(dto, busBillApplication, "sid");
busBillApplication.setNum(busBillVehicles.size());
busBillApplication.setArrearsMoney("0");
String fileUrl = getFileUrl(dto);
if(StringUtils.isNotBlank(fileUrl)){
busBillApplication.setFileUrl(fileUrl);
}
save(busBillApplication);
//主车开票信息
for (BusBillVehicleDto busBillVehicleDto : busBillVehicles) {
@ -247,6 +274,10 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica
}
BusBillApplication entity = fetchBySid(dtoSid);
BeanUtil.copyProperties(dto, entity, "id", "sid");
String fileUrl = getFileUrl(dto);
if(StringUtils.isNotBlank(fileUrl)){
entity.setFileUrl(fileUrl);
}
baseMapper.updateById(entity);
}
@ -491,4 +522,278 @@ public class BusBillApplicationService extends MybatisBaseService<BusBillApplica
public FinBillApplication selectByNo(String billNo) {
return baseMapper.selectByNo(billNo);
}
public String getFileUrl(BusBillApplicationDto dto) {
Map<String, Object> map = new HashMap<>();
Map<String, Object> carMap = new HashMap<>();
Map<String, Object> filemap = new HashMap<>();
Map<String,Object> checkMap = new HashMap<>();
String fileUrl = "";
String contractNo = dto.getContractNo();
//根据合同号查询销售订单数据
BusSalesOrder busSalesOrder = baseMapper.selectByContract(contractNo);
SolutionsDetailsVo loanSolutions = loanSolutionsFeign.selectDetailss(busSalesOrder.getSid()).getData();
List<BusBillVehicleDto> finBillVehicles = dto.getFinBillVehicles();
BusSalesOrderModel busSalesOrderModel = baseMapper.selectByOrderSid(busSalesOrder.getSid());
BusSalesOrderPrice busSalesOrderPrice = baseMapper.selectByPrices(busSalesOrder.getSid());
FinCompanyInvoicingDetailsVo finCompanyInvoicingDetailsVo = finCompanyInvoicingFeign.fetchDetailsVoBySid(dto.getOpenTickSid()).getData();
if (!dto.getOpenTickSid().equals(busSalesOrder.getAffiliatedCompanySid())) {
//生成开票申请书
if (StringUtils.isNotBlank(busSalesOrder.getPurchaseSystemSid())) {
ResultBean<FinCompanyInvoicingDetailsVo> invoicingDetailsVoResultBean = finCompanyInvoicingFeign.getDetailsByUseOrgAndSystem(busSalesOrder.getUseOrgSid(), busSalesOrder.getPurchaseSystemSid());
if (invoicingDetailsVoResultBean.getData() != null) {
map.put("createOrgName", invoicingDetailsVoResultBean.getData().getName());
}
}
map.put("contractNo", busSalesOrder.getContractNo());
List<BillFileVo> 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.setType(busSalesOrder.getBillingType());
list.add(billFileVo);
List<BusBillTrailerDto> finBillTrailers = dto.getFinBillTrailers();
finBillTrailers.removeAll(Collections.singleton(null));
Map<String, Object> carNameMap = new HashMap<>();
if (!finBillTrailers.isEmpty()) {
for (int i = 0; i < finBillTrailers.size(); i++) {
BusBillTrailerDto 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());
}
}
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<String> 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<FinCompanyInvoicingDetailsVo> invoicingDetailsVoResultBean = finCompanyInvoicingFeign.getDetailsByUseOrgAndSystem(busSalesOrder.getUseOrgSid(), busSalesOrder.getPurchaseSystemSid());
if (invoicingDetailsVoResultBean.getData() != null) {
carMap.put("createOrgName", invoicingDetailsVoResultBean.getData().getName());
}
}
carMap.put("date", date);
List<CarContractListVo> carContractListVos = new ArrayList<>();
for (BusBillVehicleDto 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())) {
//生成新车空白合同
filemap.put("totalPrice", "");
filemap.put("priceRemarks", "");
filemap.put("depositTotal", "");
String remarks = "";
String date = DateUtil.today();
List<String> 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());//开票类型
filemap.put("createOrgName", "");
remarks = "数量" + finBillVehicles.size() + "台,单台成交价: 元。";
filemap.put("remarks", remarks);
filemap.put("busSid",busSalesOrder.getSid());
ResultBean<Map<String,Object>> mapResultBean = commonContractFeign.getModelMap(filemap);
checkMap = mapResultBean.getData();
}
}
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(1, 2,
1000, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
List<File> filesList = new ArrayList<>();
if(!map.isEmpty()){
Future<String> 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<String> future2 = pool.submit(() -> {
return getCarFile(carMap);
});
if (StringUtils.isNotBlank(future2.get())) {
File file = new File(docPdfComponent.getUploadTemplateUrl() + future2.get());
filesList.add(file);
}
}
Map<String, Object> finalCheckMap = checkMap;
if(!finalCheckMap.isEmpty()){
Future<String> 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());
}
return fileUrl;
}
public String blackFile(Map<String, Object> map) {
String ftl = "dai_existingvehicles_black";
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/" + ftl + ".ftl");
//生成word文件名
String targetPath = docPdfComponent.getUploadTemplateUrl();
String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
long seconds = System.currentTimeMillis();
String typeName = dateStr + seconds + ".doc";
File file = new File(targetPath + ftl + seconds + ".ftl");
File dir = new File(targetPath);
WordConvertUtils.inputStreamToFile(inputStream, file);
WordConvertUtils.creatWord1(map, file, targetPath, typeName, dir);
//新生成的word路径
String wordPath = targetPath + typeName;
//生成合同文件名
String pdfName = map.get("contractNo").toString() + "贷款新车买卖空白合同_" + dateStr + seconds + ".pdf";
WordConvertUtils.doc2pdf(wordPath, targetPath, pdfName);
return pdfName;
}
public String getInvoiceApplyFile(Map<String, Object> map) {
String ftl = "invoiceApply";
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/" + ftl + ".ftl");
//生成word文件名
String targetPath = docPdfComponent.getUploadTemplateUrl();
String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
long seconds = System.currentTimeMillis();
String typeName = dateStr + seconds + ".doc";
File file = new File(targetPath + ftl + seconds + ".ftl");
File dir = new File(targetPath);
WordConvertUtils.inputStreamToFile(inputStream, file);
WordConvertUtils.creatWord1(map, file, targetPath, typeName, dir);
//新生成的word路径
String wordPath = targetPath + typeName;
//生成文件名
String pdfName = map.get("contractNo").toString() + "开票申请书_" + dateStr + seconds + ".pdf";
WordConvertUtils.doc2pdf(wordPath, targetPath, pdfName);
return pdfName;
}
public String getCarFile(Map<String, Object> map) {
String ftl = "carContract";
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ftl/" + ftl + ".ftl");
//生成word文件名
String targetPath = docPdfComponent.getUploadTemplateUrl();
String dateStr = DateUtil.format(new Date(), "yyyyMMdd");
long seconds = System.currentTimeMillis();
String typeName = dateStr + seconds + ".doc";
File file = new File(targetPath + ftl + seconds + ".ftl");
File dir = new File(targetPath);
WordConvertUtils.inputStreamToFile(inputStream, file);
WordConvertUtils.creatWord1(map, file, targetPath, typeName, dir);
//新生成的word路径
String wordPath = targetPath + typeName;
//生成合同文件名
String pdfName = map.get("contractNo").toString() + "车辆登记合同_" + dateStr + seconds + ".pdf";
WordConvertUtils.doc2pdf(wordPath, targetPath, pdfName);
return pdfName;
}
}

1545
anrui-buscenter/anrui-buscenter-biz/src/main/resources/ftl/carContract.ftl

File diff suppressed because it is too large

2891
anrui-buscenter/anrui-buscenter-biz/src/main/resources/ftl/dai_existingvehicles_black.ftl

File diff suppressed because it is too large

1535
anrui-buscenter/anrui-buscenter-biz/src/main/resources/ftl/invoiceApply.ftl

File diff suppressed because it is too large

23
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finbillapplication/BillFileVo.java

@ -0,0 +1,23 @@
package com.yxt.anrui.fin.api.finbillapplication;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/2/22
**/
@Data
public class BillFileVo {
@ApiModelProperty("车辆名称")
private String carName;
@ApiModelProperty("数量")
private String num;
@ApiModelProperty("合同单价")
private String price;
@ApiModelProperty("开票金额")
private String openPrice;
@ApiModelProperty("发票类型")
private String type;
}
Loading…
Cancel
Save