|
|
@@ -1,7 +1,9 @@
|
|
|
package com.jzg.quotation.bohai.api.service.impl;
|
|
|
|
|
|
-import com.jzg.commons.entity.quote.vo.AccidentalDrivingVo;
|
|
|
+import com.jzg.commons.constants.InsuranceRisk;
|
|
|
+import com.jzg.commons.entity.quote.vo.*;
|
|
|
import com.jzg.commons.exception.SystemException;
|
|
|
+import com.jzg.commons.util.StringUtils;
|
|
|
import com.jzg.quotation.bohai.api.entity.request.*;
|
|
|
import com.jzg.quotation.bohai.api.entity.response.*;
|
|
|
import com.jzg.quotation.bohai.api.service.BoHaiApiOrderService;
|
|
|
@@ -9,9 +11,6 @@ import com.jzg.quotation.bohai.api.service.BoHaiApiRequest;
|
|
|
import com.jzg.quotation.commons.constant.InsuranceCode;
|
|
|
import com.jzg.quotation.commons.entity.vo.aggregated.*;
|
|
|
import com.jzg.quotation.commons.entity.vo.base.OrderBase;
|
|
|
-import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
|
|
|
-import com.jzg.commons.entity.quote.vo.CarInfoVo;
|
|
|
-import com.jzg.commons.entity.quote.vo.CustomerInfoVo;
|
|
|
import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
|
|
|
import com.jzg.quotation.bohai.api.build.BoHaiApiQuoteResultsVoBuild;
|
|
|
import com.jzg.quotation.bohai.api.component.BoHaiRequestApiComponent;
|
|
|
@@ -21,13 +20,14 @@ import com.jzg.quotation.bohai.api.entity.vo.BoHaiQuoteAccidentVo;
|
|
|
import com.jzg.quotation.bohai.api.entity.vo.PersonAreaVo;
|
|
|
import com.jzg.quotation.bohai.api.entity.BoHaiConfigureParameters;
|
|
|
import com.jzg.quotation.bohai.api.util.StringSubStringUtils;
|
|
|
+import com.jzg.quotation.commons.utils.DateUtil;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @description:
|
|
|
@@ -41,8 +41,62 @@ public class BoHaiApiRequestImpl implements BoHaiApiRequest {
|
|
|
private final BoHaiApiOrderService boHaiApiOrderService;
|
|
|
|
|
|
private final BoHaiRequestApiComponent boHaiRequestApiComponent;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 重复报价
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private QuotationResponse repeatQuote(QuotationRequest quotationRequest,String sysSourceCode,List<KindInfoVo> kindList,QuotationResponse quotationResponse) throws Exception {
|
|
|
+ quotationResponse = boHaiRequestApiComponent.quotation(quotationRequest, sysSourceCode);
|
|
|
+
|
|
|
+ List<KindInfoVo> collect =
|
|
|
+ kindList.stream().filter(x -> InsuranceRisk.BUSINESS.getCode().equals(x.getKindCode())).toList();
|
|
|
+ if (!collect.isEmpty()) {
|
|
|
+ if (ResponseCode.R_Z00001.getCode().equals(quotationResponse.getResponseCode()) && quotationResponse.getData().getBusinessPolicy().getErrorMsg() != null) {
|
|
|
+ String errorMsg = quotationResponse.getData().getBusinessPolicy().getErrorMsg();
|
|
|
+ if (errorMsg.contains("重复投保")) {
|
|
|
+ //重新给商业险的开始和结束时间赋值赋值重新填报
|
|
|
+ String businessPolicyEndDateStr = StringSubStringUtils.subjectStringContentByBusinessPolicyEndDate(errorMsg, "终保日期:");
|
|
|
+ if (!StringUtils.isEmpty(businessPolicyEndDateStr) && !StringUtils.isEmpty((businessPolicyEndDateStr))) {
|
|
|
+ //结束投保日期为开始日期,结束日期为结束投保日期后一年的日期
|
|
|
+ businessPolicyEndDateStr = businessPolicyEndDateStr + "00";
|
|
|
+ String beginDateStr = DateUtil.strAllToDateToStr(businessPolicyEndDateStr, "yyyyMMddHHmmss", "yyyy-MM-dd HH:mm:ss");
|
|
|
+ // 结束日期为59:59:59
|
|
|
+ String endDateStr = DateUtil.getNextYearDateStrTranfer(businessPolicyEndDateStr);
|
|
|
+ QuotationRequest.BusinessPolicyDTO businessPolicy = quotationRequest.getBusinessPolicy();
|
|
|
+ businessPolicy.setStartDate(beginDateStr);
|
|
|
+ businessPolicy.setEndDate(endDateStr);
|
|
|
+ quotationRequest.setBusinessPolicy(businessPolicy);
|
|
|
+ quotationResponse = repeatQuote(quotationRequest, sysSourceCode, kindList,quotationResponse);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ResponseCode.R_Z00004.getCode().equals(quotationResponse.getResponseCode())) {
|
|
|
+ String responseMsg = quotationResponse.getResponseMsg();
|
|
|
+ if (responseMsg.contains("发生重复投保")) {
|
|
|
+ //交强重复投保
|
|
|
+ String trafficPolicyDTOBenginDateStr = StringSubStringUtils.subjectStringContentByTrafficPolicyDTOBenginDate(responseMsg,
|
|
|
+ ":", "起保日期");
|
|
|
+ String trafficPolicyDTOEndDateStr = StringSubStringUtils.subjectStringContentByTrafficPolicyDTOBenginDate(responseMsg,
|
|
|
+ ":", "终保日期");
|
|
|
+ if (!StringUtils.isEmpty(trafficPolicyDTOBenginDateStr) && !StringUtils.isEmpty(trafficPolicyDTOEndDateStr)) {
|
|
|
+ //结束投保日期为开始日期,结束日期为结束投保日期后一年的日期
|
|
|
+ trafficPolicyDTOEndDateStr = trafficPolicyDTOEndDateStr + ":00";
|
|
|
+ // 结束日期为59:59:59
|
|
|
+ String endDateStr = DateUtil.getNextYearDateStr(trafficPolicyDTOEndDateStr);
|
|
|
+ QuotationRequest.TrafficPolicyDTO trafficPolicy = quotationRequest.getTrafficPolicy();
|
|
|
+ trafficPolicy.setStartDate(trafficPolicyDTOEndDateStr);
|
|
|
+ trafficPolicy.setEndDate(endDateStr);
|
|
|
+ quotationRequest.setTrafficPolicy(trafficPolicy);
|
|
|
+ quotationResponse = repeatQuote(quotationRequest, sysSourceCode, kindList,quotationResponse);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return quotationResponse;
|
|
|
+ }
|
|
|
@Override
|
|
|
- public QuoteResultsVo quote(QuoteVo quoteVo) {
|
|
|
+ public QuoteResultsVo quote(QuoteVo quoteVo) throws Exception {
|
|
|
OrderBase order = quoteVo.getOrder();
|
|
|
AttributionInformationVo attributionInformationVo = order.getAttributionInformationVo();
|
|
|
//配置信息
|
|
|
@@ -99,12 +153,12 @@ public class BoHaiApiRequestImpl implements BoHaiApiRequest {
|
|
|
QuotationRequest quotationRequest = new QuotationRequest(parameters, quoteVo, currentValue, orderNo, accidentVos, discount);
|
|
|
|
|
|
//报价接口调用
|
|
|
- QuotationResponse quotationResponse;
|
|
|
- try {
|
|
|
- quotationResponse = boHaiRequestApiComponent.quotation(quotationRequest, parameters.getSysSourceCode());
|
|
|
- } catch (Exception e) {
|
|
|
- throw new SystemException(e.getMessage());
|
|
|
+ QuotationResponse quotationResponse = repeatQuote(quotationRequest,parameters.getSysSourceCode(),quoteVo.getKindInfoVo(),null);
|
|
|
+ //处理报价失败
|
|
|
+ if(!ResponseCode.R_Z00001.getCode().equals(quotationResponse.getResponseCode())) {
|
|
|
+ return BoHaiApiQuoteResultsVoBuild.buildQuoteFailResultsVo(quotationResponse);
|
|
|
}
|
|
|
+ boHaiApiOrderService.save(quoteVo, quotationResponse, generateOrderNoResponse);
|
|
|
return BoHaiApiQuoteResultsVoBuild.buildQuoteResultsVo(order.getOrdersNo(), quoteVo, quotationResponse);
|
|
|
}
|
|
|
|
|
|
@@ -119,9 +173,9 @@ public class BoHaiApiRequestImpl implements BoHaiApiRequest {
|
|
|
UnderwritingRequest underwritingRequest = new UnderwritingRequest(parameters, apiOrder.getOrderNo());
|
|
|
UnderwritingResponse underwritingResponse;
|
|
|
UnderwritingResultsVo underwritingResultsVo = new UnderwritingResultsVo();
|
|
|
-
|
|
|
try {
|
|
|
underwritingResponse = boHaiRequestApiComponent.underwriting(underwritingRequest, parameters.getSysSourceCode());
|
|
|
+
|
|
|
} catch (Exception e) {
|
|
|
throw new SystemException(e.getMessage());
|
|
|
}
|