Browse Source

销售订单合同生成

master
dimengzhe 3 years ago
parent
commit
074baa0a91
  1. 5
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeign.java
  2. 6
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeignFallback.java
  3. 4
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/PrintConfirmDto.java
  4. 7
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/busvehicleapply/BusVehicleApplyService.java
  5. 4
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractRest.java
  6. 201
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java
  7. 1565
      anrui-base/anrui-base-biz/src/main/resources/新车买卖合同(现车).ftl
  8. 1565
      anrui-base/anrui-base-biz/src/main/resources/新车买卖合同(现车)(空).ftl
  9. 1689
      anrui-base/anrui-base-biz/src/main/resources/新车买卖合同(订车).ftl
  10. 1689
      anrui-base/anrui-base-biz/src/main/resources/新车买卖合同(订车)(空).ftl
  11. 6
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdepositfictitious/BusDepositFictitiousDetailsVo.java
  12. 4
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdepositfictitious/BusDepositFictitiousFeign.java
  13. 5
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdepositfictitious/BusDepositFictitiousFeignFallback.java
  14. 2
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/app/order/AppOrderDetailsVo.java
  15. 3
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/app/order/AppOrderModelInfoVo.java
  16. 3
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/app/order/AppOrderTopInfoVo.java
  17. 13
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdepositfictitious/BusDepositFictitiousMapper.xml
  18. 17
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdepositfictitious/BusDepositFictitiousRest.java
  19. 3
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordermakeup/BusSalesOrderMakeupMapper.xml

5
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeign.java

