|
@@ -1,13 +1,13 @@
|
|
|
package com.jzg.quotation.dajia.crawler.service.impl;
|
|
package com.jzg.quotation.dajia.crawler.service.impl;
|
|
|
|
|
|
|
|
|
|
|
|
|
-import com.jzg.commons.constants.dict.InsOrderStatusEnum;
|
|
|
|
|
|
|
+import com.alibaba.fastjson2.JSONObject;
|
|
|
import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
|
|
import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
|
|
|
import com.jzg.commons.entity.quote.vo.QuoteVo;
|
|
import com.jzg.commons.entity.quote.vo.QuoteVo;
|
|
|
import com.jzg.commons.entity.quote.vo.aggregated.*;
|
|
import com.jzg.commons.entity.quote.vo.aggregated.*;
|
|
|
import com.jzg.commons.entity.quote.vo.base.LoginBase;
|
|
import com.jzg.commons.entity.quote.vo.base.LoginBase;
|
|
|
import com.jzg.commons.entity.quote.vo.image.InsuranceImageVo;
|
|
import com.jzg.commons.entity.quote.vo.image.InsuranceImageVo;
|
|
|
-import com.jzg.commons.util.MinioUtils;
|
|
|
|
|
|
|
+import com.jzg.commons.exception.SystemException;
|
|
|
import com.jzg.quotation.commons.annotation.QuoteCrawlerService;
|
|
import com.jzg.quotation.commons.annotation.QuoteCrawlerService;
|
|
|
import com.jzg.quotation.commons.constant.InsuranceCode;
|
|
import com.jzg.quotation.commons.constant.InsuranceCode;
|
|
|
import com.jzg.quotation.commons.filter.CarModelsFilterUtils;
|
|
import com.jzg.quotation.commons.filter.CarModelsFilterUtils;
|
|
@@ -18,7 +18,6 @@ import com.jzg.quotation.dajia.crawler.build.DajiaCrawlerAuditResultsVoBuild;
|
|
|
import com.jzg.quotation.dajia.crawler.component.BuildingAttributionInformation;
|
|
import com.jzg.quotation.dajia.crawler.component.BuildingAttributionInformation;
|
|
|
import com.jzg.quotation.dajia.crawler.component.DaJiaCrawlerCacheComponent;
|
|
import com.jzg.quotation.dajia.crawler.component.DaJiaCrawlerCacheComponent;
|
|
|
import com.jzg.quotation.dajia.crawler.component.DaJiaCrawlerRequestComponent;
|
|
import com.jzg.quotation.dajia.crawler.component.DaJiaCrawlerRequestComponent;
|
|
|
-import com.jzg.quotation.dajia.crawler.constant.enums.DaJiaCrawlerOrderState;
|
|
|
|
|
import com.jzg.quotation.dajia.crawler.entity.DaJiaCrawlerConfigureParameters;
|
|
import com.jzg.quotation.dajia.crawler.entity.DaJiaCrawlerConfigureParameters;
|
|
|
import com.jzg.quotation.dajia.crawler.entity.po.DaJiaCrawlerOrder;
|
|
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.*;
|
|
@@ -31,6 +30,8 @@ import com.jzg.quotation.dajia.crawler.service.DaJiaCrawlerQuoteProcessService;
|
|
|
import com.jzg.quotation.dajia.crawler.service.DaJiaCrawlerRequest;
|
|
import com.jzg.quotation.dajia.crawler.service.DaJiaCrawlerRequest;
|
|
|
import com.jzg.quotation.dajia.crawler.utils.ImagesEncrypt;
|
|
import com.jzg.quotation.dajia.crawler.utils.ImagesEncrypt;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
+import lombok.extern.log4j.Log4j2;
|
|
|
|
|
+import org.redisson.api.RedissonClient;
|
|
|
import org.springframework.http.HttpHeaders;
|
|
import org.springframework.http.HttpHeaders;
|
|
|
import org.springframework.util.StringUtils;
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
@@ -57,6 +58,7 @@ import java.util.stream.Collectors;
|
|
|
* @author wenks
|
|
* @author wenks
|
|
|
* @since 2025/2/12
|
|
* @since 2025/2/12
|
|
|
*/
|
|
*/
|
|
|
|
|
+@Log4j2
|
|
|
@QuoteCrawlerService(value = InsuranceCode.INSURANCE_DJPC)
|
|
@QuoteCrawlerService(value = InsuranceCode.INSURANCE_DJPC)
|
|
|
@RequiredArgsConstructor
|
|
@RequiredArgsConstructor
|
|
|
public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
|
|
public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
|
|
@@ -76,6 +78,8 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
|
|
|
/** 大家财险爬虫报价流程服务,负责登录认证和请求头管理 */
|
|
/** 大家财险爬虫报价流程服务,负责登录认证和请求头管理 */
|
|
|
private final DaJiaCrawlerQuoteProcessService daJiaCrawlerQuoteProcessService;
|
|
private final DaJiaCrawlerQuoteProcessService daJiaCrawlerQuoteProcessService;
|
|
|
|
|
|
|
|
|
|
+ private final RedissonClient redissonClient;
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 用户登录认证
|
|
* 用户登录认证
|
|
|
*
|
|
*
|
|
@@ -110,12 +114,10 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
|
|
|
AttributionInformationVo attributionInformationVo = quoteVo.getOrder().getAttributionInformationVo();
|
|
AttributionInformationVo attributionInformationVo = quoteVo.getOrder().getAttributionInformationVo();
|
|
|
HttpHeaders headers = daJiaCrawlerQuoteProcessService.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
|
|
HttpHeaders headers = daJiaCrawlerQuoteProcessService.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
|
|
|
String userCode = daJiaCrawlerCacheComponent.getUserCode(attributionInformationVo.getUsername());
|
|
String userCode = daJiaCrawlerCacheComponent.getUserCode(attributionInformationVo.getUsername());
|
|
|
-
|
|
|
|
|
// 1.1 解析配置参数
|
|
// 1.1 解析配置参数
|
|
|
DaJiaCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(DaJiaCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
|
|
DaJiaCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(DaJiaCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
|
|
|
// 1.2 构建归属信息(机构、套餐、渠道信息)
|
|
// 1.2 构建归属信息(机构、套餐、渠道信息)
|
|
|
ProposalInfoDTO proposalInfoDTO = buildingAttributionInformation.build(parameters, userCode, headers);
|
|
ProposalInfoDTO proposalInfoDTO = buildingAttributionInformation.build(parameters, userCode, headers);
|
|
|
-
|
|
|
|
|
// 2.0 车型查询
|
|
// 2.0 车型查询
|
|
|
DaJiaCrawlerCarRequest daJiaCrawlerCarRequest = new DaJiaCrawlerCarRequest(quoteVo.getCarInfoVo(), parameters.getLoginCompany(), parameters.getCDptCde(), userCode);
|
|
DaJiaCrawlerCarRequest daJiaCrawlerCarRequest = new DaJiaCrawlerCarRequest(quoteVo.getCarInfoVo(), parameters.getLoginCompany(), parameters.getCDptCde(), userCode);
|
|
|
DaJiaCrawlerCarResponse daJiaCrawlerCarResponse = daJiaCrawlerRequestComponent.car(daJiaCrawlerCarRequest, headers);
|
|
DaJiaCrawlerCarResponse daJiaCrawlerCarResponse = daJiaCrawlerRequestComponent.car(daJiaCrawlerCarRequest, headers);
|
|
@@ -142,9 +144,15 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
|
|
|
businessInsuranceDTO.getProductInfo().setEndDate(endTime);
|
|
businessInsuranceDTO.getProductInfo().setEndDate(endTime);
|
|
|
crawlerPriceResponse = daJiaCrawlerRequestComponent.price(daJiaCrawlerPriceRequest, headers);
|
|
crawlerPriceResponse = daJiaCrawlerRequestComponent.price(daJiaCrawlerPriceRequest, headers);
|
|
|
}
|
|
}
|
|
|
|
|
+ String lastPolicyNo = crawlerPriceResponse.getCompulsoryInsurance().getProductInfo().getLastPolicyNo();
|
|
|
|
|
+
|
|
|
|
|
+ daJiaCrawlerRequestComponent.policyQuery(lastPolicyNo,headers,userCode);
|
|
|
|
|
+
|
|
|
|
|
+ log.info("报价返回参数:{}", JSONObject.toJSONString(crawlerPriceResponse));
|
|
|
// 3.1 保存订单到保险公司系统
|
|
// 3.1 保存订单到保险公司系统
|
|
|
DaJiaCrawlerSaveRequest daJiaCrawlerSaveRequest = new DaJiaCrawlerSaveRequest(crawlerPriceResponse, userCode, quoteVo);
|
|
DaJiaCrawlerSaveRequest daJiaCrawlerSaveRequest = new DaJiaCrawlerSaveRequest(crawlerPriceResponse, userCode, quoteVo);
|
|
|
DaJiaCrawlerSaveResponse daJiaCrawlerSaveResponse = daJiaCrawlerRequestComponent.save(daJiaCrawlerSaveRequest, headers);
|
|
DaJiaCrawlerSaveResponse daJiaCrawlerSaveResponse = daJiaCrawlerRequestComponent.save(daJiaCrawlerSaveRequest, headers);
|
|
|
|
|
+ log.info("daJiaCrawlerSaveResponse:{}",JSONObject.toJSONString(daJiaCrawlerSaveResponse));
|
|
|
// 3.2 初始化订单数据
|
|
// 3.2 初始化订单数据
|
|
|
DaJiaCrawlerInitDataRequest daJiaCrawlerInitDataRequest = new DaJiaCrawlerInitDataRequest(daJiaCrawlerSaveResponse.getCompulsoryInsurance(), daJiaCrawlerSaveResponse.getBusinessInsurance());
|
|
DaJiaCrawlerInitDataRequest daJiaCrawlerInitDataRequest = new DaJiaCrawlerInitDataRequest(daJiaCrawlerSaveResponse.getCompulsoryInsurance(), daJiaCrawlerSaveResponse.getBusinessInsurance());
|
|
|
daJiaCrawlerRequestComponent.initData(daJiaCrawlerInitDataRequest, headers);
|
|
daJiaCrawlerRequestComponent.initData(daJiaCrawlerInitDataRequest, headers);
|
|
@@ -158,6 +166,8 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
|
|
|
return DaJiaCrawlerQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo.getOrder().getOrdersNo(), quoteVo, daJiaCrawlerSaveResponse);
|
|
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})");
|
|
private static final Pattern DUPLICATE_END_TIME_PATTERN = Pattern.compile("终保日期 (\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2})");
|
|
|
|
|
|
|
@@ -176,6 +186,8 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 订单核保处理
|
|
* 订单核保处理
|
|
|
*
|
|
*
|
|
@@ -194,7 +206,15 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
|
|
|
DaJiaCrawlerSaveResponse daJiaCrawlerSaveResponse = daJiaCrawlerCacheComponent.getDaJiaCrawlerSaveResponse(daJiaCrawlerOrder.getOrdersNo());
|
|
DaJiaCrawlerSaveResponse daJiaCrawlerSaveResponse = daJiaCrawlerCacheComponent.getDaJiaCrawlerSaveResponse(daJiaCrawlerOrder.getOrdersNo());
|
|
|
// 提交核保申请
|
|
// 提交核保申请
|
|
|
DaJiaCrawlerGenerateResponse response = daJiaCrawlerRequestComponent.generate(daJiaCrawlerSaveResponse, headers);
|
|
DaJiaCrawlerGenerateResponse response = daJiaCrawlerRequestComponent.generate(daJiaCrawlerSaveResponse, headers);
|
|
|
- return DajiaCrawlerAuditResultsVoBuild.buildUnderwritingResultsVo(daJiaCrawlerOrder.getOrdersNo(), response);
|
|
|
|
|
|
|
+ log.info("大家核保数据返回:{}",JSONObject.toJSONString(response));
|
|
|
|
|
+ UnderwritingResultsVo underwritingResultsVo = DajiaCrawlerAuditResultsVoBuild.buildUnderwritingResultsVo(daJiaCrawlerOrder.getOrdersNo(), response);
|
|
|
|
|
+ if (response.getStatus().equals("4")){
|
|
|
|
|
+ PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
|
|
|
|
|
+ paymentLinkVo.setOrder(underwritingVo.getOrder());
|
|
|
|
|
+ PaymentLinkResultsVo paymentLink = getPaymentLink(paymentLinkVo);
|
|
|
|
|
+ underwritingResultsVo.setPaymentLink(paymentLink.getPaymentLink());
|
|
|
|
|
+ }
|
|
|
|
|
+ return underwritingResultsVo;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -207,13 +227,15 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
public PaymentLinkResultsVo getPaymentLink(PaymentLinkVo paymentLinkVo) {
|
|
public PaymentLinkResultsVo getPaymentLink(PaymentLinkVo paymentLinkVo) {
|
|
|
|
|
+
|
|
|
AttributionInformationVo attributionInformationVo = paymentLinkVo.getOrder().getAttributionInformationVo();
|
|
AttributionInformationVo attributionInformationVo = paymentLinkVo.getOrder().getAttributionInformationVo();
|
|
|
DaJiaCrawlerOrder daJiaCrawlerOrder = daJiaCrawlerOrderService.getById(paymentLinkVo.getOrder().getOrdersNo());
|
|
DaJiaCrawlerOrder daJiaCrawlerOrder = daJiaCrawlerOrderService.getById(paymentLinkVo.getOrder().getOrdersNo());
|
|
|
HttpHeaders headers = daJiaCrawlerQuoteProcessService.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
|
|
HttpHeaders headers = daJiaCrawlerQuoteProcessService.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
|
|
|
String userCode = daJiaCrawlerCacheComponent.getUserCode(attributionInformationVo.getUsername());
|
|
String userCode = daJiaCrawlerCacheComponent.getUserCode(attributionInformationVo.getUsername());
|
|
|
// 生成支付二维码
|
|
// 生成支付二维码
|
|
|
DaJiaCrawlerQrcodeResponse daJiaCrawlerQrcodeResponse = daJiaCrawlerRequestComponent.qrcode(daJiaCrawlerOrder.getOrdersNo(), userCode, headers);
|
|
DaJiaCrawlerQrcodeResponse daJiaCrawlerQrcodeResponse = daJiaCrawlerRequestComponent.qrcode(daJiaCrawlerOrder.getOrdersNo(), userCode, headers);
|
|
|
- return new PaymentLinkResultsVo(true, daJiaCrawlerQrcodeResponse.getUrl(), "");
|
|
|
|
|
|
|
+ log.info("获取支付链接返回数据:{}",JSONObject.toJSONString(daJiaCrawlerQrcodeResponse));
|
|
|
|
|
+ return new PaymentLinkResultsVo(true, daJiaCrawlerQrcodeResponse.getImageContent(), "");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -238,12 +260,17 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
|
|
|
DaJiaCrawlerOrder daJiaCrawlerOrder = daJiaCrawlerOrderService.getById(insuranceUploadImageVo.getOrder()
|
|
DaJiaCrawlerOrder daJiaCrawlerOrder = daJiaCrawlerOrderService.getById(insuranceUploadImageVo.getOrder()
|
|
|
.getOrdersNo());
|
|
.getOrdersNo());
|
|
|
List<InsuranceImageVo> imageVoList = insuranceUploadImageVo.getImageVoList();
|
|
List<InsuranceImageVo> imageVoList = insuranceUploadImageVo.getImageVoList();
|
|
|
-
|
|
|
|
|
|
|
+ DaJiaCrawlerInitDataRequest daJiaCrawlerInitDataRequest = new DaJiaCrawlerInitDataRequest(daJiaCrawlerOrder.getSaveResponse().getCompulsoryInsurance(), daJiaCrawlerOrder.getSaveResponse().getBusinessInsurance());
|
|
|
|
|
+ headers.set("X-Imp-Token",daJiaCrawlerRequestComponent.initImgData(daJiaCrawlerInitDataRequest, headers));
|
|
|
|
|
+
|
|
|
// 按影像类型分组处理
|
|
// 按影像类型分组处理
|
|
|
imageVoList.forEach(imageVo -> {
|
|
imageVoList.forEach(imageVo -> {
|
|
|
// 1. 获取上传文件标志和预签名URL
|
|
// 1. 获取上传文件标志和预签名URL
|
|
|
DaJiaCrawlerUploadSignsRequest daJiaCrawlerUploadSignsRequest = new DaJiaCrawlerUploadSignsRequest(daJiaCrawlerOrder.getBusinessNo(), imageVo.getInsuranceImageCode(), imageVo.getImageBase64List());
|
|
DaJiaCrawlerUploadSignsRequest daJiaCrawlerUploadSignsRequest = new DaJiaCrawlerUploadSignsRequest(daJiaCrawlerOrder.getBusinessNo(), imageVo.getInsuranceImageCode(), imageVo.getImageBase64List());
|
|
|
DaJiaCrawlerUploadSignsResponse daJiaCrawlerUploadSignsResponse = daJiaCrawlerRequestComponent.uploadSigns(daJiaCrawlerUploadSignsRequest, headers);
|
|
DaJiaCrawlerUploadSignsResponse daJiaCrawlerUploadSignsResponse = daJiaCrawlerRequestComponent.uploadSigns(daJiaCrawlerUploadSignsRequest, headers);
|
|
|
|
|
+ if (com.jzg.commons.util.StringUtils.equals("FAIL",daJiaCrawlerUploadSignsResponse.getCode())){
|
|
|
|
|
+ throw new SystemException("获取上传影像异常:" + daJiaCrawlerUploadSignsResponse.getMessage());
|
|
|
|
|
+ }
|
|
|
// 2. 构建文件名到上传信息的映射
|
|
// 2. 构建文件名到上传信息的映射
|
|
|
Map<String, DaJiaCrawlerUploadSignsResponse.DataDTO> dataDTOMap = daJiaCrawlerUploadSignsResponse.getData()
|
|
Map<String, DaJiaCrawlerUploadSignsResponse.DataDTO> dataDTOMap = daJiaCrawlerUploadSignsResponse.getData()
|
|
|
.stream()
|
|
.stream()
|