|
|
@@ -12,6 +12,7 @@ import com.jzg.quotation.commons.annotation.QuoteCrawlerService;
|
|
|
import com.jzg.quotation.commons.constant.InsuranceCode;
|
|
|
import com.jzg.quotation.commons.filter.CarModelsFilterUtils;
|
|
|
import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
|
|
|
+import com.jzg.quotation.commons.utils.TimeProcessing;
|
|
|
import com.jzg.quotation.dajia.crawler.build.DaJiaCrawlerQuoteResultsVoBuild;
|
|
|
import com.jzg.quotation.dajia.crawler.component.BuildingAttributionInformation;
|
|
|
import com.jzg.quotation.dajia.crawler.component.DaJiaCrawlerCacheComponent;
|
|
|
@@ -20,6 +21,8 @@ import com.jzg.quotation.dajia.crawler.constant.enums.DaJiaCrawlerOrderState;
|
|
|
import com.jzg.quotation.dajia.crawler.entity.DaJiaCrawlerConfigureParameters;
|
|
|
import com.jzg.quotation.dajia.crawler.entity.po.DaJiaCrawlerOrder;
|
|
|
import com.jzg.quotation.dajia.crawler.entity.request.*;
|
|
|
+import com.jzg.quotation.dajia.crawler.entity.request.quote.BusinessInsuranceDTO;
|
|
|
+import com.jzg.quotation.dajia.crawler.entity.request.quote.CompulsoryInsuranceDTO;
|
|
|
import com.jzg.quotation.dajia.crawler.entity.request.quote.ProposalInfoDTO;
|
|
|
import com.jzg.quotation.dajia.crawler.entity.response.*;
|
|
|
import com.jzg.quotation.dajia.crawler.service.DaJiaCrawlerOrderService;
|
|
|
@@ -32,6 +35,8 @@ import org.springframework.util.StringUtils;
|
|
|
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.regex.Matcher;
|
|
|
+import java.util.regex.Pattern;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
@@ -123,7 +128,19 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
|
|
|
// 3.0 保费计算
|
|
|
DaJiaCrawlerPriceRequest daJiaCrawlerPriceRequest = new DaJiaCrawlerPriceRequest(quoteVo, listDTO, daJiaCrawlerActualValueResponse, proposalInfoDTO, userCode, daJiaCrawlerCarResponse.getChannelOrderNo());
|
|
|
DaJiaCrawlerPriceResponse crawlerPriceResponse = daJiaCrawlerRequestComponent.price(daJiaCrawlerPriceRequest, headers);
|
|
|
-
|
|
|
+ // 处理重复投保
|
|
|
+ String message = crawlerPriceResponse.getIncreasedValueMsg();
|
|
|
+ if (message.contains("重复投保")) {
|
|
|
+ String startTime = extractDuplicateEndTime(message);
|
|
|
+ String endTime = TimeProcessing.minusOneSecondAfterYear(startTime);;
|
|
|
+ CompulsoryInsuranceDTO compulsoryInsuranceDTO = daJiaCrawlerPriceRequest.getCompulsoryInsurance();
|
|
|
+ BusinessInsuranceDTO businessInsuranceDTO = daJiaCrawlerPriceRequest.getBusinessInsurance();
|
|
|
+ compulsoryInsuranceDTO.getProductInfo().setStartDate(startTime);
|
|
|
+ compulsoryInsuranceDTO.getProductInfo().setEndDate(endTime);
|
|
|
+ businessInsuranceDTO.getProductInfo().setStartDate(startTime);
|
|
|
+ businessInsuranceDTO.getProductInfo().setEndDate(endTime);
|
|
|
+ crawlerPriceResponse = daJiaCrawlerRequestComponent.price(daJiaCrawlerPriceRequest, headers);
|
|
|
+ }
|
|
|
// 3.1 保存订单到保险公司系统
|
|
|
DaJiaCrawlerSaveRequest daJiaCrawlerSaveRequest = new DaJiaCrawlerSaveRequest(crawlerPriceResponse, userCode, quoteVo);
|
|
|
DaJiaCrawlerSaveResponse daJiaCrawlerSaveResponse = daJiaCrawlerRequestComponent.save(daJiaCrawlerSaveRequest, headers);
|
|
|
@@ -140,6 +157,24 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
|
|
|
return DaJiaCrawlerQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo.getOrder().getOrdersNo(), quoteVo, daJiaCrawlerSaveResponse);
|
|
|
}
|
|
|
|
|
|
+ // 截取重复投保终保日期
|
|
|
+ private static final Pattern DUPLICATE_END_TIME_PATTERN = Pattern.compile("终保日期 (\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2})");
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 提取系统自动分配的起保时间
|
|
|
+ * @param returnMessage 核心提示
|
|
|
+ * @return 提取到的时间字符串,未提取到返回 null
|
|
|
+ */
|
|
|
+ private String extractDuplicateEndTime(String returnMessage) {
|
|
|
+ Matcher matcher = DUPLICATE_END_TIME_PATTERN.matcher(returnMessage);
|
|
|
+ if (matcher.find()) {
|
|
|
+ String shortEndTime = matcher.group(1);
|
|
|
+ return shortEndTime + ":00";
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 订单核保处理
|
|
|
*
|