@ -12,6 +12,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.IOException; import java.io.IOException;
import java.text.ParseException; import java.text.ParseException;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@ -130,9 +131,9 @@ public interface CommonContractFeign {
@GetMapping("/printItemSet") @GetMapping("/printItemSet")
public ResultBean<PrintItemVo> printItemSet(@RequestParam("busSid") String busSid, @RequestParam("customerName") String customerName); public ResultBean<PrintItemVo> printItemSet(@RequestParam("busSid") String busSid, @RequestParam("customerName") String customerName);
/* @ApiOperation(value = "打印项确认(生成word后转为pdf)") @ApiOperation(value = "打印项确认(生成word后转为pdf)")
@PostMapping("/printConfirm") @PostMapping("/printConfirm")
public ResultBean<List<PrintConfirmVo>> printConfirm(@RequestBody PrintConfirmDto dto);*/ public ResultBean<List<PrintConfirmVo>> printConfirm(@RequestBody PrintConfirmDto dto);
/******************************************************新车买卖合同审核(流程)******************************************************/ /******************************************************新车买卖合同审核(流程)******************************************************/

6
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeignFallback.java

@ -41,7 +41,7 @@ public class CommonContractFeignFallback implements CommonContractFeign {
public ResultBean save(CommonContractDto dto) { public ResultBean save(CommonContractDto dto) {
return ResultBean.fireFail().setMsg("接口anrui-base/commoncontract/save无法访问"); return ResultBean.fireFail().setMsg("接口anrui-base/commoncontract/save无法访问");
} }
*/ */
@Override @Override
public ResultBean update(CommonContractDto dto, String sid) { public ResultBean update(CommonContractDto dto, String sid) {
return ResultBean.fireFail().setMsg("接口anrui-base/commoncontract/update无法访问"); return ResultBean.fireFail().setMsg("接口anrui-base/commoncontract/update无法访问");
@ -139,11 +139,11 @@ public class CommonContractFeignFallback implements CommonContractFeign {
return rb.setMsg("接口anrui-base/commoncontract/printItemSet无法访问"); return rb.setMsg("接口anrui-base/commoncontract/printItemSet无法访问");
} }
/* @Override @Override
public ResultBean printConfirm(PrintConfirmDto dto) { public ResultBean printConfirm(PrintConfirmDto dto) {
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
return rb.setMsg("接口anrui-base/commoncontract/printConfirm无法访问"); return rb.setMsg("接口anrui-base/commoncontract/printConfirm无法访问");
}*/ }
@Override @Override
public ResultBean submitCarSaleContractApprove(CarSaleContractApproveDto dto) { public ResultBean submitCarSaleContractApprove(CarSaleContractApproveDto dto) {

4
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/PrintConfirmDto.java

@ -33,11 +33,11 @@ public class PrintConfirmDto implements Dto {
@ApiModelProperty("是否优惠:1是0否") @ApiModelProperty("是否优惠:1是0否")
private int isDiscount; private int isDiscount;
@ApiModelProperty("是否提前开票:1是0否") /* @ApiModelProperty("是否提前开票:1是0否")
private int isAdvanceInvoice; private int isAdvanceInvoice;
@ApiModelProperty("是否委托提车:1是0否") @ApiModelProperty("是否委托提车:1是0否")
private int isEntrustVehicle; private int isEntrustVehicle;*/
@ApiModelProperty("是否在保险公司购买保险:1是0否") @ApiModelProperty("是否在保险公司购买保险:1是0否")
private int isPurchasingInsurance; private int isPurchasingInsurance;

7
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/busvehicleapply/BusVehicleApplyService.java

@ -25,6 +25,7 @@ import com.yxt.anrui.base.biz.basevehiclemodel.BaseVehicleModelService;
import com.yxt.anrui.base.biz.busvehicleapplydetail.BusVehicleApplyDetailService; import com.yxt.anrui.base.biz.busvehicleapplydetail.BusVehicleApplyDetailService;
import com.yxt.anrui.base.biz.busvehicleapplysz.BusVehicleApplySzService; import com.yxt.anrui.base.biz.busvehicleapplysz.BusVehicleApplySzService;
import com.yxt.anrui.base.common.enums.BillTypeEnum; import com.yxt.anrui.base.common.enums.BillTypeEnum;
import com.yxt.anrui.base.common.enums.ManPurOrderType;
import com.yxt.anrui.base.common.utils.Rule; import com.yxt.anrui.base.common.utils.Rule;
import com.yxt.anrui.base.common.utils.domain.BillNo; import com.yxt.anrui.base.common.utils.domain.BillNo;
import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordDto; import com.yxt.anrui.fin.api.finpaymentrecord.FinPaymentrecordDto;
@ -491,9 +492,9 @@ public class BusVehicleApplyService extends MybatisBaseService<BusVehicleApplyMa
finPaymentrecordDto.setCreateOrgSid(stringResultBean.getData()); finPaymentrecordDto.setCreateOrgSid(stringResultBean.getData());
finPaymentrecordDto.setUseOrgSid(stringResultBean.getData()); finPaymentrecordDto.setUseOrgSid(stringResultBean.getData());
finPaymentrecordDto.setCost(busVehicleApply.getCurrentAmount().intValue()); finPaymentrecordDto.setCost(busVehicleApply.getCurrentAmount().intValue());
finPaymentrecordDto.setCostTitleKey("2"); finPaymentrecordDto.setCostTitleKey(ManPurOrderType.CostTitle.DJ_COSTTITLE.getCode());
finPaymentrecordDto.setCostTitleValue("订金"); finPaymentrecordDto.setCostTitleValue(ManPurOrderType.CostTitle.DJ_COSTTITLE.getRemarks());
finPaymentrecordDto.setCostTypeKey("2"); finPaymentrecordDto.setCostTypeKey("001");
finPaymentrecordDto.setCostTypeValue("排产"); finPaymentrecordDto.setCostTypeValue("排产");
//查询收款单位和收款账号 //查询收款单位和收款账号
List<BusVehicleApplyDetailVo> busVehicleApplyDetailList = busVehicleApplyDetailService.fetchByApplySid(busVehicleApply.getSid()); List<BusVehicleApplyDetailVo> busVehicleApplyDetailList = busVehicleApplyDetailService.fetchByApplySid(busVehicleApply.getSid());

4
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractRest.java

@ -401,10 +401,10 @@ public class CommonContractRest implements CommonContractFeign {
return commonContractService.printItemSet(busSid, customerName); return commonContractService.printItemSet(busSid, customerName);
} }
/* @Override @Override
public ResultBean<List<PrintConfirmVo>> printConfirm(PrintConfirmDto dto) { public ResultBean<List<PrintConfirmVo>> printConfirm(PrintConfirmDto dto) {
return commonContractService.printConfirm(dto); return commonContractService.printConfirm(dto);
}*/ }
public List getSheetVal(Sheet sheet, int[] resultCell) throws ParseException { public List getSheetVal(Sheet sheet, int[] resultCell) throws ParseException {
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");

201
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java

@ -3,6 +3,7 @@ package com.yxt.anrui.base.biz.commoncontract;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.base.api.commonappendix.CommonAppendix; import com.yxt.anrui.base.api.commonappendix.CommonAppendix;
import com.yxt.anrui.base.api.commoncontract.*; import com.yxt.anrui.base.api.commoncontract.*;
import com.yxt.anrui.base.biz.basemodelszconfig.BaseModelSzconfigService; import com.yxt.anrui.base.biz.basemodelszconfig.BaseModelSzconfigService;
@ -11,14 +12,17 @@ import com.yxt.anrui.base.biz.basevehiclebrand.BaseVehicleBrandService;
import com.yxt.anrui.base.biz.basevehiclemodel.BaseVehicleModelService; import com.yxt.anrui.base.biz.basevehiclemodel.BaseVehicleModelService;
import com.yxt.anrui.base.biz.commonappendix.CommonAppendixService; import com.yxt.anrui.base.biz.commonappendix.CommonAppendixService;
import com.yxt.anrui.buscenter.api.busdeposit.BusDepositFeign; import com.yxt.anrui.buscenter.api.busdeposit.BusDepositFeign;
import com.yxt.anrui.buscenter.api.busdepositfictitious.BusDepositFictitiousDetailsVo;
import com.yxt.anrui.buscenter.api.busdepositfictitious.BusDepositFictitiousFeign;
import com.yxt.anrui.buscenter.api.busdepositvehicle.BusDepositVehicleFeign; import com.yxt.anrui.buscenter.api.busdepositvehicle.BusDepositVehicleFeign;
import com.yxt.anrui.buscenter.api.busorder.BusOrderVo;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign; import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign;
import com.yxt.anrui.buscenter.api.bussalesorder.app.order.*;
import com.yxt.anrui.crm.api.crmcustomer.CrmCustomerFeign; import com.yxt.anrui.crm.api.crmcustomer.CrmCustomerFeign;
import com.yxt.anrui.crm.api.crmcustomerfile.CrmCustomerFileFeign; import com.yxt.anrui.crm.api.crmcustomerfile.CrmCustomerFileFeign;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo;
import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkFeign; import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkFeign;
import com.yxt.anrui.flowable.api.sysformlink.SysFormStateVo; import com.yxt.anrui.flowable.api.sysformlink.SysFormStateVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.portal.api.dictcommon.DictCommonFeign; import com.yxt.anrui.portal.api.dictcommon.DictCommonFeign;
import com.yxt.anrui.portal.api.dictcommon.DictCommonVo; import com.yxt.anrui.portal.api.dictcommon.DictCommonVo;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign; import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
@ -32,20 +36,23 @@ import com.yxt.common.base.config.component.DocPdfComponent;
import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.DateUtils; import com.yxt.common.base.utils.DateUtils;
import com.yxt.common.base.utils.MoneyToChineseUtils;
import com.yxt.common.base.utils.PagerUtil; import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo; import com.yxt.common.core.vo.PagerVo;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.io.File; import java.io.File;
import java.math.BigDecimal; import java.text.MessageFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -113,6 +120,10 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
private BaseTrailerService baseTrailerService; private BaseTrailerService baseTrailerService;
@Autowired @Autowired
private BusSalesOrderFeign busSalesOrderFeign; private BusSalesOrderFeign busSalesOrderFeign;
@Autowired
private CrmCustomerTempFeign crmCustomerTempFeign;
@Autowired
private BusDepositFictitiousFeign busDepositFictitiousFeign;
private QueryWrapper<CommonContract> createQueryWrapper(CommonContractQuery query) { private QueryWrapper<CommonContract> createQueryWrapper(CommonContractQuery query) {
// todo: 这里根据具体业务调整查询条件 // todo: 这里根据具体业务调整查询条件
@ -571,11 +582,11 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
* @param dto * @param dto
* @return * @return
*/ */
/*public ResultBean<List<PrintConfirmVo>> printConfirm(PrintConfirmDto dto) { /**public ResultBean<List<PrintConfirmVo>> printConfirm(PrintConfirmDto dto) {
Map<String, Object> map = new HashMap<String, Object>(); Map<String, Object> map = new HashMap<String, Object>();
// 合同信息 // 合同信息
CommonContract contract = fetchBySid(dto.getSid()); CommonContract contract = fetchBySid(dto.getSid());
// CommonContract contract = new CommonContract();//fetchBySid(dto.getSid()); // CommonContract contract = new CommonContract();//fetchBySid(dto.getSid());
map.put("partyA", contract.getPartyA()); // 甲方 map.put("partyA", contract.getPartyA()); // 甲方
map.put("partyB", contract.getPartyB()); // 乙方 map.put("partyB", contract.getPartyB()); // 乙方
map.put("contractNo", contract.getContractNo()); // 合同编号 map.put("contractNo", contract.getContractNo()); // 合同编号
@ -652,7 +663,7 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
printConfirmVo = new PrintConfirmVo(); printConfirmVo = new PrintConfirmVo();
// 待确认:现车或订车 // 待确认:现车或订车
// 现车 // 现车
// printConfirmVo.setName(MessageFormat.format("《{0}》", ContractTemplateEnum.CARSALECONTRACTNEW.getName())); // printConfirmVo.setName(MessageFormat.format("《{0}》", ContractTemplateEnum.CARSALECONTRACTNEW.getName()));
// 订车 // 订车
printConfirmVo.setName(MessageFormat.format("《{0}》", ContractTemplateEnum.CARSALECONTRACTBOOK.getName())); printConfirmVo.setName(MessageFormat.format("《{0}》", ContractTemplateEnum.CARSALECONTRACTBOOK.getName()));
printConfirmVo.setDownloadUrl(future1.get()); printConfirmVo.setDownloadUrl(future1.get());
@ -680,7 +691,7 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
printConfirmVo = new PrintConfirmVo(); printConfirmVo = new PrintConfirmVo();
// 待确认:现车或订车 // 待确认:现车或订车
// 现车 // 现车
// printConfirmVo.setName(MessageFormat.format("《{0}》", ContractTemplateEnum.CARSALECONTRACTNEWBLANK.getName())); // printConfirmVo.setName(MessageFormat.format("《{0}》", ContractTemplateEnum.CARSALECONTRACTNEWBLANK.getName()));
// 订车 // 订车
printConfirmVo.setName(MessageFormat.format("《{0}》", ContractTemplateEnum.CARSALECONTRACTBOOKBLANK.getName())); printConfirmVo.setName(MessageFormat.format("《{0}》", ContractTemplateEnum.CARSALECONTRACTBOOKBLANK.getName()));
printConfirmVo.setDownloadUrl(future5.get()); printConfirmVo.setDownloadUrl(future5.get());
@ -691,31 +702,22 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
return new ResultBean().fail().setMsg("生成文件失败"); return new ResultBean().fail().setMsg("生成文件失败");
} }
return new ResultBean().success().setData(list); return new ResultBean().success().setData(list);
}*/ }**/
/** /**
* 生成 新车买卖合同(现车或订车) pdf * 生成 新车买卖合同(现车或订车) pdf
* *
* @param dto * @param dto
*/ */
private String genCarSaleContract(PrintConfirmDto dto, Map<String, Object> map, BusOrderVo order) { private String genCarSaleContract(PrintConfirmDto dto, Map<String, Object> map, AppOrderDetailsVo appOrderDetailsVo) {
String url = ""; String url = "";
// 车辆税信息 String typeName = "";
map.put("taxSum", "1111"); // 车辆含税 ?待确认 if ("现车".equals(appOrderDetailsVo.getOrderType())) {
map.put("taxSumUpper", "壹仟壹佰壹拾壹"); // 车辆含税(大写) ?待确认 typeName = ContractTemplateEnum.CARSALECONTRACTNEW.getName();
// 乙方缴纳订金 } else {
map.put("deposit", order.getDeposit()); // 订金 typeName = ContractTemplateEnum.CARSALECONTRACTBOOK.getName();
map.put("useDeposit", "true"); // 判断是否展示括号中的内容 ?待确认:用本人交纳的虚拟订金的,需要显示订金后面括弧 中的说明 }
map.put("date", order.getCreateDate()); // 订金缴纳日期 ?待确认 String docName = typeName + "(" + appOrderDetailsVo.getName() + ").doc";
map.put("deposit1", ""); // 总订金 ?待确认
map.put("deposit2", ""); // 用于缴纳的订金 ?待确认
// 目标路径 ? 待确认:如何区分现车和订车
// 现车
// String typeName = ContractTemplateEnum.CARSALECONTRACTNEW.getName();
// 订车
String typeName = ContractTemplateEnum.CARSALECONTRACTBOOK.getName();
String docName = typeName + "(" + order.getCustomerName() + ").doc";
Map<String, String> resultMap = docPdfComponent.createDocToPdf(map, typeName, docName); Map<String, String> resultMap = docPdfComponent.createDocToPdf(map, typeName, docName);
url = resultMap.get("prefixTemplateUrl"); url = resultMap.get("prefixTemplateUrl");
return url; return url;
@ -726,25 +728,28 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
* *
* @param dto * @param dto
* @param map * @param map
* @param order * @param appOrderDetailsVo
* @return * @return
*/ */
private String genCarSaleContractBlank(PrintConfirmDto dto, Map<String, Object> map, BusOrderVo order) { private String genCarSaleContractBlank(PrintConfirmDto dto, Map<String, Object> map, AppOrderDetailsVo appOrderDetailsVo) {
String url = ""; String url = "";
String typeName = ""; String typeName = "";
String docName = ""; String docName = "";
map.put("totalPrice", "");
map.put("priceRemarks", "");
map.put("depositTotal", "");
// 涉及高低开票的,需要打印两套合同,一套按照成交价打印(记账用),一套为价格空白的合同(开票用) // 涉及高低开票的,需要打印两套合同,一套按照成交价打印(记账用),一套为价格空白的合同(开票用)
// 合同金额 ? 待确定 if (dto.getIsDiscount() == 1) {
BigDecimal contractAmount = order.getContractAmount();
if (contractAmount == null) {
// 待确定 ? 现车或订车
// 现车 // 现车
if ("现车".equals(appOrderDetailsVo.getOrderType())) {
typeName = ContractTemplateEnum.CARSALECONTRACTNEWBLANK.getName(); typeName = ContractTemplateEnum.CARSALECONTRACTNEWBLANK.getName();
} else {
// 订车 // 订车
typeName = ContractTemplateEnum.CARSALECONTRACTBOOKBLANK.getName(); typeName = ContractTemplateEnum.CARSALECONTRACTBOOKBLANK.getName();
docName = typeName + "(" + order.getCustomerName() + ").doc"; }
docName = typeName + "(" + appOrderDetailsVo.getName() + ").doc";
Map<String, String> map2 = docPdfComponent.createDocToPdf(map, typeName, docName); Map<String, String> map2 = docPdfComponent.createDocToPdf(map, typeName, docName);
url += ", " + map2.get("prefixTemplateUrl"); url += map2.get("prefixTemplateUrl");
} }
return url; return url;
} }
@ -922,7 +927,7 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
String path = ""; String path = "";
List<String> commonContractVos = new ArrayList<>(); List<String> commonContractVos = new ArrayList<>();
List<String> sceneSignUrlList = new ArrayList<>(); List<String> sceneSignUrlList = new ArrayList<>();
if (StringUtils.isNotBlank(appdixUrl)){ if (StringUtils.isNotBlank(appdixUrl)) {
String[] appdixUrls = appdixUrl.split(","); String[] appdixUrls = appdixUrl.split(",");
for (String url : appdixUrls) { for (String url : appdixUrls) {
String urlPrefix = fileUploadComponent.getUrlPrefix(); String urlPrefix = fileUploadComponent.getUrlPrefix();
@ -930,7 +935,7 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
commonContractVos.add(path); commonContractVos.add(path);
} }
} }
if (StringUtils.isNotBlank(sceneSignUrl)){ if (StringUtils.isNotBlank(sceneSignUrl)) {
String[] sceneSignUrls = sceneSignUrl.split(","); String[] sceneSignUrls = sceneSignUrl.split(",");
for (String signUrl : sceneSignUrls) { for (String signUrl : sceneSignUrls) {
String urlPrefix = fileUploadComponent.getUrlPrefix(); String urlPrefix = fileUploadComponent.getUrlPrefix();
@ -1094,4 +1099,130 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
return rb.success(); return rb.success();
} }
public ResultBean<List<PrintConfirmVo>> printConfirm(PrintConfirmDto dto) {
ResultBean<List<PrintConfirmVo>> rb = ResultBean.fireFail();
List<PrintConfirmVo> list = new ArrayList<>();
Map<String, Object> map = new HashMap<>();
String sid = dto.getBusSid();
//查询销售订单的信息
ResultBean<AppOrderDetailsVo> resultBean = busSalesOrderFeign.getSaleOrderDetails(sid);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
AppOrderDetailsVo appOrderDetailsVo = resultBean.getData();
//甲方
String createOrgName = appOrderDetailsVo.getSalesOrg();
//乙方
String customerName = appOrderDetailsVo.getName();
//联系电话
String mobile = appOrderDetailsVo.getPhone();
//身份证号
//根据客户sid查询客户的身份证号
sid = appOrderDetailsVo.getCustomerSid();
ResultBean<CrmCustomerTempVo> crmResultBean = crmCustomerTempFeign.fetchSid(sid);
if (!crmResultBean.getSuccess()) {
return rb.setMsg(crmResultBean.getMsg());
}
CrmCustomerTempVo crmCustomerTempVo = crmResultBean.getData();
//身份证号
String idNo = crmCustomerTempVo.getIDNumber();
//查询销售订单的车型信息
AppOrderModelInfoVo appOrderModelInfoVo = appOrderDetailsVo.getModelInfo();
//车型
String modelName = "车型:" + appOrderModelInfoVo.getModelName() + "。";
//配置
String modelConfig = "配置:" + appOrderModelInfoVo.getConfig() + "。";
//上装
if (appOrderDetailsVo.getTopInfo() != null) {
AppOrderTopInfoVo topInfo = appOrderDetailsVo.getTopInfo();
String topName = topInfo.getTopName();
topName = "上装:" + topName + "。";
map.put("topName", topName);
}
AppOrderPriceInfoVo priceInfo = appOrderDetailsVo.getPriceInfo();
//查询台数
String num = priceInfo.getNumber();
//单台成交价
String transactionPrice = priceInfo.getTransactionPrice();
String remarks = "主车" + num + "台,单台成交价:" + transactionPrice + "元。";
//优惠说明
//ToDo:
//保险说明
String insuranceInfo = "保险说明:" + appOrderDetailsVo.getInsuranceInfo() + "。";
//车价合计
String totalPrice = priceInfo.getTotalPrice();
//车价合计大写
String priceRemarks = MoneyToChineseUtils.convert(Double.valueOf(totalPrice).doubleValue());
//交纳订金
AppOrderDepositInfoVo depositInfo = appOrderDetailsVo.getDepositInfo();
String depositTotal = depositInfo.getDepositTotal();
if ("02".equals(depositInfo.getDepositTypeKey())) {
ResultBean<List<BusDepositFictitiousDetailsVo>> listResultBean = busDepositFictitiousFeign.detailsList(depositInfo.getSid());
List<BusDepositFictitiousDetailsVo> listResultBeanData = listResultBean.getData();
listResultBeanData.removeAll(Collections.singleton(null));
if (!listResultBeanData.isEmpty()) {
String depositRemarks = "(其中乙方在";
for (BusDepositFictitiousDetailsVo v : listResultBeanData) {
String b = v.getPaymentDate() + "转入甲方的" + v.getDeposit() + "元中的" + v.getPrice() + "元用于本次订金,";
depositRemarks = depositRemarks + b;
}
depositRemarks = depositRemarks + ")";
map.put("depositRemarks", depositRemarks);
}
}
//车辆交付地点
String address = priceInfo.getAddress();
//组装到文档相对应的字段中
map.put("createOrgName", createOrgName);
map.put("customerName", customerName);
map.put("mobile", mobile);
map.put("idNo", idNo);
map.put("modelName", modelName);
map.put("modelConfig", modelConfig);
map.put("remarks", remarks);
map.put("insuranceInfo", insuranceInfo);
map.put("totalPrice", totalPrice);
map.put("priceRemarks", priceRemarks);
map.put("depositTotal", depositTotal);
map.put("address", address);
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
ExecutorService pool = new ThreadPoolExecutor(2, 100,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
Future<String> future1 = pool.submit(() -> {
return genCarSaleContract(dto, map, appOrderDetailsVo);
});
PrintConfirmVo printConfirmVo = null;
if (StringUtils.isNotBlank(future1.get())) {
printConfirmVo = new PrintConfirmVo();
if ("现车".equals(appOrderDetailsVo.getOrderType())) {
printConfirmVo.setName(MessageFormat.format("《{0}》", ContractTemplateEnum.CARSALECONTRACTNEW.getName()));
} else {
printConfirmVo.setName(MessageFormat.format("《{0}》", ContractTemplateEnum.CARSALECONTRACTBOOK.getName()));
}
printConfirmVo.setDownloadUrl(future1.get());
list.add(printConfirmVo);
}
Future<String> future2 = pool.submit(() -> {
return genCarSaleContractBlank(dto, map, appOrderDetailsVo);
});
if (StringUtils.isNotBlank(future2.get())) {
printConfirmVo = new PrintConfirmVo();
if ("现车".equals(appOrderDetailsVo.getOrderType())) {
printConfirmVo.setName(MessageFormat.format("《{0}》", ContractTemplateEnum.CARSALECONTRACTNEWBLANK.getName()));
} else {
printConfirmVo.setName(MessageFormat.format("《{0}》", ContractTemplateEnum.CARSALECONTRACTBOOKBLANK.getName()));
}
printConfirmVo.setDownloadUrl(future2.get());
list.add(printConfirmVo);
}
} catch (Exception e) {
e.printStackTrace();
return rb.setMsg("生成文件失败");
}
return rb.success().setData(list);
}
} }

1565
anrui-base/anrui-base-biz/src/main/resources/新车买卖合同(现车).ftl

File diff suppressed because it is too large

1565
anrui-base/anrui-base-biz/src/main/resources/新车买卖合同(现车)(空).ftl

File diff suppressed because it is too large

1689
anrui-base/anrui-base-biz/src/main/resources/新车买卖合同(订车).ftl

File diff suppressed because it is too large

1689
anrui-base/anrui-base-biz/src/main/resources/新车买卖合同(订车)(空).ftl

File diff suppressed because it is too large

6
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdepositfictitious/BusDepositFictitiousDetailsVo.java

@ -63,4 +63,10 @@ public class BusDepositFictitiousDetailsVo implements Vo {
@ApiModelProperty("款项支付委托书") @ApiModelProperty("款项支付委托书")
private String payPath; private String payPath;
@ApiModelProperty("付款日期")
private String paymentDate;
@ApiModelProperty("虚拟订单订金")
@JsonSerialize(using = ToStringSerializer.class)
private String deposit;
} }

4
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdepositfictitious/BusDepositFictitiousFeign.java

@ -61,5 +61,7 @@ public interface BusDepositFictitiousFeign {
@ApiOperation("订金使用记录接口") @ApiOperation("订金使用记录接口")
@GetMapping("/getDepositRecords/{depositBillNo}") @GetMapping("/getDepositRecords/{depositBillNo}")
public ResultBean<List<BusDepositRecordsVo>> getDepositRecords(@PathVariable("depositBillNo") String depositBillNo); public ResultBean<List<BusDepositRecordsVo>> getDepositRecords(@PathVariable("depositBillNo") String depositBillNo);
@ApiOperation("查询订金使用")
@GetMapping("/detailsList/{sid}")
ResultBean<List<BusDepositFictitiousDetailsVo>> detailsList(@PathVariable("sid") String sid);
} }

5
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdepositfictitious/BusDepositFictitiousFeignFallback.java

@ -52,4 +52,9 @@ public class BusDepositFictitiousFeignFallback implements BusDepositFictitiousFe
public ResultBean<List<BusDepositRecordsVo>> getDepositRecords(String depositBillNo) { public ResultBean<List<BusDepositRecordsVo>> getDepositRecords(String depositBillNo) {
return null; return null;
} }
@Override
public ResultBean<List<BusDepositFictitiousDetailsVo>> detailsList(String sid) {
return null;
}
} }

2
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/app/order/AppOrderDetailsVo.java

@ -69,7 +69,7 @@ public class AppOrderDetailsVo implements Vo {
@ApiModelProperty("是否有保险信息") @ApiModelProperty("是否有保险信息")
private Boolean insuranceState; private Boolean insuranceState;
@ApiModelProperty("是否有保险说明") @ApiModelProperty("是否有补充说明")
private Boolean remarksState; private Boolean remarksState;
@ApiModelProperty("用户sid") @ApiModelProperty("用户sid")

3
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/app/order/AppOrderModelInfoVo.java

@ -34,4 +34,7 @@ public class AppOrderModelInfoVo implements Vo {
private List<String> orderList = new ArrayList<>(); private List<String> orderList = new ArrayList<>();
@ApiModelProperty(value = "合计数量") @ApiModelProperty(value = "合计数量")
private String total; private String total;
@ApiModelProperty("配置")
private String config;
} }

3
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/app/order/AppOrderTopInfoVo.java

@ -26,4 +26,7 @@ public class AppOrderTopInfoVo implements Vo {
private List<String> contractImages = new ArrayList<>(); private List<String> contractImages = new ArrayList<>();
@ApiModelProperty(value = "合同附件string拼接:后端内部使用") @ApiModelProperty(value = "合同附件string拼接:后端内部使用")
private String contractPath; private String contractPath;
@ApiModelProperty(value = "上装名称")
private String topName;
} }

13
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdepositfictitious/BusDepositFictitiousMapper.xml

@ -12,11 +12,14 @@
<!--根据订金sid查询虚拟订单和订金关联信息--> <!--根据订金sid查询虚拟订单和订金关联信息-->
<select id="detailsList" <select id="detailsList"
resultType="com.yxt.anrui.buscenter.api.busdepositfictitious.BusDepositFictitiousDetailsVo"> resultType="com.yxt.anrui.buscenter.api.busdepositfictitious.BusDepositFictitiousDetailsVo">
select depositBillNo, select bd.depositBillNo,
depositPrice, bd.depositPrice,
price, bd.price,
payPath bd.payPath,
from bus_deposit_fictitious DATE_FORMAT(be.paymentDate, '%Y-%m-%d') as paymentDate,
be.deposit
from bus_deposit_fictitious bd
left join bus_deposit be on be.billNo = bd.depositBillNo
where depositSid = #{sid} where depositSid = #{sid}
</select> </select>
<select id="getDepositRecords" <select id="getDepositRecords"

17
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdepositfictitious/BusDepositFictitiousRest.java

@ -25,14 +25,14 @@
*********************************************************/ *********************************************************/
package com.yxt.anrui.buscenter.biz.busdepositfictitious; package com.yxt.anrui.buscenter.biz.busdepositfictitious;
import com.yxt.anrui.buscenter.api.busdepositfictitious.*; import com.yxt.anrui.buscenter.api.busdepositfictitious.BusDepositFictitiousDetailsVo;
import com.yxt.common.core.query.PagerQuery; import com.yxt.anrui.buscenter.api.busdepositfictitious.BusDepositFictitiousFeign;
import com.yxt.anrui.buscenter.api.busdepositfictitious.BusDepositRecordsVo;
import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
@ -65,4 +65,11 @@ public class BusDepositFictitiousRest implements BusDepositFictitiousFeign {
} }
return rb.success().setData(list); return rb.success().setData(list);
} }
@Override
public ResultBean<List<BusDepositFictitiousDetailsVo>> detailsList(String sid) {
ResultBean<List<BusDepositFictitiousDetailsVo>> rb = ResultBean.fireFail();
List<BusDepositFictitiousDetailsVo> list = busDepositFictitiousService.detailsList(sid);
return rb.success().setData(list);
}
} }

3
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordermakeup/BusSalesOrderMakeupMapper.xml

@ -63,7 +63,8 @@
NULL), NULL),
IF(LENGTH(trim(GROUP_CONCAT(moreConfig))) > 0, GROUP_CONCAT('更多配置:', moreConfig), IF(LENGTH(trim(GROUP_CONCAT(moreConfig))) > 0, GROUP_CONCAT('更多配置:', moreConfig),
NULL)) as topBean, NULL)) as topBean,
contractPath contractPath,
topName
FROM bus_sales_order_makeup FROM bus_sales_order_makeup
where salesOrderSid = #{sid} where salesOrderSid = #{sid}
</select> </select>

Loading…
Cancel
Save