Browse Source

Merge remote-tracking branch 'origin/master'

master
yunuo970428 1 year ago
parent
commit
6e71145204
  1. 2
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basemodelconfig/AppModelConfigDetailsVo.java
  2. 3
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeign.java
  3. 5
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/CommonContractFeignFallback.java
  4. 5
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/PrintConfirmDto.java
  5. 44
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/commoncontract/xcmmContractQuery.java
  6. 1
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemodelconfig/BaseModelConfigMapper.xml
  7. 1
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleService.java
  8. 5
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractRest.java
  9. 567
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/commoncontract/CommonContractService.java
  10. 5
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/SolutionsDetailsssVo.java
  11. 8
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmSolutions.java
  12. 17
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationService.java
  13. 1
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysstafforg/SysStaffOrgFeign.java
  14. 19
      anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/dailyreport/DailyParameterVo.java
  15. 23
      anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/dailyreport/DailyReportFeign.java
  16. 34
      anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/dailyreport/DailyReportListVo.java
  17. 4
      anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/dailyreport/DailyReportQuery.java
  18. 100
      anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/dailyreport/DailyReportVo.java
  19. 7
      anrui-reportcenter/anrui-reportcenter-biz/pom.xml
  20. 2
      anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/ReportcenterApplication.java
  21. 14
      anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/dailyreport/DailyReportMapper.java
  22. 45
      anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/dailyreport/DailyReportMapper.xml
  23. 32
      anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/dailyreport/DailyReportRest.java
  24. 132
      anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/dailyreport/DailyReportService.java
  25. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/PolicyVo.java
  26. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanhomevisitprep/LoanHomevisitPrepFeign.java
  27. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanhomevisitprep/LoanHomevisitPrepFeignFallback.java
  28. 1
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/LoanCreateSchedulePdfVo.java
  29. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/LoanRepaymentSchedule.java
  30. 27
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/ScanRepaymentVo.java
  31. 3
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/LoanSolutions.java
  32. 7
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/SolutionDetailsDto.java
  33. 8
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionsDetailsVo.java
  34. 7
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionssDto.java
  35. 1
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionssQuery.java
  36. 8
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionssVo.java
  37. 1
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/calculate/CalculateQuery.java
  38. 5
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/calculate/CalculateVo.java
  39. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutionsotherpolicy/LoanSolutionsOtherpolicy.java
  40. 5
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplateSolutionsDto.java
  41. 8
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplateSolutionsVo.java
  42. 2
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/RiskCenterApplication.java
  43. 5
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyMapper.xml
  44. 3
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanhomevisitprep/LoanHomevisitPrepRest.java
  45. 37
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanhomevisitprep/LoanHomevisitPrepService.java
  46. 5
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleMapper.java
  47. 15
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleMapper.xml
  48. 270
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleService.java
  49. 217
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/ScheduledRepaymentService.java
  50. 8
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansolutions/LoanSolutionsMapper.java
  51. 12
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansolutions/LoanSolutionsMapper.xml
  52. 71
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansolutions/LoanSolutionsService.java
  53. 2
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateService.java
  54. 4
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanwarrantinformation/LoanWarrantInformationService.java
  55. 3
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/solutions/AppSolutionQuery.java
  56. 8
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/solutions/AppSolutionVo.java
  57. 8
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/solutions/AppSolutionsDetailsVo.java
  58. 5
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/solutions/AppSolutionssDto.java
  59. 3
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/solutions/ExtraVo.java

2
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basemodelconfig/AppModelConfigDetailsVo.java

