Преглед на файлове

update:
1.大家财险全流程梳理完成

wks преди 1 година
родител
ревизия
4f6738e600

+ 6 - 3
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/component/RequestComponent.java

@@ -16,11 +16,11 @@ import org.springframework.stereotype.Component;
 import org.springframework.util.MultiValueMap;
 import org.springframework.web.reactive.function.BodyInserters;
 import org.springframework.web.reactive.function.client.WebClient;
-import org.springframework.web.util.DefaultUriBuilderFactory;
-import org.springframework.web.util.UriComponentsBuilder;
 import reactor.core.publisher.Flux;
 
 import java.io.IOException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.nio.file.StandardOpenOption;
@@ -66,7 +66,10 @@ public class RequestComponent {
         if (!params.isEmpty()) {
             sb.append("?");
             params.forEach((key, values) -> {
-                values.forEach(value -> sb.append(key).append("=").append(value).append("&"));
+                values.forEach(value -> sb.append(key)
+                        .append("=")
+                        .append(URLEncoder.encode(value, StandardCharsets.UTF_8))
+                        .append("&"));
             });
             sb.deleteCharAt(sb.length() - 1); // 移除末尾多余的&
         }

+ 6 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/config/WebClientConfig.java

@@ -10,6 +10,7 @@ import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
 import org.springframework.http.client.reactive.ReactorClientHttpConnector;
 import org.springframework.web.reactive.function.client.ExchangeFilterFunction;
+import org.springframework.web.reactive.function.client.ExchangeStrategies;
 import org.springframework.web.reactive.function.client.WebClient;
 import org.springframework.web.util.DefaultUriBuilderFactory;
 import reactor.core.publisher.Mono;
@@ -40,6 +41,8 @@ public class WebClientConfig {
     // 写入超时
     public static final int WRITE_TIMEOUT = 50;
 
+    public static final int MAX_IN_MEMORY_SIZE = 10 * 1024 * 1024;
+
     @Bean
     public WebClient clientBuilder() {
         // 配置HTTP连接池
@@ -63,6 +66,9 @@ public class WebClientConfig {
         factory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.VALUES_ONLY);
         return WebClient
                 .builder()
+                .exchangeStrategies(ExchangeStrategies.builder()
+                        .codecs(clientCodecConfigurer -> clientCodecConfigurer.defaultCodecs().maxInMemorySize(MAX_IN_MEMORY_SIZE))
+                        .build())
                 .uriBuilderFactory(factory)
                 .clientConnector(new ReactorClientHttpConnector(httpClient))
                 .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)

+ 15 - 1
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/utils/TimeProcessing.java

@@ -42,6 +42,7 @@ public final class TimeProcessing {
     /**
      * 时间格式转换
      * yyyy-MM-dd 转 yyyy-MM-dd HH:mm:ss
+     *
      * @param date yyyy-MM-dd
      * @return yyyy-MM-dd HH:mm:ss
      */
@@ -87,7 +88,20 @@ public final class TimeProcessing {
      * @return
      */
     public static String minusDays(String date, long days) {
-        return parse(date).minusDays(days).format(DATE_FORMATTER);
+        LocalDate parse = LocalDate.parse(date);
+        return parse.minusDays(days).format(DATE_FORMATTER);
+    }
+
+    /**
+     * 几天后
+     *
+     * @param date 时间
+     * @param days 天数
+     * @return
+     */
+    public static String plusDays(String date, long days) {
+        LocalDate parse = LocalDate.parse(date);
+        return parse.plusDays(days).format(DATE_FORMATTER);
     }
 
     /**

+ 5 - 1
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/component/DaJiaCrawlerRequestComponent.java

@@ -366,6 +366,9 @@ public class DaJiaCrawlerRequestComponent {
      */
     public DaJiaCrawlerOrderListRevisedResponse.ListDTO orderListRevised(DaJiaCrawlerOrderListRevisedRequest request, HttpHeaders headers) {
         DaJiaCrawlerOrderListRevisedResponse response = request(RequestUrl.ORDER_LIST_REVISED, request, DaJiaCrawlerOrderListRevisedResponse.class, headers);
+        if(response.getList().isEmpty()){
+           throw new SystemException("核心订单已删除或者不存在");
+        }
         return response.getList().get(0);
     }
 
@@ -378,7 +381,8 @@ public class DaJiaCrawlerRequestComponent {
      */
     public DaJiaCrawlerDownloadResponse electronPolicyIODownload(DaJiaCrawlerDownloadRequest request, HttpHeaders headers) {
         MultiValueMap<String, String> describe = RequestObjectConversion.convertMultiValueStringMap(request);
-        return requestComponent.get(RequestUrl.ELECTRON_POLICY_IO_DOWNLOAD.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()), describe, "", DaJiaCrawlerDownloadResponse.class, headers);
+        DaJiaCrawlerBaseResponse response = requestComponent.get(RequestUrl.ELECTRON_POLICY_IO_DOWNLOAD.getRequestUrl(daJiaCrawlerProperties.getBaseUrl()), describe, "", DaJiaCrawlerBaseResponse.class, headers);
+        return  DESEncryption.decryptStrToObject(response.getResult(), DaJiaCrawlerDownloadResponse.class);
     }
 
 }

+ 4 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/po/DaJiaCrawlerOrder.java

@@ -59,5 +59,9 @@ public class DaJiaCrawlerOrder {
 
 
     private String businessNo;
+    /**
+     * 保存时间
+     */
+    private String createTime;
 
 }

+ 3 - 3
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerOrderListRevisedRequest.java

@@ -81,7 +81,7 @@ public class DaJiaCrawlerOrderListRevisedRequest {
     @JsonProperty("operatorCode")
     private String operatorCode;
 
-    public DaJiaCrawlerOrderListRevisedRequest(String loginCompany, String orderNo, String operatorCode) {
+    public DaJiaCrawlerOrderListRevisedRequest(String loginCompany, String orderNo, String operatorCode, String createTime) {
         this.combineProductCode = "";
         this.applicantName = "";
         this.containSubFlag = "1";
@@ -99,8 +99,8 @@ public class DaJiaCrawlerOrderListRevisedRequest {
         this.centerScene = "";
         this.teamCode = Collections.emptyList();
         this.dxOperateNo = "";
-        this.startOperateDate = TimeProcessing.nowDate();
-        this.endOperateDate = TimeProcessing.minusDays(this.startOperateDate,25L);
+        this.startOperateDate = createTime;
+        this.endOperateDate = TimeProcessing.plusDays(this.startOperateDate,1);
         this.isMine = "0";
         this.operatorCode = operatorCode;
     }

+ 3 - 1
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/VehicleOwnerInfoDTO.java

@@ -115,7 +115,8 @@ public class VehicleOwnerInfoDTO {
         this.clientType = "1";
         this.companyNature = "9";
         this.gender = ownersInfo.getGender();
-        this.identifyEndDate = ownersInfo.getIdentifyNumber();
+        this.identifyEndDate = ownersInfo.getIdentifyValidEndDate();
+        this.identifyNo = ownersInfo.getIdentifyNumber();
         this.identifyType = "01";
         this.mobile = ownersInfo.getMobile();
         this.personName = ownersInfo.getName();
@@ -127,5 +128,6 @@ public class VehicleOwnerInfoDTO {
         this.province = ownersInfo.getProvinceCode();
         this.city = ownersInfo.getCityCode();
         this.county = ownersInfo.getCountyCode();
+        this.suffixAddr = ownersInfo.getAddr();
     }
 }

+ 2 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/service/impl/DaJiaCrawlerOrderServiceImpl.java

@@ -1,6 +1,7 @@
 package com.jzg.quotation.dajia.crawler.service.impl;
 
 import com.jzg.commons.entity.quote.vo.QuoteVo;
+import com.jzg.quotation.commons.utils.TimeProcessing;
 import com.jzg.quotation.dajia.crawler.entity.po.DaJiaCrawlerOrder;
 import com.jzg.quotation.dajia.crawler.entity.request.quote.BusinessInsuranceDTO;
 import com.jzg.quotation.dajia.crawler.entity.request.quote.CompulsoryInsuranceDTO;
@@ -34,6 +35,7 @@ public class DaJiaCrawlerOrderServiceImpl implements DaJiaCrawlerOrderService {
                 .map(BusinessInsuranceDTO.ProductInfoDTO::getProposalNo)
                 .ifPresent(daJiaCrawlerOrder::setBiPolicyNumber);
         daJiaCrawlerOrder.setBusinessNo(businessNo);
+        daJiaCrawlerOrder.setCreateTime(TimeProcessing.nowDate());
         daJiaCrawlerOrderRepository.save(daJiaCrawlerOrder);
     }
 

+ 5 - 6
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/service/impl/DaJiaCrawlerRequestImpl.java

@@ -84,8 +84,7 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
         daJiaCrawlerRequestComponent.initData(daJiaCrawlerInitDataRequest, headers);
 
         // 3.2 缓存数据
-        daJiaCrawlerCacheComponent.cacheDaJiaCrawlerSaveResponse(daJiaCrawlerSaveResponse, quoteVo.getOrder()
-                .getOrdersNo());
+        daJiaCrawlerCacheComponent.cacheDaJiaCrawlerSaveResponse(daJiaCrawlerSaveResponse, daJiaCrawlerSaveResponse.getProposalInfo().getOrderNo());
 
         // 4.0 保存数据
         daJiaCrawlerOrderService.saveOrderInfo(quoteVo, daJiaCrawlerSaveResponse, daJiaCrawlerInitDataRequest.getBusinessNo());
@@ -166,21 +165,21 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
         DaJiaCrawlerDownloadResponse response;
         // 交强保单
         if (StringUtils.hasLength(daJiaCrawlerOrder.getCiPolicyNo())) {
-            daJiaCrawlerDownloadRequest.setPlyNo(daJiaCrawlerOrder.getCiPolicyNumber());
+            daJiaCrawlerDownloadRequest.setPlyNo(daJiaCrawlerOrder.getCiPolicyNo());
             response = daJiaCrawlerRequestComponent.electronPolicyIODownload(daJiaCrawlerDownloadRequest, headers);
             downloadPolicyResultVo.setJqUrl(response.getFile());
         }
 
         // 商业保单
         if (StringUtils.hasLength(daJiaCrawlerOrder.getBiPolicyNo())) {
-            daJiaCrawlerDownloadRequest.setPlyNo(daJiaCrawlerOrder.getCiPolicyNumber());
+            daJiaCrawlerDownloadRequest.setPlyNo(daJiaCrawlerOrder.getCiPolicyNo());
             response = daJiaCrawlerRequestComponent.electronPolicyIODownload(daJiaCrawlerDownloadRequest, headers);
             downloadPolicyResultVo.setSyUrl(response.getFile());
         }
 
         // 非车保单
         if (StringUtils.hasLength(daJiaCrawlerOrder.getCiPolicyNo())) {
-            daJiaCrawlerDownloadRequest.setPlyNo(daJiaCrawlerOrder.getCiPolicyNumber());
+            daJiaCrawlerDownloadRequest.setPlyNo(daJiaCrawlerOrder.getCiPolicyNo());
             response = daJiaCrawlerRequestComponent.electronPolicyIODownload(daJiaCrawlerDownloadRequest, headers);
             downloadPolicyResultVo.setJyUrl(response.getFile());
         }
@@ -198,7 +197,7 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
                 .getOrdersNo());
         String userCode = daJiaCrawlerCacheComponent.getUserCode(attributionInformationVo.getUsername());
         // 订单状态
-        DaJiaCrawlerOrderListRevisedRequest daJiaCrawlerOrderListRevisedRequest = new DaJiaCrawlerOrderListRevisedRequest(parameters.getLoginCompany(), daJiaCrawlerOrder.getOrdersNo(), userCode);
+        DaJiaCrawlerOrderListRevisedRequest daJiaCrawlerOrderListRevisedRequest = new DaJiaCrawlerOrderListRevisedRequest(parameters.getLoginCompany(), daJiaCrawlerOrder.getOrdersNo(), userCode, daJiaCrawlerOrder.getCreateTime());
         DaJiaCrawlerOrderListRevisedResponse.ListDTO listDTO = daJiaCrawlerRequestComponent.orderListRevised(daJiaCrawlerOrderListRevisedRequest, headers);
         return DaJiaCrawlerQuoteResultsVoBuild.buildOrderStatusResultVo(listDTO);
     }

+ 2 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

@@ -431,6 +431,8 @@ public class UnifyOrderManager {
         InsOrdersCosts costs = insOrdersCostsService.getById(insOrders.getId());
         InsOrdersPdfUrl insOrdersPdfUrl = insOrdersPdfUrlService.getPdfUrlByOrderNo(insOrders.getId());
         AssertionUtils.isFail(Objects.isNull(insOrders), "订单不存在");
+        downloadPolicyVo.getOrder().setApiType(Integer.parseInt(insOrders.getApiType()));
+
         QuotationBaseService downloadPolicyService = companyFactory.getDownloadPolicyService(downloadPolicyVo, insOrders);
 
         //如果pdf 查不到数据 就去下载