|
@@ -50,10 +50,13 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
import java.util.Objects;
|
|
|
|
|
+import java.util.regex.Matcher;
|
|
|
|
|
+import java.util.regex.Pattern;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@Service
|
|
@Service
|
|
@@ -130,6 +133,78 @@ public class YangGuangOrderApiServiceImpl implements YangGuangOrderApiService {
|
|
|
YangGuangAccuracyCalculateRequest yangGuangAccuracyCalculateRequest = new YangGuangAccuracyCalculateRequest(quoteInfoVo, purchasePrice, carModelList1, riskList.get(0),startDate,ygConfigureParameters,quoteVo);
|
|
YangGuangAccuracyCalculateRequest yangGuangAccuracyCalculateRequest = new YangGuangAccuracyCalculateRequest(quoteInfoVo, purchasePrice, carModelList1, riskList.get(0),startDate,ygConfigureParameters,quoteVo);
|
|
|
yangGuangAccuracyCalculateRequest.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
|
|
yangGuangAccuracyCalculateRequest.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
|
|
|
YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponse = yangGuangRequestApiComponents.accuracyCalculaye(yangGuangAccuracyCalculateRequest);
|
|
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 {
|
|
|
|
|
+ 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("重复投保")) {
|
|
|
|
|
+ insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
|
|
|
|
|
+ }
|
|
|
|
|
+ insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order, yangGuangAccuracyCalculateResponse.getErrorMessage(),insOrderStatusEnum);
|
|
|
|
|
+ throw new SystemException(yangGuangAccuracyCalculateResponse.getErrorMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ // 处理数据
|
|
|
|
|
+ QuoteRespVo quoteRespVo = getQuoteRespVo(yangGuangAccuracyCalculateResponse, quoteInfoVo, quoteVo.getAccidentalDrivingVo(), isEnergy);
|
|
|
|
|
+
|
|
|
|
|
+ // 设置核心报价车型
|
|
|
|
|
+ quoteRespVo.setCoreModels(carModelList1.toCoreModelsVo());
|
|
|
|
|
+ return responseOrder(yangGuangAccuracyCalculateResponse, quoteRespVo, ptlAgreementAttribution, quoteInfoVo.getOrderNo(),
|
|
|
|
|
+ quoteVo.getAccidentalDrivingVo());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
if (insOrders.getProductid().equals("034001") || insOrders.getProductid().equals("0330034001") || insOrders.getProductid().equals("0330034002")) {
|
|
if (insOrders.getProductid().equals("034001") || insOrders.getProductid().equals("0330034001") || insOrders.getProductid().equals("0330034002")) {
|
|
|
if (yangGuangAccuracyCalculateResponse.getErrorCode().equals("0")) {
|
|
if (yangGuangAccuracyCalculateResponse.getErrorCode().equals("0")) {
|
|
|
YangGuangAccuracyCalculateResponse.itemcar itemcar = yangGuangAccuracyCalculateResponse.getItemcar();
|
|
YangGuangAccuracyCalculateResponse.itemcar itemcar = yangGuangAccuracyCalculateResponse.getItemcar();
|