|
|
@@ -0,0 +1,249 @@
|
|
|
+package com.jzg.quotation.bohai.crawler.service.impl;
|
|
|
+
|
|
|
+import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
|
|
|
+import com.jzg.commons.entity.quote.vo.CustomerInfoVo;
|
|
|
+import com.jzg.commons.entity.quote.vo.QuoteVo;
|
|
|
+import com.jzg.commons.entity.quote.vo.aggregated.*;
|
|
|
+import com.jzg.commons.entity.quote.vo.base.LoginBase;
|
|
|
+import com.jzg.quotation.bohai.api.constant.enums.ResponseCode;
|
|
|
+import com.jzg.quotation.bohai.api.entity.vo.PersonAreaVo;
|
|
|
+import com.jzg.quotation.bohai.crawler.component.BoHaiCrawlerCacheComponent;
|
|
|
+import com.jzg.quotation.bohai.crawler.component.BuildingAttributionInformation;
|
|
|
+import com.jzg.quotation.bohai.crawler.entity.request.BoHaiGenerateOrderNoRequest;
|
|
|
+import com.jzg.quotation.bohai.crawler.entity.request.BoHaiCrawlerQuotationRequest;
|
|
|
+import com.jzg.quotation.bohai.crawler.entity.request.quote.ProposalInfoDTO;
|
|
|
+import com.jzg.quotation.commons.annotation.QuoteCrawlerService;
|
|
|
+import com.jzg.quotation.commons.constant.InsuranceCode;
|
|
|
+import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
|
|
|
+import com.jzg.quotation.bohai.crawler.build.BoHaiCrawlerQuoteResultsVoBuild;
|
|
|
+import com.jzg.quotation.bohai.crawler.component.BoHaiCrawlerRequestComponent;
|
|
|
+import com.jzg.quotation.bohai.crawler.entity.BoHaiCrawlerConfigureParameters;
|
|
|
+import com.jzg.quotation.bohai.crawler.entity.po.BoHaiCrawlerOrder;
|
|
|
+import com.jzg.quotation.bohai.crawler.entity.request.*;
|
|
|
+import com.jzg.quotation.bohai.crawler.entity.response.*;
|
|
|
+import com.jzg.quotation.bohai.crawler.service.BoHaiCrawlerOrderService;
|
|
|
+import com.jzg.quotation.bohai.crawler.service.BoHaiCrawlerQuoteProcessService;
|
|
|
+import com.jzg.quotation.bohai.crawler.service.BoHaiCrawlerRequest;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import org.springframework.http.HttpHeaders;
|
|
|
+
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 渤海财险爬虫报价服务实现类
|
|
|
+ *
|
|
|
+ * <p>通过模拟浏览器操作的方式实现渤海财险的完整报价流程</p>
|
|
|
+ *
|
|
|
+ * @author
|
|
|
+ * @since
|
|
|
+ */
|
|
|
+@QuoteCrawlerService(value = InsuranceCode.INSURANCE_BPIC)
|
|
|
+@RequiredArgsConstructor
|
|
|
+public class BoHaiCrawlerRequestImpl implements BoHaiCrawlerRequest {
|
|
|
+
|
|
|
+ private final BoHaiCrawlerRequestComponent boHaiCrawlerRequestComponent;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 归属信息构建组件,用于构建机构、套餐、渠道等归属信息
|
|
|
+ */
|
|
|
+ private final BuildingAttributionInformation buildingAttributionInformation;
|
|
|
+
|
|
|
+ private final BoHaiCrawlerCacheComponent boHaiCrawlerCacheComponent;
|
|
|
+
|
|
|
+ private final BoHaiCrawlerOrderService boHaiCrawlerOrderService;
|
|
|
+
|
|
|
+ private final BoHaiCrawlerQuoteProcessService boHaiCrawlerQuoteProcessService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 登录
|
|
|
+ *
|
|
|
+ * @param loginBase 登录信息
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void login(LoginBase loginBase) {
|
|
|
+ boHaiCrawlerQuoteProcessService.login(loginBase.getUsername(), loginBase.getPassword());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 报价
|
|
|
+ *
|
|
|
+ * @param quoteVo 报价实体
|
|
|
+ * @return QuoteResultsVo
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public QuoteResultsVo quote(QuoteVo quoteVo) {
|
|
|
+ // 1.0 归属信息
|
|
|
+ AttributionInformationVo attributionInformationVo = quoteVo.getOrder().getAttributionInformationVo();
|
|
|
+ HttpHeaders headers = boHaiCrawlerQuoteProcessService.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
|
|
|
+ String userCode = boHaiCrawlerCacheComponent.getUserCode(attributionInformationVo.getUsername());
|
|
|
+
|
|
|
+ // 1.1 解析配置参数
|
|
|
+ BoHaiCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(BoHaiCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
|
|
|
+
|
|
|
+ // 1.2 构建归属信息(机构、套餐、渠道信息)
|
|
|
+ ProposalInfoDTO proposalInfoDTO = buildingAttributionInformation.build(parameters, userCode, headers);
|
|
|
+
|
|
|
+ // 2.0 生成订单号(没有这个逻辑)
|
|
|
+ //String orderNo = generateOrderNo(parameters, headers);
|
|
|
+
|
|
|
+ // 2.1 车辆查询
|
|
|
+ BoHaiCrawlerCarRequest daJiaCrawlerCarRequest = new BoHaiCrawlerCarRequest(quoteVo.getCarInfoVo(), parameters.getLoginCompany(), parameters.getCDptCde(), userCode);
|
|
|
+ BoHaiCrawlerCarResponse boHaiCrawlerCarResponse = boHaiCrawlerRequestComponent.car(daJiaCrawlerCarRequest, headers);
|
|
|
+
|
|
|
+ //2.2 车辆确认
|
|
|
+ Map<String, Object> vehicleConfirmationResult = getVehicleConfirmationResponse(quoteVo, boHaiCrawlerCarResponse, parameters, headers);
|
|
|
+ //获取车辆当前价值
|
|
|
+ String currentValue = (String) vehicleConfirmationResult.get("currentValue");
|
|
|
+
|
|
|
+ // 3.0 报价接口
|
|
|
+ BoHaiCrawlerQuotationRequest boHaiCrawlerQuotationRequest = new BoHaiCrawlerQuotationRequest(parameters, quoteVo, currentValue, "", quoteVo.getAccidentalDrivings(), "");
|
|
|
+ BoHaiCrawlerQuotationResponse boHaiCrawlerQuotationResponse = boHaiCrawlerRequestComponent.quotation(boHaiCrawlerQuotationRequest, headers);
|
|
|
+
|
|
|
+ // 4.0 处理报价失败
|
|
|
+ if (!ResponseCode.R_Z00001.equals(boHaiCrawlerQuotationResponse.getResponseCode())) {
|
|
|
+ boHaiCrawlerOrderService.save(quoteVo, boHaiCrawlerQuotationResponse, false);
|
|
|
+ return BoHaiCrawlerQuoteResultsVoBuild.buildQuoteFailResultsVo(boHaiCrawlerQuotationResponse);
|
|
|
+ } else {
|
|
|
+ //报价成功
|
|
|
+ boHaiCrawlerOrderService.save(quoteVo, boHaiCrawlerQuotationResponse, true);
|
|
|
+ return BoHaiCrawlerQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo.getOrder().getOrdersNo(), quoteVo, boHaiCrawlerQuotationResponse);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public UnderwritingResultsVo underwriting(UnderwritingVo underwritingVo) {
|
|
|
+ /*AttributionInformationVo attributionInformationVo = underwritingVo.getOrder().getAttributionInformationVo();
|
|
|
+ BoHaiCrawlerOrder boHaiCrawlerOrder = boHaiCrawlerOrderService.getById(underwritingVo.getOrder().getOrdersNo());
|
|
|
+ HttpHeaders headers = boHaiCrawlerQuoteProcessService.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
|
|
|
+
|
|
|
+ UnderwritingRequest underwritingRequest = new UnderwritingRequest(attributionInformationVo.getConfigInfo(), boHaiCrawlerOrder.getOrderNo());
|
|
|
+ BoHaiUnderwritingResponse boHaiUnderwritingResponse = boHaiCrawlerRequestComponent.underwriting(underwritingRequest, headers);
|
|
|
+
|
|
|
+ UnderwritingResultsVo underwritingResultsVo = new UnderwritingResultsVo();
|
|
|
+ if ("R_Z00001".equals(boHaiUnderwritingResponse.getResponseCode())) {
|
|
|
+ String jqStatus = boHaiUnderwritingResponse.getData().getTrafficResultCode();
|
|
|
+ String syStatus = boHaiUnderwritingResponse.getData().getBusinessResultCode();
|
|
|
+
|
|
|
+ if ("A4".equals(jqStatus) || "A4".equals(syStatus)) {
|
|
|
+ underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.STAFF_PROCESS);
|
|
|
+ underwritingResultsVo.setUnderwritingResult("人工处理");
|
|
|
+ } else if ("A6".equals(jqStatus) || "A6".equals(syStatus)) {
|
|
|
+ underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ if (null != boHaiUnderwritingResponse.getData().getTrafficResultMsg()) {
|
|
|
+ sb.append(String.format("交强险提示信息:s%", boHaiUnderwritingResponse.getData().getTrafficResultMsg()));
|
|
|
+ }
|
|
|
+ if (null != boHaiUnderwritingResponse.getData().getBusinessResultMsg()) {
|
|
|
+ sb.append(String.format("商业险提示信息:s%", boHaiUnderwritingResponse.getData().getBusinessResultMsg()));
|
|
|
+ }
|
|
|
+ underwritingResultsVo.setUnderwritingResult(sb.toString());
|
|
|
+ } else if ("A0".equals(jqStatus) || "A0".equals(syStatus)) {
|
|
|
+ underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
|
|
|
+ underwritingResultsVo.setJqApplyNo(boHaiUnderwritingResponse.getData().getTrafficPolicy().getApplicationNo());
|
|
|
+ underwritingResultsVo.setSyApplyNo(boHaiUnderwritingResponse.getData().getBusinessPolicy().getApplicationNo());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return underwritingResultsVo;*/
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PaymentLinkResultsVo getPaymentLink(PaymentLinkVo paymentLinkVo) {
|
|
|
+ /*AttributionInformationVo attributionInformationVo = paymentLinkVo.getOrder().getAttributionInformationVo();
|
|
|
+ BoHaiCrawlerOrder boHaiCrawlerOrder = boHaiCrawlerOrderService.getById(paymentLinkVo.getOrder().getOrdersNo());
|
|
|
+ HttpHeaders headers = boHaiCrawlerQuoteProcessService.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
|
|
|
+
|
|
|
+ PaymentRequest paymentRequest = new PaymentRequest(attributionInformationVo.getConfigInfo(), boHaiCrawlerOrder.getOrderNo(), boHaiCrawlerOrder.getBusUniqueId());
|
|
|
+ BoHaiPaymentResponse boHaiPaymentResponse = boHaiCrawlerRequestComponent.payment(paymentRequest, headers);
|
|
|
+
|
|
|
+ PaymentLinkResultsVo paymentLinkResultsVo = new PaymentLinkResultsVo();
|
|
|
+ paymentLinkResultsVo.setPaymentLink(boHaiPaymentResponse.getData().getPayUrl());
|
|
|
+ return paymentLinkResultsVo;*/
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void uploadImage(InsuranceUploadImageVo insuranceUploadImageVo) {
|
|
|
+ // 渤海影像上传实现
|
|
|
+ /*AttributionInformationVo attributionInformationVo = insuranceUploadImageVo.getOrder().getAttributionInformationVo();
|
|
|
+ BoHaiCrawlerOrder boHaiCrawlerOrder = boHaiCrawlerOrderService.getById(insuranceUploadImageVo.getOrder().getOrdersNo());
|
|
|
+ HttpHeaders headers = boHaiCrawlerQuoteProcessService.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
|
|
|
+
|
|
|
+ ImageUploadRequest imageUploadRequest = new ImageUploadRequest(attributionInformationVo.getConfigInfo(),
|
|
|
+ boHaiCrawlerOrder.getOrderNo(), boHaiCrawlerOrder.getBusUniqueId(), insuranceUploadImageVo.getImageVoList());
|
|
|
+ boHaiCrawlerRequestComponent.imageUpload(imageUploadRequest, headers);*/
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo downloadPolicyVo) {
|
|
|
+ /*AttributionInformationVo attributionInformationVo = downloadPolicyVo.getOrder().getAttributionInformationVo();
|
|
|
+ BoHaiCrawlerOrder boHaiCrawlerOrder = boHaiCrawlerOrderService.getById(downloadPolicyVo.getOrder().getOrdersNo());
|
|
|
+ HttpHeaders headers = boHaiCrawlerQuoteProcessService.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
|
|
|
+
|
|
|
+ ElectronicPolicyRequest electronicPolicyRequest = new ElectronicPolicyRequest(attributionInformationVo.getConfigInfo(),
|
|
|
+ boHaiCrawlerOrder.getOrderNo(), boHaiCrawlerOrder.getCiPolicyNo(), boHaiCrawlerOrder.getBiPolicyNo());
|
|
|
+ ElectronicPolicyResponse electronicPolicyResponse = boHaiCrawlerRequestComponent.electronicPolicy(electronicPolicyRequest, headers);
|
|
|
+
|
|
|
+ DownloadPolicyResultVo downloadPolicyResultVo = new DownloadPolicyResultVo();
|
|
|
+ if (StringUtils.hasLength(electronicPolicyResponse.getData().getTrafficEPolicyUrl())) {
|
|
|
+ downloadPolicyResultVo.setJqUrl(electronicPolicyResponse.getData().getTrafficEPolicyUrl());
|
|
|
+ }
|
|
|
+ if (StringUtils.hasLength(electronicPolicyResponse.getData().getBusinessEPolicyUrl())) {
|
|
|
+ downloadPolicyResultVo.setSyUrl(electronicPolicyResponse.getData().getBusinessEPolicyUrl());
|
|
|
+ }
|
|
|
+ return downloadPolicyResultVo;*/
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ *查询订单状态
|
|
|
+ * @param orderStatusVo
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public OrderStatusResultVo queryOrderState(OrderStatusVo orderStatusVo) {
|
|
|
+ AttributionInformationVo attributionInformationVo = orderStatusVo.getOrder().getAttributionInformationVo();
|
|
|
+ BoHaiCrawlerOrder boHaiCrawlerOrder = boHaiCrawlerOrderService.getById(orderStatusVo.getOrder().getOrdersNo());
|
|
|
+ HttpHeaders headers = boHaiCrawlerQuoteProcessService.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
|
|
|
+
|
|
|
+ /*StatusDocumentsRequest statusDocumentsRequest = new StatusDocumentsRequest(attributionInformationVo.getConfigInfo(),
|
|
|
+ boHaiCrawlerOrder.getOrderNo(), boHaiCrawlerOrder.getCiApplyNo());
|
|
|
+ StatusDocumentsResponse response = boHaiCrawlerRequestComponent.statusDocuments(statusDocumentsRequest, headers);*/
|
|
|
+
|
|
|
+ OrderStatusResultVo orderStatusResultVo = new OrderStatusResultVo();
|
|
|
+ // 处理订单状态逻辑
|
|
|
+ return orderStatusResultVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 车辆确认
|
|
|
+ *
|
|
|
+ * @param quoteVo
|
|
|
+ * @param boHaiCrawlerCarResponse
|
|
|
+ * @param parameters
|
|
|
+ * @param orderNo
|
|
|
+ * @param headers
|
|
|
+ * @return Map<String, Object>
|
|
|
+ */
|
|
|
+ private Map<String, Object> getVehicleConfirmationResponse(QuoteVo quoteVo, BoHaiCrawlerCarResponse boHaiCrawlerCarResponse, BoHaiCrawlerConfigureParameters parameters,HttpHeaders headers) {
|
|
|
+ // 车主信息
|
|
|
+ CustomerInfoVo ownerInfo = quoteVo.getOwnersInfo();
|
|
|
+ PersonAreaVo ownerInfoArea = new PersonAreaVo(ownerInfo);
|
|
|
+ // 被保人信息
|
|
|
+ CustomerInfoVo insuredPersonInfo = quoteVo.getInsuredPersonInfo();
|
|
|
+ PersonAreaVo insuredPersonArea = new PersonAreaVo(insuredPersonInfo);
|
|
|
+ // 投保人信息
|
|
|
+ CustomerInfoVo policyHolderInfo = quoteVo.getPolicyHolderInfo();
|
|
|
+ PersonAreaVo policyHolderArea = new PersonAreaVo(policyHolderInfo);
|
|
|
+
|
|
|
+ BoHaiCrawlerVehicleConfirmationReqeust vehicleConfirmationReqeust = new BoHaiCrawlerVehicleConfirmationReqeust(parameters, quoteVo, boHaiCrawlerCarResponse, ownerInfoArea, insuredPersonArea, policyHolderArea);
|
|
|
+
|
|
|
+ BoHaiCrawlerVehicleConfirmationResponse boHaiCrawlerVehicleConfirmationResponse = boHaiCrawlerRequestComponent.vehicleConfirmation(vehicleConfirmationReqeust,headers);
|
|
|
+
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("vehicleModelsDTO", boHaiCrawlerCarResponse.getList().get(0));
|
|
|
+ map.put("vehicleConfirmationResponse", boHaiCrawlerVehicleConfirmationResponse);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+}
|