|
|
@@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
|
+import com.mchange.lang.DoubleUtils;
|
|
|
import com.ydtech.constants.enums.InsuranceOrderPdf;
|
|
|
import com.ydtech.constants.enums.InsuranceRisk;
|
|
|
import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
|
|
|
@@ -15,6 +16,7 @@ import com.ydtech.core.page.HttpResult;
|
|
|
import com.ydtech.exception.SystemException;
|
|
|
import com.ydtech.modules.admin.model.vo.PersonAreaVo;
|
|
|
import com.ydtech.modules.admin.service.SysAreaService;
|
|
|
+import com.ydtech.modules.admin.service.SysSwitchConfigService;
|
|
|
import com.ydtech.modules.ins.model.vo.*;
|
|
|
import com.ydtech.modules.order.components.ConfigureParametersComponents;
|
|
|
import com.ydtech.modules.order.components.InsImagesUploadCacheComponents;
|
|
|
@@ -75,6 +77,9 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
@Autowired
|
|
|
private InsOrdersService insOrdersService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private SysSwitchConfigService switchConfigService;
|
|
|
+
|
|
|
@Autowired
|
|
|
private InsAreaCompanyService insAreaCompanyService;
|
|
|
|
|
|
@@ -136,7 +141,7 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
/** 4. 报价 */
|
|
|
InsurePremiumRequest insurePremiumRequest = new InsurePremiumRequest(quoteInfoVo,carModelListDTO, carActualValueResponse,parameters,quoteVo);
|
|
|
// 重复报价
|
|
|
- InsurePremiumResponse insurePremiumResponse = this.getResponse(insurePremiumRequest, httpHeaders,quoteInfoVo, quoteVo.getCompanyId(),maxQuoteNum,sysQuoteRecords);
|
|
|
+ InsurePremiumResponse insurePremiumResponse = this.getResponse(insurePremiumRequest, httpHeaders,quoteInfoVo, quoteVo,maxQuoteNum,sysQuoteRecords);
|
|
|
|
|
|
String message = "";
|
|
|
if(!ResponseCode.R_000.getCode().equals(insurePremiumResponse.getCode())){
|
|
|
@@ -202,14 +207,14 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
* @return
|
|
|
*/
|
|
|
private InsurePremiumResponse getResponse(InsurePremiumRequest insurePremiumRequest, HttpHeaders httpHeaders,BaseQuoteInfoVo quoteInfoVo,
|
|
|
- String companyId,Integer maxQuoteNum,List<SysQuoteRecord> sysQuoteRecords) throws Exception {
|
|
|
+ BaseQuoteVo<InsDrivingIntentionInsurance> quoteVo ,Integer maxQuoteNum,List<SysQuoteRecord> sysQuoteRecords) throws Exception {
|
|
|
|
|
|
InsurePremiumResponse insurePremiumResponse = chengTaiRequestApiComponents.quoteApi(insurePremiumRequest,httpHeaders);
|
|
|
maxQuoteNum--;
|
|
|
if(!ResponseCode.R_000.getCode().equals(insurePremiumResponse.getCode()) && insurePremiumResponse.getMessage().contains("重复投保")){
|
|
|
// 交强险 商业险 重复投保处理
|
|
|
this.repetitionInsure(insurePremiumResponse,insurePremiumRequest);
|
|
|
- SysQuoteRecord sysQuoteRecord = new SysQuoteRecord(quoteInfoVo.getUserid(),companyId,quoteInfoVo.getCarInfo().getLicenseNo(),
|
|
|
+ SysQuoteRecord sysQuoteRecord = new SysQuoteRecord(quoteInfoVo.getUserid(),quoteVo.getCompanyId(),quoteInfoVo.getCarInfo().getLicenseNo(),
|
|
|
QuoteNumberConstant.QuoteAction.DATE_DEAL.getCode().toString(),QuoteNumberConstant.QuoteResult.FAIL.getCode().toString());
|
|
|
sysQuoteRecords.add(sysQuoteRecord);
|
|
|
if(maxQuoteNum <= 0){
|
|
|
@@ -221,10 +226,12 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
// 转保车处理
|
|
|
InsurePremiumResponse.BiContractDTO biContract = insurePremiumResponse.getBiContract();
|
|
|
InsurePremiumResponse.CiContractDTO ciContract = insurePremiumResponse.getCiContract();
|
|
|
+
|
|
|
Double biTotalPremium = null;
|
|
|
Double ciTotalPremium = null;
|
|
|
Boolean biBoo = false;
|
|
|
Boolean ciBoo = false;
|
|
|
+ Boolean biDiscountBoo = false;
|
|
|
if(Objects.nonNull(biContract)){
|
|
|
biTotalPremium = biContract.getContractMain().getTotalPremium();
|
|
|
if(Objects.isNull(biTotalPremium)){
|
|
|
@@ -237,6 +244,25 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
ciBoo = true;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if(switchConfigService.ctDiscountSwitches()){ //是否自动计算折扣
|
|
|
+ String EntireInitialDiscountStr = biContract.getDiscountInfo().getEntireInitialDiscount();
|
|
|
+ String hopeDiscountStr = biContract.getContractMain().getHopeDiscount();
|
|
|
+// String hopeCoefficientStr = biContract.getContractMain().getHopeCoefficient();
|
|
|
+ if(StringUtils.isNotBlank(hopeDiscountStr) && StringUtils.isNotBlank(EntireInitialDiscountStr)){
|
|
|
+ // 获取商业险的初始建议折扣 和 期望折扣
|
|
|
+ Double entireInitialDiscount = Double.parseDouble(EntireInitialDiscountStr); //初始建议折扣
|
|
|
+ Double hopeDiscount = Double.parseDouble(hopeDiscountStr); // 期望折扣
|
|
|
+ if(entireInitialDiscount > hopeDiscount){
|
|
|
+ biDiscountBoo = true;
|
|
|
+ }
|
|
|
+ if(biDiscountBoo){
|
|
|
+ this.replaceDiscount(insurePremiumRequest,entireInitialDiscount);
|
|
|
+ insurePremiumResponse = chengTaiRequestApiComponents.quoteApi(insurePremiumRequest,httpHeaders);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (biBoo || ciBoo) {
|
|
|
this.platRepetition(biContract,ciContract,insurePremiumRequest);
|
|
|
insurePremiumResponse = chengTaiRequestApiComponents.quoteApi(insurePremiumRequest,httpHeaders);
|
|
|
@@ -249,6 +275,14 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
return insurePremiumResponse;
|
|
|
}
|
|
|
|
|
|
+ private void replaceDiscount(InsurePremiumRequest insurePremiumRequest, Double entireInitialDiscount) {
|
|
|
+ InsurePremiumRequest.BiContractDTO biContractReq = insurePremiumRequest.getBiContract();
|
|
|
+ if(Objects.nonNull(biContractReq)){
|
|
|
+ InsurePremiumRequest.BiContractDTO.ContractMainDTO mainDTO = biContractReq.getContractMain();
|
|
|
+ mainDTO.setHopeDiscount(entireInitialDiscount);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 错误字符替换
|
|
|
* @param insurePremiumRequest
|
|
|
@@ -468,6 +502,12 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
if(Objects.nonNull(insurePremiumResponse.getBiContract())){
|
|
|
InsurePremiumResponse.BiContractDTO.ContractMainDTO biContractMain = insurePremiumResponse.getBiContract().getContractMain();
|
|
|
syPremium = biContractMain.getTotalPremium();
|
|
|
+ String hopeDiscount = biContractMain.getHopeDiscount();
|
|
|
+ String hopeCoefficient = biContractMain.getHopeCoefficient();
|
|
|
+ String entireInitialDiscount = insurePremiumResponse.getBiContract().getDiscountInfo().getEntireInitialDiscount();
|
|
|
+ quoteRespVo.setInitialProposalDiscount(entireInitialDiscount);
|
|
|
+ quoteRespVo.setExpectedDiscount(hopeDiscount);
|
|
|
+ quoteRespVo.setPricingCoefficient(hopeCoefficient);
|
|
|
quoteRespVo.setStartDateSy(biContractMain.getValidDate());
|
|
|
quoteRespVo.setEndDateSy(biContractMain.getExpiryDate());
|
|
|
}
|
|
|
@@ -982,7 +1022,7 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
String jqPath = getPdfUrl(insAreaCompany, insOrders,InsuranceRisk.TRAFFIC_CODE,PolicyPrintVo.PolicyPrintType.PPT_2.getCode(),insAreaCompany.getJqpolicyno(),flag);
|
|
|
String syPath = getPdfUrl(insAreaCompany,insOrders,InsuranceRisk.BUSINESS_CODE,PolicyPrintVo.PolicyPrintType.PPT_2.getCode(), insAreaCompany.getSypolicyno(),flag);
|
|
|
String jyPath = getPdfUrl(insAreaCompany,insOrders,InsuranceRisk.ACCIDENT_CODE,PolicyPrintVo.PolicyPrintType.PPT_2.getCode(), jypolicyno,flag);
|
|
|
- InsAreaCompanyExternalPolicy insAreaCompanyExternalPolicy =new InsAreaCompanyExternalPolicy(insAreaCompany.getId(),jqPath,syPath,jyPath,null);
|
|
|
+ InsAreaCompanyExternalPolicy insAreaCompanyExternalPolicy = new InsAreaCompanyExternalPolicy(insAreaCompany.getId(),jqPath,syPath,jyPath,null);
|
|
|
return new ReadPdfUrlListDto(insAreaCompanyExternalPolicy,insAreaCompany,null);
|
|
|
}
|
|
|
|