@ -75,6 +75,8 @@ public class AppModelConfigDetailsVo implements Vo {
@ApiModelProperty("蓄电池value")
private String storagBatteryValue;
@ApiModelProperty("货箱")
private String packingCase;
@ApiModelProperty(value = "配置包")
private String configuringBao;

3
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<List<PrintConfirmVo>> printConfirm(@RequestBody PrintConfirmDto dto);
@ApiOperation(value = "新车买卖合同打印pdf")
@PostMapping("/xcmmContract")
public ResultBean<List<PrintConfirmVo>> xcmmContract(@RequestBody PrintConfirmDto dto);
/******************************************************新车买卖合同审核(流程)******************************************************/

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

@ -168,6 +168,11 @@ public class CommonContractFeignFallback implements CommonContractFeign {
return rb.setMsg("接口anrui-base/commoncontract/printConfirm无法访问");
}
@Override
public ResultBean<List<PrintConfirmVo>> xcmmContract(PrintConfirmDto dto) {
return null;
}
@Override
public ResultBean submitCarSaleContractApprove(CarSaleContractApproveDto dto) {
ResultBean rb = ResultBean.fireFail();

5
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;

44
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;
}

1
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemodelconfig/BaseModelConfigMapper.xml

@ -356,6 +356,7 @@
bmc.independentSources,
bmc.fuelTank,
bmc.multimedia,
bmc.packingCase,
bmc.otherConfig
FROM base_vehmodel_config bvc
LEFT JOIN base_model_config bmc ON bmc.sid = bvc.configurationItemsSid

1
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleService.java

@ -1138,6 +1138,7 @@ public class BaseVehicleService extends MybatisBaseService<BaseVehicleMapper, Ba
list2.add(getConfigValueSpanSize("上车踏板", configVo.getBoardPedalValue()));
list2.add(getConfigValueSpanSize("方向盘", configVo.getSteerWheelValue()));
list2.add(getConfigValueSpanSize("蓄电池", configVo.getStoragBatteryValue()));
list2.add(getConfigValueSpanSize("货箱", configVo.getPackingCase()));
configDetailVo.setConfigInfo(list2);

5
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<List<PrintConfirmVo>> xcmmContract(PrintConfirmDto dto) {
return commonContractService.xcmmContract(dto);
}
public List getSheetVal(Sheet sheet, int[] resultCell) throws ParseException {
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
List<CommonContract> punishmentList = new ArrayList<>();

567
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<CommonContractMapp
private String genCarSaleContract(PrintConfirmDto dto, Map<String, Object> map, AppOrderDetailsVo appOrderDetailsVo) {
String ftl = "";
AppOrderPriceInfoVo priceInfo = appOrderDetailsVo.getPriceInfo();
AppOrderModelInfoVo orderModelInfoVo = appOrderDetailsVo.getModelInfo();
//车架号集合
List<String> stringList = new ArrayList<>();
//查询台数
String num = priceInfo.getNumber();
String num = "";
if (StringUtils.isNotBlank(dto.getBorrowerSid())){
List<BusSalesOrderVehicle> 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<String> 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<CommonContractMapp
private String genCarSaleContract2(PrintConfirmDto dto, Map<String, Object> map, AppOrderDetailsVo appOrderDetailsVo) {
String ftl = "";
AppOrderPriceInfoVo priceInfo = appOrderDetailsVo.getPriceInfo();
AppOrderModelInfoVo orderModelInfoVo = appOrderDetailsVo.getModelInfo();
//车架号集合
List<String> stringList = new ArrayList<>();
//查询台数
String num = priceInfo.getNumber();
String num = "";
if (StringUtils.isNotBlank(dto.getBorrowerSid())){
List<BusSalesOrderVehicle> 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<String> 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<CommonContractMapp
return r;
}
public ResultBean<List<PrintConfirmVo>> xcmmContract(PrintConfirmDto dto) {
ResultBean<List<PrintConfirmVo>> rb = ResultBean.fireFail();
List<PrintConfirmVo> list = new ArrayList<>();
Map<String, Object> map = new HashMap<>();
//客户信息
CrmCustomerTemp crmCustomerTemp = crmCustomerTempFeign.fetchEntity(dto.getCustomerSid()).getData();
//查询销售订单的信息
ResultBean<AppOrderDetailsVo> 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<AppOrderDiscountListVo> 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<List<BusDepositFictitiousDetailsVo>> listResultBean = busDepositFictitiousFeign.detailsList(depositInfo.getSid());
List<BusDepositFictitiousDetailsVo> 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<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
Future<String> future1 = pool.submit(() -> {
return genCarSaleContract(dto, map, appOrderDetailsVo);
});
Future<String> future1_2 = pool.submit(() -> {
return genCarSaleContract2(dto, map, appOrderDetailsVo);
});
Future<String> future8 = null;
List<File> 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<List<PrintConfirmVo>> printConfirm(PrintConfirmDto dto) {
ResultBean<List<PrintConfirmVo>> rb = ResultBean.fireFail();
List<PrintConfirmVo> list = new ArrayList<>();
@ -1950,131 +2318,88 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
ExecutorService pool = new ThreadPoolExecutor(1, 2,
1000, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
if ("1".equals(appOrderDetailsVo.getPayTypeKey())) {//全款
Future<String> future1 = pool.submit(() -> {
return genCarSaleContract(dto, map, appOrderDetailsVo);
});
Future<String> future1_2 = pool.submit(() -> {
return genCarSaleContract2(dto, map, appOrderDetailsVo);
});
Future<String> future2 = pool.submit(() -> {
return genCarSaleContractBlank(dto, map, appOrderDetailsVo);
});
Future<String> future2_2 = pool.submit(() -> {
return genCarSaleContractBlank2(dto, map, appOrderDetailsVo);
});
//接收车辆委托书
Future<String> future4 = pool.submit(() -> {
return getReceiveCar(map, appOrderDetailsVo);
Future<String> future1 = pool.submit(() -> {
return genCarSaleContract(dto, map, appOrderDetailsVo);
});
Future<String> future1_2 = pool.submit(() -> {
return genCarSaleContract2(dto, map, appOrderDetailsVo);
});
Future<String> future2 = pool.submit(() -> {
return genCarSaleContractBlank(dto, map, appOrderDetailsVo);
});
Future<String> future2_2 = pool.submit(() -> {
return genCarSaleContractBlank2(dto, map, appOrderDetailsVo);
});
//接收车辆委托书
Future<String> future4 = pool.submit(() -> {
return getReceiveCar(map, appOrderDetailsVo);
});
String singleFinalPriceOne = priceInfo.getSingleFinalPrice();
String depositOne = depositInfo.getDeposit();
Future<String> future8 = null;
if (!"02".equals(appOrderDetailsVo.getInvoiceType())) {
future8 = pool.submit(() -> {
return getCarContract(map, appOrderDetailsVo);
});
/* Future<String> future5 = pool.submit(() -> {
return getInvoicMessage(map, appOrderDetailsVo);
});*/
String singleFinalPriceOne = priceInfo.getSingleFinalPrice();
String depositOne = depositInfo.getDeposit();
//单台成交价与单台订金相等
/* Future<String> future6 = null;
if (new BigDecimal(singleFinalPriceOne).compareTo(new BigDecimal(depositOne)) != 0) {
future6 = pool.submit(() -> {
return getCarFin(map, appOrderDetailsVo);
});
}
Future<String> future7 = pool.submit(() -> {
return getMoneyFin(map, appOrderDetailsVo);
});*/
Future<String> future8 = null;
if (!"02".equals(appOrderDetailsVo.getInvoiceType())) {
future8 = pool.submit(() -> {
return getCarContract(map, appOrderDetailsVo);
});
}
List<File> 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);
}
}
if (future2 != null) {
if (StringUtils.isNotBlank(future2.get())) {
File file = new File(docPdfComponent.getUploadTemplateUrl() + future2.get());
filesList.add(file);
}
}
if (future2_2 != null) {
if (StringUtils.isNotBlank(future2_2.get())) {
File file = new File(docPdfComponent.getUploadTemplateUrl() + future2_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);
}
}
List<File> filesList = new ArrayList<>();
if (future1 != null) {
if (StringUtils.isNotBlank(future1.get())) {
File file = new File(docPdfComponent.getUploadTemplateUrl() + future1.get());
filesList.add(file);
}
if (StringUtils.isNotBlank(future4.get())) {
File file = new File(docPdfComponent.getUploadTemplateUrl() + future4.get());
}
if (future1_2 != null) {
if (StringUtils.isNotBlank(future1_2.get())) {
File file = new File(docPdfComponent.getUploadTemplateUrl() + future1_2.get());
filesList.add(file);
}
/*if (StringUtils.isNotBlank(future5.get())) {
File file = new File(docPdfComponent.getUploadTemplateUrl() + future5.get());
}
if (future2 != null) {
if (StringUtils.isNotBlank(future2.get())) {
File file = new File(docPdfComponent.getUploadTemplateUrl() + future2.get());
filesList.add(file);
}*/
/* if (future6 != null) {
if (StringUtils.isNotBlank(future6.get())) {
File file = new File(docPdfComponent.getUploadTemplateUrl() + future6.get());
filesList.add(file);
}
}
if (StringUtils.isNotBlank(future7.get())) {
File file = new File(docPdfComponent.getUploadTemplateUrl() + future7.get());
}
if (future2_2 != null) {
if (StringUtils.isNotBlank(future2_2.get())) {
File file = new File(docPdfComponent.getUploadTemplateUrl() + future2_2.get());
filesList.add(file);
}*/
if (filesList.size() > 0) {
// String typeName = ContractTemplateEnum.CONTRACTALL.getName() + "_" + DateUtil.format(new Date(), "yyyMMdd") + System.currentTimeMillis() + ".pdf";
String typeName = appOrderDetailsVo.getPayType() + contractNo + ".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}》", ContractTemplateEnum.CONTRACTALL.getName()));
printConfirmVo.setName(MessageFormat.format("《{0}》", appOrderDetailsVo.getPayType() + contractNo));
printConfirmVo.setDownloadUrl(docPdfComponent.getPrefixTemplateUrl() + urlAll);
list.add(printConfirmVo);
}
//合并pdf文件
if (future8 != null) {
if (StringUtils.isNotBlank(future8.get())) {
File file = new File(docPdfComponent.getUploadTemplateUrl() + future8.get());
filesList.add(file);
}
} else {
}
if (StringUtils.isNotBlank(future4.get())) {
File file = new File(docPdfComponent.getUploadTemplateUrl() + future4.get());
filesList.add(file);
}
if ("2".equals(appOrderDetailsVo.getPayTypeKey())) {
Future<String> future10 = pool.submit(() -> {
return getRisk(appOrderDetailsVo, dto);
});
List<File> filesList = new ArrayList<>();
if (StringUtils.isNotBlank(future10.get())) {
File file = new File(docPdfComponent.getUploadTemplateUrl() + future10.get());
filesList.add(file);
}
if (filesList.size() > 0) {
String typeName = appOrderDetailsVo.getPayType() + contractNo + ".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() + contractNo));
printConfirmVo.setDownloadUrl(docPdfComponent.getPrefixTemplateUrl() + urlAll);
list.add(printConfirmVo);
}
}
if (filesList.size() > 0) {
String typeName = appOrderDetailsVo.getPayType() + contractNo + ".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() + contractNo));
printConfirmVo.setDownloadUrl(docPdfComponent.getPrefixTemplateUrl() + urlAll);
list.add(printConfirmVo);
}
//生成合同数据
//根据销售订单sid查询合同表中是否存在
@ -3026,4 +3351,6 @@ public class CommonContractService extends MybatisBaseService<CommonContractMapp
return rb.success().setData(records);
}
}

5
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorder/SolutionsDetailsssVo.java

@ -168,4 +168,9 @@ public class SolutionsDetailsssVo {
@ApiModelProperty("实际首付比例")
private String downPayAmountsRatio;
@ApiModelProperty("实际贴息")
private String actualDiscount;
@ApiModelProperty("其他融实际贴息")
private String otherActualDiscount;
}

8
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmSolutions.java

@ -169,4 +169,12 @@ public class AppCrmSolutions {
private String serviceChargeTypeValue;
private String modelSid;
@ApiModelProperty("实际贴息")
private String actualDiscount;
@ApiModelProperty("其他融实际贴息")
private String otherActualDiscount;
@ApiModelProperty("保证金类型01固定,02敞口")
private String bondTypeKey;
}

17
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationService.java

@ -1350,15 +1350,6 @@ public class FinBillApplicationService extends MybatisBaseService<FinBillApplica
public ResultBean submitFinBillApplication(SubmitFinBillApplicationDto dto) {
ResultBean rb = ResultBean.fireFail();
String contractNo = dto.getContractNo();
List<FinBillApplicationDetailsVo> 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<FinBillVehicleDto> finBillVehicles = dto.getFinBillVehicles();
for (FinBillVehicleDto finBillVehicle : finBillVehicles) {
@ -1403,6 +1394,14 @@ public class FinBillApplicationService extends MybatisBaseService<FinBillApplica
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> 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<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);

1
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysstafforg/SysStaffOrgFeign.java

@ -120,4 +120,5 @@ public interface SysStaffOrgFeign {
@ResponseBody
@ApiOperation("根据分公司全路径和角色sid模糊查询本公司本角色下的所有员工userSid")
ResultBean<List<SysStaffOrgByUserVo>> selAllByOrgPath(@RequestParam("orgSidPath") String orgSidPath,@RequestParam("roleSid") String roleSid);
}

19
anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/dailyreport/DailyParameterVo.java

@ -0,0 +1,19 @@
package com.yxt.anrui.reportcenter.api.dailyreport;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/7
**/
@Data
public class DailyParameterVo {
private String colName;
private String colText;
@JsonIgnore
private String tableNameKey;
}

23
anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/dailyreport/DailyReportFeign.java

@ -4,10 +4,9 @@ import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @description:
@ -31,6 +30,10 @@ public interface DailyReportFeign {
@ResponseBody
ResultBean<PagerVo<DailyReportVo>> listPage(@RequestBody PagerQuery<DailyReportQuery> pagerQuery);
@GetMapping("selectListByUseOrgSid")
@ResponseBody
ResultBean<List<DailyParameterVo>> selectListByUseOrgSid(@RequestParam("useOrgSid")String useOrgSid);
/**
* 按照生成日期
* 事业部sid查询并按分公司sid品牌sid车型sid配置sid排序
@ -51,4 +54,16 @@ public interface DailyReportFeign {
@PostMapping("listPage3")
@ResponseBody
ResultBean<PagerVo<DailyReportVo>> listPage3(@RequestBody PagerQuery<DailyReportQuery> pagerQuery);
@PostMapping("listPage3_1")
@ResponseBody
ResultBean<PagerVo<DailyReportListVo>> listPage3_1(@RequestBody PagerQuery<DailyReportQuery> pagerQuery);
@PostMapping("listPage2_1")
@ResponseBody
ResultBean<PagerVo<DailyReportListVo>> listPage2_1(@RequestBody PagerQuery<DailyReportQuery> pagerQuery);
@PostMapping("listPage_1")
@ResponseBody
ResultBean<PagerVo<DailyReportListVo>> listPage_1(@RequestBody PagerQuery<DailyReportQuery> pagerQuery);
}

34
anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/dailyreport/DailyReportListVo.java

@ -0,0 +1,34 @@
package com.yxt.anrui.reportcenter.api.dailyreport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/11/7
**/
@Data
public class DailyReportListVo {
@ApiModelProperty("日期")
private String date;
//存销比
private String saleOfStockRatio;
//库存小计
private String stock_subtotal;
//排产小计
private String pcOrder_subtotal;
//本日销售订单
private String saleOrder_subtotal_day;
//本日销售
private String sale_subtotal_day;
//欠款出库金额
private String arrears_carry_veh_amount;
//金融未放款金额
private String loan_not_amount;
@ApiModelProperty("本日买断")
private String buyout_day;
private String useOrgSid;
}

4
anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/dailyreport/DailyReportQuery.java

@ -17,6 +17,8 @@ public class DailyReportQuery implements Query {
private String startTime;
@ApiModelProperty("生成日期结束")
private String endTime;
@ApiModelProperty("分公司报表时传:分公司的sid")
private String useOrgSid;
@ApiModelProperty("事业部报表时传:组织sid全路径")
private String orgPath;
}

100
anrui-reportcenter/anrui-reportcenter-api/src/main/java/com/yxt/anrui/reportcenter/api/dailyreport/DailyReportVo.java

@ -4,6 +4,9 @@ import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
@ -110,4 +113,101 @@ public class DailyReportVo implements Vo {
private String loan_not_amount;
@ApiModelProperty("备注")
private String remarks;
//=========================================================车型配置相关参数
@ApiModelProperty("车身颜色")
private String carColor;
@ApiModelProperty("驾驶室规格")
private String specification;
@ApiModelProperty("燃料箱")
private String fuelTank;
@ApiModelProperty("导流罩")
private String baffleModel;
@ApiModelProperty("独立热源")
private String independentSources;
@ApiModelProperty("护轮罩")
private String tireCover;
@ApiModelProperty("鞍座")
private String saddle;
@ApiModelProperty("空调")
private String airConditioner;
@ApiModelProperty("更多配置")
private String otherConfig;
@ApiModelProperty("速比")
private String rearAxleRatio;
@ApiModelProperty("后桥")
private String rearAxleValue;
@ApiModelProperty("轮胎规格")
private String tireSize;
@ApiModelProperty("缓速器")
private String slowMachine;
@ApiModelProperty("后视镜")
private String rearViewMirror;
@ApiModelProperty("轴距")
private String wheelbase;
@ApiModelProperty("悬架(重汽、欧曼)")
private String suspension;
@ApiModelProperty("货箱(重汽、欧曼)")
private String packingCase;
@ApiModelProperty("座椅(陕汽、欧曼)")
private String seat;
@ApiModelProperty("轮毂材质(重汽)")
private String hubMaterial;
@ApiModelProperty("配置包(陕汽)")
private String configuringBao;
@ApiModelProperty("多媒体(陕汽)")
private String multimedia;
@ApiModelProperty("保险杠(欧曼)")
private String bumper;
@ApiModelProperty("离合器")
private String clutchValue;
@ApiModelProperty("方向机")
private String dirMachineValue;
@ApiModelProperty("前桥")
private String proponsValue;
@ApiModelProperty("门窗")
private String doorAndWindowValue;
@ApiModelProperty("门锁")
private String doorLockValue;
@ApiModelProperty("大灯")
private String headlightValue;
@ApiModelProperty("上车踏板")
private String boardPedalValue;
@ApiModelProperty("方向盘")
private String steerWheelValue;
@ApiModelProperty("蓄电池")
private String storagBatteryValue;
@ApiModelProperty("舒适包")
private String comfortPackValue;
@ApiModelProperty("危化品基础包")
private String cheBasePackValue;
@ApiModelProperty("节油包")
private String savingPackValue;
@ApiModelProperty("便捷包")
private String conPackValue;
//车型==================================
@ApiModelProperty("车辆功能")
private String vehicleTypeValue;
@ApiModelProperty("排放标准")
private String emissionStandardValue;
@ApiModelProperty("产品线")
private String productLineValue;
@ApiModelProperty("驱动")
private String driveFormValue;
@ApiModelProperty("马力")
private String powerValue;
@ApiModelProperty("变速箱类型")
private String tranCaseTypeValue;
@ApiModelProperty("变速箱")
private String gearboxTypeValue;
@ApiModelProperty("燃料种类")
private String fuelTypeValue;
@ApiModelProperty("车辆版本")
private String vehicleVersionValue;
@ApiModelProperty("发动机型号")
private String engineTypeValue;
@ApiModelProperty("规格型号")
private String specifications;
}

7
anrui-reportcenter/anrui-reportcenter-biz/pom.xml

@ -110,6 +110,13 @@
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>com.yxt.anrui</groupId>
<artifactId>anrui-base-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>

2
anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/ReportcenterApplication.java

@ -14,7 +14,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
"com.yxt.anrui.reportcenter"
})
@EnableDiscoveryClient
@EnableFeignClients(basePackages = {"com.yxt.anrui.portal"})
@EnableFeignClients(basePackages = {"com.yxt.anrui.portal","com.yxt.anrui.base"})
public class ReportcenterApplication {
public static void main(String[] args) {

14
anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/dailyreport/DailyReportMapper.java

@ -4,11 +4,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.basemodelconfig.BaseModelConfig;
import com.yxt.anrui.base.api.basevehiclemodel.BaseVehicleModel;
import com.yxt.anrui.reportcenter.api.dailyreport.DailyParameterVo;
import com.yxt.anrui.reportcenter.api.dailyreport.DailyReport;
import com.yxt.anrui.reportcenter.api.dailyreport.DailyReportListVo;
import com.yxt.anrui.reportcenter.api.dailyreport.DailyReportVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @description:
* @author: dimengzhe
@ -19,4 +25,12 @@ public interface DailyReportMapper extends BaseMapper<DailyReport> {
IPage<DailyReportVo> listPage(IPage<DailyReport> page, @Param(Constants.WRAPPER) QueryWrapper<DailyReport> qw);
IPage<DailyReportVo> listPage3(IPage<DailyReport> page, @Param(Constants.WRAPPER)QueryWrapper<DailyReport> qw);
List<DailyParameterVo> selectByParameters(String useOrgSid);
BaseVehicleModel selectModel(String modelSid);
BaseModelConfig selectConfig(String configSid);
IPage<DailyReportListVo> listPage3_1(IPage<DailyReport> page, @Param(Constants.WRAPPER)QueryWrapper<DailyReport> qw);
}

45
anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/dailyreport/DailyReportMapper.xml

@ -2,12 +2,14 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.reportcenter.biz.dailyreport.DailyReportMapper">
<select id="listPage" resultType="com.yxt.anrui.reportcenter.api.dailyreport.DailyReportVo">
select *
from daily_report
select dr.*
from daily_report dr
left join anrui_base.base_vehicle_model bm on bm.sid = dr.vehModelSid
left join anrui_base.base_model_config bmc on bmc.sid = dr.vehMConfigSid
<where>
${ew.sqlSegment}
</where>
order by useOrgSid desc, brandSid desc, vehModelSid desc, vehMConfigSid desc
order by dr.useOrgSid desc, dr.brandSid desc, dr.vehModelSid desc, dr.vehMConfigSid desc
</select>
<select id="listPage3" resultType="com.yxt.anrui.reportcenter.api.dailyreport.DailyReportVo">
@ -18,4 +20,41 @@
</where>
group by busOrgSid, brandSid, vehModelSid, vehMConfigSid
</select>
<select id="selectByParameters" resultType="com.yxt.anrui.reportcenter.api.dailyreport.DailyParameterVo">
select sp.colName, sp.colText, sp.tableNameKey
from anrui_portal.sys_report_parameter sp
left join anrui_portal.sys_report_parameter_main spm on spm.sid = sp.mainSid
where spm.useOrgSid = #{useOrgSid}
</select>
<select id="selectModel" resultType="com.yxt.anrui.base.api.basevehiclemodel.BaseVehicleModel">
select *
from anrui_base.base_vehicle_model
where sid = #{modelSid}
</select>
<select id="selectConfig" resultType="com.yxt.anrui.base.api.basemodelconfig.BaseModelConfig">
select *
from anrui_base.base_model_config
where sid = #{configSid}
</select>
<select id="listPage3_1" resultType="com.yxt.anrui.reportcenter.api.dailyreport.DailyReportListVo">
select DATE_FORMAT(createTime, '%Y-%m-%d') as date,
sum(saleOfStockRatio) as saleOfStockRatio,
sum(stock_subtotal) as stock_subtotal,
sum(pcOrder_subtotal) as pcOrder_subtotal,
sum(saleOrder_subtotal_day) as saleOrder_subtotal_day,
sum(sale_subtotal_day) as sale_subtotal_day,
sum(arrears_carry_veh_amount) as arrears_carry_veh_amount,
sum(loan_not_amount) as loan_not_amount,
sum(buyout_day) as buyout_day,
useOrgSid
from daily_report
<where>
${ew.sqlSegment}
</where>
group by DATE_FORMAT(createTime, '%Y-%m-%d')
</select>
</mapper>

32
anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/dailyreport/DailyReportRest.java

@ -1,8 +1,6 @@
package com.yxt.anrui.reportcenter.biz.dailyreport;
import com.yxt.anrui.reportcenter.api.dailyreport.DailyReportFeign;
import com.yxt.anrui.reportcenter.api.dailyreport.DailyReportQuery;
import com.yxt.anrui.reportcenter.api.dailyreport.DailyReportVo;
import com.yxt.anrui.reportcenter.api.dailyreport.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -11,6 +9,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @description:
* @author: dimengzhe
@ -31,6 +31,11 @@ public class DailyReportRest implements DailyReportFeign {
return rb.success().setData(pv);
}
@Override
public ResultBean<List<DailyParameterVo>> selectListByUseOrgSid(String useOrgSid) {
return dailyReportService.selectListByUseOrgSid(useOrgSid);
}
@Override
public ResultBean<PagerVo<DailyReportVo>> listPage2(PagerQuery<DailyReportQuery> pagerQuery) {
ResultBean rb = ResultBean.fireFail();
@ -44,4 +49,25 @@ public class DailyReportRest implements DailyReportFeign {
PagerVo<DailyReportVo> pv = dailyReportService.listPage3(pagerQuery);
return rb.success().setData(pv);
}
@Override
public ResultBean<PagerVo<DailyReportListVo>> listPage3_1(PagerQuery<DailyReportQuery> pagerQuery) {
ResultBean rb = ResultBean.fireFail();
PagerVo<DailyReportListVo> pv = dailyReportService.listPage3_1(pagerQuery);
return rb.success().setData(pv);
}
@Override
public ResultBean<PagerVo<DailyReportListVo>> listPage2_1(PagerQuery<DailyReportQuery> pagerQuery) {
ResultBean rb = ResultBean.fireFail();
PagerVo<DailyReportListVo> pv = dailyReportService.listPage2_1(pagerQuery);
return rb.success().setData(pv);
}
@Override
public ResultBean<PagerVo<DailyReportListVo>> listPage_1(PagerQuery<DailyReportQuery> pagerQuery) {
ResultBean rb = ResultBean.fireFail();
PagerVo<DailyReportListVo> pv = dailyReportService.listPage_1(pagerQuery);
return rb.success().setData(pv);
}
}

132
anrui-reportcenter/anrui-reportcenter-biz/src/main/java/com/yxt/anrui/reportcenter/biz/dailyreport/DailyReportService.java

@ -1,11 +1,12 @@
package com.yxt.anrui.reportcenter.biz.dailyreport;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.base.api.basemodelconfig.BaseModelConfig;
import com.yxt.anrui.base.api.basevehiclemodel.BaseVehicleModel;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.reportcenter.api.dailyreport.DailyReport;
import com.yxt.anrui.reportcenter.api.dailyreport.DailyReportQuery;
import com.yxt.anrui.reportcenter.api.dailyreport.DailyReportVo;
import com.yxt.anrui.reportcenter.api.dailyreport.*;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
@ -15,6 +16,9 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.util.*;
/**
* @description:
* @author: dimengzhe
@ -37,13 +41,56 @@ public class DailyReportService extends MybatisBaseService<DailyReportMapper, Da
qw.apply(StringUtils.isNotEmpty(createTimeStart), "date_format (createTime,'%Y-%m-%d') >= date_format('" + createTimeStart + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(createTimeEnd), "date_format (createTime,'%Y-%m-%d') <= date_format('" + createTimeEnd + "','%Y-%m-%d')"
);
if (StringUtils.isNotBlank(query.getOrgPath())) {
String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(query.getOrgPath()).getData();
qw.eq("useOrgSid", useOrgSid);
String useOrgSid = query.getUseOrgSid();
qw.eq("useOrgSid", useOrgSid);
List<DailyParameterVo> parameterVoList = baseMapper.selectByParameters(useOrgSid);
parameterVoList.removeAll(Collections.singleton(null));
for (int i = 0; i < parameterVoList.size(); i++) {
DailyParameterVo dailyParameterVo = parameterVoList.get(i);
String tableName = Arrays.asList(dailyParameterVo.getTableNameKey().split("\\.")).get(1);
if ("base_model_config".equals(tableName)) {
qw.groupBy("bmc." + dailyParameterVo.getColName());
} else if ("base_vehicle_model".equals(tableName)) {
qw.groupBy("bm." + dailyParameterVo.getColName());
}
}
}
IPage<DailyReport> page = PagerUtil.queryToPage(pagerQuery);
IPage<DailyReportVo> pagging = baseMapper.listPage(page, qw);
List<DailyReportVo> recordList = pagging.getRecords();
recordList.removeAll(Collections.singleton(null));
if (!recordList.isEmpty()) {
for (int i = 0; i < recordList.size(); i++) {
DailyReportVo dailyReportVo = recordList.get(i);
String modelSid = dailyReportVo.getVehModelSid();
String configSid = dailyReportVo.getVehMConfigSid();
BaseVehicleModel baseVehicleModel = baseMapper.selectModel(modelSid);
BaseModelConfig baseModelConfig = baseMapper.selectConfig(configSid);
BeanUtil.copyProperties(baseModelConfig, dailyReportVo);
BeanUtil.copyProperties(baseVehicleModel, dailyReportVo);
/*List<DailyParameterVo> parameterVoList = baseMapper.selectByParameters(useOrgSid);
parameterVoList.removeAll(Collections.singleton(null));
for (int j = 0; j < parameterVoList.size(); j++) {
Map<String,Object> map = new HashMap<>();
DailyParameterVo dailyParameterVo = parameterVoList.get(j);
String tableName = Arrays.asList(dailyParameterVo.getTableNameKey().split("\\.")).get(1);
if("base_model_config".equals(tableName)){
try {
Field field = baseModelConfig.getClass().getDeclaredField(dailyParameterVo.getColName());
field.setAccessible(true);
map.put(dailyParameterVo.getColName(),field.get(baseModelConfig));
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
}else if("base_vehicle_model".equals(tableName)){
}
}*/
}
}
PagerVo<DailyReportVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
@ -61,8 +108,9 @@ public class DailyReportService extends MybatisBaseService<DailyReportMapper, Da
);
//查询事业部
if (StringUtils.isNotBlank(query.getOrgPath())) {
String busOrgSid = sysStaffOrgFeign.getOrgSidByPath2(query.getOrgPath()).getData();
qw.eq("busOrgSid", busOrgSid);
List<String> stringList = Arrays.asList(query.getOrgPath().split("/"));
String sybOrgSid = query.getOrgPath().substring(37, 73);
qw.eq("busOrgSid", sybOrgSid);
}
}
IPage<DailyReport> page = PagerUtil.queryToPage(pagerQuery);
@ -88,4 +136,72 @@ public class DailyReportService extends MybatisBaseService<DailyReportMapper, Da
PagerVo<DailyReportVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public ResultBean<List<DailyParameterVo>> selectListByUseOrgSid(String useOrgSid) {
ResultBean<List<DailyParameterVo>> rb = ResultBean.fireFail();
List<DailyParameterVo> parameterVoList = baseMapper.selectByParameters(useOrgSid);
return rb.success().setData(parameterVoList);
}
public PagerVo<DailyReportListVo> listPage3_1(PagerQuery<DailyReportQuery> pagerQuery) {
DailyReportQuery query = pagerQuery.getParams();
QueryWrapper<DailyReport> qw = new QueryWrapper<>();
if (query != null) {
//生成日期开始时间
String createTimeStart = query.getStartTime();
//生成日期结束时间
String createTimeEnd = query.getEndTime();
qw.apply(StringUtils.isNotEmpty(createTimeStart), "date_format (createTime,'%Y-%m-%d') >= date_format('" + createTimeStart + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(createTimeEnd), "date_format (createTime,'%Y-%m-%d') <= date_format('" + createTimeEnd + "','%Y-%m-%d')"
);
}
IPage<DailyReport> page = PagerUtil.queryToPage(pagerQuery);
IPage<DailyReportListVo> pagging = baseMapper.listPage3_1(page, qw);
PagerVo<DailyReportListVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public PagerVo<DailyReportListVo> listPage2_1(PagerQuery<DailyReportQuery> pagerQuery) {
DailyReportQuery query = pagerQuery.getParams();
QueryWrapper<DailyReport> qw = new QueryWrapper<>();
if (query != null) {
//生成日期开始时间
String createTimeStart = query.getStartTime();
//生成日期结束时间
String createTimeEnd = query.getEndTime();
qw.apply(StringUtils.isNotEmpty(createTimeStart), "date_format (createTime,'%Y-%m-%d') >= date_format('" + createTimeStart + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(createTimeEnd), "date_format (createTime,'%Y-%m-%d') <= date_format('" + createTimeEnd + "','%Y-%m-%d')"
);
//查询事业部
if (StringUtils.isNotBlank(query.getOrgPath())) {
List<String> stringList = Arrays.asList(query.getOrgPath().split("/"));
String sybOrgSid = query.getOrgPath().substring(37, 73);
qw.eq("busOrgSid", sybOrgSid);
}
}
IPage<DailyReport> page = PagerUtil.queryToPage(pagerQuery);
IPage<DailyReportListVo> pagging = baseMapper.listPage3_1(page, qw);
PagerVo<DailyReportListVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public PagerVo<DailyReportListVo> listPage_1(PagerQuery<DailyReportQuery> pagerQuery) {
DailyReportQuery query = pagerQuery.getParams();
QueryWrapper<DailyReport> qw = new QueryWrapper<>();
if (query != null) {
//生成日期开始时间
String createTimeStart = query.getStartTime();
//生成日期结束时间
String createTimeEnd = query.getEndTime();
qw.apply(StringUtils.isNotEmpty(createTimeStart), "date_format (createTime,'%Y-%m-%d') >= date_format('" + createTimeStart + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(createTimeEnd), "date_format (createTime,'%Y-%m-%d') <= date_format('" + createTimeEnd + "','%Y-%m-%d')"
);
String useOrgSid = query.getUseOrgSid();
qw.eq("useOrgSid", useOrgSid);
}
IPage<DailyReport> page = PagerUtil.queryToPage(pagerQuery);
IPage<DailyReportListVo> pagging = baseMapper.listPage3_1(page, qw);
PagerVo<DailyReportListVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
}

2
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/PolicyVo.java

@ -47,5 +47,7 @@ public class PolicyVo implements Vo {
private String bankShortName;
private String guaranteeTypeKey;
@ApiModelProperty("01固定,02敞口")
private String bondTypeKey;
}

2
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<String> saveLoanCon(@RequestParam("sid") String sid, @RequestParam("conSetUpKey") String conSetUpKey);
@ApiOperation("确定贷款人推送家纺准备")
@PostMapping("/saveHomeVisit")

2
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<String> saveLoanCon(String sid, String conSetUpKey) {
return null;
}

1
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/LoanCreateSchedulePdfVo.java

@ -16,6 +16,7 @@ import java.util.Date;
@Data
public class LoanCreateSchedulePdfVo implements Vo {
private String userSid;
@ApiModelProperty("销售订单sid")
private String salesOrderSid;
@ApiModelProperty("金融方案sid")

2
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/LoanRepaymentSchedule.java

@ -44,6 +44,8 @@ public class LoanRepaymentSchedule extends BaseEntity {
private String mainPeriod;
@ApiModelProperty("主产品首期还款日")
private Date mainRepayDate;
@ApiModelProperty("主产品末期还款日")
private Date mainLastDate;
@ApiModelProperty("主产品首期月还")
private BigDecimal mainFirstRepay;
@ApiModelProperty("主产品期间月还")

27
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/ScanRepaymentVo.java

@ -0,0 +1,27 @@
package com.yxt.anrui.riskcenter.api.loanrepaymentschedule;
import lombok.Data;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
/**
* @author Administrator
* @description
* @date 2023/11/7 11:19
*/
@Data
public class ScanRepaymentVo {
private String sid;
private String sendSid;
private String staffSid;
private String mainStartDate;
private String borrowerSid;
private String mainPeriod;
private String otherPeriod;
private String otherStartDate;
private String borrowerName;
HashSet<String> hashSet = new HashSet<>();
}

3
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/LoanSolutions.java

@ -67,6 +67,7 @@ public class LoanSolutions extends BaseEntity {
private BigDecimal bondAmount;
@ApiModelProperty("厂家贴息")
private BigDecimal factoryDiscount;
@ApiModelProperty("厂家贴息用途")
private String factoryDiscountUse;
@ApiModelProperty("厂家贴息用途")
@ -94,6 +95,8 @@ public class LoanSolutions extends BaseEntity {
private int saleOrderState;
@ApiModelProperty("贴息抵车款")
private BigDecimal discountCar;
@ApiModelProperty("实际贴息")
private BigDecimal actualDiscount;

7
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/SolutionDetailsDto.java

@ -165,5 +165,12 @@ public class SolutionDetailsDto implements Dto {
@ApiModelProperty("名义留购价")
private String nominalPrice;
@ApiModelProperty("实际贴息")
private String actualDiscount;
@ApiModelProperty("其他融实际贴息")
private String otherActualDiscount;
private int saleOrderState = 0;
}

8
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionsDetailsVo.java

@ -184,5 +184,13 @@ public class SolutionsDetailsVo implements Vo {
@ApiModelProperty("服务费")
private String serviceChargeTypeValue;
@ApiModelProperty("实际贴息")
private String actualDiscount;
@ApiModelProperty("其他融实际贴息")
private String otherActualDiscount;
@ApiModelProperty("保证金类型01固定,02敞口")
private String bondTypeKey;
}

7
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionssDto.java

@ -164,4 +164,11 @@ public class SolutionssDto implements Dto {
private String vehTotalPrice;
@ApiModelProperty("名义留购价")
private String nominalPrice;
@ApiModelProperty("实际贴息")
private String actualDiscount;
@ApiModelProperty("其他融实际贴息")
private String otherActualDiscount;
private int saleOrderState;
}

1
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionssQuery.java

@ -115,4 +115,5 @@ public class SolutionssQuery implements Query {
private String nominalPrice;
private String modelSid;
private String saleOrderSid;
}

8
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/app/SolutionssVo.java

@ -175,5 +175,13 @@ public class SolutionssVo implements Vo {
private String modelSid;
@ApiModelProperty("实际贴息")
private String actualDiscount;
@ApiModelProperty("其他融实际贴息")
private String otherActualDiscount;
@ApiModelProperty("保证金类型01固定,02敞口")
private String bondTypeKey;
}

1
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/calculate/CalculateQuery.java

@ -13,6 +13,7 @@ import javax.validation.constraints.NotBlank;
@Data
public class CalculateQuery {
private String salesOrderSid;
@ApiModelProperty("是否打包:1是0否")
private String isPack;
@ApiModelProperty("产品政策sid")

5
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutions/calculate/CalculateVo.java

@ -59,5 +59,10 @@ public class CalculateVo {
@ApiModelProperty("车辆总价")
private String vehTotalPrice;
@ApiModelProperty("实际贴息")
private String actualDiscount;
@ApiModelProperty("其他融实际贴息")
private String otherActualDiscount;
}

2
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansolutionsotherpolicy/LoanSolutionsOtherpolicy.java

@ -84,6 +84,8 @@ public class LoanSolutionsOtherpolicy extends BaseEntity {
private String downPayAmountsRatio;
@ApiModelProperty("其他融贴息")
private BigDecimal otherDiscount;
@ApiModelProperty("实际贴息")
private BigDecimal otherActualDiscount;

5
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplateSolutionsDto.java

@ -157,5 +157,10 @@ public class LoanTemplateSolutionsDto implements Dto {
@ApiModelProperty("名义留购价")
private String nominalPrice;
@ApiModelProperty("实际贴息")
private String actualDiscount;
@ApiModelProperty("其他融实际贴息")
private String otherActualDiscount;
}

8
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loantemplate/LoanTemplateSolutionsVo.java

@ -155,4 +155,12 @@ public class LoanTemplateSolutionsVo implements Vo {
private String serviceChargeTypeKey;
@ApiModelProperty("服务费")
private String serviceChargeTypeValue;
@ApiModelProperty("实际贴息")
private String actualDiscount;
@ApiModelProperty("其他融实际贴息")
private String otherActualDiscount;
@ApiModelProperty("保证金类型01固定,02敞口")
private String bondTypeKey;
}

2
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/RiskCenterApplication.java

@ -5,6 +5,7 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
* @author dimengzhe
@ -14,6 +15,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
"com.yxt.anrui.riskcenter"
})
@EnableDiscoveryClient
@EnableScheduling
@EnableFeignClients(basePackages = {"com.yxt.anrui.fin","com.yxt.anrui.portal","com.yxt.anrui.buscenter","com.yxt.messagecenter","com.yxt.anrui.crm","com.yxt.anrui.base","com.yxt.anrui.flowable"})
public class RiskCenterApplication {

5
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyMapper.xml

@ -140,6 +140,7 @@
a.depositSettle,
a.nominalPrice,
a.vehAccidentAmount,
a.bondTypeKey,
a.id from ( select lfp.policyName name,
lfp.sid,
lfp.bankShortName,
@ -157,6 +158,7 @@
lfp.depositSettle,
lfp.nominalPrice,
lfp.vehAccidentAmount,
lfp.bondTypeKey,
lfp.id
from loan_fin_policy lfp
where lfp.filingState = 1
@ -191,7 +193,8 @@
lfp.depositSettle,
lfp.nominalPrice,
lfp.vehAccidentAmount,
lfp.id
lfp.id,
lfp.bondTypeKey
from loan_fin_policy lfp
where lfp.filingState = 1
and isPack = #{isPack}

3
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<String> saveLoanCon(String sid, String conSetUpKey) {
return loanHomevisitPrepService.saveLoanCon(sid, conSetUpKey);
}

37
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<LoanHomevisitPr
private BusSalesOrderBorrowerFeign busSalesOrderBorrowerFeign;
@Autowired
private LoanHomevisitInvestigateService loanHomevisitInvestigateService;
@Autowired
private CommonContractFeign commonContractFeign;
public PagerVo<LoanHomevisitPrepVo> listPageVo(PagerQuery<LoanHomevisitPrepQuery> pq) {
LoanHomevisitPrepQuery query = pq.getParams();
@ -235,8 +243,8 @@ public class LoanHomevisitPrepService extends MybatisBaseService<LoanHomevisitPr
return rb.success().setData(contractSetKey);
}
public ResultBean saveLoanCon(String sid, String conSetUpKey) {
ResultBean rb = ResultBean.fireFail();
public ResultBean<String> saveLoanCon(String sid, String conSetUpKey) {
ResultBean<String> rb = ResultBean.fireFail();
LoanHomevisitPrepVo loanHomevisitPrepVo = baseMapper.selectDetails(sid);
List<BusSalesOrderVehicle> busSalesOrderVehicles = busSalesOrderVehicleFeign.selectListByOrderSidAndDkrSid(loanHomevisitPrepVo.getSaleOrderSid(),loanHomevisitPrepVo.getBorrowerSid()).getData();
BusSalesOrder busSalesOrder = busSalesOrderFeign.fetchBySid(loanHomevisitPrepVo.getSaleOrderSid()).getData();
@ -286,6 +294,31 @@ public class LoanHomevisitPrepService extends MybatisBaseService<LoanHomevisitPr
busSalesOrderVehicleFeign.updateXDCon(busSalesOrderVehicle.getSid(), loanContractSid);
}
}
//贷款人生成车辆买卖合同
PrintConfirmDto printConfirmDto = new PrintConfirmDto();
CommonContract commonContract = commonContractFeign.selectByNo(loanHomevisitPrepVo.getContractNo()).getData();
printConfirmDto.setSid(commonContract.getSid());
printConfirmDto.setBusSid(loanHomevisitPrepVo.getSaleOrderSid());
BusSalesOrderBorrowerDetailsVo busSalesOrderBorrowerDetailsVo = busSalesOrderBorrowerFeign.fetchDetailsBySid(loanHomevisitPrepVo.getBorrowerSid()).getData();
printConfirmDto.setCustomerSid(busSalesOrderBorrowerDetailsVo.getCustomSid());
printConfirmDto.setBorrowerSid(busSalesOrderBorrowerDetailsVo.getSid());
printConfirmDto.setContractNo(loanHomevisitPrepVo.getContractNo());
printConfirmDto.setCustomerName(loanHomevisitPrepVo.getBorrowerName());
printConfirmDto.setDiscountKey("0");
printConfirmDto.setInsuranceKey("0");
LoanHomevisitPrep loanHomevisitPrep = fetchBySid(sid);
printConfirmDto.setUserSid(loanHomevisitPrep.getCreateBySid());
//查询销售订单的信息
ResultBean<AppOrderDetailsVo> 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<PrintConfirmVo> printConfirmVos = commonContractFeign.xcmmContract(printConfirmDto).getData();
String xcmmContractUrl = printConfirmVos.get(0).getDownloadUrl();
return rb.success();
}

5
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleMapper.java

@ -8,10 +8,13 @@ import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameter;
import com.yxt.anrui.riskcenter.api.loanparameter.LoanParameterVo;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.AppRepaymentPlanVo;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanRepaymentSchedule;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.ScanRepaymentVo;
import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformation;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @description:
@ -25,4 +28,6 @@ public interface LoanRepaymentScheduleMapper extends BaseMapper<LoanRepaymentSch
LoanRepaymentSchedule selectByContractSid(String salesOrderSid);
IPage<AppRepaymentPlanVo> getRepaymentPlanList(IPage<LoanRepaymentSchedule> page, @Param(Constants.WRAPPER) QueryWrapper<LoanWarrantInformation> qw);
List<ScanRepaymentVo> scanRepayment();
}

15
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleMapper.xml

@ -24,4 +24,19 @@
${ew.sqlSegment}
</where>
</select>
<select id="scanRepayment"
resultType="com.yxt.anrui.riskcenter.api.loanrepaymentschedule.ScanRepaymentVo">
SELECT sid,
createBySid as sendSid,
staffSid,
mainPeriod,
otherPeriod,
borrowerSid,
borrowerName,
mainRepayDate as mainStartDate,
otherRepayDate as otherStartDate
FROM loan_repayment_schedule
WHERE curdate() &lt;= mainLastDate
and isDelete = 0
</select>
</mapper>

270
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleService.java

@ -4,9 +4,15 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.api.R;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.buscenter.api.bushandover.BusHandover;
import com.yxt.anrui.buscenter.api.bushandoveritems.BusHandoverItems;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign;
import com.yxt.anrui.buscenter.api.bussalesorder.SolutionsDetailsssVo;
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.BusSalesOrderLoancontractDetailsVo;
import com.yxt.anrui.buscenter.api.bussalesorderloancontract.BusSalesOrderLoancontractFeign;
@ -15,10 +21,16 @@ import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign;
import com.yxt.anrui.buscenter.api.busvehicledatahandover.BusDataListPdfVo;
import com.yxt.anrui.buscenter.api.busvehicledatahandover.BusVehicleDataHandoverPdfVo;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserInfoVo;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicyVo;
import com.yxt.anrui.riskcenter.api.loanmortgageinformationtransact.LoanMortgageInformationTransactDto;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.*;
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions;
import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo;
@ -28,23 +40,32 @@ import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformatio
import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformationVo;
import com.yxt.anrui.riskcenter.biz.loansolutions.LoanSolutionsService;
import com.yxt.anrui.riskcenter.biz.loansolutionsotherpolicy.LoanSolutionsOtherpolicyService;
import com.yxt.anrui.riskcenter.biz.loanwarrantinformation.LoanWarrantInformationService;
import com.yxt.common.base.config.component.DocPdfComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.MsgWs;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.base.utils.WordConvertUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessagePushTransferDto;
import com.yxt.messagecenter.api.messagelist.MessageListDto;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.io.InputStream;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
@ -74,6 +95,14 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
private DocPdfComponent docPdfComponent;
@Autowired
private BusSalesOrderFeign busSalesOrderFeign;
@Autowired
private BusSalesOrderBorrowerFeign busSalesOrderBorrowerFeign;
@Autowired
private CrmCustomerTempFeign crmCustomerTempFeign;
@Autowired
private MessageFeign messageFeign;
@Autowired
private LoanWarrantInformationService loanWarrantInformationService;
/**
* 根据销售订单SID生成还款计划表回显
@ -131,6 +160,9 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
}
LoanRepaymentSchedule schedule = baseMapper.selectByContractSid(salesOrderSid);
if (null != schedule) {
if (StringUtils.isNotBlank(schedule.getCreateBySid())) {
vo.setUserSid(schedule.getCreateBySid());
}
// 主产品首期还款日
if (null != schedule.getMainRepayDate()) {
vo.setMainRepayDate(sdf.format(schedule.getMainRepayDate()));
@ -248,6 +280,9 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
BeanUtil.copyProperties(dto, entity, "id", "sid");
entity.setLoanContractSid(dto.getSalesOrderSid());
entity.setSalesOrderSid(orderSid);
if (StringUtils.isNotBlank(dto.getUserSid())) {
entity.setCreateBySid(dto.getUserSid());
}
BusSalesOrder busSalesOrder = busSalesOrderFeign.fetchBySid(orderSid).getData();
if (null != busSalesOrder) {
if (StringUtils.isNotBlank(busSalesOrder.getCreateBySid())) {
@ -265,7 +300,6 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
entity.setVinNo(String.join(",", stringVinNos));
}
}
BusSalesOrderLoancontractDetailsVo loancontractVo = busSalesOrderLoancontractFeign.fetchDetailsBySid(dto.getSalesOrderSid()).getData();
if (null != loancontractVo) {
if (StringUtils.isNotBlank(loancontractVo.getBorrowerSid())) {
@ -278,7 +312,118 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
entity.setPolicyName(loancontractVo.getPolicyName());
}
}
List<String> repayDate = returnRepayDate(dto.getMainRepayDate(), dto.getMainPeriod());
if (!repayDate.isEmpty()) {
String lastDate = repayDate.get(repayDate.size() - 1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse(lastDate);
entity.setMainLastDate(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
baseMapper.insert(entity);
// 使用多线程推送站内信发送短信
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());
LoanRepaymentSchedule schedule = fetchBySid(entity.getSid());
Future future1 = pool.submit(() -> {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (null != schedule) {
String vinNo = "";
String customerPhone = "";
String month = "";
String day = "";
String period = "";
String customer = "";
String staffSid = "";
String sendSid = "";
String sendName = "";
String staffName = "";
String sendDept = "";
String sendDeptSid = "";
if (StringUtils.isNotBlank(schedule.getCreateBySid())) {
sendSid = schedule.getCreateBySid();
SysUserVo userVo = sysUserFeign.fetchBySid(sendSid).getData();
if (null != userVo) {
sendName = userVo.getName();
sendDept = userVo.getOrganizationName();
sendDeptSid = userVo.getOrganizationSid();
}
}
if (StringUtils.isNotBlank(schedule.getStaffSid())) {
staffSid = schedule.getStaffSid();
}
if (StringUtils.isNotBlank(schedule.getStaffName())) {
staffName = schedule.getStaffName();
}
if (StringUtils.isNotBlank(schedule.getBorrowerName())) {
customer = schedule.getBorrowerName();
}
if (StringUtils.isNotBlank(schedule.getMainPeriod())) {
period = schedule.getMainPeriod();
}
if (StringUtils.isNotBlank(schedule.getVinNo())) {
vinNo = schedule.getVinNo();
}
if (StringUtils.isNotBlank(schedule.getBorrowerSid())) {
String borrowerSid = schedule.getBorrowerSid();
BusSalesOrderBorrowerDetailsVo borrowerDetailsVo = busSalesOrderBorrowerFeign.fetchDetailsBySid(borrowerSid).getData();
if (null != borrowerDetailsVo) {
if (StringUtils.isNotBlank(borrowerDetailsVo.getCustomSid())) {
CrmCustomerTempVo customerTempVo = crmCustomerTempFeign.fetchSid(borrowerDetailsVo.getCustomSid()).getData();
if (null != customerTempVo) {
if (StringUtils.isNotBlank(customerTempVo.getMobile())) {
customerPhone = customerTempVo.getMobile();
}
}
}
}
}
if (schedule.getMainRepayDate() != null) {
String format = sdf.format(schedule.getMainRepayDate());
String[] split = format.split("-");
String sMonth = split[1];
String sDay = split[2];
if (Integer.parseInt(sMonth) < 10) {
sMonth = sMonth.replace("0", "");
}
if (Integer.parseInt(sDay) < 10) {
sDay = sDay.replace("0", "");
}
month = sMonth;
day = sDay;
}
String contentCustomer = "尊敬的客户:您的车架号为" + vinNo + "车辆,首期还款日为" + month + "月" + day + "日,期数为" + period + "期,每月" + day + "日为您的还款日,请及时还款。";
String res = MsgWs.SendWaitWorkMsg(customerPhone, contentCustomer);
System.out.println("还款发送短信:" + res);
System.out.println(contentCustomer);
String contentStaff = "您的贷款客户" + customer + "的还款计划表已生成";
//消息推送
MessagePushTransferDto messagePushTransferDto = new MessagePushTransferDto();
messagePushTransferDto.setMsgTypeSid("bc59c198-2d51-458f-913e-cbd8d7ef4799");
messagePushTransferDto.setMsgType("业务");
messagePushTransferDto.setMsgTitle("生成还款计划表");
messagePushTransferDto.setMsgContent(contentStaff);
messagePushTransferDto.setMsgSource("还款计划表");
messagePushTransferDto.setSenderSid(sendSid);
messagePushTransferDto.setSenderName(sendName);
messagePushTransferDto.setSenderDeptSid(sendDeptSid);
messagePushTransferDto.setSenderDeptName(sendDept);
messagePushTransferDto.setBusinessSid(schedule.getSid());
messagePushTransferDto.setReceiveSids(staffSid);
messagePushTransferDto.setReceiveNames(staffName);
messageFeign.pushTransferMessage(messagePushTransferDto);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
// 生成还款计划表pdf
String template = "/template/";
@ -297,6 +442,128 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
return rb.success().setData(returnPath);
}
/**
* 根据首期还款日+主产品期数推算主产品月还日期
*
* @param firstDate
* @param period
* @return
*/
public List<String> returnRepayDate(String firstDate, String period) {
String[] split = firstDate.split("-");
String year = split[0];
String month = split[1];
String day = split[2];
List<String> dateList = new ArrayList<>();
int p = Integer.parseInt(period);
String date = "";
String temp = "";
for (int i = 1; i <= p; i++) {
if (Integer.parseInt(month) < 10 && !month.equals("01")) {
temp = "0";
} else {
temp = "";
}
date = year + "-" + temp + month + "-" + day;
int m = Integer.parseInt(month);
month = String.valueOf(++m);
if (Integer.parseInt(month) > 12) {
int y = Integer.parseInt(year);
year = String.valueOf(++y);
month = "01";
}
dateList.add(date);
}
return dateList;
}
/**
* 返回三天之前时间
*
* @param day
* @return
*/
public String beforeThreeDay(String day) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse(day);
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE, -3);
return sdf.format(c.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
return "";
}
/**
* 返回三天之后时间
*
* @param day
* @return
*/
public String afterThreeDay(String day) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse(day);
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE, 3);
return sdf.format(c.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
return "";
}
/**
* 返回提醒日期
*
* @param firstDate
* @param period
* @return
*/
public List<String> returnDayList(String firstDate, String period) {
String[] split = firstDate.split("-");
String year = split[0];
String month = split[1];
String day = split[2];
List<String> dateList = new ArrayList<>();
int p = Integer.parseInt(period);
String date = "";
String temp = "";
for (int i = 1; i <= p; i++) {
if (Integer.parseInt(month) < 10 && !month.equals("01")) {
temp = "0";
} else {
temp = "";
}
date = year + "-" + temp + month + "-" + day;
int m = Integer.parseInt(month);
month = String.valueOf(++m);
if (Integer.parseInt(month) > 12) {
int y = Integer.parseInt(year);
year = String.valueOf(++y);
month = "01";
}
dateList.add(date);
}
List<String> finalList = new ArrayList<>();
if (!dateList.isEmpty()) {
for (String s : dateList) {
String finalDay = beforeThreeDay(s);
finalList.add(finalDay);
}
}
return finalList;
}
public List<ScanRepaymentVo> scanRepaymentVos() {
List<ScanRepaymentVo> schedules = baseMapper.scanRepayment();
return schedules;
}
/**
* 还款计划表多台回显
*
@ -586,6 +853,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
return rb.success().setData(list);
}
//---------------------app接口----------------------------
public PagerVo<AppRepaymentPlanVo> getRepaymentPlanList(PagerQuery<AppRepaymentPlanQuery> pq) {
IPage<LoanRepaymentSchedule> page = PagerUtil.queryToPage(pq);

217
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/ScheduledRepaymentService.java

@ -0,0 +1,217 @@
package com.yxt.anrui.riskcenter.biz.loanrepaymentschedule;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerDetailsVo;
import com.yxt.anrui.buscenter.api.bussalesorderborrower.BusSalesOrderBorrowerFeign;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempVo;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanRepaymentSchedule;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.ScanRepaymentVo;
import com.yxt.anrui.riskcenter.api.loanwarrantinformation.LoanWarrantInformation;
import com.yxt.anrui.riskcenter.biz.loanwarrantinformation.LoanWarrantInformationService;
import com.yxt.common.base.utils.MsgWs;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.MessagePushTransferDto;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
/**
* @author Administrator
* @description
* @date 2023/11/7 14:02
*/
@Component
public class ScheduledRepaymentService {
@Autowired
private LoanRepaymentScheduleService loanRepaymentScheduleService;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private MessageFeign messageFeign;
@Autowired
private BusSalesOrderBorrowerFeign busSalesOrderBorrowerFeign;
@Autowired
private CrmCustomerTempFeign crmCustomerTempFeign;
@Autowired
private BusSalesOrderVehicleFeign busSalesOrderVehicleFeign;
@Autowired
private LoanWarrantInformationService loanWarrantInformationService;
/**
* 定时任务每天扫描还款日期发送信息
*/
//@Scheduled(cron = "0 0 0 * * ?")
// @Scheduled(cron = "0 0/5 16 * * ?")
// @Scheduled(cron = "0/30 * * * * ?") //每30秒执行一次
// @Scheduled(cron = "0 0/5 * * * ?")
public void scanRepayment() {
List<ScanRepaymentVo> schedules = loanRepaymentScheduleService.scanRepaymentVos();
schedules.removeAll(Collections.singleton(null));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String formatDate = sdf.format(new Date());
if (!schedules.isEmpty()) {
for (ScanRepaymentVo entity : schedules) {
HashSet<String> hashSet = new HashSet<>();
List<String> mainList = new ArrayList<>();
if (StringUtils.isNotBlank(entity.getMainStartDate())) {
String mainStartDate = entity.getMainStartDate();
String mainPeriod = entity.getMainPeriod();
mainList = loanRepaymentScheduleService.returnDayList(mainStartDate, mainPeriod);
}
List<String> otherList = new ArrayList<>();
if (StringUtils.isNotBlank(entity.getOtherStartDate())) {
String otherStartDate = entity.getOtherStartDate();
String otherPeriod = entity.getOtherPeriod();
otherList = loanRepaymentScheduleService.returnDayList(otherStartDate, otherPeriod);
}
mainList.addAll(otherList);
if (!mainList.isEmpty()) {
for (String s : mainList) {
hashSet.add(s);
}
entity.setHashSet(hashSet);
}
if (hashSet.contains(formatDate)) {
LoanRepaymentSchedule schedule = loanRepaymentScheduleService.fetchBySid(entity.getSid());
if (null != schedule) {
String vinNo = "";
String customerPhone = "";
String month = "";
String day = "";
String period = "";
String customer = "";
String staffSid = "";
String sendSid = "";
String sendName = "";
String staffName = "";
String sendDept = "";
String sendDeptSid = "";
String vinMark = "";
StringBuffer sbVinMark = new StringBuffer();
if (StringUtils.isNotBlank(schedule.getCreateBySid())) {
sendSid = schedule.getCreateBySid();
SysUserVo userVo = sysUserFeign.fetchBySid(sendSid).getData();
if (null != userVo) {
sendName = userVo.getName();
sendDept = userVo.getOrganizationName();
sendDeptSid = userVo.getOrganizationSid();
}
}
if (StringUtils.isNotBlank(schedule.getStaffSid())) {
staffSid = schedule.getStaffSid();
}
if (StringUtils.isNotBlank(schedule.getStaffName())) {
staffName = schedule.getStaffName();
}
if (StringUtils.isNotBlank(schedule.getBorrowerName())) {
customer = schedule.getBorrowerName();
}
if (StringUtils.isNotBlank(schedule.getMainPeriod())) {
period = schedule.getMainPeriod();
}
if (StringUtils.isNotBlank(schedule.getVinNo())) {
vinNo = schedule.getVinNo();
}
if (StringUtils.isNotBlank(schedule.getBorrowerSid())) {
String borrowerSid = schedule.getBorrowerSid();
BusSalesOrderBorrowerDetailsVo borrowerDetailsVo = busSalesOrderBorrowerFeign.fetchDetailsBySid(borrowerSid).getData();
if (null != borrowerDetailsVo) {
if (StringUtils.isNotBlank(borrowerDetailsVo.getCustomSid())) {
CrmCustomerTempVo customerTempVo = crmCustomerTempFeign.fetchSid(borrowerDetailsVo.getCustomSid()).getData();
if (null != customerTempVo) {
if (StringUtils.isNotBlank(customerTempVo.getMobile())) {
customerPhone = customerTempVo.getMobile();
}
}
}
}
String salesOrderSid = schedule.getSalesOrderSid();
List<BusSalesOrderVehicle> orderVehicles = busSalesOrderVehicleFeign.selectListByOrderSidAndDkrSid(salesOrderSid, borrowerSid).getData();
if (!orderVehicles.isEmpty()) {
for (BusSalesOrderVehicle orderVehicle : orderVehicles) {
LoanWarrantInformation loanWarrantInformation = loanWarrantInformationService.fetchByBusVinSid(orderVehicle.getSid());
if (null != loanWarrantInformation) {
if (StringUtils.isNotBlank(loanWarrantInformation.getVehicleMark())) {
sbVinMark.append(loanWarrantInformation.getVehicleMark()).append(",");
}
}
}
if (sbVinMark.length() > 0) {
sbVinMark.delete(sbVinMark.length() - 1, sbVinMark.length());
vinMark = sbVinMark.toString();
}
}
}
String afterThreeDay = loanRepaymentScheduleService.afterThreeDay(formatDate);
if (StringUtils.isNotBlank(afterThreeDay)) {
String[] split = afterThreeDay.split("-");
String sMonth = split[1];
String sDay = split[2];
if (Integer.parseInt(sMonth) < 10) {
sMonth = sMonth.replace("0", "");
}
if (Integer.parseInt(sDay) < 10) {
sDay = sDay.replace("0", "");
}
month = sMonth;
day = sDay;
}
String contentCustomer = "尊敬的客户:您的车牌号为" + vinMark + "车辆,还款日为" + month + "月" + day + "日,请及时还款。";
String res = MsgWs.SendWaitWorkMsg(customerPhone, contentCustomer);
System.out.println("还款发送短信:" + res);
System.out.println(contentCustomer);
if (StringUtils.isNotBlank(entity.getMainStartDate())) {
String beforeThreeDay = loanRepaymentScheduleService.beforeThreeDay(entity.getMainStartDate());
if (beforeThreeDay.equals(formatDate)) {
String m = "";
String d = "";
String[] split = entity.getMainStartDate().split("-");
String fmonth = split[1];
String fday = split[2];
if (Integer.parseInt(fmonth) < 10) {
m = fmonth.replace("0", "");
} else {
m = fmonth;
}
if (Integer.parseInt(fday) < 10) {
d = fday.replace("0", "");
} else {
d = fday;
}
String contentStaff = "您的贷款客户" + customer + "的车辆首期还款日为" + m + "月" + d + "日,请及时提醒客户。";
System.out.println(contentStaff);
//消息推送
MessagePushTransferDto messagePushTransferDto = new MessagePushTransferDto();
messagePushTransferDto.setMsgTypeSid("bc59c198-2d51-458f-913e-cbd8d7ef4799");
messagePushTransferDto.setMsgType("业务");
messagePushTransferDto.setMsgTitle("提醒客户还款");
messagePushTransferDto.setMsgContent(contentStaff);
messagePushTransferDto.setMsgSource("还款计划表");
messagePushTransferDto.setSenderSid(sendSid);
messagePushTransferDto.setSenderName(sendName);
messagePushTransferDto.setSenderDeptSid(sendDeptSid);
messagePushTransferDto.setSenderDeptName(sendDept);
messagePushTransferDto.setBusinessSid(schedule.getSid());
messagePushTransferDto.setReceiveSids(staffSid);
messagePushTransferDto.setReceiveNames(staffName);
messageFeign.pushTransferMessage(messagePushTransferDto);
}
}
}
}
}
}
}
}

8
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansolutions/LoanSolutionsMapper.java

@ -1,6 +1,8 @@
package com.yxt.anrui.riskcenter.biz.loansolutions;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesorderprice.BusSalesOrderPrice;
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -31,6 +33,12 @@ public interface LoanSolutionsMapper extends BaseMapper<LoanSolutions> {
LoanSolutions selectByApplySid(String saleOrderSid);
LoanSolutions selectByBusSid(String busSid);
BusSalesOrderPrice selectByPriceSid(String busSid);
BusSalesOrder seletByBusSids(String busSid);
/* IPage<LoanSolutionsVo> selectPageVo(IPage<LoanSolutions> page, @Param(Constants.WRAPPER) Wrapper<LoanSolutions> qw);

12
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansolutions/LoanSolutionsMapper.xml

@ -71,4 +71,16 @@
from loan_solutions
where salesOrderSid = #{saleOrderSid} and isDelete = 0
</select>
<select id="selectByBusSid" resultType="com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions">
select * from loan_solutions where salesOrderSid = #{busSid} and isDelete = 0
</select>
<select id="selectByPriceSid" resultType="com.yxt.anrui.buscenter.api.bussalesorderprice.BusSalesOrderPrice">
select * from anrui_buscenter.bus_sales_order_price where salesOrderSid = #{busSid}
</select>
<select id="seletByBusSids" resultType="com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder">
select * from anrui_buscenter.bus_sales_order where sid = #{busSid}
</select>
</mapper>

71
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansolutions/LoanSolutionsService.java

@ -8,6 +8,7 @@ import com.yxt.anrui.buscenter.api.bussalesorder.OrderSolutionVo;
import com.yxt.anrui.buscenter.api.bussalesorder.app.order.AppOrderDetailsVo;
import com.yxt.anrui.buscenter.api.bussalesorder.app.order.AppOrderPriceInfoVo;
import com.yxt.anrui.buscenter.api.bussalesordermodel.BusSalesOrderModel;
import com.yxt.anrui.buscenter.api.bussalesorderprice.BusSalesOrderPrice;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicy;
@ -81,6 +82,12 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
if (loanSolutionsDetail != null) {
BeanUtil.copyProperties(loanSolutionsDetail, solutionsDetailsVo);
}
if(StringUtils.isNotBlank(loanSolutions.getPolicySid())){
LoanFinPolicy loanFinPolicy = loanFinPolicyService.fetchBySid(loanSolutions.getPolicySid());
if(loanFinPolicy != null){
solutionsDetailsVo.setBondTypeKey(loanFinPolicy.getBondTypeKey());
}
}
}
//根据销售订单sid查询销售订单的信息
ResultBean<AppOrderDetailsVo> resultBean = busSalesOrderFeign.getSaleOrderDetails(saleOrderSid);
@ -769,7 +776,8 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
}
//保存金融方案
loanSolutions = new LoanSolutions();
loanSolutions.setSaleOrderState(1);
loanSolutions.setSaleOrderState(dto.getSaleOrderState());
// loanSolutions.setSaleOrderState(1);
if (StringUtils.isNotBlank(dto.getBusSid())) {
loanSolutions.setSalesOrderSid(dto.getBusSid());
}
@ -1185,6 +1193,7 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
if (serviceChargeTypeValue != null) {
solutionsDetailsVo.setServiceChargeTypeValue(serviceChargeTypeValue.toString());
}
solutionsDetailsVo.setBondTypeKey(loanFinPolicy.getBondTypeKey());
}
return rb.success().setData(solutionsDetailsVo);
}
@ -1208,6 +1217,21 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
if (StringUtils.isBlank(policySid)) {
return rb.setMsg("请先选择产品政策");
}
String busSid = query.getSalesOrderSid();
LoanSolutions loanSolutions = baseMapper.selectByBusSid(busSid);
boolean isOrder = false;
BigDecimal orderPrice = BigDecimal.ZERO;
if(loanSolutions != null){//销售订单
BusSalesOrder busSalesOrder = baseMapper.seletByBusSids(busSid);
if(busSalesOrder != null){
isOrder = true;
BusSalesOrderPrice busSalesOrderPrice = baseMapper.selectByPriceSid(busSid);
if(busSalesOrderPrice == null){
return rb.setMsg("请先录入价格信息");
}
orderPrice = busSalesOrderPrice.getSingleFinalPrice();
}
}
CalculateVo calculateVo = new CalculateVo();
//计算的初始化
BigDecimal loanTotal = BigDecimal.ZERO;//融资项目总额
@ -1222,6 +1246,7 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
BigDecimal interstAll = BigDecimal.ZERO;
BigDecimal yueAll = BigDecimal.ZERO;
/***************相关计算及字段*****************/
BigDecimal AmountAll = BigDecimal.ZERO;
//主车发票价
String mainVehicleAmount = query.getMainVehicleAmount();
@ -1250,10 +1275,18 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
if (StringUtils.isNotBlank(mainVehicleAmount)) {
//主车发票价
loanTotal = loanTotal.add(new BigDecimal(mainVehicleAmount));
AmountAll = AmountAll.add(new BigDecimal(mainVehicleAmount));
}
if (accessoriesAmountCb) {//包含配件
if (StringUtils.isNotBlank(accessoriesAmount)) {
loanTotal = loanTotal.add(new BigDecimal(accessoriesAmount));
AmountAll = AmountAll.add(new BigDecimal(accessoriesAmount));
}
}
if(isOrder){
//判断成交价与主车发票价和配件之和
if(AmountAll.compareTo(orderPrice)<0){
return rb.setMsg("主车发票价与配件之和不能小于订单成交价");
}
}
if (trailerAmountCb) {//包含挂车
@ -1304,14 +1337,17 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
//根据产品政策查询原利率
LoanFinPolicy loanFinPolicy = loanFinPolicyService.fetchBySid(policySid);
if (StringUtils.isNotBlank(factoryDiscount) && !"0".equals(factoryDiscount)) {
BigDecimal actualDiscount = BigDecimal.ZERO;
//年利率
BigDecimal policyYearRatio = loanFinPolicy.getYearRatio();
//根据年利率和期数、贷款金额计算旧月还
BigDecimal loanPayMoney = calculatePMT(policyYearRatio.divide(new BigDecimal("100"), 4, BigDecimal.ROUND_CEILING).doubleValue(), new BigDecimal(loanPeriod).doubleValue(), loanAmount.doubleValue());
//根据月还计算旧利息总额=旧月还金额 乘以 期数 减去 本金
BigDecimal loanInterest = loanPayMoney.multiply(new BigDecimal(loanPeriod)).subtract(loanAmount);
actualDiscount = actualDiscount.add(loanInterest);
//根据旧利息总额和厂家贴息计算新利息总额
BigDecimal loanInterestNew = loanInterest.subtract(new BigDecimal(factoryDiscount));
actualDiscount = actualDiscount.subtract(loanInterestNew);
//再根据厂家贴息、旧月还计算新月还金额 = 旧月还金额 减去 厂家贴息 除以 期数
BigDecimal loanPayMoneyNew = loanPayMoney.subtract(new BigDecimal(factoryDiscount).divide(new BigDecimal(loanPeriod), 4, BigDecimal.ROUND_HALF_UP));
//根据新月还rate计算新年利率。
@ -1339,6 +1375,8 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
calculateVo.setLoanInterest(loanInterestNew.toString());
calculateVo.setPolicyYearRatio(policyYearRatioNew.toString());
calculateVo.setLoanPayMoney(loanPayMoneyNew.toString());
String actualDiscountString = actualDiscount.setScale(0, BigDecimal.ROUND_HALF_UP).toString();
calculateVo.setActualDiscount(actualDiscountString);
} else {
//年利率
BigDecimal policyYearRatio = loanFinPolicy.getYearRatio();
@ -1384,6 +1422,7 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
//其他融贴息
String otherDiscount = query.getOtherDiscount();
if (StringUtils.isNotBlank(otherDiscount) && !"0".equals(otherDiscount)) {
BigDecimal otherActualDiscount = BigDecimal.ZERO;
loanDownPay = loanDownPay.subtract(new BigDecimal(otherPolicyAmount));
//总贷款金额的计算
loanAmountTotal = loanAmountTotal.add(new BigDecimal(otherPolicyAmount));
@ -1396,8 +1435,10 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
}
//根据月还计算旧利息总额=旧月还金额 乘以 期数 减去 本金
BigDecimal otherPolicyInterest = otherPolicyMonthlyRepay.multiply(new BigDecimal(otherPolicyPeriod)).subtract(new BigDecimal(otherPolicyAmount));
otherActualDiscount = otherActualDiscount.add(otherPolicyInterest);
//根据旧利息总额和厂家贴息计算新利息总额
BigDecimal otherPolicyInterestNew = otherPolicyInterest.subtract(new BigDecimal(otherDiscount));
otherActualDiscount = otherActualDiscount.subtract(otherPolicyInterestNew);
//再根据厂家贴息、旧月还计算新月还金额 = 旧月还金额 减去 厂家贴息 除以 期数
BigDecimal otherPolicyMonthlyRepayNew = otherPolicyMonthlyRepay.subtract(new BigDecimal(otherDiscount).divide(new BigDecimal(otherPolicyPeriod), 4, BigDecimal.ROUND_HALF_UP));
//根据新月还rate计算新年利率。
@ -1425,6 +1466,8 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
calculateVo.setOtherPolicyInterest(otherPolicyInterestNew.toString());
calculateVo.setOtherPolicyYearRatio(otherPolicyYearRatioNew.toString());
calculateVo.setOtherPolicyMonthlyRepay(otherPolicyMonthlyRepayNew.toString());
String otherActualDiscountString = otherActualDiscount.setScale(0, BigDecimal.ROUND_HALF_UP).toString();
calculateVo.setOtherActualDiscount(otherActualDiscountString);
} else {
loanDownPay = loanDownPay.subtract(new BigDecimal(otherPolicyAmount));
//总贷款金额的计算
@ -1696,6 +1739,7 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
SolutionDetailsDto solutionDetailsDto = new SolutionDetailsDto();
BeanUtil.copyProperties(dto, solutionDetailsDto);
solutionDetailsDto.setBusSid(dto.getSaleOrderSid());
solutionDetailsDto.setSaleOrderState(0);
ResultBean resultBean = saveDtoss(solutionDetailsDto);
return resultBean;
}
@ -1720,6 +1764,12 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
BeanUtil.copyProperties(loanSolutionsDetail, solutionssVo);
}
isTrue = true;
if(StringUtils.isNotBlank(loanSolutions.getPolicySid())){
LoanFinPolicy loanFinPolicy = loanFinPolicyService.fetchBySid(loanSolutions.getPolicySid());
if(loanFinPolicy != null){
solutionssVo.setBondTypeKey(loanFinPolicy.getBondTypeKey());
}
}
}
//查询销售订单的状态
ResultBean<BusSalesOrdersVo> resultBean = busSalesOrderFeign.getSalesOrderOne(busSid);
@ -1974,6 +2024,11 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
StringBuilder factoryDiscountValue = new StringBuilder();
if (StringUtils.isNotBlank(solutionssVo.getFactoryDiscount())) {
factoryDiscountValue = factoryDiscountValue.append("厂家贴息:").append(solutionssVo.getFactoryDiscount());
if(StringUtils.isNotBlank(solutionssVo.getActualDiscount())){
if(new BigDecimal(solutionssVo.getActualDiscount()).compareTo(BigDecimal.ZERO) != 0){
factoryDiscountValue = factoryDiscountValue.append("(实贴").append(solutionssVo.getActualDiscount()).append(")");
}
}
} else {
factoryDiscountValue = factoryDiscountValue.append("厂家贴息:").append("-");
}
@ -2073,6 +2128,11 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
StringBuilder otherDiscountValue = new StringBuilder();
if (StringUtils.isNotBlank(solutionssVo.getOtherDiscount())) {
otherDiscountValue = otherDiscountValue.append("其它融贴息:").append(solutionssVo.getOtherDiscount());
if(StringUtils.isNotBlank(solutionssVo.getOtherActualDiscount())){
if(new BigDecimal(solutionssVo.getOtherActualDiscount()).compareTo(BigDecimal.ZERO) != 0){
otherDiscountValue = otherDiscountValue.append("(实贴").append(solutionssVo.getOtherActualDiscount()).append(")");
}
}
} else {
otherDiscountValue = otherDiscountValue.append("其它融贴息:").append("-");
@ -2388,6 +2448,7 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
ResultBean<SolutionssVo> rb = ResultBean.fireFail();
SolutionssVo solutionssVo = new SolutionssVo();
BeanUtil.copyProperties(query, solutionssVo);
solutionssVo.setBusSid(query.getSaleOrderSid());
if (query.isShowMore()) {
if (query.isPremiumCb()) {
//保险
@ -2431,6 +2492,7 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
}
CalculateQuery calculateQuery = new CalculateQuery();
BeanUtil.copyProperties(query, calculateQuery);
calculateQuery.setSalesOrderSid(query.getSaleOrderSid());
ResultBean<CalculateVo> resultBean = calculate(calculateQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
@ -2439,6 +2501,7 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
BeanUtil.copyProperties(calculateVo, solutionssVo);
LoanFinPolicy loanFinPolicy = loanFinPolicyService.fetchBySid(query.getPolicySid());
if (loanFinPolicy != null) {
solutionssVo.setBondTypeKey(loanFinPolicy.getBondTypeKey());
String serviceChargeTypeKey = loanFinPolicy.getServiceAmountTypeKey();
BigDecimal serviceChargeTypeValue = loanFinPolicy.getServiceAmount();
solutionssVo.setServiceChargeTypeKey(serviceChargeTypeKey);
@ -2537,6 +2600,12 @@ public class LoanSolutionsService extends MybatisBaseService<LoanSolutionsMapper
if (loanSolutions != null) {
solutionssVo = new SolutionssVo();
BeanUtil.copyProperties(loanSolutions, solutionssVo);
if(StringUtils.isNotBlank(loanSolutions.getPolicySid())){
LoanFinPolicy loanFinPolicy = loanFinPolicyService.fetchBySid(loanSolutions.getPolicySid());
if(loanFinPolicy != null){
solutionssVo.setBondTypeKey(loanFinPolicy.getBondTypeKey());
}
}
if (loanSolutions.getTrailerAmount() != null) {
solutionssVo.setGcPrice(loanSolutions.getTrailerAmount().toString());
}

2
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loantemplate/LoanTemplateService.java

@ -207,6 +207,7 @@ public class LoanTemplateService extends MybatisBaseService<LoanTemplateMapper,
BeanUtil.copyProperties(loanTemplateSolutionsDto, solutionsDto, "sid");
solutionsDto.setBusSid(sid);
solutionsDto.setShowMore(true);
solutionsDto.setSaleOrderState(1);
ResultBean resultBean = loanSolutionsService.saveDtoss(solutionsDto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
@ -227,6 +228,7 @@ public class LoanTemplateService extends MybatisBaseService<LoanTemplateMapper,
BeanUtil.copyProperties(loanTemplateSolutionsDto, solutionsDto, "sid");
solutionsDto.setBusSid(sid);
solutionsDto.setShowMore(true);
solutionsDto.setSaleOrderState(1);
loanSolutionsService.saveDtoss(solutionsDto);
}
baseMapper.updateById(loanTemplate);

4
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanwarrantinformation/LoanWarrantInformationService.java

@ -69,6 +69,10 @@ public class LoanWarrantInformationService extends MybatisBaseService<LoanWarran
@Autowired
private FileUploadComponent fileUploadComponent;
public LoanWarrantInformation fetchByBusVinSid(String busVinSid) {
return baseMapper.fetchByBusVinSid(busVinSid);
}
public PagerVo<LoanWarrantInformationVo> listPage(PagerQuery<LoanWarrantInformationQuery> pq) {
IPage<LoanWarrantInformation> page = PagerUtil.queryToPage(pq);
LoanWarrantInformationQuery pagerQuery = pq.getParams();

3
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/solutions/AppSolutionQuery.java

@ -114,4 +114,7 @@ public class AppSolutionQuery implements Query {
private String offsetPurchasetax;
@ApiModelProperty("名义留购价")
private String nominalPrice;
private String saleOrderSid;
private String modelSid;
}

8
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/solutions/AppSolutionVo.java

@ -209,5 +209,13 @@ public class AppSolutionVo {
private String modelSid;
@ApiModelProperty("实际贴息")
private String actualDiscount;
@ApiModelProperty("其他融实际贴息")
private String otherActualDiscount;
@ApiModelProperty("保证金类型01固定,02敞口")
private String bondTypeKey;
}

8
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/solutions/AppSolutionsDetailsVo.java

@ -182,4 +182,12 @@ public class AppSolutionsDetailsVo implements Vo {
@ApiModelProperty("实际首付比例")
private String downPayAmountsRatio;
@ApiModelProperty("实际贴息")
private String actualDiscount;
@ApiModelProperty("其他融实际贴息")
private String otherActualDiscount;
@ApiModelProperty("保证金类型01固定,02敞口")
private String bondTypeKey;
}

5
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/solutions/AppSolutionssDto.java

@ -167,4 +167,9 @@ public class AppSolutionssDto implements Dto {
private String vehTotalPrice;
@ApiModelProperty("名义留购价")
private String nominalPrice;
@ApiModelProperty("实际贴息")
private String actualDiscount;
@ApiModelProperty("其他融实际贴息")
private String otherActualDiscount;
}

3
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/solutions/ExtraVo.java

@ -45,4 +45,7 @@ public class ExtraVo implements Vo {
private String nominalPrice;
@ApiModelProperty("单车意外险")
private String vehAccidentAmount;
@ApiModelProperty("保证金类型01固定,02敞口")
private String bondTypeKey;
}

Loading…
Cancel
Save