|
|
@@ -41,10 +41,8 @@ import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
|
|
|
import com.ydtech.modules.protocol.utils.AssertionUtils;
|
|
|
import com.ydtech.utils.CalculateUtils;
|
|
|
import com.ydtech.utils.StringUtils;
|
|
|
-import com.ydtech.utils.baidu.FileUtil;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.apache.bcel.generic.LSTORE;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
@@ -135,77 +133,71 @@ public class YangGuangOrderApiServiceImpl implements YangGuangOrderApiService {
|
|
|
yangGuangAccuracyCalculateRequest.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
|
|
|
YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponse = yangGuangRequestApiComponents.accuracyCalculaye(yangGuangAccuracyCalculateRequest);
|
|
|
// 如果发生重复投保 将返回的终保日期带入起保日期重新报价
|
|
|
- if (yangGuangAccuracyCalculateResponse.getErrorMessage().contains("重复投保")) {
|
|
|
- // 定义正则表达式来匹配终保日期的格式
|
|
|
- Pattern pattern = Pattern.compile("终保日期 (\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2})");
|
|
|
- Matcher matcher = pattern.matcher(yangGuangAccuracyCalculateResponse.getErrorMessage());
|
|
|
- if (matcher.find()) {
|
|
|
- // 获取响应中重复投保的终保日期
|
|
|
- String endDate = matcher.group(1);
|
|
|
- DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
|
|
|
- DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
-
|
|
|
- LocalDateTime dateTime = LocalDateTime.parse(endDate, inputFormatter);
|
|
|
- String newDateStr = dateTime.format(outputFormatter);
|
|
|
- YangGuangAccuracyCalculateRequest yangGuangAccuracyCalculateRequestRe = new YangGuangAccuracyCalculateRequest(quoteInfoVo, purchasePrice, carModelList1, riskList.get(0),newDateStr,ygConfigureParameters,quoteVo);
|
|
|
- yangGuangAccuracyCalculateRequestRe.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
|
|
|
- YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponseRe = yangGuangRequestApiComponents.accuracyCalculaye(yangGuangAccuracyCalculateRequestRe);
|
|
|
- if (insOrders.getProductid().equals("034001") || insOrders.getProductid().equals("0330034001") || insOrders.getProductid().equals("0330034002")) {
|
|
|
- if (yangGuangAccuracyCalculateResponseRe.getErrorCode().equals("0")) {
|
|
|
- YangGuangAccuracyCalculateResponse.itemcar itemcar = yangGuangAccuracyCalculateResponseRe.getItemcar();
|
|
|
- String actualValue = itemcar.getActualValue();
|
|
|
- YangGuangAccuracyCalculateRequest yangGuangAccuracyCalculateRequest1 = new YangGuangAccuracyCalculateRequest(quoteInfoVo, actualValue, carModelList1, riskList.get(0),newDateStr,ygConfigureParameters,quoteVo);
|
|
|
- yangGuangAccuracyCalculateRequest1.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
|
|
|
- YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponse1 = yangGuangRequestApiComponents.accuracyCalculaye(yangGuangAccuracyCalculateRequest1);
|
|
|
- boolean isEnergy = carInfo.isNewEnergy();
|
|
|
-
|
|
|
- if (!yangGuangAccuracyCalculateResponse1.getErrorCode().equals("0")) {
|
|
|
- InsOrders order = insOrdersService.getById(quoteInfoVo.getOrderNo());
|
|
|
- InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
|
|
|
- if (yangGuangAccuracyCalculateResponse1.getErrorMessage().contains("重复投保")) {
|
|
|
- insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
|
|
|
- }
|
|
|
- insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order, yangGuangAccuracyCalculateResponse1.getErrorMessage(),insOrderStatusEnum);
|
|
|
- throw new SystemException(yangGuangAccuracyCalculateResponse1.getErrorMessage());
|
|
|
- }
|
|
|
- // 处理数据
|
|
|
- QuoteRespVo quoteRespVo = getQuoteRespVo(yangGuangAccuracyCalculateResponse1, quoteInfoVo, quoteVo.getAccidentalDrivingVo(), isEnergy);
|
|
|
-
|
|
|
- // 设置核心报价车型
|
|
|
- quoteRespVo.setCoreModels(carModelList1.toCoreModelsVo());
|
|
|
- return responseOrder(yangGuangAccuracyCalculateResponse1, quoteRespVo, ptlAgreementAttribution, quoteInfoVo.getOrderNo(),
|
|
|
- quoteVo.getAccidentalDrivingVo());
|
|
|
- } else {
|
|
|
- InsOrders order = insOrdersService.getById(quoteInfoVo.getOrderNo());
|
|
|
- InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
|
|
|
- if (yangGuangAccuracyCalculateResponse.getErrorMessage().contains("重复投保")) {
|
|
|
- insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
|
|
|
- }
|
|
|
- insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order, yangGuangAccuracyCalculateResponse.getErrorMessage(),insOrderStatusEnum);
|
|
|
- throw new SystemException(yangGuangAccuracyCalculateResponse.getErrorMessage());
|
|
|
- }
|
|
|
- } else {
|
|
|
+ String endDate = extractEndDate(yangGuangAccuracyCalculateResponse);
|
|
|
+ if (endDate != null) {
|
|
|
+ DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
|
|
|
+ DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+
|
|
|
+ LocalDateTime dateTime = LocalDateTime.parse(endDate, inputFormatter);
|
|
|
+ String newDateStr = dateTime.format(outputFormatter);
|
|
|
+ YangGuangAccuracyCalculateRequest yangGuangAccuracyCalculateRequestRe = new YangGuangAccuracyCalculateRequest(quoteInfoVo, purchasePrice, carModelList1, riskList.get(0),newDateStr,ygConfigureParameters,quoteVo);
|
|
|
+ yangGuangAccuracyCalculateRequestRe.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
|
|
|
+ YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponseRe = yangGuangRequestApiComponents.accuracyCalculaye(yangGuangAccuracyCalculateRequestRe);
|
|
|
+ if (insOrders.getProductid().equals("034001") || insOrders.getProductid().equals("0330034001") || insOrders.getProductid().equals("0330034002")) {
|
|
|
+ if (yangGuangAccuracyCalculateResponseRe.getErrorCode().equals("0")) {
|
|
|
+ YangGuangAccuracyCalculateResponse.itemcar itemcar = yangGuangAccuracyCalculateResponseRe.getItemcar();
|
|
|
+ String actualValue = itemcar.getActualValue();
|
|
|
+ YangGuangAccuracyCalculateRequest yangGuangAccuracyCalculateRequest1 = new YangGuangAccuracyCalculateRequest(quoteInfoVo, actualValue, carModelList1, riskList.get(0),newDateStr,ygConfigureParameters,quoteVo);
|
|
|
+ yangGuangAccuracyCalculateRequest1.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
|
|
|
+ YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponse1 = yangGuangRequestApiComponents.accuracyCalculaye(yangGuangAccuracyCalculateRequest1);
|
|
|
boolean isEnergy = carInfo.isNewEnergy();
|
|
|
- if (!yangGuangAccuracyCalculateResponse.getErrorCode().equals("0")) {
|
|
|
- QuoteRespVo resp = new QuoteRespVo();
|
|
|
- InsOrders order = insOrdersService.getById(quoteInfoVo.getOrderNo());
|
|
|
- InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
|
|
|
- if (yangGuangAccuracyCalculateResponse.getErrorMessage().contains("重复投保")) {
|
|
|
+
|
|
|
+ if (!yangGuangAccuracyCalculateResponse1.getErrorCode().equals("0")) {
|
|
|
+ InsOrders order = insOrdersService.getById(quoteInfoVo.getOrderNo());
|
|
|
+ InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
|
|
|
+ if (yangGuangAccuracyCalculateResponse1.getErrorMessage().contains("重复投保")) {
|
|
|
insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
|
|
|
}
|
|
|
- insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order, yangGuangAccuracyCalculateResponse.getErrorMessage(),insOrderStatusEnum);
|
|
|
- throw new SystemException(yangGuangAccuracyCalculateResponse.getErrorMessage());
|
|
|
+ insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order, yangGuangAccuracyCalculateResponse1.getErrorMessage(),insOrderStatusEnum);
|
|
|
+ throw new SystemException(yangGuangAccuracyCalculateResponse1.getErrorMessage());
|
|
|
}
|
|
|
// 处理数据
|
|
|
- QuoteRespVo quoteRespVo = getQuoteRespVo(yangGuangAccuracyCalculateResponse, quoteInfoVo, quoteVo.getAccidentalDrivingVo(), isEnergy);
|
|
|
+ QuoteRespVo quoteRespVo = getQuoteRespVo(yangGuangAccuracyCalculateResponse1, quoteInfoVo, quoteVo.getAccidentalDrivingVo(), isEnergy);
|
|
|
|
|
|
// 设置核心报价车型
|
|
|
quoteRespVo.setCoreModels(carModelList1.toCoreModelsVo());
|
|
|
- return responseOrder(yangGuangAccuracyCalculateResponse, quoteRespVo, ptlAgreementAttribution, quoteInfoVo.getOrderNo(),
|
|
|
+ return responseOrder(yangGuangAccuracyCalculateResponse1, quoteRespVo, ptlAgreementAttribution, quoteInfoVo.getOrderNo(),
|
|
|
quoteVo.getAccidentalDrivingVo());
|
|
|
+ } else {
|
|
|
+ InsOrders order = insOrdersService.getById(quoteInfoVo.getOrderNo());
|
|
|
+ InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
|
|
|
+ if (yangGuangAccuracyCalculateResponse.getErrorMessage().contains("重复投保")) {
|
|
|
+ insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
|
|
|
+ }
|
|
|
+ insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order, yangGuangAccuracyCalculateResponse.getErrorMessage(),insOrderStatusEnum);
|
|
|
+ throw new SystemException(yangGuangAccuracyCalculateResponse.getErrorMessage());
|
|
|
}
|
|
|
+ } else {
|
|
|
+ boolean isEnergy = carInfo.isNewEnergy();
|
|
|
+ if (!yangGuangAccuracyCalculateResponseRe.getErrorCode().equals("0")) {
|
|
|
+ InsOrders order = insOrdersService.getById(quoteInfoVo.getOrderNo());
|
|
|
+ InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
|
|
|
+ if (yangGuangAccuracyCalculateResponseRe.getErrorMessage().contains("重复投保")) {
|
|
|
+ insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
|
|
|
+ }
|
|
|
+ insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order, yangGuangAccuracyCalculateResponseRe.getErrorMessage(),insOrderStatusEnum);
|
|
|
+ throw new SystemException(yangGuangAccuracyCalculateResponseRe.getErrorMessage());
|
|
|
+ }
|
|
|
+ // 处理数据
|
|
|
+ QuoteRespVo quoteRespVo = getQuoteRespVo(yangGuangAccuracyCalculateResponseRe, quoteInfoVo, quoteVo.getAccidentalDrivingVo(), isEnergy);
|
|
|
+
|
|
|
+ // 设置核心报价车型
|
|
|
+ quoteRespVo.setCoreModels(carModelList1.toCoreModelsVo());
|
|
|
+ return responseOrder(yangGuangAccuracyCalculateResponseRe, quoteRespVo, ptlAgreementAttribution, quoteInfoVo.getOrderNo(),
|
|
|
+ quoteVo.getAccidentalDrivingVo());
|
|
|
}
|
|
|
}
|
|
|
+ // 单商 交三 交商 需要获取车辆actualValue 进行二次报价
|
|
|
if (insOrders.getProductid().equals("034001") || insOrders.getProductid().equals("0330034001") || insOrders.getProductid().equals("0330034002")) {
|
|
|
if (yangGuangAccuracyCalculateResponse.getErrorCode().equals("0")) {
|
|
|
YangGuangAccuracyCalculateResponse.itemcar itemcar = yangGuangAccuracyCalculateResponse.getItemcar();
|
|
|
@@ -740,6 +732,7 @@ public class YangGuangOrderApiServiceImpl implements YangGuangOrderApiService {
|
|
|
quoteRespVo.setSyScore(discount.getMarkingnobcBI() != null ? discount.getMarkingnobcBI() : "");
|
|
|
quoteRespVo.setJqLossRation(Double.parseDouble(discount.getFinalmarkingnoCi() != null ? discount.getFinalmarkingnoCi() : "0.00"));
|
|
|
quoteRespVo.setSyLossRation(Double.parseDouble(discount.getFinalmarkingnoBi() != null ? discount.getFinalmarkingnoBi() : "0.00"));
|
|
|
+ quoteRespVo.setMergeCostRate(Double.parseDouble(yangGuangAccuracyCalculateResponse.getVascostmarginbc() != null ?yangGuangAccuracyCalculateResponse.getVascostmarginbc() : "0.00"));
|
|
|
}
|
|
|
|
|
|
List<QuoteKindRespVo> kindList1 = new ArrayList<>();
|
|
|
@@ -841,4 +834,21 @@ public class YangGuangOrderApiServiceImpl implements YangGuangOrderApiService {
|
|
|
quoteRespVo.setCompanyId(insAreaCompany.getId());
|
|
|
return HttpResult.ok("报价成功", quoteRespVo);
|
|
|
}
|
|
|
+
|
|
|
+ // 提取从响应中获取终保日期的逻辑为方法
|
|
|
+ private String extractEndDate(YangGuangAccuracyCalculateResponse response) {
|
|
|
+ String targetText = response.getErrorMessage();
|
|
|
+ if (!targetText.contains("重复投保")) {
|
|
|
+ targetText = response.getRemarkCi();
|
|
|
+ if (!targetText.contains("重复投保")) {
|
|
|
+ targetText = response.getRemarkBi();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Pattern pattern = Pattern.compile("终保日期 (\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2})");
|
|
|
+ Matcher matcher = pattern.matcher(targetText);
|
|
|
+ if (matcher.find()) {
|
|
|
+ return matcher.group(1);
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
}
|