wks преди 1 година
родител
ревизия
830e1fc290
променени са 85 файла, в които са добавени 5466 реда и са изтрити 692 реда
  1. 13 1
      tenant/insurance/pom.xml
  2. 21 0
      tenant/insurance/quotation-commons/pom.xml
  3. 199 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/component/RequestComponent.java
  4. 76 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/config/WebClientConfig.java
  5. 17 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/CacheConstant.java
  6. 18 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/CaptchaIdentifyType.java
  7. 31 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/base/ExpenseRequestUrl.java
  8. 23 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/quote/CarKindCode.java
  9. 24 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/quote/CarNatureCode.java
  10. 29 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/quote/EnergyTypeCode.java
  11. 37 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/quote/KindCode.java
  12. 26 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/quote/PropertyCode.java
  13. 29 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/quote/RiskCode.java
  14. 30 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/quote/VehicleUseCode.java
  15. 54 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/aggregated/QuoteResultsVo.java
  16. 55 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/aggregated/QuoteVo.java
  17. 38 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/base/LoginBase.java
  18. 42 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/quote/AttributionInformationVo.java
  19. 118 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/quote/CarInfoVo.java
  20. 69 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/quote/CustomerInfoVo.java
  21. 49 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/quote/ExpenseFactor.java
  22. 50 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/quote/KindInfoVo.java
  23. 48 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/quote/RiskInfoVo.java
  24. 24 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/properties/CaptchaRecognitionProperties.java
  25. 44 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/ExteriorUtilsRequest.java
  26. 41 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationBaseService.java
  27. 21 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationCrawlerBaseService.java
  28. 61 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/impl/ExteriorUtilsRequestImpl.java
  29. 8 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/standard/ConfigureParameters.java
  30. 30 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/standard/CrawlerRequestUrlStandard.java
  31. 15 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/standard/ExpenseFactorStandard.java
  32. 65 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/standard/QuoteResultsConverter.java
  33. 46 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/standard/conversion/ConfigureParametersConversion.java
  34. 34 0
      tenant/insurance/quotation-dajia/pom.xml
  35. 5 6
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/DaJiaQuotationApplication.java
  36. 160 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/component/DaJiaRequestComponent.java
  37. 51 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/constant/enums/RequestUrl.java
  38. 55 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/constant/enums/dictionary/BIKind.java
  39. 29 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/constant/enums/dictionary/CIKind.java
  40. 23 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/constant/enums/dictionary/Risk.java
  41. 46 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/converter/DaJiaCrawlerQuoteResultsConverter.java
  42. 24 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/DaJiaCrawlerConfigureParameters.java
  43. 50 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerActualValueRequest.java
  44. 72 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerAuthenticateRequest.java
  45. 27 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerBaseRequest.java
  46. 61 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerCarRequest.java
  47. 91 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerPriceRequest.java
  48. 119 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerSaveRequest.java
  49. 41 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/AcctinfoDTO.java
  50. 469 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/BusinessInsuranceDTO.java
  51. 54 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/CheckCarInfomationDTO.java
  52. 619 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/CompulsoryInsuranceDTO.java
  53. 289 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/DriveInsuranceDTO.java
  54. 61 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/FlatvhlInfoDTO.java
  55. 210 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/PersonnelInformation.java
  56. 281 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/ProposalInfoDTO.java
  57. 202 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/VehicleInfoDTO.java
  58. 110 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/VehicleOwnerInfoDTO.java
  59. 29 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerActualValueResponse.java
  60. 45 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerBaseResponse.java
  61. 32 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerCaptchaResponse.java
  62. 143 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerCarResponse.java
  63. 115 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerPriceResponse.java
  64. 211 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerSaveResponse.java
  65. 20 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/service/DaJiaCrawlerRequest.java
  66. 67 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/service/impl/DaJiaCrawlerRequestImpl.java
  67. 61 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/utils/DESEncryption.java
  68. 36 0
      tenant/insurance/quotation-dajia/src/main/resources/application.yaml
  69. 31 0
      tenant/insurance/quotation-dajia/src/test/java/com/jzg/quotation/dajia/DaJiaCrawlerRequestTest.java
  70. 28 0
      tenant/insurance/quotation-summary/pom.xml
  71. 14 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/SummaryQuotationApplication.java
  72. 0 31
      tenant/insurance/yongcheng/pom.xml
  73. 0 23
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/api/ApiComponents.java
  74. 0 66
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/aspect/AsyncLoggingAspect.java
  75. 0 31
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/config/WebClientConfig.java
  76. 0 40
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/controller/QuoteController.java
  77. 0 71
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/Accident.java
  78. 0 37
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/AccidentResponse.java
  79. 0 38
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/AccidentalDrivingQueryVo.java
  80. 0 22
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/AuthorityDataXml.java
  81. 0 78
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/ResponseYwCvrg.java
  82. 0 77
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/YcConfigureParameters.java
  83. 0 103
      tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/utils/RequestApiComponents.java
  84. 0 34
      tenant/insurance/yongcheng/src/main/resources/application.yml
  85. 0 34
      tenant/insurance/yongcheng/src/main/resources/logback-spring.xml

+ 13 - 1
tenant/insurance/pom.xml

@@ -10,23 +10,35 @@
     <packaging>pom</packaging>
     <name>insurance Maven Webapp</name>
     <url>http://maven.apache.org</url>
+
     <modules>
-        <module>yongcheng</module>
+        <module>quotation-commons</module>
+        <module>quotation-dajia</module>
+        <module>quotation-summary</module>
     </modules>
+
     <dependencies>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-webflux</artifactId>
             <version>3.0.0</version>
         </dependency>
+
         <dependency>
             <groupId>io.projectreactor.netty</groupId>
             <artifactId>reactor-netty-core</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-crypto</artifactId>
+        </dependency>
 
     </dependencies>
+
     <build>
         <finalName>insurance</finalName>
     </build>
+
 </project>

+ 21 - 0
tenant/insurance/quotation-commons/pom.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>com.jzg</groupId>
+        <artifactId>insurance</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>quotation-commons</artifactId>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+</project>

+ 199 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/component/RequestComponent.java

@@ -0,0 +1,199 @@
+package com.jzg.quotation.commons.component;
+
+
+import com.alibaba.fastjson2.JSON;
+import com.jzg.commons.exception.SystemException;
+import com.jzg.quotation.commons.standard.CrawlerRequestUrlStandard;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.reactive.function.BodyInserters;
+import org.springframework.web.reactive.function.client.WebClient;
+
+import java.util.Map;
+import java.util.Optional;
+import java.util.function.Consumer;
+
+
+/**
+ * @description: 封装请求
+ * @author: wenks
+ * @date: 2025/2/15 11:59
+ **/
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class RequestComponent {
+
+    private final WebClient webClient;
+
+    /**
+     * 设置请求头
+     *
+     * @param headers 请求头
+     * @return Consumer<HttpHeaders>
+     */
+    private Consumer<HttpHeaders> setHeaders(HttpHeaders headers) {
+        Consumer<HttpHeaders> consumer = httpHeaders -> {
+            httpHeaders.add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36");
+        };
+
+        consumer.accept(headers);
+        return consumer;
+    }
+
+    /**
+     * 判断响应体 是否为空
+     *
+     * @param responseEntity 响应体
+     * @param description    请求描述
+     * @param <Response>     响应返回值
+     * @return 响应返回值
+     */
+    private <Response> Response bodyIsEmpty(ResponseEntity<Response> responseEntity, String description) {
+        return Optional.ofNullable(responseEntity).map(ResponseEntity::getBody).orElseThrow(() -> new SystemException(description + "请求异常"));
+    }
+
+    /**
+     * 封装请求
+     *
+     * @param url           请求路劲
+     * @param param         参数
+     * @param description   描述
+     * @param responseClass 响应返回类
+     * @param <Response>    响应
+     * @param headers       请求头
+     * @return 响应
+     */
+    public <Response> Response get(String url, Map<String, Object> param, String description, Class<Response> responseClass, HttpHeaders headers) {
+        ResponseEntity<Response> responseEntity = webClient.get().uri(url, param).headers(setHeaders(headers)).retrieve().toEntity(responseClass).block();
+        return bodyIsEmpty(responseEntity, description);
+    }
+
+    /**
+     * @param urlStandard   请求模型
+     * @param param         拼接的请求参数
+     * @param responseClass 响应返回类
+     * @param <Response>    响应实体
+     * @return 响应
+     */
+    public <Response> Response requestGET(CrawlerRequestUrlStandard urlStandard, Map<String, Object> param, Class<Response> responseClass) {
+        return get(urlStandard.getRequestUrl(), param, urlStandard.getRequestDescription(), responseClass, new HttpHeaders());
+    }
+
+    /**
+     * @param urlPrefix     请求地址前缀
+     * @param urlStandard   请求地址枚举
+     * @param param         拼接的请求参数
+     * @param responseClass 响应返回类
+     * @param <Response>    响应实体
+     * @return 响应
+     */
+    public <Response> Response requestGET(String urlPrefix, CrawlerRequestUrlStandard urlStandard, Map<String, Object> param, Class<Response> responseClass) {
+        return get(urlPrefix + urlStandard.getRequestUrl(), param, urlStandard.getRequestDescription(), responseClass, new HttpHeaders());
+    }
+
+    /**
+     * @param url           请求地址
+     * @param body          请求体
+     * @param responseClass 响应类
+     * @param headers       请求头
+     * @param <Response>    响应实体
+     * @return 响应
+     */
+    public <Response> ResponseEntity<Response> post(String url, String body, Class<Response> responseClass, HttpHeaders headers) {
+        body = Optional.ofNullable(body).orElse("");
+        return webClient.post().uri(url).headers(setHeaders(headers)).body(BodyInserters.fromValue(body)).retrieve().toEntity(responseClass).block();
+    }
+
+    /**
+     * @param url           请求地址
+     * @param body          请求体
+     * @param responseClass 响应类
+     * @param headers       请求头
+     * @param <Response>    响应实体
+     * @return 响应
+     */
+    public <Response> ResponseEntity<Response> stringPost(String url, Object body, Class<Response> responseClass, HttpHeaders headers) {
+        String requestBody = JSON.toJSONString(body);
+        return post(url, requestBody, responseClass, headers);
+    }
+
+    /**
+     * 请求体为 String 类型 POST请求返回响应返回类
+     *
+     * @param url           请求地址
+     * @param body          请求体
+     * @param description   请求描述
+     * @param responseClass 响应返回类
+     * @param headers       请求头
+     * @param <Response>    响应返回
+     * @return 响应
+     */
+    public <Response> Response stringPost(String url, String body, String description, Class<Response> responseClass, HttpHeaders headers) {
+        ResponseEntity<Response> responseEntity = post(url, body, responseClass, headers);
+        return bodyIsEmpty(responseEntity, description);
+    }
+
+    /**
+     * 请求体为 String 类型 POST请求返回响应返回类
+     *
+     * @param url           请求地址
+     * @param body          请求体
+     * @param description   请求描述
+     * @param responseClass 响应返回类
+     * @param headers       请求头
+     * @param <Response>    响应返回
+     * @return 响应
+     */
+    public <Response> Response toStringPost(String url, Object body, String description, Class<Response> responseClass, HttpHeaders headers) {
+        String requestBody = JSON.toJSONString(body);
+        return stringPost(url, requestBody, description, responseClass, headers);
+    }
+
+    /**
+     * 请求体为 object POST请求返回响应返回类
+     *
+     * @param url           请求地址
+     * @param body          请求体
+     * @param description   请求头
+     * @param responseClass 响应返回类
+     * @param <Response>    响应返回
+     * @return 响应
+     */
+    public <Response> Response objectPost(String url, Object body, String description, Class<Response> responseClass) {
+        return toStringPost(url, body, description, responseClass, new HttpHeaders());
+    }
+
+
+    /**
+     * 请求体为 object POST请求返回响应返回类
+     *
+     * @param urlStandard   请求地址枚举
+     * @param body          请求体
+     * @param responseClass 响应返回类
+     * @param headers       请求头
+     * @param <Response>    响应返回
+     * @return 响应
+     */
+    public <Response> ResponseEntity<Response> objectPost(CrawlerRequestUrlStandard urlStandard, Object body, Class<Response> responseClass, HttpHeaders headers) {
+        return stringPost(urlStandard.getRequestUrl(), body, responseClass, headers);
+    }
+
+    /**
+     * POST请求返回响应体包装对象
+     *
+     * @param urlPrefix     请求响应
+     * @param urlStandard   请求地址枚举
+     * @param body          请求体
+     * @param responseClass 响应返回类
+     * @param <Response>    响应返回
+     * @return 响应体包装对象
+     */
+    public <Response> ResponseEntity<Response> objectPost(String urlPrefix, CrawlerRequestUrlStandard urlStandard, Object body, Class<Response> responseClass) {
+        return stringPost(urlPrefix + urlStandard.uri(), body, responseClass, new HttpHeaders());
+    }
+
+}

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

@@ -0,0 +1,76 @@
+package com.jzg.quotation.commons.config;
+
+import io.netty.channel.ChannelOption;
+import io.netty.handler.timeout.ReadTimeoutHandler;
+import io.netty.handler.timeout.WriteTimeoutHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+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.WebClient;
+import reactor.core.publisher.Mono;
+import reactor.netty.http.client.HttpClient;
+import reactor.netty.resources.ConnectionProvider;
+
+import java.time.Duration;
+
+/**
+ * @description: WebClientCon 配置类
+ * @author: wenks
+ * @date: 2025/2/11 11:20
+ **/
+@Configuration
+@Slf4j
+public class WebClientConfig {
+
+    // 最大连接数
+    public static final int CONNECTION_PROVIDER_MAX_CONNECTIONS = 500;
+    // 最大空闲时间
+    public static final Duration CONNECTION_PROVIDER_MAX_IDLE_TIME = Duration.ofSeconds(30);
+    // 连接超时时间
+    public static final int HTTPCLIENT_CONNECT_TIMEOUT_MILLIS = 5000;
+    // 响应超时时间
+    public static final Duration HTTPCLIENT_RESPONSE_TIMEOUT = Duration.ofSeconds(5);
+    // 读取超时
+    public static final int READ_TIMEOUT = 5;
+    // 写入超时
+    public static final int WRITE_TIMEOUT = 5;
+
+    @Bean
+    public WebClient clientBuilder() {
+        // 配置HTTP连接池
+        ConnectionProvider connectionProvider = ConnectionProvider.builder("http")
+                .maxConnections(CONNECTION_PROVIDER_MAX_CONNECTIONS)
+                .maxIdleTime(CONNECTION_PROVIDER_MAX_IDLE_TIME)
+                .build();
+
+        // 配置HTTP客户端
+        HttpClient httpClient = HttpClient.create(connectionProvider)
+                .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, HTTPCLIENT_CONNECT_TIMEOUT_MILLIS)
+                .responseTimeout(HTTPCLIENT_RESPONSE_TIMEOUT)
+                .doOnConnected(conn ->
+                        conn.addHandlerLast(new ReadTimeoutHandler(READ_TIMEOUT))
+                                .addHandlerLast(new WriteTimeoutHandler(WRITE_TIMEOUT)));
+        // 构建WebClient实例
+        return WebClient.builder()
+                .clientConnector(new ReactorClientHttpConnector(httpClient))
+                .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
+                .defaultHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)
+                .filter(ExchangeFilterFunction.ofRequestProcessor(
+                        clientRequest -> {
+                            log.info("Client request: {}", clientRequest.url());
+                            // 打印请求头信息
+                            clientRequest.headers().forEach((key, values) -> {
+                                log.info("请求头: {}: {}", key, values);
+                            });
+                            return Mono.just(clientRequest);
+                        }
+                ))
+                .build();
+    }
+
+
+}

+ 17 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/CacheConstant.java

@@ -0,0 +1,17 @@
+package com.jzg.quotation.commons.constant;
+
+/**
+ * @description: 缓存常量
+ * @author: wenks
+ * @date: 2025/2/15 15:11
+ **/
+public class CacheConstant {
+
+    // 大家财险授权
+    public static final String DAJIA_AUTHORIZATION = "dajia:authorization:";
+
+    // 大家财险授权保存时间
+    public static final int DAJIA_AUTHORIZATION_TIME = 12;
+
+
+}

+ 18 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/CaptchaIdentifyType.java

@@ -0,0 +1,18 @@
+package com.jzg.quotation.commons.constant.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum CaptchaIdentifyType {
+
+    TYPE_1("1", "计算型"),
+    TYPE_2("2", "文字行"),
+    ;
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 31 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/base/ExpenseRequestUrl.java

@@ -0,0 +1,31 @@
+package com.jzg.quotation.commons.constant.enums.base;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @version
+ * @description: 外部提供的接口
+ * @author: wenks
+ * @date: 2025/2/14 10:21
+ **/
+@Getter
+@AllArgsConstructor
+public enum ExpenseRequestUrl {
+
+    CAPTCHA_IDENTIFY("", "验证码识别"),
+    REINSURANCE_CAPTCHA_IDENTIFY("", "转保验证码识别"),
+    VIN_IDENTIFY("", "车架号识别"),
+    BRAND_MODEL_IDENTIFY("", "品牌型号识别"),
+    ;
+
+    private final String uri;
+
+    private final String description;
+
+    public static String getUrl(String url, String uri) {
+        return url + uri;
+    }
+
+}

+ 23 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/quote/CarKindCode.java

@@ -0,0 +1,23 @@
+package com.jzg.quotation.commons.constant.enums.quote;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @version
+ * @description: 车险出单 车辆种类代码
+ * @author: wenks
+ * @date: 2025/2/18 10:11
+ **/
+@AllArgsConstructor
+@Getter
+public enum CarKindCode {
+
+    CAR_KIND_CODE_A0("A0", "客车"),
+    CAR_KIND_CODE_A1("A1","货车");
+
+    private final String code;
+
+    private final String desc;
+}

+ 24 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/quote/CarNatureCode.java

@@ -0,0 +1,24 @@
+package com.jzg.quotation.commons.constant.enums.quote;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @version
+ * @description: 车险出单 使用性质代码
+ * @author: wenks
+ * @date: 2025/2/18 9:52
+ **/
+@AllArgsConstructor
+@Getter
+public enum CarNatureCode {
+
+    CAR_NATURE_CODE_01("01", "营业"),
+    CAR_NATURE_CODE_02("02", "非营业");
+
+    // 编号
+    private final String code;
+    // 说明
+    private final String desc;
+
+}

+ 29 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/quote/EnergyTypeCode.java

@@ -0,0 +1,29 @@
+package com.jzg.quotation.commons.constant.enums.quote;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @version
+ * @description: 车险出单 能源种类代码
+ * @author: wenks
+ * @date: 2025/2/18 10:45
+ **/
+@AllArgsConstructor
+@Getter
+public enum EnergyTypeCode {
+
+    ENERGY_TYPE_CODE_0("0", "燃油"),
+    ENERGY_TYPE_CODE_1("1", "纯电动"),
+    ENERGY_TYPE_CODE_2("2", "燃料电池"),
+    ENERGY_TYPE_CODE_3("3", "插电式混合动力"),
+    ENERGY_TYPE_CODE_4("4", "其他混合动力"),
+    ENERGY_TYPE_CODE_9("9", "其他");
+
+    // 编号
+    private final String code;
+    // 说明
+    private final String desc;
+
+}

+ 37 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/quote/KindCode.java

@@ -0,0 +1,37 @@
+package com.jzg.quotation.commons.constant.enums.quote;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum KindCode {
+
+    B("B", "第三者责任险"),
+    D4("D4", "乘客责任险"),
+    A("A", "机动车损失险"),
+    D3("D3", "司机责任险"),
+
+    MJ1("MJ1", "附加绝对免赔率特约条款(车损)"),
+    MJ2("MJ2", "附加绝对免赔率特约条款(机动车第三者责任保险)"),
+    MJ3("MJ3", "附加绝对免赔率特约条款(机动车车上人员责任保险(司机))"),
+    MJ4("MJ4", "附加绝对免赔率特约条款(机动车车上人员责任保险(乘客))"),
+
+    L("L", "附加车身划痕损失险"),
+    BD("BD", "附加法定节假日限额翻倍险"),
+
+    SY_FJ_YBW1("SY_FJ_YBW1", "附加医保外用药责任险(第三者责任保险)"),
+    SY_FJ_YBW2("SY_FJ_YBW2", "附加医保外用药责任险(车上人员责任保险(乘客))"),
+    SY_FJ_YBW3("SY_FJ_YBW3", "附加医保外用药责任险(车上人员责任保险(司机))"),
+
+    TY1("TY1", "道路救援服务特约条款"),
+    TY2("TY2", "车辆安全检测特约条款"),
+    TY3("TY3", "代为驾驶服务特约条款"),
+    TY4("TY4", "代为送检服务特约条款");
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 26 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/quote/PropertyCode.java

@@ -0,0 +1,26 @@
+package com.jzg.quotation.commons.constant.enums.quote;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @version
+ * @description: 所属性质代码
+ * @author: wenks
+ * @date: 2025/2/18 10:46
+ **/
+@AllArgsConstructor
+@Getter
+public enum PropertyCode {
+
+    PROPERTY_CODE_1("1", "个人"),
+    PROPERTY_CODE_2("2", "企业"),
+    PROPERTY_CODE_3("3", "机关");
+
+    // 编号
+    private final String code;
+    // 说明
+    private final String desc;
+
+
+}

+ 29 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/quote/RiskCode.java

@@ -0,0 +1,29 @@
+package com.jzg.quotation.commons.constant.enums.quote;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @description: 车险出单 险种信息
+ * @author: wenks
+ * @date: 2025/2/18 11:29
+ **/
+@AllArgsConstructor
+@Getter
+public enum RiskCode {
+
+    TRAFFIC("0507", "机动车交通事故责任强制保险", "交强"),
+
+    BUSINESS("0510", "机动车商业保险", "商业"),
+
+    ACCIDENT("0513", "意外险", "非车");
+
+    // 编号
+    private final String code;
+    // 说明
+    private final String desc;
+    // 简称
+    private final String shortName;
+
+}

+ 30 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/quote/VehicleUseCode.java

@@ -0,0 +1,30 @@
+package com.jzg.quotation.commons.constant.enums.quote;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @version
+ * @description: 车险出单 车辆用途
+ * @author: wenks
+ * @date: 2025/2/18 9:59
+ **/
+@AllArgsConstructor
+@Getter
+public enum VehicleUseCode {
+
+    VEHICLE_USE_CODE_01("01", "营业出租租赁"),
+    VEHICLE_USE_CODE_02("02", "营业城市公交"),
+    VEHICLE_USE_CODE_03("03", "营业公路客运"),
+    VEHICLE_USE_CODE_04("04", "营业货运"),
+    VEHICLE_USE_CODE_05("05", "家庭自用"),
+    VEHICLE_USE_CODE_06("06", "非营业机关"),
+    VEHICLE_USE_CODE_07("07", "非营业企业"),
+    VEHICLE_USE_CODE_08("08", "非营业货运");
+
+    // 编号
+    private final String code;
+    // 说明
+    private final String desc;
+}

+ 54 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/aggregated/QuoteResultsVo.java

@@ -0,0 +1,54 @@
+package com.jzg.quotation.commons.entity.vo.aggregated;
+
+
+import com.jzg.quotation.commons.entity.vo.quote.ExpenseFactor;
+import com.jzg.quotation.commons.entity.vo.quote.KindInfoVo;
+import com.jzg.quotation.commons.entity.vo.quote.RiskInfoVo;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @description: 保费计算 返回结果
+ * @author: wenks
+ * @date: 2025/2/18 14:29
+ **/
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class QuoteResultsVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -8957029953841098891L;
+
+    /**
+     * 保险公司订单号
+     */
+    private String insuranceOrderNo;
+
+    /**
+     * 交强险 险种信息
+     */
+    private RiskInfoVo ciRiskInfoVo;
+
+    /**
+     * 商业险 险种信息
+     */
+    private RiskInfoVo biRiskInfoVo;
+
+    /**
+     * 商业险信息
+     */
+    private List<KindInfoVo> kindInfoVo;
+
+    /**
+     * 费用因子
+     */
+    private List<ExpenseFactor> expenseFactors;
+
+
+}

+ 55 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/aggregated/QuoteVo.java

@@ -0,0 +1,55 @@
+package com.jzg.quotation.commons.entity.vo.aggregated;
+
+
+import com.jzg.quotation.commons.entity.vo.quote.*;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class QuoteVo implements Serializable   {
+
+    @Serial
+    private static final long serialVersionUID = 1928126868229420046L;
+
+    /**
+     * 归属信息
+     */
+    private AttributionInformationVo attributionInformationVo;
+    /**
+     * 车辆信息
+     */
+    private CarInfoVo carInfoVo;
+    /**
+     * 车主
+     */
+    private CustomerInfoVo ownersInfo;
+    /**
+     * 投保人
+     */
+    private CustomerInfoVo policyHolderInfo;
+    /**
+     * 被保人
+     */
+    private CustomerInfoVo insuredPersonInfo;
+    /**
+     * 交强险 险种信息
+     */
+    private RiskInfoVo ciRiskInfoVo;
+    /**
+     * 商业险 险种信息
+     */
+    private RiskInfoVo biRiskInfoVo;
+    /**
+     * 商业险信息
+     */
+    private List<KindInfoVo> kindInfoVo;
+
+}

+ 38 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/base/LoginBase.java

@@ -0,0 +1,38 @@
+package com.jzg.quotation.commons.entity.vo.base;
+
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+/**
+ * @description: 登录基类
+ * @author: wenks
+ * @date: 2025/2/18 15:56
+ **/
+@NoArgsConstructor
+@Data
+public class LoginBase {
+
+    /**
+     * 用户名
+     */
+    private String username;
+    /**
+     * 密码
+     */
+    private String password;
+    /**
+     * 手机号
+     */
+    private String phone;
+    /**
+     * 验证码
+     */
+    private String captcha;
+    /**
+     * 登录方式
+     */
+    private int signInMethod;
+
+}

+ 42 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/quote/AttributionInformationVo.java

@@ -0,0 +1,42 @@
+package com.jzg.quotation.commons.entity.vo.quote;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Map;
+
+/**
+ * @description: 归属信息实体
+ * @author: wenks
+ * @date: 2025/2/18 16:09
+ **/
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class AttributionInformationVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -6977727183255083558L;
+
+    /**
+     * 用户名
+     */
+    private String username;
+    /**
+     * 密码
+     */
+    private String password;
+    /**
+     * 配置信息
+     */
+    private Map<String, String> configInfo;
+    /**
+     * 请求方式
+     */
+    private String apiType;
+
+}

+ 118 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/quote/CarInfoVo.java

@@ -0,0 +1,118 @@
+package com.jzg.quotation.commons.entity.vo.quote;
+
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @description: 车辆信息
+ * @author: wenks
+ * @date: 2025/2/18 9:20
+ **/
+@NoArgsConstructor
+@Data
+public class CarInfoVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -1999956887911522472L;
+
+    /**
+     * 车牌
+     */
+    private String licenseNo;
+
+    /**
+     * 车架号
+     */
+    private String vinNo;
+
+    /**
+     * 品牌型号
+     */
+    private String brandName;
+
+    /**
+     * 发动机号
+     */
+    private String engineNo;
+
+    /**
+     * 年款
+     */
+    private String carYear;
+
+    /**
+     * 座位数[座]
+     */
+    private String seatCount;
+
+    /**
+     * 整备质量[千克(kg)]
+     */
+    private String completeKerbMass;
+
+    /**
+     * 核定载质量[千克(kg)]
+     */
+    private String limitLoad;
+
+    /**
+     * 功率[千瓦(Kw)]
+     */
+    private String powerScale;
+
+    /**
+     * 新车购置价[元]
+     */
+    private String purchasePrice;
+
+    /**
+     * @see com.jzg.quotation.commons.constant.enums.quote.CarNatureCode
+     * 使用性质代码
+     */
+    private String carNatureCode;
+
+    /**
+     * @see com.jzg.quotation.commons.constant.enums.quote.VehicleUseCode
+     * 车辆用途代码
+     */
+    private String vehicleUseCode;
+
+    /**
+     * 保司的车辆类型编码都一直 传入code即可
+     * 例如 K33 轿车 H31 轻型普通货车
+     * 车辆类型代码
+     */
+    private String carTypeCode;
+
+    /**
+     * @see com.jzg.quotation.commons.constant.enums.quote.CarKindCode
+     * 车辆种类代码
+     */
+    private String carKindCode;
+
+    /**
+     * @see com.jzg.quotation.commons.constant.enums.quote.EnergyTypeCode
+     * 能源种类代码
+     */
+    private String energyTypeCode;
+
+    /**
+     * @see com.jzg.quotation.commons.constant.enums.quote.PropertyCode
+     * 所属性质代码
+     */
+    private String propertyCode;
+
+    /**
+     * 注册日期
+     */
+    private String registerDate;
+
+    /**
+     * 发证日期
+     */
+    private String issueDate;
+}

+ 69 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/quote/CustomerInfoVo.java

@@ -0,0 +1,69 @@
+package com.jzg.quotation.commons.entity.vo.quote;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @description: 人员信息
+ * @author: wenks
+ * @date: 2025/2/18 10:56
+ **/
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class CustomerInfoVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -6294245892491122989L;
+
+    /**
+     * 姓名
+     */
+    private String name;
+
+    /**
+     * 身份证号
+     */
+    private String identifyNumber;
+
+    /**
+     * 身份证有效起期
+     */
+    private String identifyValidDate;
+
+    /**
+     * 身份证有效止期
+     */
+    private String identifyValidEndDate;
+
+    /**
+     * 证件类型代码
+     */
+    private String documentsTypeCode;
+
+    /**
+     * 组织机构代码
+     */
+    private String organizationCode;
+
+    /**
+     * 地址
+     */
+    private String addr;
+
+    /**
+     * 邮箱
+     */
+    private String email;
+
+    /**
+     * 手机号
+     */
+    private String mobile;
+
+}

+ 49 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/quote/ExpenseFactor.java

@@ -0,0 +1,49 @@
+package com.jzg.quotation.commons.entity.vo.quote;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @version
+ * @description: 保险公司报价 费用因子
+ * @author: wenks
+ * @date: 2025/2/13 17:51
+ **/
+@Data
+@AllArgsConstructor
+public class ExpenseFactor implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 6103396600694936662L;
+
+    /**
+     * 费用因子编码
+     */
+    private String code;
+
+    /**
+     * 费用因子名称
+     */
+    private String name;
+
+    /**
+     * 费用因子值
+     */
+    private String value;
+
+    /**
+     * 将费用信息转为 map
+     * @param expenseFactorList 费用信息
+     * @return Map
+     */
+    public static Map<String, String> toMap(List<ExpenseFactor> expenseFactorList) {
+        return expenseFactorList.stream().collect(Collectors.toMap(ExpenseFactor::getCode, ExpenseFactor::getValue));
+    }
+
+}

+ 50 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/quote/KindInfoVo.java

@@ -0,0 +1,50 @@
+package com.jzg.quotation.commons.entity.vo.quote;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @description: 商业险 险种信息
+ * @author: wenks
+ * @date: 2025/2/18 14:18
+ **/
+@AllArgsConstructor
+@Data
+public class KindInfoVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 3390946390254782785L;
+    /**
+     * 险种编码
+     */
+    private String kindCode;
+    /**
+     * 险种名称
+     */
+    private String kindName;
+    /**
+     * 保额
+     */
+    private BigDecimal amount;
+    /**
+     * 每座保额
+     */
+    private BigDecimal unitAmount;
+    /**
+     * 保费
+     */
+    private BigDecimal premium;
+    /**
+     * 附加绝对免赔率
+     */
+    private String deductibleRate;
+    /**
+     * 服务次数
+     */
+    private int serviceTimes;
+
+}

+ 48 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/quote/RiskInfoVo.java

@@ -0,0 +1,48 @@
+package com.jzg.quotation.commons.entity.vo.quote;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.checkerframework.checker.units.qual.A;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+
+/**
+ * @description: 车险出单 险种信息
+ * @author: wenks
+ * @date: 2025/2/18 11:16
+ **/
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class RiskInfoVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -8958183565558385154L;
+
+    /**
+     * 险种代码
+     */
+    private String riskCode;
+
+    /**
+     * 起保日期
+     */
+    private String startDate;
+
+    /**
+     * 终保日期
+     */
+    private String endDate;
+
+    /**
+     * 是否及时起保
+     * true 及时起保 false 不及时起保
+     */
+    private boolean instantFlag;
+
+
+}

+ 24 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/properties/CaptchaRecognitionProperties.java

@@ -0,0 +1,24 @@
+package com.jzg.quotation.commons.properties;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * @version
+ * @description: 验证码识别配置
+ * @author: wenks
+ * @date: 2025/2/13 8:59
+ **/
+@Data
+@Component
+@ConfigurationProperties(prefix = "exterior.api.captcha")
+public class CaptchaRecognitionProperties {
+
+    /**
+     * 识别url
+     */
+    private String recognitionUrl;
+
+}

+ 44 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/ExteriorUtilsRequest.java

@@ -0,0 +1,44 @@
+package com.jzg.quotation.commons.service;
+
+
+import com.jzg.quotation.commons.constant.enums.CaptchaIdentifyType;
+
+/**
+ * @description: 外部工具请求 用于封装一些公用的请求地址
+ * @author: wenks
+ * @date: 2025/2/13 10:51
+ **/
+public interface ExteriorUtilsRequest {
+
+    /**
+     * 验证码识别
+     *
+     * @param base64 base64信息
+     * @return 识别出来的验证码
+     */
+    String captchaIdentify(String base64String, CaptchaIdentifyType captchaIdentifyType);
+
+    /**
+     * 转保验证码识别
+     *
+     * @param base64String
+     * @return 转保验证码结果
+     */
+    String reinsuranceCaptchaIdentify(String base64String);
+
+    /**
+     * 车架号识别
+     *
+     * @param vin 车架号识别
+     * @return 车辆信息列表
+     */
+    String vinIdentify(String vin);
+
+    /**
+     * 品牌型号识别
+     *
+     * @param brandModel 品牌型号识别
+     * @return 车辆信息列表
+     */
+    String brandModelIdentify(String brandModel);
+}

+ 41 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationBaseService.java

@@ -0,0 +1,41 @@
+package com.jzg.quotation.commons.service;
+
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import lombok.Data;
+
+/**
+ * @description: 报价基类
+ * @author: wenks
+ * @date: 2025/2/18 15:57
+ **/
+public interface QuotationBaseService {
+
+    /**
+     * 报价
+     *
+     * @param quoteVo 报价实体
+     * @return 报价信息
+     */
+    QuoteResultsVo quote(QuoteVo quoteVo);
+    /**
+     * 获取特别约定列表
+     */
+
+    /**
+     * 提交核保
+     */
+
+    /**
+     * 上传影像
+     */
+
+    /**
+     * 下载保单
+     */
+
+    /**
+     * 查询订单状态
+     */
+
+}

+ 21 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationCrawlerBaseService.java

@@ -0,0 +1,21 @@
+package com.jzg.quotation.commons.service;
+
+
+import com.jzg.quotation.commons.entity.vo.base.LoginBase;
+
+
+/**
+ * @description: 爬虫报价基类
+ * @author: wenks
+ * @date: 2025/2/18 16:00
+ **/
+public interface QuotationCrawlerBaseService extends QuotationBaseService {
+
+    /**
+     * 登录
+     *
+     * @param loginBase 登录信息
+     */
+    void login(LoginBase loginBase);
+
+}

+ 61 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/impl/ExteriorUtilsRequestImpl.java

@@ -0,0 +1,61 @@
+package com.jzg.quotation.commons.service.impl;
+
+import com.jzg.quotation.commons.component.RequestComponent;
+import com.jzg.quotation.commons.constant.enums.CaptchaIdentifyType;
+import com.jzg.quotation.commons.constant.enums.base.ExpenseRequestUrl;
+import com.jzg.quotation.commons.properties.CaptchaRecognitionProperties;
+import com.jzg.quotation.commons.service.ExteriorUtilsRequest;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+
+@Service
+@RequiredArgsConstructor
+public class ExteriorUtilsRequestImpl implements ExteriorUtilsRequest {
+
+    private final RequestComponent requestComponent;
+
+    private final CaptchaRecognitionProperties captchaRecognitionProperties;
+
+    private String prefixToRemove(String base64String){
+        final String prefixStr = "base64,";
+        int i = base64String.indexOf(prefixStr);
+        if (i != -1) {
+            base64String = base64String.substring(i + prefixStr.length());
+        }
+        return base64String;
+    }
+
+    @Override
+    public String captchaIdentify(String base64String, CaptchaIdentifyType captchaIdentifyType) {
+        base64String = prefixToRemove(base64String);
+        ExpenseRequestUrl captcha = ExpenseRequestUrl.CAPTCHA_IDENTIFY;
+        String url = ExpenseRequestUrl.getUrl(captchaRecognitionProperties.getRecognitionUrl(), captcha.getUri());
+        String s = requestComponent.objectPost(url, Map.of("", base64String), captcha.getDescription(), String.class);
+        return s;
+    }
+
+    @Override
+    public String reinsuranceCaptchaIdentify(String base64String) {
+        ExpenseRequestUrl captcha = ExpenseRequestUrl.REINSURANCE_CAPTCHA_IDENTIFY;
+        String url = ExpenseRequestUrl.getUrl(captchaRecognitionProperties.getRecognitionUrl(), captcha.getUri());
+        return requestComponent.objectPost(url, Map.of(), captcha.getDescription(), String.class);
+    }
+
+    @Override
+    public String vinIdentify(String base64String) {
+        ExpenseRequestUrl captcha = ExpenseRequestUrl.VIN_IDENTIFY;
+        String url = ExpenseRequestUrl.getUrl(captchaRecognitionProperties.getRecognitionUrl(), captcha.getUri());
+        return requestComponent.objectPost(url, Map.of(), captcha.getDescription(), String.class);
+    }
+
+    @Override
+    public String brandModelIdentify(String base64String) {
+        ExpenseRequestUrl captcha = ExpenseRequestUrl.BRAND_MODEL_IDENTIFY;
+        String url = ExpenseRequestUrl.getUrl(captchaRecognitionProperties.getRecognitionUrl(), captcha.getUri());
+        return requestComponent.objectPost(url, Map.of(), captcha.getDescription(), String.class);
+    }
+
+}

+ 8 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/standard/ConfigureParameters.java

@@ -0,0 +1,8 @@
+package com.jzg.quotation.commons.standard;
+
+import java.io.Serializable;
+
+public interface ConfigureParameters extends Serializable {
+
+
+}

+ 30 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/standard/CrawlerRequestUrlStandard.java

@@ -0,0 +1,30 @@
+package com.jzg.quotation.commons.standard;
+
+/**
+ * @description: 爬虫请求url获取标准接口
+ * @author: wenks
+ * @date: 2025/2/11 11:35
+ **/
+public interface CrawlerRequestUrlStandard {
+
+    /**
+     * 获取爬虫请求的 url
+     *
+     * @return url
+     */
+    String getRequestUrl();
+
+    /**
+     * 获取爬虫请求的 描述
+     *
+     * @return 描述
+     */
+    String getRequestDescription();
+
+    /**
+     * 获取请求的uri
+     * @return uri
+     */
+    String uri();
+
+}

+ 15 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/standard/ExpenseFactorStandard.java

@@ -0,0 +1,15 @@
+package com.jzg.quotation.commons.standard;
+
+/**
+ * @version
+ * @description: 险公司报价 费用因子 规定
+ * @author: wenks
+ * @date: 2025/2/13 17:53
+ **/
+public interface ExpenseFactorStandard {
+
+     String getExpenseFactorCode();
+
+     String getExpenseFactorName();
+
+}

+ 65 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/standard/QuoteResultsConverter.java

@@ -0,0 +1,65 @@
+package com.jzg.quotation.commons.standard;
+
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
+import com.jzg.quotation.commons.entity.vo.quote.ExpenseFactor;
+import com.jzg.quotation.commons.entity.vo.quote.KindInfoVo;
+import com.jzg.quotation.commons.entity.vo.quote.RiskInfoVo;
+
+import java.util.List;
+
+/**
+ * @description: 结果转换抽象类
+ * @author: wenks
+ * @date: 2025/2/18 19:12
+ **/
+public abstract class QuoteResultsConverter<Response> {
+
+    /**
+     * 转换数据类 保险公司转换实体
+     *
+     * @return 保费计算 返回结果
+     */
+    public QuoteResultsVo toQuoteResultsVo(Response insuranceQuoteResults) {
+        // 交强险
+        RiskInfoVo ciRiskInfoVo = toCiRiskInfoVo(insuranceQuoteResults);
+        // 商业险
+        RiskInfoVo biRiskInfoVo = toBiRiskInfoVo(insuranceQuoteResults);
+        // 商业险险种
+        List<KindInfoVo> kindInfoVo = toKindInfoVoList(insuranceQuoteResults);
+        // 费用因子
+        List<ExpenseFactor> expenseFactors = toExpenseFactorList(insuranceQuoteResults);
+        return new QuoteResultsVo("", ciRiskInfoVo, biRiskInfoVo, kindInfoVo, expenseFactors);
+    }
+
+    /**
+     * 交强险
+     *
+     * @param insuranceQuoteResults 保险公司转换实体
+     * @return 交强险信息
+     */
+    protected abstract RiskInfoVo toCiRiskInfoVo(Response insuranceQuoteResults);
+
+    /**
+     * 商业险
+     *
+     * @param insuranceQuoteResults 保险公司转换实体
+     * @return 商业险信息
+     */
+    protected abstract RiskInfoVo toBiRiskInfoVo(Response insuranceQuoteResults);
+
+    /**
+     * 商业险险种
+     *
+     * @param insuranceQuoteResults 保险公司转换实体
+     * @return 商业险险种信息
+     */
+    protected abstract List<KindInfoVo> toKindInfoVoList(Response insuranceQuoteResults);
+
+    /**
+     * 费用因子
+     *
+     * @param insuranceQuoteResults 保险公司转换实体
+     * @return 费用因子信息
+     */
+    protected abstract List<ExpenseFactor> toExpenseFactorList(Response insuranceQuoteResults);
+}

+ 46 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/standard/conversion/ConfigureParametersConversion.java

@@ -0,0 +1,46 @@
+package com.jzg.quotation.commons.standard.conversion;
+
+import com.jzg.commons.exception.SystemException;
+import com.jzg.quotation.commons.standard.ConfigureParameters;
+import org.springframework.util.ReflectionUtils;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Map;
+
+
+/**
+ * @description: 归属信息转换为配置实体
+ * @author: wenks
+ * @date: 2025/2/18 17:06
+ **/
+public class ConfigureParametersConversion {
+
+    /**
+     * 通过反射设置对象属性
+     *
+     * @param t          配置
+     * @param configInfo 协议归属信息
+     * @param <T>        配置
+     */
+    public static <T extends ConfigureParameters> T conversionEntity(Class<T> t, Map<String, String> configInfo) {
+        T t1;
+        try {
+            t1 = t.getDeclaredConstructor().newInstance();
+        }catch (InstantiationException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) {
+            throw new SystemException("");
+        }
+
+        Field[] fieldsList = t1.getClass().getDeclaredFields();
+        for (Field field : fieldsList) {
+            try {
+                ReflectionUtils.makeAccessible(field);
+                field.set(t, configInfo.get(field.getName()));
+            } catch (IllegalAccessException e) {
+                throw new SystemException("{}没有此字段的映射", configInfo.get(field.getName()));
+            }
+        }
+        return t1;
+    }
+
+}

+ 34 - 0
tenant/insurance/quotation-dajia/pom.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.jzg</groupId>
+        <artifactId>insurance</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>quotation-dajia</artifactId>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.jzg</groupId>
+            <artifactId>quotation-commons</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+
+    </dependencies>
+
+</project>  

+ 5 - 6
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/YongchengApplication.java → tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/DaJiaQuotationApplication.java

@@ -1,4 +1,4 @@
-package com.jzg.yongcheng;
+package com.jzg.quotation.dajia;
 
 
 import org.mybatis.spring.annotation.MapperScan;
@@ -6,14 +6,13 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.context.annotation.ComponentScan;
 
-
 @SpringBootApplication
-@ComponentScan(basePackages = {"com.jzg.commons","com.jzg.yongcheng"})
+@ComponentScan(basePackages = {"com.jzg.quotation.dajia", "com.jzg.quotation.commons", "com.jzg.commons"})
 @MapperScan("com.jzg.commons.mapper")
-public class YongchengApplication {
+public class DaJiaQuotationApplication {
 
     public static void main(String[] args) {
-        SpringApplication.run(YongchengApplication.class, args);
+        SpringApplication.run(DaJiaQuotationApplication.class, args);
     }
 
-}
+}

+ 160 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/component/DaJiaRequestComponent.java

@@ -0,0 +1,160 @@
+package com.jzg.quotation.dajia.crawler.component;
+
+
+import com.alibaba.fastjson2.JSON;
+import com.jzg.commons.exception.SystemException;
+import com.jzg.quotation.commons.component.RequestComponent;
+import com.jzg.quotation.commons.constant.CacheConstant;
+import com.jzg.quotation.commons.constant.enums.CaptchaIdentifyType;
+import com.jzg.quotation.commons.service.ExteriorUtilsRequest;
+import com.jzg.quotation.commons.standard.CrawlerRequestUrlStandard;
+import com.jzg.quotation.dajia.crawler.constant.enums.RequestUrl;
+import com.jzg.quotation.dajia.crawler.entity.request.*;
+import com.jzg.quotation.dajia.crawler.entity.response.*;
+import com.jzg.quotation.dajia.crawler.utils.DESEncryption;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.redisson.api.RBucket;
+import org.redisson.api.RedissonClient;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.HttpStatusCode;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+
+import java.time.Duration;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.UUID;
+
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class DaJiaRequestComponent {
+
+    private final RequestComponent requestComponent;
+
+    private final RedissonClient redissonClient;
+
+    private final ExteriorUtilsRequest exteriorUtilsRequest;
+
+    /**
+     * 验证码
+     *
+     * @return
+     */
+    public DaJiaCrawlerCaptchaResponse captcha() {
+        Map<String, Object> map = Map.of("imgId", UUID.randomUUID().toString().replaceAll("-", ""));
+        // 请求
+        DaJiaCrawlerBaseResponse request = requestComponent.requestGET(RequestUrl.BASE_URL, RequestUrl.CAPTCHA, map, DaJiaCrawlerBaseResponse.class);
+        String decrypt = DESEncryption.decrypt(request.getResult());
+        return JSON.parseObject(decrypt, DaJiaCrawlerCaptchaResponse.class);
+    }
+
+    /**
+     * 登录
+     *
+     * @param request 登录请求体
+     * @return token
+     */
+    public String authenticate(String username, String password) {
+        // 登录验证码获取
+        DaJiaCrawlerCaptchaResponse captcha = captcha();
+        // 识别验证码
+        String s = exteriorUtilsRequest.captchaIdentify(captcha.getImg(), CaptchaIdentifyType.TYPE_1);
+        captcha.setImg(s);
+        // 登录存入缓存当中
+        DaJiaCrawlerAuthenticateRequest request = new DaJiaCrawlerAuthenticateRequest(captcha, username, password);
+        ResponseEntity<DaJiaCrawlerBaseResponse> responseEntity = requestComponent.objectPost(RequestUrl.BASE_URL, RequestUrl.AUTHENTICATE, request, DaJiaCrawlerBaseResponse.class);
+        HttpStatusCode statusCode = responseEntity.getStatusCode();
+        String authorization = responseEntity.getHeaders().getFirst(HttpHeaders.AUTHORIZATION);
+        // 判断请求是否成功和授权码是否返回
+        if (HttpStatus.OK.value() != statusCode.value() && !StringUtils.hasLength(authorization)) {
+            String message = Optional.ofNullable(responseEntity.getBody())
+                    .map(DaJiaCrawlerBaseResponse::getMessage)
+                    .orElseThrow(() -> new SystemException("登录失败"));
+            throw new SystemException(message);
+        }
+        redissonClient.getBucket(CacheConstant.DAJIA_AUTHORIZATION + username).set(authorization, Duration.ofHours(CacheConstant.DAJIA_AUTHORIZATION_TIME));
+        return authorization;
+    }
+
+    /**
+     * 获取请求头
+     * @return
+     */
+    public HttpHeaders getHeaders(String username, String password){
+        String authorization = (String) redissonClient.getBucket(CacheConstant.DAJIA_AUTHORIZATION).get();
+        if(!StringUtils.hasLength(authorization)){
+            authorization = authenticate(username, password);
+        }
+        HttpHeaders headers = new HttpHeaders();
+        headers.set(HttpHeaders.AUTHORIZATION + password, authorization);
+        return headers;
+    }
+
+    /**
+     * 请求
+     *
+     * @param request 报价请求体
+     * @return
+     */
+    public <DaJiaResponse> DaJiaResponse request(CrawlerRequestUrlStandard crawlerRequestUrlStandard, Object request, Class<DaJiaResponse> responseClass, HttpHeaders headers) {
+        ResponseEntity<DaJiaCrawlerBaseResponse> responseEntity = requestComponent.objectPost(crawlerRequestUrlStandard, request, DaJiaCrawlerBaseResponse.class, headers);
+        DaJiaCrawlerBaseResponse daJiaCrawlerBaseResponse = responseEntity.getBody();
+
+        String decrypt = DESEncryption.decrypt(daJiaCrawlerBaseResponse.getResult());
+        return JSON.parseObject(decrypt, responseClass);
+    }
+
+    /**
+     * 车型查询
+     * @param daJiaCrawlerCarRequest 车型查询请求体
+     * @param headers 请求头
+     * @return 车型列表
+     */
+    public List<DaJiaCrawlerCarResponse.ListDTO> car(DaJiaCrawlerCarRequest daJiaCrawlerCarRequest, HttpHeaders headers){
+        DaJiaCrawlerCarResponse request = request(RequestUrl.CAR, daJiaCrawlerCarRequest, DaJiaCrawlerCarResponse.class, headers);
+        return request.getList();
+    }
+
+
+    /**
+     * 计算折旧价格
+     *
+     * @param request 折旧价请求
+     * @param headers 请求头
+     * @return 折旧价格
+     */
+    public String actualValue(DaJiaCrawlerActualValueRequest request, HttpHeaders headers) {
+        DaJiaCrawlerActualValueResponse response = request(RequestUrl.ACTUAL_VALUE, request, DaJiaCrawlerActualValueResponse.class, headers);
+        return response.getActualValue();
+    }
+
+    /**
+     * 报价
+     *
+     * @param request 订单请求
+     * @param headers 请求头
+     * @return 报价响应
+     */
+    public DaJiaCrawlerPriceResponse price(DaJiaCrawlerPriceRequest request, HttpHeaders headers) {
+        return request(RequestUrl.PRICE, request, DaJiaCrawlerPriceResponse.class, headers);
+    }
+
+    /**
+     * 保存订单
+     *
+     * @param request 订单请求
+     * @param headers 请求头
+     * @return 报价响应
+     */
+    public DaJiaCrawlerSaveResponse save(DaJiaCrawlerSaveRequest request, HttpHeaders headers) {
+        return request(RequestUrl.SAVE, request, DaJiaCrawlerSaveResponse.class, headers);
+    }
+
+
+
+}

+ 51 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/constant/enums/RequestUrl.java

@@ -0,0 +1,51 @@
+package com.jzg.quotation.dajia.crawler.constant.enums;
+
+
+import com.jzg.quotation.commons.standard.CrawlerRequestUrlStandard;
+import lombok.AllArgsConstructor;
+
+/**
+ * @description: 大家财险请求 url 配置
+ * @author: wenks
+ * @date: 2025/2/11 11:43
+ **/
+@AllArgsConstructor
+public enum RequestUrl implements CrawlerRequestUrlStandard {
+
+    // 登录
+    CAPTCHA("captcha", "验证码"),
+    AUTHENTICATE("authenticate", "登录"),
+    // 业务
+    PRICE("price", "报价"),
+    SAVE("save", "保存订单"),
+    CAR("car", "车型查询"),
+    ACTUAL_VALUE("", "计算折旧价格"),
+
+    ;
+
+    private final String uri;
+
+    private final String description;
+
+    // 登录 验证码
+    public static final String BASE_URL = "https://cts.djbx.com/api_prod/api/";
+
+    // 车险平台
+    private static final String VHL_URL = "https://cts.djbx.com/api_vhl_prod/api/";
+
+    @Override
+    public String getRequestUrl() {
+        return VHL_URL + uri;
+    }
+
+    @Override
+    public String getRequestDescription() {
+        return description;
+    }
+
+    @Override
+    public String uri() {
+        return uri;
+    }
+
+}

+ 55 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/constant/enums/dictionary/BIKind.java

@@ -0,0 +1,55 @@
+package com.jzg.quotation.dajia.crawler.constant.enums.dictionary;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @description: 大家财险 商业险
+ * @author: wenks
+ * @date: 2025/2/13 15:39
+ **/
+@Getter
+@AllArgsConstructor
+public enum BIKind {
+
+    KIND_030006("030006", "车辆损失险"),
+    KIND_030021("030021", "附加新增加设备损失险"),
+    KIND_030042("030042", "附加修理期间费用补偿险 "),
+    KIND_032601("032601", "附加车身划痕损失险"),
+    KIND_035601("035601", "附加绝对免赔率特约条款(车辆损失保险)"),
+    KIND_035606("035606", "附加车轮单独损失险"),
+    KIND_035607("035607", "附加发动机进水损坏除外特约条款"),
+
+    KIND_030018("030018", "第三者责任险"),
+    KIND_030015("030015", "附加精神损害抚慰金责任险(第三者责任保险)"),
+    KIND_030032("030032", "附加车上货物责任险"),
+    KIND_033614("033614", "附加法定节假日限额翻倍险"),
+    KIND_035602("035602", "附加绝对免赔率特约条款(第三者责任保险)"),
+    KIND_035608("035608", "附加医保外医疗费用责任险(第三者责任保险)"),
+
+    KIND_030001("030001", "车上人员责任险驾驶人座位"),
+    KIND_035603("035603", "附加绝对免赔率特约条款(车上人员责任保险(司机))"),
+    KIND_035613("035613", "附加医保外医疗费用责任险(车上人员责任保险(司机))"),
+    KIND_035615("035615", "附加精神损害抚慰金责任险(车上人员责任保险(司机))"),
+
+    KIND_030009("030009", "车上人员责任险乘客座位"),
+    KIND_035604("035604", "附加绝对免赔率特约条款(车上人员责任保险(乘客))"),
+    KIND_035614("035614", "附加医保外医疗费用责任险(车上人员责任保险(乘客))"),
+    KIND_035616("035616", "附加精神损害抚慰金责任险(车上人员责任保险(乘客))"),
+
+    KIND_030061("030061", "盗抢险"),
+    KIND_035605("035605", "附加绝对免赔率特约条款(特种车全车盗抢保险)"),
+
+    KIND_035609("035609", "道路救援服务特约条款"),
+    KIND_035610("035610", "车辆安全检测特约条款"),
+    KIND_035611("035611", "代为驾驶服务特约条款"),
+    KIND_035612("035612", "代为送检服务特约条款"),
+    KIND_032612("032612", "附加起重、装卸、挖掘车辆损失扩展条款"),
+    KIND_032613("032613", "附加特种车辆固定设备、仪器损坏扩展条款");
+
+    private final String kindCode;
+
+    private final String kindName;
+
+}

+ 29 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/constant/enums/dictionary/CIKind.java

@@ -0,0 +1,29 @@
+package com.jzg.quotation.dajia.crawler.constant.enums.dictionary;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @version
+ * @description: 大家财险 交强险
+ * @author: wenks
+ * @date: 2025/2/13 15:39
+ **/
+@Getter
+@AllArgsConstructor
+public enum CIKind {
+
+    KIND_030055("030055", "每次事故死亡伤残"),
+    KIND_030056("030056", "每次事故医疗费用"),
+    KIND_030057("030057", "每次事故财产损失"),
+    KIND_030058("030058", "每次事故无责任死亡伤残"),
+    KIND_030059("030059", "每次事故无责任医疗费用"),
+    KIND_030060("030060", "每次事故无责任财产损失");
+
+    private final String kindCode;
+
+    private final String kindName;
+
+
+}

+ 23 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/constant/enums/dictionary/Risk.java

@@ -0,0 +1,23 @@
+package com.jzg.quotation.dajia.crawler.constant.enums.dictionary;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @description: 大家财险 险种
+ * @author: wenks
+ * @date: 2025/2/13 14:38
+ **/
+@Getter
+@AllArgsConstructor
+public enum Risk {
+
+    CI_0320("0320", "交强险"),
+    BI_0356("0356", "商业险");
+
+    private final String riskCode;
+
+    private final String riskName;
+
+}

+ 46 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/converter/DaJiaCrawlerQuoteResultsConverter.java

@@ -0,0 +1,46 @@
+package com.jzg.quotation.dajia.crawler.converter;
+
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
+import com.jzg.quotation.commons.entity.vo.quote.ExpenseFactor;
+import com.jzg.quotation.commons.entity.vo.quote.KindInfoVo;
+import com.jzg.quotation.commons.entity.vo.quote.RiskInfoVo;
+import com.jzg.quotation.commons.standard.QuoteResultsConverter;
+import com.jzg.quotation.dajia.crawler.entity.request.DaJiaCrawlerPriceRequest;
+import com.jzg.quotation.dajia.crawler.entity.response.DaJiaCrawlerPriceResponse;
+
+import java.util.List;
+
+/**
+ * @description: 大家结果返回 拼装
+ * @author: wenks
+ * @date: 2025/2/18 19:21
+ **/
+public class DaJiaCrawlerQuoteResultsConverter extends QuoteResultsConverter<DaJiaCrawlerPriceResponse> {
+
+    @Override
+    protected  RiskInfoVo toCiRiskInfoVo(DaJiaCrawlerPriceResponse insuranceQuoteResults) {
+        RiskInfoVo riskInfoVo = new RiskInfoVo();
+
+
+        return null;
+    }
+
+    @Override
+    protected RiskInfoVo toBiRiskInfoVo(DaJiaCrawlerPriceResponse insuranceQuoteResults) {
+
+        return null;
+    }
+
+    @Override
+    protected List<KindInfoVo> toKindInfoVoList(DaJiaCrawlerPriceResponse insuranceQuoteResults) {
+
+        return List.of();
+    }
+
+    @Override
+    protected List<ExpenseFactor> toExpenseFactorList(DaJiaCrawlerPriceResponse insuranceQuoteResults) {
+
+        return List.of();
+    }
+
+}

+ 24 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/DaJiaCrawlerConfigureParameters.java

@@ -0,0 +1,24 @@
+package com.jzg.quotation.dajia.crawler.entity;
+
+import com.jzg.quotation.commons.standard.ConfigureParameters;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+
+/**
+ * @description: 大家财险【爬虫】配置信息
+ * @author: wenks
+ * @date: 2025/2/18 17:09
+ **/
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class DaJiaCrawlerConfigureParameters implements ConfigureParameters {
+
+    @Serial
+    private static final long serialVersionUID = -4576395685599605562L;
+
+}

+ 50 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerActualValueRequest.java

@@ -0,0 +1,50 @@
+package com.jzg.quotation.dajia.crawler.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+/**
+ * @version
+ * @description: 大家财险 爬虫 计算折旧价
+ * @author: wenks
+ * @date: 2025/2/15 15:14
+ **/
+@NoArgsConstructor
+@Data
+public class DaJiaCrawlerActualValueRequest {
+
+    @JsonProperty("purchaseValue")
+    private String purchaseValue;
+
+    @JsonProperty("registerDate")
+    private String registerDate;
+
+    @JsonProperty("rideKind")
+    private String rideKind;
+
+    @JsonProperty("startDate")
+    private String startDate;
+
+    @JsonProperty("usage")
+    private String usage;
+
+    @JsonProperty("vehicleName")
+    private String vehicleName;
+
+    @JsonProperty("fuelType")
+    private String fuelType;
+
+    @JsonProperty("combineProductCode")
+    private String combineProductCode;
+
+    @JsonProperty("seatNumber")
+    private String seatNumber;
+
+    @JsonProperty("modelEnergyType")
+    private String modelEnergyType;
+
+    @JsonProperty("operatorCode")
+    private String operatorCode;
+}

+ 72 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerAuthenticateRequest.java

@@ -0,0 +1,72 @@
+package com.jzg.quotation.dajia.crawler.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.dajia.crawler.entity.response.DaJiaCrawlerCaptchaResponse;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+
+/**
+ * @version
+ * @description: 大家财险【爬虫】【登录】【响应体】
+ * @author: wenks
+ * @date: 2025/2/13 14:23
+ **/
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class DaJiaCrawlerAuthenticateRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 7368689446049547605L;
+
+    /**
+     * 用户名
+     */
+    @JsonProperty("username")
+    private String username;
+
+    /**
+     * 密码
+     */
+    @JsonProperty("password")
+    private String password;
+
+    /**
+     * 验证码
+     */
+    @JsonProperty("checkCode")
+    private String checkCode;
+
+    /**
+     * 验证码id
+     */
+    @JsonProperty("imgId")
+    private String imgId;
+
+    /**
+     * 记住密码
+     */
+    @JsonProperty("rememberMe")
+    private Boolean rememberMe = false;
+
+    /**
+     * 用户名
+     */
+    @JsonProperty("operatorId")
+    private String operatorId;
+
+
+    public DaJiaCrawlerAuthenticateRequest(DaJiaCrawlerCaptchaResponse captcha, String username, String password) {
+        this.username = username;
+        this.password = password;
+        this.checkCode = captcha.getImg();
+        this.imgId = captcha.getUuid();
+        this.operatorId = username;
+    }
+
+}

+ 27 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerBaseRequest.java

@@ -0,0 +1,27 @@
+package com.jzg.quotation.dajia.crawler.entity.request;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @version
+ * @description: 大家财险 爬虫 基础请求体
+ * @author: wenks
+ * @date: 2025/2/15 15:03
+ **/
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class DaJiaCrawlerBaseRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 2304961708114602898L;
+
+
+    private String data;
+
+}

+ 61 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerCarRequest.java

@@ -0,0 +1,61 @@
+package com.jzg.quotation.dajia.crawler.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@NoArgsConstructor
+@Data
+public class DaJiaCrawlerCarRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 3887879260967024252L;
+
+    @JsonProperty("pageNo")
+    private Integer pageNo;
+
+    @JsonProperty("pageSize")
+    private Integer pageSize;
+    /**
+     * 品牌型号
+     */
+    @JsonProperty("vehicleName")
+    private String vehicleName;
+
+    @JsonProperty("areaCode")
+    private String areaCode;
+
+    @JsonProperty("orderNo")
+    private String orderNo;
+
+    @JsonProperty("dptCode")
+    private String dptCode;
+    /**
+     * 发动机号
+     */
+    @JsonProperty("engineNo")
+    private String engineNo;
+    /**
+     * 车架号
+     */
+    @JsonProperty("vin")
+    private String vin;
+    /**
+     * 车牌号
+     */
+    @JsonProperty("licensePlateNo")
+    private String licensePlateNo;
+    /**
+     * 好牌种类
+     */
+    @JsonProperty("queryMod")
+    private String queryMod;
+
+    @JsonProperty("operatorCode")
+    private String operatorCode;
+
+
+}

+ 91 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerPriceRequest.java

@@ -0,0 +1,91 @@
+package com.jzg.quotation.dajia.crawler.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.dajia.crawler.entity.request.quote.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+ * @description: 大家财险 【报价】【请求体】
+ * @author: wenks
+ * @date: 2025/2/13 16:13
+ **/
+@NoArgsConstructor
+@Data
+public class DaJiaCrawlerPriceRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -4372992959341088406L;
+
+    @JsonProperty("applicantInfo")
+    private PersonnelInformation applicantInfo;
+
+    @JsonProperty("businessInsurance")
+    private BusinessInsuranceDTO businessInsurance;
+
+    @JsonProperty("checkCarInfomation")
+    private CheckCarInfomationDTO checkCarInformationDTO;
+
+    @JsonProperty("compulsoryInsurance")
+    private CompulsoryInsuranceDTO compulsoryInsurance;
+
+    @JsonProperty("driveInsurance")
+    private DriveInsuranceDTO driveInsurance;
+
+    @JsonProperty("jabFamilyDriveInsurance")
+    private Object jabFamilyDriveInsurance;
+
+    @JsonProperty("rqbFamilyDriveInsurance")
+    private Object rqbFamilyDriveInsurance;
+
+    @JsonProperty("jkFamilyDriveInsurance")
+    private Object jkFamilyDriveInsurance;
+
+    @JsonProperty("yyDriveInsurance")
+    private Object yyDriveInsurance;
+
+    @JsonProperty("hyDriveInsurance")
+    private Object hyDriveInsurance;
+
+    @JsonProperty("jkhosDriveInsurance")
+    private Object jkhosDriveInsurance;
+
+    @JsonProperty("jyChargeDriveInsurance")
+    private Object jyChargeDriveInsurance;
+
+    @JsonProperty("motorDriveInsurance")
+    private Object motorDriveInsurance;
+
+    @JsonProperty("insuredInfos")
+    private List<PersonnelInformation> insuredInfos;
+
+    @JsonProperty("proposalInfo")
+    private ProposalInfoDTO proposalInfo;
+
+    @JsonProperty("vehicleInfo")
+    private VehicleInfoDTO vehicleInfo;
+
+    @JsonProperty("vehicleOwnerInfo")
+    private VehicleOwnerInfoDTO vehicleOwnerInfo;
+
+    @JsonProperty("flatvhlInfo")
+    private FlatvhlInfoDTO flatvhlInfo;
+
+    @JsonProperty("acctinfo")
+    private AcctinfoDTO acctinfo;
+
+    @JsonProperty("deliveryVO")
+    private Object deliveryVO;
+
+    @JsonProperty("incrementVO")
+    private Object incrementVO;
+
+    @JsonProperty("operatorCode")
+    private String operatorCode;
+
+}

+ 119 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/DaJiaCrawlerSaveRequest.java

@@ -0,0 +1,119 @@
+package com.jzg.quotation.dajia.crawler.entity.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.dajia.crawler.entity.request.quote.*;
+import com.jzg.quotation.dajia.crawler.entity.response.DaJiaCrawlerPriceResponse;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+ * @description: 大家财险保存接口
+ * @author: wenks
+ * @date: 2025/2/18 18:42
+ **/
+@NoArgsConstructor
+@Data
+public class DaJiaCrawlerSaveRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -2458751580181153005L;
+
+    @JsonProperty("applicantInfo")
+    private PersonnelInformation applicantInfo;
+
+    @JsonProperty("businessInsurance")
+    private BusinessInsuranceDTO businessInsurance;
+
+    @JsonProperty("checkCarInfomation")
+    private CheckCarInfomationDTO checkCarInfomation;
+
+    @JsonProperty("compulsoryInsurance")
+    private CompulsoryInsuranceDTO compulsoryInsurance;
+
+    @JsonProperty("driveInsurance")
+    private DriveInsuranceDTO driveInsurance;
+
+    @JsonProperty("jabFamilyDriveInsurance")
+    private Object jabFamilyDriveInsurance;
+
+    @JsonProperty("rqbFamilyDriveInsurance")
+    private Object rqbFamilyDriveInsurance;
+
+    @JsonProperty("jkFamilyDriveInsurance")
+    private Object jkFamilyDriveInsurance;
+
+    @JsonProperty("yyDriveInsurance")
+    private Object yyDriveInsurance;
+
+    @JsonProperty("hyDriveInsurance")
+    private Object hyDriveInsurance;
+
+    @JsonProperty("jkhosDriveInsurance")
+    private Object jkhosDriveInsurance;
+
+    @JsonProperty("jyChargeDriveInsurance")
+    private Object jyChargeDriveInsurance;
+
+    @JsonProperty("motorDriveInsurance")
+    private Object motorDriveInsurance;
+
+    @JsonProperty("insuredInfos")
+    private List<PersonnelInformation> insuredInfos;
+
+    @JsonProperty("proposalInfo")
+    private ProposalInfoDTO proposalInfo;
+
+    @JsonProperty("vehicleInfo")
+    private VehicleInfoDTO vehicleInfo;
+
+    @JsonProperty("vehicleOwnerInfo")
+    private VehicleOwnerInfoDTO vehicleOwnerInfo;
+
+    @JsonProperty("flatvhlInfo")
+    private FlatvhlInfoDTO flatvhlInfo;
+
+    @JsonProperty("acctinfo")
+    private AcctinfoDTO acctinfo;
+
+    @JsonProperty("deliveryVO")
+    private Object deliveryVO;
+
+    @JsonProperty("incrementVO")
+    private Object incrementVO;
+
+    @JsonProperty("operatorCode")
+    private String operatorCode;
+
+    public DaJiaCrawlerSaveRequest(DaJiaCrawlerPriceResponse crawlerPriceResponse, String operatorCode) {
+        this.applicantInfo = crawlerPriceResponse.getApplicantInfo();
+        this.businessInsurance = crawlerPriceResponse.getBusinessInsurance();
+        this.checkCarInfomation = crawlerPriceResponse.getCheckCarInfomation();
+        this.compulsoryInsurance = crawlerPriceResponse.getCompulsoryInsurance();
+        this.driveInsurance = crawlerPriceResponse.getDriveInsurance();
+        this.jabFamilyDriveInsurance = crawlerPriceResponse.getJabFamilyDriveInsurance();
+        this.rqbFamilyDriveInsurance = crawlerPriceResponse.getRqbFamilyDriveInsurance();
+        this.jkFamilyDriveInsurance = crawlerPriceResponse.getJkFamilyDriveInsurance();
+        this.yyDriveInsurance = crawlerPriceResponse.getYyDriveInsurance();
+        this.hyDriveInsurance = crawlerPriceResponse.getHyDriveInsurance();
+        this.jkhosDriveInsurance = crawlerPriceResponse.getJkhosDriveInsurance();
+        this.jyChargeDriveInsurance = crawlerPriceResponse.getJyChargeDriveInsurance();
+        this.motorDriveInsurance = crawlerPriceResponse.getMotorDriveInsurance();
+        this.insuredInfos = crawlerPriceResponse.getInsuredInfos();
+        this.proposalInfo = crawlerPriceResponse.getProposalInfo();
+        this.vehicleInfo = crawlerPriceResponse.getVehicleInfo();
+        this.vehicleOwnerInfo = crawlerPriceResponse.getVehicleOwnerInfo();
+        this.flatvhlInfo = crawlerPriceResponse.getFlatvhlInfo();
+        this.acctinfo = crawlerPriceResponse.getAcctinfo();
+        this.deliveryVO = crawlerPriceResponse.getDeliveryVO();
+        this.incrementVO = crawlerPriceResponse.getIncrementVO();
+        this.operatorCode = operatorCode;
+    }
+
+
+}

+ 41 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/AcctinfoDTO.java

@@ -0,0 +1,41 @@
+package com.jzg.quotation.dajia.crawler.entity.request.quote;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@NoArgsConstructor
+@Data
+public class AcctinfoDTO implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 8621092056192776893L;
+
+    @JsonProperty("acctNme")
+    private String acctNme;
+
+    @JsonProperty("acctTyp")
+    private String acctTyp;
+
+    @JsonProperty("acctNo")
+    private String acctNo;
+
+    @JsonProperty("bankPro")
+    private String bankPro;
+
+    @JsonProperty("bankArea")
+    private String bankArea;
+
+    @JsonProperty("bankRelCde")
+    private String bankRelCde;
+
+    @JsonProperty("bankCde")
+    private String bankCde;
+
+    @JsonProperty("bankCdeName")
+    private String bankCdeName;
+
+}

+ 469 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/BusinessInsuranceDTO.java

@@ -0,0 +1,469 @@
+package com.jzg.quotation.dajia.crawler.entity.request.quote;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+@NoArgsConstructor
+@Data
+public class BusinessInsuranceDTO implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 9140485846197533624L;
+
+    @JsonProperty("productInfo")
+    private ProductInfoDTO productInfo;
+
+    @JsonProperty("itemKinds")
+    private List<ItemKindsDTO> itemKinds;
+
+    @JsonProperty("deviceInfos")
+    private String deviceInfos;
+
+    @JsonProperty("coefficientInfo")
+    private CoefficientInfoDTO coefficientInfo;
+
+    @JsonProperty("platformInfo")
+    private String platformInfo;
+
+    @JsonProperty("ubiMessage")
+    private String ubiMessage;
+
+    @JsonProperty("feeInfos")
+    private String feeInfos;
+
+    @JsonProperty("specialInfos")
+    private List<SpecialInfosDTO> specialInfos;
+
+    @JsonProperty("chargPostInfos")
+    private List<Object> chargPostInfos;
+
+    @NoArgsConstructor
+    @Data
+    public static class ProductInfoDTO {
+        @JsonProperty("businessID")
+        private String businessID;
+        @JsonProperty("effective")
+        private String effective;
+        @JsonProperty("startDate")
+        private String startDate;
+        @JsonProperty("endDate")
+        private String endDate;
+        @JsonProperty("productCode")
+        private String productCode;
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        @JsonProperty("proposalTime")
+        private String proposalTime;
+        @JsonProperty("premium")
+        private String premium;
+        @JsonProperty("feeRate")
+        private String feeRate;
+        @JsonProperty("feeCoef")
+        private String feeCoef;
+        @JsonProperty("proposalStatus")
+        private String proposalStatus;
+        @JsonProperty("tgtObjCpkid")
+        private String tgtObjCpkid;
+        @JsonProperty("artificialFlag")
+        private String artificialFlag;
+        @JsonProperty("flatCarReinsuredMessage")
+        private String flatCarReinsuredMessage;
+        @JsonProperty("caclCode")
+        private String caclCode;
+        @JsonProperty("resultCode")
+        private String resultCode;
+        @JsonProperty("underwritingCode")
+        private String underwritingCode;
+        @JsonProperty("message")
+        private String message;
+        @JsonProperty("errorMessage")
+        private String errorMessage;
+        @JsonProperty("lastPolicyNo")
+        private String lastPolicyNo;
+        @JsonProperty("lastEndDate")
+        private String lastEndDate;
+        @JsonProperty("policyNo")
+        private String policyNo;
+        @JsonProperty("quotedNo")
+        private String quotedNo;
+        @JsonProperty("performanceRate")
+        private String performanceRate;
+        @JsonProperty("teamManageFeeRate")
+        private String teamManageFeeRate;
+        @JsonProperty("underWriteMessage")
+        private String underWriteMessage;
+        @JsonProperty("underWriteMessageRecord")
+        private String underWriteMessageRecord;
+        @JsonProperty("sumPremium")
+        private String sumPremium;
+        @JsonProperty("discount")
+        private String discount;
+        @JsonProperty("valueAddTax")
+        private String valueAddTax;
+        @JsonProperty("noTaxSumPremium")
+        private String noTaxSumPremium;
+        @JsonProperty("sumInsured")
+        private String sumInsured;
+        @JsonProperty("invoiceForm")
+        private String invoiceForm;
+        @JsonProperty("meal")
+        private String meal;
+        @JsonProperty("renewMark")
+        private String renewMark;
+        @JsonProperty("serviceCode")
+        private String serviceCode;
+        @JsonProperty("day")
+        private String day;
+        @JsonProperty("elProposal")
+        private String elProposal;
+        @JsonProperty("elPolicy")
+        private String elPolicy;
+        @JsonProperty("selfMark")
+        private String selfMark;
+        @JsonProperty("issueDate")
+        private String issueDate;
+        @JsonProperty("syAdjustRate")
+        private String syAdjustRate;
+        @JsonProperty("isReform")
+        private String isReform;
+        @JsonProperty("taxRate")
+        private String taxRate;
+        @JsonProperty("taxPrm")
+        private String taxPrm;
+        @JsonProperty("lastYearEndDateSy")
+        private String lastYearEndDateSy;
+        @JsonProperty("planId")
+        private String planId;
+        @JsonProperty("planName")
+        private String planName;
+        @JsonProperty("number")
+        private String number;
+        @JsonProperty("perPrmSum")
+        private String perPrmSum;
+        @JsonProperty("perAmtSum")
+        private String perAmtSum;
+        @JsonProperty("lastYearEndDateJq")
+        private String lastYearEndDateJq;
+        @JsonProperty("orginAppNo")
+        private String orginAppNo;
+        @JsonProperty("plyCrtTm")
+        private String plyCrtTm;
+        @JsonProperty("adjustProportion")
+        private String adjustProportion;
+        @JsonProperty("basePremium")
+        private String basePremium;
+        @JsonProperty("province")
+        private String province;
+        @JsonProperty("city")
+        private String city;
+        @JsonProperty("county")
+        private String county;
+        @JsonProperty("street")
+        private String street;
+        @JsonProperty("subAddress")
+        private String subAddress;
+        @JsonProperty("houseConstruction")
+        private String houseConstruction;
+        @JsonProperty("uncarPayMark")
+        private String uncarPayMark;
+        @JsonProperty("serialNo")
+        private String serialNo;
+        @JsonProperty("uncarDateMark")
+        private String uncarDateMark;
+        @JsonProperty("supFlag")
+        private String supFlag;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class CoefficientInfoDTO {
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        @JsonProperty("entireDiscount")
+        private String entireDiscount;
+        @JsonProperty("claimAdjustValue")
+        private String claimAdjustValue;
+        @JsonProperty("claimFlatReason")
+        private String claimFlatReason;
+        @JsonProperty("peccancyAdjustValue")
+        private String peccancyAdjustValue;
+        @JsonProperty("noFloatReason")
+        private String noFloatReason;
+        @JsonProperty("lastPolicyNum")
+        private String lastPolicyNum;
+        @JsonProperty("drunkFeeRateFlat")
+        private String drunkFeeRateFlat;
+        @JsonProperty("totalCoefNum")
+        private String totalCoefNum;
+        @JsonProperty("drunkTotalCoef")
+        private String drunkTotalCoef;
+        @JsonProperty("totalCoef")
+        private String totalCoef;
+        @JsonProperty("drinkFeeRateFlat")
+        private String drinkFeeRateFlat;
+        @JsonProperty("lossRatioCi")
+        private String lossRatioCi;
+        @JsonProperty("lossRatioBi")
+        private String lossRatioBi;
+        @JsonProperty("totalRatio")
+        private String totalRatio;
+        @JsonProperty("handFeeCi")
+        private String handFeeCi;
+        @JsonProperty("expDisCoef")
+        private String expDisCoef;
+        @JsonProperty("noComLastFlatRsn")
+        private String noComLastFlatRsn;
+        @JsonProperty("selfChannelRatio")
+        private String selfChannelRatio;
+        @JsonProperty("selfSubmitRatio")
+        private String selfSubmitRatio;
+        @JsonProperty("reason")
+        private String reason;
+        @JsonProperty("recordCoefCi")
+        private String recordCoefCi;
+        @JsonProperty("trafficFloatRes")
+        private String trafficFloatRes;
+        @JsonProperty("areaCoef")
+        private String areaCoef;
+        @JsonProperty("lastPayAmt")
+        private String lastPayAmt;
+        @JsonProperty("handFeeBi")
+        private String handFeeBi;
+        @JsonProperty("channelCoefRes")
+        private String channelCoefRes;
+        @JsonProperty("trafficRateFloat")
+        private String trafficRateFloat;
+        @JsonProperty("startTm")
+        private String startTm;
+        @JsonProperty("endTm")
+        private String endTm;
+        @JsonProperty("lowestCoef")
+        private String lowestCoef;
+        @JsonProperty("suggestCoef")
+        private String suggestCoef;
+        @JsonProperty("payoutRateCi")
+        private String payoutRateCi;
+        @JsonProperty("payoutRateBi")
+        private String payoutRateBi;
+        @JsonProperty("payoutRate")
+        private String payoutRate;
+        @JsonProperty("riskScore")
+        private String riskScore;
+        @JsonProperty("totalFeeRate")
+        private String totalFeeRate;
+        @JsonProperty("singlePaymentCi")
+        private String singlePaymentCi;
+        @JsonProperty("singlePaymentBi")
+        private String singlePaymentBi;
+        @JsonProperty("singlePayment")
+        private String singlePayment;
+        @JsonProperty("insureYears")
+        private String insureYears;
+        @JsonProperty("claimTimes")
+        private String claimTimes;
+        @JsonProperty("claimAdjustLvl")
+        private String claimAdjustLvl;
+        @JsonProperty("pricingAdjustValue")
+        private String pricingAdjustValue;
+        @JsonProperty("riskVar")
+        private String riskVar;
+        @JsonProperty("pricePlan")
+        private String pricePlan;
+        @JsonProperty("floatDown")
+        private String floatDown;
+        @JsonProperty("compensateFeeRate")
+        private String compensateFeeRate;
+        @JsonProperty("fixedDropDiscount")
+        private String fixedDropDiscount;
+        @JsonProperty("entireInitialDiscount")
+        private String entireInitialDiscount;
+        @JsonProperty("coefficientScore")
+        private String coefficientScore;
+        @JsonProperty("pubScores")
+        private String pubScores;
+        @JsonProperty("microDiscoverScore")
+        private String microDiscoverScore;
+        @JsonProperty("truckRiskMrk")
+        private String truckRiskMrk;
+        @JsonProperty("busRiskMrk")
+        private String busRiskMrk;
+        @JsonProperty("truckScore")
+        private String truckScore;
+        @JsonProperty("truckRiskWarning")
+        private String truckRiskWarning;
+        @JsonProperty("predictedNature")
+        private String predictedNature;
+        @JsonProperty("fullCoverageScore")
+        private String fullCoverageScore;
+        @JsonProperty("liabilityOnlyScore")
+        private String liabilityOnlyScore;
+        @JsonProperty("ctpOnlyScore")
+        private String ctpOnlyScore;
+        @JsonProperty("renewalFrequency")
+        private String renewalFrequency;
+        @JsonProperty("didScore")
+        private String didScore;
+        @JsonProperty("vhlPriceType")
+        private String vhlPriceType;
+        @JsonProperty("suggestedDiscount")
+        private String suggestedDiscount;
+        @JsonProperty("onlineCarScore")
+        private String onlineCarScore;
+        @JsonProperty("carIllegalScore")
+        private String carIllegalScore;
+        @JsonProperty("completeControlScore")
+        private String completeControlScore;
+        @JsonProperty("pingAnBillCOMELR")
+        private String pingAnBillCOMELR;
+        @JsonProperty("pingAnBillCTPELR")
+        private String pingAnBillCTPELR;
+        @JsonProperty("pingAnBillELR")
+        private String pingAnBillELR;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class ItemKindsDTO {
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        @JsonProperty("kindCode")
+        private String kindCode;
+        @JsonProperty("kindName")
+        private String kindName;
+        @JsonProperty("kindPackage")
+        private String kindPackage;
+        @JsonProperty("productName")
+        private String productName;
+        @JsonProperty("basePremium")
+        private String basePremium;
+        @JsonProperty("noTaxDiscountPremium")
+        private String noTaxDiscountPremium;
+        @JsonProperty("taxDiscountPremium")
+        private String taxDiscountPremium;
+        @JsonProperty("premium")
+        private String premium;
+        @JsonProperty("noDeductible")
+        private String noDeductible;
+        @JsonProperty("noDeductiblePremium")
+        private String noDeductiblePremium;
+        @JsonProperty("payPremium")
+        private String payPremium;
+        @JsonProperty("amount")
+        private String amount;
+        @JsonProperty("liabilityLevel")
+        private String liabilityLevel;
+        @JsonProperty("damageDeductible")
+        private String damageDeductible;
+        @JsonProperty("deductible")
+        private String deductible;
+        @JsonProperty("deductibleFlag")
+        private String deductibleFlag;
+        @JsonProperty("rate")
+        private String rate;
+        @JsonProperty("deductibleRatio")
+        private String deductibleRatio;
+        @JsonProperty("dutyDays")
+        private String dutyDays;
+        @JsonProperty("quantity")
+        private String quantity;
+        @JsonProperty("yearPayPremium")
+        private String yearPayPremium;
+        @JsonProperty("glassType")
+        private String glassType;
+        @JsonProperty("valueAddTax")
+        private String valueAddTax;
+        @JsonProperty("discount")
+        private String discount;
+        @JsonProperty("needCalculateAmount")
+        private String needCalculateAmount;
+        @JsonProperty("mainRiskFlag")
+        private String mainRiskFlag;
+        @JsonProperty("beginTime")
+        private String beginTime;
+        @JsonProperty("endTime")
+        private String endTime;
+        @JsonProperty("pkID")
+        private String pkID;
+        @JsonProperty("premiumYear")
+        private String premiumYear;
+        @JsonProperty("afterPremiumYear")
+        private String afterPremiumYear;
+        @JsonProperty("adjustRate")
+        private String adjustRate;
+        @JsonProperty("nindemlmt")
+        private String nindemlmt;
+        @JsonProperty("amtChange")
+        private String amtChange;
+        @JsonProperty("ductAmt")
+        private String ductAmt;
+        @JsonProperty("perAmt")
+        private String perAmt;
+        @JsonProperty("actPremium")
+        private String actPremium;
+        @JsonProperty("days")
+        private String days;
+        @JsonProperty("ductDiscount")
+        private String ductDiscount;
+        @JsonProperty("seqNo")
+        private String seqNo;
+        @JsonProperty("totalPremium")
+        private String totalPremium;
+        @JsonProperty("serviceTimes")
+        private String serviceTimes;
+        @JsonProperty("ductRate")
+        private String ductRate;
+        @JsonProperty("kindValueRate")
+        private String kindValueRate;
+        @JsonProperty("kindCost")
+        private String kindCost;
+        @JsonProperty("dutyCode")
+        private String dutyCode;
+        @JsonProperty("dutyName")
+        private String dutyName;
+        @JsonProperty("perPrm")
+        private String perPrm;
+        @JsonProperty("prodPlace")
+        private String prodPlace;
+        @JsonProperty("cancelMrk")
+        private String cancelMrk;
+        @JsonProperty("adjustProportion")
+        private String adjustProportion;
+        @JsonProperty("floatRate")
+        private String floatRate;
+        @JsonProperty("identifyNo")
+        private String identifyNo;
+        @JsonProperty("cvrgType")
+        private String cvrgType;
+        @JsonProperty("onceInjurLmt")
+        private String onceInjurLmt;
+        @JsonProperty("onceMedicalIndemLmt")
+        private String onceMedicalIndemLmt;
+        @JsonProperty("oncePropertyIndemLmt")
+        private String oncePropertyIndemLmt;
+        @JsonProperty("oncePerDeathLmt")
+        private String oncePerDeathLmt;
+        @JsonProperty("oncePerDisableLmt")
+        private String oncePerDisableLmt;
+        @JsonProperty("onceIndemLmt")
+        private String onceIndemLmt;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class SpecialInfosDTO {
+        @JsonProperty("specialNo")
+        private String specialNo;
+        @JsonProperty("specialContent")
+        private String specialContent;
+        @JsonProperty("unfixSpcFlag")
+        private String unfixSpcFlag;
+        @JsonProperty("onlyLook")
+        private String onlyLook;
+    }
+
+}

+ 54 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/CheckCarInfomationDTO.java

@@ -0,0 +1,54 @@
+package com.jzg.quotation.dajia.crawler.entity.request.quote;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@NoArgsConstructor
+@Data
+public class CheckCarInfomationDTO implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 7715313986126454795L;
+    @JsonProperty("noInspectReason")
+    private String noInspectReason;
+    @JsonProperty("inspectionPerson")
+    private String inspectionPerson;
+    @JsonProperty("inspectionAddress")
+    private String inspectionAddress;
+    @JsonProperty("inspectionTime")
+    private String inspectionTime;
+    @JsonProperty("carSameLicense")
+    private String carSameLicense;
+    @JsonProperty("existCar")
+    private String existCar;
+    @JsonProperty("glassWhole")
+    private String glassWhole;
+    @JsonProperty("modifyCar")
+    private String modifyCar;
+    @JsonProperty("destroyCar")
+    private String destroyCar;
+    @JsonProperty("startCar")
+    private String startCar;
+    @JsonProperty("inspectionStandard")
+    private String inspectionStandard;
+    @JsonProperty("inspectionSuggestion")
+    private String inspectionSuggestion;
+    @JsonProperty("carInspection")
+    private String carInspection;
+    @JsonProperty("inspectionResult")
+    private String inspectionResult;
+    @JsonProperty("inspectionCode")
+    private String inspectionCode;
+    @JsonProperty("vehicleInspectionMessage")
+    private String vehicleInspectionMessage;
+    @JsonProperty("checkStatus")
+    private String checkStatus;
+    @JsonProperty("damagedSite")
+    private String damagedSite;
+
+
+}

+ 619 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/CompulsoryInsuranceDTO.java

@@ -0,0 +1,619 @@
+package com.jzg.quotation.dajia.crawler.entity.request.quote;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@NoArgsConstructor
+@Data
+public class CompulsoryInsuranceDTO {
+
+    @JsonProperty("productInfo")
+    private ProductInfoDTO productInfo;
+
+    @JsonProperty("itemKinds")
+    private List<ItemKindsDTO> itemKinds;
+
+    @JsonProperty("carShipTax")
+    private CarShipTaxDTO carShipTax;
+
+    @JsonProperty("coefficientInfo")
+    private CoefficientInfoDTO coefficientInfo;
+
+    @JsonProperty("platformInfo")
+    private String platformInfo;
+
+    @JsonProperty("ubiMessage")
+    private String ubiMessage;
+
+    @JsonProperty("feeInfos")
+    private String feeInfos;
+
+    @JsonProperty("specialInfos")
+    private List<Object> specialInfos;
+
+    @NoArgsConstructor
+    @Data
+    public static class ProductInfoDTO {
+        @JsonProperty("businessID")
+        private String businessID;
+        @JsonProperty("effective")
+        private String effective;
+        @JsonProperty("startDate")
+        private String startDate;
+        @JsonProperty("endDate")
+        private String endDate;
+        @JsonProperty("productCode")
+        private String productCode;
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        @JsonProperty("proposalTime")
+        private String proposalTime;
+        @JsonProperty("premium")
+        private String premium;
+        @JsonProperty("feeRate")
+        private String feeRate;
+        @JsonProperty("feeCoef")
+        private String feeCoef;
+        @JsonProperty("proposalStatus")
+        private String proposalStatus;
+        @JsonProperty("tgtObjCpkid")
+        private String tgtObjCpkid;
+        @JsonProperty("artificialFlag")
+        private String artificialFlag;
+        @JsonProperty("flatCarReinsuredMessage")
+        private String flatCarReinsuredMessage;
+        @JsonProperty("caclCode")
+        private String caclCode;
+        @JsonProperty("resultCode")
+        private String resultCode;
+        @JsonProperty("underwritingCode")
+        private String underwritingCode;
+        @JsonProperty("message")
+        private String message;
+        @JsonProperty("errorMessage")
+        private String errorMessage;
+        @JsonProperty("lastPolicyNo")
+        private String lastPolicyNo;
+        @JsonProperty("lastEndDate")
+        private String lastEndDate;
+        @JsonProperty("policyNo")
+        private String policyNo;
+        @JsonProperty("quotedNo")
+        private String quotedNo;
+        @JsonProperty("performanceRate")
+        private String performanceRate;
+        @JsonProperty("teamManageFeeRate")
+        private String teamManageFeeRate;
+        @JsonProperty("underWriteMessage")
+        private String underWriteMessage;
+        @JsonProperty("underWriteMessageRecord")
+        private String underWriteMessageRecord;
+        @JsonProperty("sumPremium")
+        private String sumPremium;
+        @JsonProperty("discount")
+        private String discount;
+        @JsonProperty("valueAddTax")
+        private String valueAddTax;
+        @JsonProperty("noTaxSumPremium")
+        private String noTaxSumPremium;
+        @JsonProperty("sumInsured")
+        private String sumInsured;
+        @JsonProperty("invoiceForm")
+        private String invoiceForm;
+        @JsonProperty("meal")
+        private String meal;
+        @JsonProperty("renewMark")
+        private String renewMark;
+        @JsonProperty("serviceCode")
+        private String serviceCode;
+        @JsonProperty("day")
+        private String day;
+        @JsonProperty("elProposal")
+        private String elProposal;
+        @JsonProperty("elPolicy")
+        private String elPolicy;
+        @JsonProperty("selfMark")
+        private String selfMark;
+        @JsonProperty("issueDate")
+        private String issueDate;
+        @JsonProperty("syAdjustRate")
+        private String syAdjustRate;
+        @JsonProperty("isReform")
+        private String isReform;
+        @JsonProperty("taxRate")
+        private String taxRate;
+        @JsonProperty("taxPrm")
+        private String taxPrm;
+        @JsonProperty("lastYearEndDateSy")
+        private String lastYearEndDateSy;
+        @JsonProperty("planId")
+        private String planId;
+        @JsonProperty("planName")
+        private String planName;
+        @JsonProperty("number")
+        private String number;
+        @JsonProperty("perPrmSum")
+        private String perPrmSum;
+        @JsonProperty("perAmtSum")
+        private String perAmtSum;
+        @JsonProperty("lastYearEndDateJq")
+        private String lastYearEndDateJq;
+        @JsonProperty("orginAppNo")
+        private String orginAppNo;
+        @JsonProperty("plyCrtTm")
+        private String plyCrtTm;
+        @JsonProperty("adjustProportion")
+        private String adjustProportion;
+        @JsonProperty("basePremium")
+        private String basePremium;
+        @JsonProperty("province")
+        private String province;
+        @JsonProperty("city")
+        private String city;
+        @JsonProperty("county")
+        private String county;
+        @JsonProperty("street")
+        private String street;
+        @JsonProperty("subAddress")
+        private String subAddress;
+        @JsonProperty("houseConstruction")
+        private String houseConstruction;
+        @JsonProperty("uncarPayMark")
+        private String uncarPayMark;
+        @JsonProperty("serialNo")
+        private String serialNo;
+        @JsonProperty("uncarDateMark")
+        private String uncarDateMark;
+        @JsonProperty("supFlag")
+        private String supFlag;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class CarShipTaxDTO {
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        @JsonProperty("taxPayWay")
+        private String taxPayWay;
+        @JsonProperty("oldTaxPayWay")
+        private String oldTaxPayWay;
+        @JsonProperty("taxPayFlag")
+        private String taxPayFlag;
+        @JsonProperty("energyType")
+        private String energyType;
+        @JsonProperty("calculateWay")
+        private String calculateWay;
+        @JsonProperty("taxVehicleTypeCode")
+        private String taxVehicleTypeCode;
+        @JsonProperty("taxVhlType")
+        private String taxVhlType;
+        @JsonProperty("weight")
+        private String weight;
+        @JsonProperty("taxRegistryNumber")
+        private String taxRegistryNumber;
+        @JsonProperty("taxpayerIdentifier")
+        private String taxpayerIdentifier;
+        @JsonProperty("taxPayerName")
+        private String taxPayerName;
+        @JsonProperty("payerIdentifyType")
+        private String payerIdentifyType;
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+        @JsonProperty("phone")
+        private String phone;
+        @JsonProperty("startDate")
+        private String startDate;
+        @JsonProperty("lastPayYear")
+        private String lastPayYear;
+        @JsonProperty("lastEndDate")
+        private String lastEndDate;
+        @JsonProperty("taxOfficeCode")
+        private String taxOfficeCode;
+        @JsonProperty("taxOfficeName")
+        private String taxOfficeName;
+        @JsonProperty("previousPay")
+        private String previousPay;
+        @JsonProperty("taxDue")
+        private String taxDue;
+        @JsonProperty("taxActual")
+        private String taxActual;
+        @JsonProperty("taxReliefPlan")
+        private String taxReliefPlan;
+        @JsonProperty("taxReductionReason")
+        private String taxReductionReason;
+        @JsonProperty("abateAmt")
+        private String abateAmt;
+        @JsonProperty("freeRate")
+        private String freeRate;
+        @JsonProperty("taxDocumentNumber")
+        private String taxDocumentNumber;
+        @JsonProperty("comDocumentNumber")
+        private String comDocumentNumber;
+        @JsonProperty("payStartTm")
+        private String payStartTm;
+        @JsonProperty("payEndTm")
+        private String payEndTm;
+        @JsonProperty("totalTax")
+        private String totalTax;
+        @JsonProperty("oldTotalTax")
+        private String oldTotalTax;
+        @JsonProperty("unitTaxAmt")
+        private String unitTaxAmt;
+        @JsonProperty("comTaxOrg")
+        private String comTaxOrg;
+        @JsonProperty("isCommissionTax")
+        private String isCommissionTax;
+        @JsonProperty("fuelType")
+        private String fuelType;
+        @JsonProperty("overDueAmt")
+        private String overDueAmt;
+        @JsonProperty("taxDocumentDate")
+        private String taxDocumentDate;
+        @JsonProperty("taxPaidAreaCode")
+        private String taxPaidAreaCode;
+        @JsonProperty("deptNonlocal")
+        private String deptNonlocal;
+        @JsonProperty("platformTaxType")
+        private String platformTaxType;
+        @JsonProperty("balanceTax")
+        private String balanceTax;
+        @JsonProperty("certificateDate")
+        private String certificateDate;
+        @JsonProperty("comTaxOrgCde")
+        private String comTaxOrgCde;
+        @JsonProperty("latestMrk")
+        private String latestMrk;
+        @JsonProperty("lastSaliBgnDate")
+        private String lastSaliBgnDate;
+        @JsonProperty("lastSaliEndDate")
+        private String lastSaliEndDate;
+        @JsonProperty("lastSaliInsurerCde")
+        private String lastSaliInsurerCde;
+        @JsonProperty("lastTaxYear")
+        private String lastTaxYear;
+        @JsonProperty("taxYear")
+        private String taxYear;
+        @JsonProperty("taxableTyp")
+        private String taxableTyp;
+        @JsonProperty("taxableMonths")
+        private String taxableMonths;
+        @JsonProperty("lastYearTaxableMonths")
+        private String lastYearTaxableMonths;
+        @JsonProperty("lastSaliPlyNo")
+        private String lastSaliPlyNo;
+        @JsonProperty("overdueDays")
+        private String overdueDays;
+        @JsonProperty("overdueFineProp")
+        private String overdueFineProp;
+        @JsonProperty("chargeProp")
+        private String chargeProp;
+        @JsonProperty("chargeAmt")
+        private String chargeAmt;
+        @JsonProperty("taxPayerAddr")
+        private String taxPayerAddr;
+        @JsonProperty("notPayNo")
+        private String notPayNo;
+        @JsonProperty("subTaxItemCde")
+        private String subTaxItemCde;
+        @JsonProperty("taxUnit")
+        private String taxUnit;
+        @JsonProperty("taxItemCde")
+        private String taxItemCde;
+        @JsonProperty("shortType")
+        private String shortType;
+        @JsonProperty("shortMon")
+        private String shortMon;
+        @JsonProperty("vehicleNumber")
+        private String vehicleNumber;
+        @JsonProperty("newCarMon")
+        private String newCarMon;
+        @JsonProperty("taxBelongTm")
+        private String taxBelongTm;
+        @JsonProperty("taxVchNo")
+        private String taxVchNo;
+        @JsonProperty("taxVchTyp")
+        private String taxVchTyp;
+        @JsonProperty("usage")
+        private String usage;
+        @JsonProperty("vhlAddr")
+        private String vhlAddr;
+        @JsonProperty("vhlAddrSub")
+        private String vhlAddrSub;
+        @JsonProperty("taxpayerComId")
+        private String taxpayerComId;
+        @JsonProperty("taxpayerCde")
+        private String taxpayerCde;
+        @JsonProperty("taxAuthCde")
+        private String taxAuthCde;
+        @JsonProperty("identifyType")
+        private String identifyType;
+        @JsonProperty("freeVhlBrand")
+        private String freeVhlBrand;
+        @JsonProperty("freeVhlNo")
+        private String freeVhlNo;
+        @JsonProperty("isMust")
+        private Integer isMust;
+        @JsonProperty("taxStartDate")
+        private String taxStartDate;
+        @JsonProperty("taxEndDate")
+        private String taxEndDate;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class CoefficientInfoDTO {
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        @JsonProperty("entireDiscount")
+        private String entireDiscount;
+        @JsonProperty("claimAdjustValue")
+        private String claimAdjustValue;
+        @JsonProperty("claimFlatReason")
+        private String claimFlatReason;
+        @JsonProperty("peccancyAdjustValue")
+        private String peccancyAdjustValue;
+        @JsonProperty("noFloatReason")
+        private String noFloatReason;
+        @JsonProperty("lastPolicyNum")
+        private String lastPolicyNum;
+        @JsonProperty("drunkFeeRateFlat")
+        private String drunkFeeRateFlat;
+        @JsonProperty("totalCoefNum")
+        private String totalCoefNum;
+        @JsonProperty("drunkTotalCoef")
+        private String drunkTotalCoef;
+        @JsonProperty("totalCoef")
+        private String totalCoef;
+        @JsonProperty("drinkFeeRateFlat")
+        private String drinkFeeRateFlat;
+        @JsonProperty("lossRatioCi")
+        private String lossRatioCi;
+        @JsonProperty("lossRatioBi")
+        private String lossRatioBi;
+        @JsonProperty("totalRatio")
+        private String totalRatio;
+        @JsonProperty("handFeeCi")
+        private String handFeeCi;
+        @JsonProperty("expDisCoef")
+        private String expDisCoef;
+        @JsonProperty("noComLastFlatRsn")
+        private String noComLastFlatRsn;
+        @JsonProperty("selfChannelRatio")
+        private String selfChannelRatio;
+        @JsonProperty("selfSubmitRatio")
+        private String selfSubmitRatio;
+        @JsonProperty("reason")
+        private String reason;
+        @JsonProperty("recordCoefCi")
+        private String recordCoefCi;
+        @JsonProperty("trafficFloatRes")
+        private String trafficFloatRes;
+        @JsonProperty("areaCoef")
+        private String areaCoef;
+        @JsonProperty("lastPayAmt")
+        private String lastPayAmt;
+        @JsonProperty("handFeeBi")
+        private String handFeeBi;
+        @JsonProperty("channelCoefRes")
+        private String channelCoefRes;
+        @JsonProperty("trafficRateFloat")
+        private String trafficRateFloat;
+        @JsonProperty("startTm")
+        private String startTm;
+        @JsonProperty("endTm")
+        private String endTm;
+        @JsonProperty("lowestCoef")
+        private String lowestCoef;
+        @JsonProperty("suggestCoef")
+        private String suggestCoef;
+        @JsonProperty("payoutRateCi")
+        private String payoutRateCi;
+        @JsonProperty("payoutRateBi")
+        private String payoutRateBi;
+        @JsonProperty("payoutRate")
+        private String payoutRate;
+        @JsonProperty("riskScore")
+        private String riskScore;
+        @JsonProperty("totalFeeRate")
+        private String totalFeeRate;
+        @JsonProperty("singlePaymentCi")
+        private String singlePaymentCi;
+        @JsonProperty("singlePaymentBi")
+        private String singlePaymentBi;
+        @JsonProperty("singlePayment")
+        private String singlePayment;
+        @JsonProperty("insureYears")
+        private String insureYears;
+        @JsonProperty("claimTimes")
+        private String claimTimes;
+        @JsonProperty("claimAdjustLvl")
+        private String claimAdjustLvl;
+        @JsonProperty("pricingAdjustValue")
+        private String pricingAdjustValue;
+        @JsonProperty("riskVar")
+        private String riskVar;
+        @JsonProperty("pricePlan")
+        private String pricePlan;
+        @JsonProperty("floatDown")
+        private String floatDown;
+        @JsonProperty("compensateFeeRate")
+        private String compensateFeeRate;
+        @JsonProperty("fixedDropDiscount")
+        private String fixedDropDiscount;
+        @JsonProperty("entireInitialDiscount")
+        private String entireInitialDiscount;
+        @JsonProperty("coefficientScore")
+        private String coefficientScore;
+        @JsonProperty("pubScores")
+        private String pubScores;
+        @JsonProperty("microDiscoverScore")
+        private String microDiscoverScore;
+        @JsonProperty("truckRiskMrk")
+        private String truckRiskMrk;
+        @JsonProperty("busRiskMrk")
+        private String busRiskMrk;
+        @JsonProperty("truckScore")
+        private String truckScore;
+        @JsonProperty("truckRiskWarning")
+        private String truckRiskWarning;
+        @JsonProperty("predictedNature")
+        private String predictedNature;
+        @JsonProperty("fullCoverageScore")
+        private String fullCoverageScore;
+        @JsonProperty("liabilityOnlyScore")
+        private String liabilityOnlyScore;
+        @JsonProperty("ctpOnlyScore")
+        private String ctpOnlyScore;
+        @JsonProperty("renewalFrequency")
+        private String renewalFrequency;
+        @JsonProperty("didScore")
+        private String didScore;
+        @JsonProperty("vhlPriceType")
+        private String vhlPriceType;
+        @JsonProperty("suggestedDiscount")
+        private String suggestedDiscount;
+        @JsonProperty("onlineCarScore")
+        private String onlineCarScore;
+        @JsonProperty("carIllegalScore")
+        private String carIllegalScore;
+        @JsonProperty("completeControlScore")
+        private String completeControlScore;
+        @JsonProperty("pingAnBillCOMELR")
+        private String pingAnBillCOMELR;
+        @JsonProperty("pingAnBillCTPELR")
+        private String pingAnBillCTPELR;
+        @JsonProperty("pingAnBillELR")
+        private String pingAnBillELR;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class ItemKindsDTO {
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        @JsonProperty("kindCode")
+        private String kindCode;
+        @JsonProperty("kindName")
+        private String kindName;
+        @JsonProperty("kindPackage")
+        private String kindPackage;
+        @JsonProperty("productName")
+        private String productName;
+        @JsonProperty("basePremium")
+        private String basePremium;
+        @JsonProperty("noTaxDiscountPremium")
+        private String noTaxDiscountPremium;
+        @JsonProperty("taxDiscountPremium")
+        private String taxDiscountPremium;
+        @JsonProperty("premium")
+        private String premium;
+        @JsonProperty("noDeductible")
+        private String noDeductible;
+        @JsonProperty("noDeductiblePremium")
+        private String noDeductiblePremium;
+        @JsonProperty("payPremium")
+        private String payPremium;
+        @JsonProperty("amount")
+        private String amount;
+        @JsonProperty("liabilityLevel")
+        private String liabilityLevel;
+        @JsonProperty("damageDeductible")
+        private String damageDeductible;
+        @JsonProperty("deductible")
+        private String deductible;
+        @JsonProperty("deductibleFlag")
+        private String deductibleFlag;
+        @JsonProperty("rate")
+        private String rate;
+        @JsonProperty("deductibleRatio")
+        private String deductibleRatio;
+        @JsonProperty("dutyDays")
+        private String dutyDays;
+        @JsonProperty("quantity")
+        private String quantity;
+        @JsonProperty("yearPayPremium")
+        private String yearPayPremium;
+        @JsonProperty("glassType")
+        private String glassType;
+        @JsonProperty("valueAddTax")
+        private String valueAddTax;
+        @JsonProperty("discount")
+        private String discount;
+        @JsonProperty("needCalculateAmount")
+        private String needCalculateAmount;
+        @JsonProperty("mainRiskFlag")
+        private String mainRiskFlag;
+        @JsonProperty("beginTime")
+        private String beginTime;
+        @JsonProperty("endTime")
+        private String endTime;
+        @JsonProperty("pkID")
+        private String pkID;
+        @JsonProperty("premiumYear")
+        private String premiumYear;
+        @JsonProperty("afterPremiumYear")
+        private String afterPremiumYear;
+        @JsonProperty("adjustRate")
+        private String adjustRate;
+        @JsonProperty("nindemlmt")
+        private String nindemlmt;
+        @JsonProperty("amtChange")
+        private String amtChange;
+        @JsonProperty("ductAmt")
+        private String ductAmt;
+        @JsonProperty("perAmt")
+        private String perAmt;
+        @JsonProperty("actPremium")
+        private String actPremium;
+        @JsonProperty("days")
+        private String days;
+        @JsonProperty("ductDiscount")
+        private String ductDiscount;
+        @JsonProperty("seqNo")
+        private String seqNo;
+        @JsonProperty("totalPremium")
+        private String totalPremium;
+        @JsonProperty("serviceTimes")
+        private String serviceTimes;
+        @JsonProperty("ductRate")
+        private String ductRate;
+        @JsonProperty("kindValueRate")
+        private String kindValueRate;
+        @JsonProperty("kindCost")
+        private String kindCost;
+        @JsonProperty("dutyCode")
+        private String dutyCode;
+        @JsonProperty("dutyName")
+        private String dutyName;
+        @JsonProperty("perPrm")
+        private String perPrm;
+        @JsonProperty("prodPlace")
+        private String prodPlace;
+        @JsonProperty("cancelMrk")
+        private String cancelMrk;
+        @JsonProperty("adjustProportion")
+        private String adjustProportion;
+        @JsonProperty("floatRate")
+        private String floatRate;
+        @JsonProperty("identifyNo")
+        private String identifyNo;
+        @JsonProperty("cvrgType")
+        private String cvrgType;
+        @JsonProperty("onceInjurLmt")
+        private String onceInjurLmt;
+        @JsonProperty("onceMedicalIndemLmt")
+        private String onceMedicalIndemLmt;
+        @JsonProperty("oncePropertyIndemLmt")
+        private String oncePropertyIndemLmt;
+        @JsonProperty("oncePerDeathLmt")
+        private String oncePerDeathLmt;
+        @JsonProperty("oncePerDisableLmt")
+        private String oncePerDisableLmt;
+        @JsonProperty("onceIndemLmt")
+        private String onceIndemLmt;
+    }
+
+}

+ 289 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/DriveInsuranceDTO.java

@@ -0,0 +1,289 @@
+package com.jzg.quotation.dajia.crawler.entity.request.quote;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+@AllArgsConstructor
+@Data
+public class DriveInsuranceDTO implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 3267712286988097245L;
+
+    @JsonProperty("productInfo")
+    private ProductInfoDTO productInfo;
+
+    @JsonProperty("itemKinds")
+    private List<ItemKindsDTO> itemKinds;
+
+    @NoArgsConstructor
+    @Data
+    public static class ProductInfoDTO {
+        @JsonProperty("businessID")
+        private String businessID;
+        @JsonProperty("effective")
+        private String effective;
+        @JsonProperty("startDate")
+        private String startDate;
+        @JsonProperty("endDate")
+        private String endDate;
+        @JsonProperty("productCode")
+        private String productCode;
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        @JsonProperty("proposalTime")
+        private String proposalTime;
+        @JsonProperty("premium")
+        private String premium;
+        @JsonProperty("feeRate")
+        private String feeRate;
+        @JsonProperty("feeCoef")
+        private String feeCoef;
+        @JsonProperty("proposalStatus")
+        private String proposalStatus;
+        @JsonProperty("tgtObjCpkid")
+        private String tgtObjCpkid;
+        @JsonProperty("artificialFlag")
+        private String artificialFlag;
+        @JsonProperty("flatCarReinsuredMessage")
+        private String flatCarReinsuredMessage;
+        @JsonProperty("caclCode")
+        private String caclCode;
+        @JsonProperty("resultCode")
+        private String resultCode;
+        @JsonProperty("underwritingCode")
+        private String underwritingCode;
+        @JsonProperty("message")
+        private String message;
+        @JsonProperty("errorMessage")
+        private String errorMessage;
+        @JsonProperty("lastPolicyNo")
+        private String lastPolicyNo;
+        @JsonProperty("lastEndDate")
+        private String lastEndDate;
+        @JsonProperty("policyNo")
+        private String policyNo;
+        @JsonProperty("quotedNo")
+        private String quotedNo;
+        @JsonProperty("performanceRate")
+        private String performanceRate;
+        @JsonProperty("teamManageFeeRate")
+        private String teamManageFeeRate;
+        @JsonProperty("underWriteMessage")
+        private String underWriteMessage;
+        @JsonProperty("underWriteMessageRecord")
+        private String underWriteMessageRecord;
+        @JsonProperty("sumPremium")
+        private String sumPremium;
+        @JsonProperty("discount")
+        private String discount;
+        @JsonProperty("valueAddTax")
+        private String valueAddTax;
+        @JsonProperty("noTaxSumPremium")
+        private String noTaxSumPremium;
+        @JsonProperty("sumInsured")
+        private String sumInsured;
+        @JsonProperty("invoiceForm")
+        private String invoiceForm;
+        @JsonProperty("meal")
+        private String meal;
+        @JsonProperty("renewMark")
+        private String renewMark;
+        @JsonProperty("serviceCode")
+        private String serviceCode;
+        @JsonProperty("day")
+        private String day;
+        @JsonProperty("elProposal")
+        private String elProposal;
+        @JsonProperty("elPolicy")
+        private String elPolicy;
+        @JsonProperty("selfMark")
+        private String selfMark;
+        @JsonProperty("issueDate")
+        private String issueDate;
+        @JsonProperty("syAdjustRate")
+        private String syAdjustRate;
+        @JsonProperty("isReform")
+        private String isReform;
+        @JsonProperty("taxRate")
+        private String taxRate;
+        @JsonProperty("taxPrm")
+        private String taxPrm;
+        @JsonProperty("lastYearEndDateSy")
+        private String lastYearEndDateSy;
+        @JsonProperty("planId")
+        private String planId;
+        @JsonProperty("planName")
+        private String planName;
+        @JsonProperty("number")
+        private Integer number;
+        @JsonProperty("perPrmSum")
+        private Integer perPrmSum;
+        @JsonProperty("perAmtSum")
+        private Integer perAmtSum;
+        @JsonProperty("lastYearEndDateJq")
+        private String lastYearEndDateJq;
+        @JsonProperty("orginAppNo")
+        private String orginAppNo;
+        @JsonProperty("plyCrtTm")
+        private String plyCrtTm;
+        @JsonProperty("adjustProportion")
+        private String adjustProportion;
+        @JsonProperty("basePremium")
+        private String basePremium;
+        @JsonProperty("province")
+        private String province;
+        @JsonProperty("city")
+        private String city;
+        @JsonProperty("county")
+        private String county;
+        @JsonProperty("street")
+        private String street;
+        @JsonProperty("subAddress")
+        private String subAddress;
+        @JsonProperty("houseConstruction")
+        private String houseConstruction;
+        @JsonProperty("uncarPayMark")
+        private String uncarPayMark;
+        @JsonProperty("serialNo")
+        private String serialNo;
+        @JsonProperty("uncarDateMark")
+        private String uncarDateMark;
+        @JsonProperty("supFlag")
+        private String supFlag;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class ItemKindsDTO {
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        @JsonProperty("kindCode")
+        private String kindCode;
+        @JsonProperty("kindName")
+        private String kindName;
+        @JsonProperty("kindPackage")
+        private String kindPackage;
+        @JsonProperty("productName")
+        private String productName;
+        @JsonProperty("basePremium")
+        private String basePremium;
+        @JsonProperty("noTaxDiscountPremium")
+        private String noTaxDiscountPremium;
+        @JsonProperty("taxDiscountPremium")
+        private String taxDiscountPremium;
+        @JsonProperty("premium")
+        private String premium;
+        @JsonProperty("noDeductible")
+        private String noDeductible;
+        @JsonProperty("noDeductiblePremium")
+        private String noDeductiblePremium;
+        @JsonProperty("payPremium")
+        private String payPremium;
+        @JsonProperty("amount")
+        private String amount;
+        @JsonProperty("liabilityLevel")
+        private String liabilityLevel;
+        @JsonProperty("damageDeductible")
+        private String damageDeductible;
+        @JsonProperty("deductible")
+        private String deductible;
+        @JsonProperty("deductibleFlag")
+        private String deductibleFlag;
+        @JsonProperty("rate")
+        private String rate;
+        @JsonProperty("deductibleRatio")
+        private String deductibleRatio;
+        @JsonProperty("dutyDays")
+        private String dutyDays;
+        @JsonProperty("quantity")
+        private String quantity;
+        @JsonProperty("yearPayPremium")
+        private String yearPayPremium;
+        @JsonProperty("glassType")
+        private String glassType;
+        @JsonProperty("valueAddTax")
+        private String valueAddTax;
+        @JsonProperty("discount")
+        private String discount;
+        @JsonProperty("needCalculateAmount")
+        private String needCalculateAmount;
+        @JsonProperty("mainRiskFlag")
+        private String mainRiskFlag;
+        @JsonProperty("beginTime")
+        private String beginTime;
+        @JsonProperty("endTime")
+        private String endTime;
+        @JsonProperty("pkID")
+        private String pkID;
+        @JsonProperty("premiumYear")
+        private String premiumYear;
+        @JsonProperty("afterPremiumYear")
+        private String afterPremiumYear;
+        @JsonProperty("adjustRate")
+        private String adjustRate;
+        @JsonProperty("nindemlmt")
+        private String nindemlmt;
+        @JsonProperty("amtChange")
+        private String amtChange;
+        @JsonProperty("ductAmt")
+        private String ductAmt;
+        @JsonProperty("perAmt")
+        private String perAmt;
+        @JsonProperty("actPremium")
+        private String actPremium;
+        @JsonProperty("days")
+        private String days;
+        @JsonProperty("ductDiscount")
+        private String ductDiscount;
+        @JsonProperty("seqNo")
+        private String seqNo;
+        @JsonProperty("totalPremium")
+        private String totalPremium;
+        @JsonProperty("serviceTimes")
+        private String serviceTimes;
+        @JsonProperty("ductRate")
+        private String ductRate;
+        @JsonProperty("kindValueRate")
+        private String kindValueRate;
+        @JsonProperty("kindCost")
+        private String kindCost;
+        @JsonProperty("dutyCode")
+        private String dutyCode;
+        @JsonProperty("dutyName")
+        private String dutyName;
+        @JsonProperty("perPrm")
+        private String perPrm;
+        @JsonProperty("prodPlace")
+        private String prodPlace;
+        @JsonProperty("cancelMrk")
+        private String cancelMrk;
+        @JsonProperty("adjustProportion")
+        private String adjustProportion;
+        @JsonProperty("floatRate")
+        private String floatRate;
+        @JsonProperty("identifyNo")
+        private String identifyNo;
+        @JsonProperty("cvrgType")
+        private String cvrgType;
+        @JsonProperty("onceInjurLmt")
+        private String onceInjurLmt;
+        @JsonProperty("onceMedicalIndemLmt")
+        private String onceMedicalIndemLmt;
+        @JsonProperty("oncePropertyIndemLmt")
+        private String oncePropertyIndemLmt;
+        @JsonProperty("oncePerDeathLmt")
+        private String oncePerDeathLmt;
+        @JsonProperty("oncePerDisableLmt")
+        private String oncePerDisableLmt;
+        @JsonProperty("onceIndemLmt")
+        private String onceIndemLmt;
+    }
+
+}

+ 61 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/FlatvhlInfoDTO.java

@@ -0,0 +1,61 @@
+package com.jzg.quotation.dajia.crawler.entity.request.quote;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@NoArgsConstructor
+@Data
+public class FlatvhlInfoDTO {
+
+    @JsonProperty("modelNo")
+    private String modelNo;
+    @JsonProperty("modelIDCode")
+    private String modelIDCode;
+    @JsonProperty("tradeName")
+    private String tradeName;
+    @JsonProperty("brand")
+    private String brand;
+    @JsonProperty("series")
+    private String series;
+    @JsonProperty("carName")
+    private String carName;
+    @JsonProperty("noticeType")
+    private String noticeType;
+    @JsonProperty("configType")
+    private String configType;
+    @JsonProperty("categoryName")
+    private String categoryName;
+    @JsonProperty("deptName")
+    private String deptName;
+    @JsonProperty("pureRiskPremium")
+    private String pureRiskPremium;
+    @JsonProperty("pureRiskPremiumFlag")
+    private String pureRiskPremiumFlag;
+    @JsonProperty("refcode2")
+    private String refcode2;
+    @JsonProperty("dataSource")
+    private String dataSource;
+    @JsonProperty("modelFlag")
+    private String modelFlag;
+    @JsonProperty("selection")
+    private String selection;
+    @JsonProperty("vehlcleCode")
+    private String vehlcleCode;
+    @JsonProperty("vehlcleModeCode")
+    private String vehlcleModeCode;
+    @JsonProperty("curbWt")
+    private String curbWt;
+    @JsonProperty("displacement")
+    private String displacement;
+    @JsonProperty("seatNum")
+    private String seatNum;
+    @JsonProperty("fuelType")
+    private String fuelType;
+    @JsonProperty("vehicleStyleUniqueId")
+    private String vehicleStyleUniqueId;
+    @JsonProperty("industryModelCode")
+    private String industryModelCode;
+
+
+}

+ 210 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/PersonnelInformation.java

@@ -0,0 +1,210 @@
+package com.jzg.quotation.dajia.crawler.entity.request.quote;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@NoArgsConstructor
+@Data
+public class PersonnelInformation implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 3579802980130508072L;
+
+    @JsonProperty("personId")
+    private String personId;
+    @JsonProperty("personName")
+    private String personName;
+    @JsonProperty("clientType")
+    private String clientType;
+    @JsonProperty("identifyType")
+    private String identifyType;
+    @JsonProperty("identifyNo")
+    private String identifyNo;
+    @JsonProperty("gender")
+    private String gender;
+    @JsonProperty("birthday")
+    private String birthday;
+    @JsonProperty("companyNature")
+    private String companyNature;
+    @JsonProperty("province")
+    private String province;
+    @JsonProperty("city")
+    private String city;
+    @JsonProperty("county")
+    private String county;
+    @JsonProperty("suffixAddr")
+    private String suffixAddr;
+    @JsonProperty("address")
+    private String address;
+    @JsonProperty("agentCertNo")
+    private String agentCertNo;
+    @JsonProperty("agentCertType")
+    private String agentCertType;
+    @JsonProperty("agentEmail")
+    private String agentEmail;
+    @JsonProperty("agentMobile")
+    private String agentMobile;
+    @JsonProperty("agentName")
+    private String agentName;
+    @JsonProperty("agentType")
+    private String agentType;
+    @JsonProperty("antiRiskLevel")
+    private String antiRiskLevel;
+    @JsonProperty("bankAccount")
+    private String bankAccount;
+    @JsonProperty("bankName")
+    private String bankName;
+    @JsonProperty("businessLevel")
+    private String businessLevel;
+    @JsonProperty("clientLevel")
+    private String clientLevel;
+    @JsonProperty("companyName")
+    private String companyName;
+    @JsonProperty("contactName")
+    private String contactName;
+    @JsonProperty("country")
+    private String country;
+    @JsonProperty("customerSource")
+    private String customerSource;
+    @JsonProperty("driverNear")
+    private String driverNear;
+    @JsonProperty("email")
+    private String email;
+    @JsonProperty("identifyEndDate")
+    private String identifyEndDate;
+    @JsonProperty("identifyEndDateMrk")
+    private String identifyEndDateMrk;
+    @JsonProperty("invoiceType")
+    private String invoiceType;
+    @JsonProperty("marriageStatus")
+    private String marriageStatus;
+    @JsonProperty("middleMoneyRisk")
+    private String middleMoneyRisk;
+    @JsonProperty("bigMoneyRisk")
+    private String bigMoneyRisk;
+    @JsonProperty("mobile")
+    private String mobile;
+    @JsonProperty("mobileId")
+    private String mobileId;
+    @JsonProperty("mobileIdType")
+    private String mobileIdType;
+    @JsonProperty("mobileName")
+    private String mobileName;
+    @JsonProperty("mobileType")
+    private String mobileType;
+    @JsonProperty("nation")
+    private String nation;
+    @JsonProperty("occupation")
+    private String occupation;
+    @JsonProperty("payerRelation")
+    private String payerRelation;
+    @JsonProperty("postCode")
+    private String postCode;
+    @JsonProperty("remark")
+    private String remark;
+    @JsonProperty("taxPayerNumber")
+    private String taxPayerNumber;
+    @JsonProperty("taxPayerType")
+    private String taxPayerType;
+    @JsonProperty("taxRegisterAddress")
+    private String taxRegisterAddress;
+
+    @JsonProperty("telephone")
+    private String telephone;
+
+    @JsonProperty("authenticationNo")
+    private String authenticationNo;
+
+    @JsonProperty("ethnic")
+    private String ethnic;
+
+    @JsonProperty("identifyBeginDate")
+    private String identifyBeginDate;
+
+    @JsonProperty("issueOrg")
+    private String issueOrg;
+
+    @JsonProperty("idCardAddr")
+    private String idCardAddr;
+
+    @JsonProperty("clientMessagePower")
+    private String clientMessagePower;
+
+    @JsonProperty("authenticationStatus")
+    private String authenticationStatus;
+
+    @JsonProperty("relCode")
+    private String relCode;
+
+    @JsonProperty("isOcr")
+    private String isOcr;
+
+    @JsonProperty("relOwnerCode")
+    private String relOwnerCode;
+
+    @JsonProperty("agentAddress")
+    private String agentAddress;
+
+    @JsonProperty("customerId")
+    private String customerId;
+
+    @JsonProperty("supplementInfo")
+    private SupplementInfoDTO supplementInfo;
+
+    @JsonProperty("ocrTaskId")
+    private String ocrTaskId;
+
+    @NoArgsConstructor
+    @Data
+    public static class SupplementInfoDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -4052465180593119448L;
+
+        @JsonProperty("annIncome")
+        private String annIncome;
+        @JsonProperty("busScope")
+        private String busScope;
+        @JsonProperty("registerCapital")
+        private String registerCapital;
+        @JsonProperty("stockName")
+        private String stockName;
+        @JsonProperty("stockIdentifyType")
+        private String stockIdentifyType;
+        @JsonProperty("stockIdentifyNo")
+        private String stockIdentifyNo;
+        @JsonProperty("stockIdentifyEndDate")
+        private String stockIdentifyEndDate;
+        @JsonProperty("stockIdentifyEndDateMrk")
+        private String stockIdentifyEndDateMrk;
+        @JsonProperty("legalName")
+        private String legalName;
+        @JsonProperty("legalIdentifyType")
+        private String legalIdentifyType;
+        @JsonProperty("legalIdentifyNo")
+        private String legalIdentifyNo;
+        @JsonProperty("legalIdentifyEndDate")
+        private String legalIdentifyEndDate;
+        @JsonProperty("legalIdentifyEndDateMrk")
+        private String legalIdentifyEndDateMrk;
+        @JsonProperty("agentName")
+        private String agentName;
+        @JsonProperty("agentIdentifyType")
+        private String agentIdentifyType;
+        @JsonProperty("agentIdentifyNo")
+        private String agentIdentifyNo;
+        @JsonProperty("agentIdentifyEndDate")
+        private String agentIdentifyEndDate;
+        @JsonProperty("agentIdentifyEndDateMrk")
+        private String agentIdentifyEndDateMrk;
+        @JsonProperty("correlations")
+        private String correlations;
+        @JsonProperty("beneficiaryInfo")
+        private String beneficiaryInfo;
+    }
+
+}

+ 281 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/ProposalInfoDTO.java

@@ -0,0 +1,281 @@
+package com.jzg.quotation.dajia.crawler.entity.request.quote;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@NoArgsConstructor
+@Data
+public class ProposalInfoDTO implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -607088232798809605L;
+
+    @JsonProperty("orderNo")
+    private String orderNo;
+    @JsonProperty("drivingsNo")
+    private String drivingsNo;
+    @JsonProperty("mark")
+    private String mark;
+    @JsonProperty("jyMark")
+    private String jyMark;
+    @JsonProperty("copdpt")
+    private String copdpt;
+    @JsonProperty("cityCode")
+    private String cityCode;
+    @JsonProperty("loginCompany")
+    private String loginCompany;
+    @JsonProperty("dptRelCde")
+    private String dptRelCde;
+    @JsonProperty("status")
+    private String status;
+    @JsonProperty("totalPremium")
+    private String totalPremium;
+    @JsonProperty("operateDate")
+    private String operateDate;
+    @JsonProperty("nessElectronic")
+    private String nessElectronic;
+    @JsonProperty("electronicFinish")
+    private String electronicFinish;
+    @JsonProperty("sendMessage")
+    private String sendMessage;
+    @JsonProperty("electronicPolicy")
+    private String electronicPolicy;
+    @JsonProperty("saleManagerId")
+    private String saleManagerId;
+    @JsonProperty("saleManagerName")
+    private String saleManagerName;
+    @JsonProperty("licenseNumber")
+    private String licenseNumber;
+    @JsonProperty("combinedProductCode")
+    private String combinedProductCode;
+    @JsonProperty("underWriteCompany")
+    private String underWriteCompany;
+    @JsonProperty("underwritingAgencyName")
+    private String underwritingAgencyName;
+    @JsonProperty("repairCode")
+    private String repairCode;
+    @JsonProperty("repairName")
+    private String repairName;
+    @JsonProperty("businessSource")
+    private String businessSource;
+    @JsonProperty("organizationCode")
+    private String organizationCode;
+    @JsonProperty("yearCode")
+    private String yearCode;
+    @JsonProperty("sequenceCode")
+    private String sequenceCode;
+    @JsonProperty("characterCode")
+    private String characterCode;
+    @JsonProperty("agent")
+    private String agent;
+    @JsonProperty("agentName")
+    private String agentName;
+    @JsonProperty("referrer")
+    private String referrer;
+    @JsonProperty("referrerIdentifyNo")
+    private String referrerIdentifyNo;
+    @JsonProperty("referrerName")
+    private String referrerName;
+    @JsonProperty("channelCode")
+    private String channelCode;
+    @JsonProperty("channelName")
+    private String channelName;
+    @JsonProperty("repairFactory")
+    private String repairFactory;
+    @JsonProperty("repairFactoryName")
+    private String repairFactoryName;
+    @JsonProperty("customeServiceCode")
+    private String customeServiceCode;
+    @JsonProperty("saleCode")
+    private String saleCode;
+    @JsonProperty("saleName")
+    private String saleName;
+    @JsonProperty("saleType")
+    private String saleType;
+    @JsonProperty("saleNo")
+    private String saleNo;
+    @JsonProperty("saleGroupCode")
+    private String saleGroupCode;
+    @JsonProperty("saleGroupName")
+    private String saleGroupName;
+    @JsonProperty("operatorCode")
+    private String operatorCode;
+    @JsonProperty("operatorName")
+    private String operatorName;
+    @JsonProperty("feeType")
+    private String feeType;
+    @JsonProperty("argueSolution")
+    private String argueSolution;
+    @JsonProperty("manageCompanyCode")
+    private String manageCompanyCode;
+    @JsonProperty("companyNature")
+    private String companyNature;
+    @JsonProperty("channelSource")
+    private String channelSource;
+    @JsonProperty("teamOrderNo")
+    private String teamOrderNo;
+    @JsonProperty("teamOrderName")
+    private String teamOrderName;
+    @JsonProperty("quotePriceId")
+    private String quotePriceId;
+    @JsonProperty("agentSales")
+    private String agentSales;
+    @JsonProperty("agentSaleName")
+    private String agentSaleName;
+    @JsonProperty("protocolNo")
+    private String protocolNo;
+    @JsonProperty("subProtocolNo")
+    private String subProtocolNo;
+    @JsonProperty("agricultureFlag")
+    private String agricultureFlag;
+    @JsonProperty("arbitrationName")
+    private String arbitrationName;
+    @JsonProperty("source")
+    private String source;
+    @JsonProperty("cmmProp")
+    private String cmmProp;
+    @JsonProperty("avtProp")
+    private String avtProp;
+    @JsonProperty("teamProp")
+    private String teamProp;
+    @JsonProperty("underWriteAdvice")
+    private String underWriteAdvice;
+    @JsonProperty("relPolicyNo")
+    private String relPolicyNo;
+    @JsonProperty("sumPremium")
+    private String sumPremium;
+    @JsonProperty("isElectronicInsurance")
+    private String isElectronicInsurance;
+    @JsonProperty("electronicInsuranceFinish")
+    private String electronicInsuranceFinish;
+    @JsonProperty("isIdentityColle")
+    private String isIdentityColle;
+    @JsonProperty("identityColleFinish")
+    private String identityColleFinish;
+    @JsonProperty("isCaptcha")
+    private String isCaptcha;
+    @JsonProperty("captchaFinish")
+    private String captchaFinish;
+    @JsonProperty("machineCode")
+    private String machineCode;
+    @JsonProperty("salesDisabled")
+    private String salesDisabled;
+    @JsonProperty("referrerDisabled")
+    private String referrerDisabled;
+    @JsonProperty("departmentCode")
+    private String departmentCode;
+    @JsonProperty("inform")
+    private String inform;
+    @JsonProperty("isDxProducts")
+    private String isDxProducts;
+    @JsonProperty("dataFlag")
+    private String dataFlag;
+    @JsonProperty("recommendCode")
+    private String recommendCode;
+    @JsonProperty("loadModel")
+    private String loadModel;
+    @JsonProperty("recSubChannel")
+    private String recSubChannel;
+    @JsonProperty("isNeedFaceRecognition")
+    private String isNeedFaceRecognition;
+    @JsonProperty("jsMark")
+    private String jsMark;
+    @JsonProperty("edrPrjNo")
+    private String edrPrjNo;
+    @JsonProperty("payPath")
+    private String payPath;
+    @JsonProperty("channelOrderNo")
+    private String channelOrderNo;
+    @JsonProperty("renewalCollaboration")
+    private String renewalCollaboration;
+    @JsonProperty("newChannelMajorCde")
+    private String newChannelMajorCde;
+    @JsonProperty("newChannelMinorCde")
+    private String newChannelMinorCde;
+    @JsonProperty("policySerialNo")
+    private String policySerialNo;
+    @JsonProperty("currencyType")
+    private String currencyType;
+    @JsonProperty("isInternet")
+    private String isInternet;
+    @JsonProperty("salesmanName")
+    private String salesmanName;
+    @JsonProperty("salesmanIdentifyNo")
+    private String salesmanIdentifyNo;
+    @JsonProperty("currencyPrm")
+    private String currencyPrm;
+    @JsonProperty("exchangeRate")
+    private String exchangeRate;
+    @JsonProperty("totalUncarPremium")
+    private String totalUncarPremium;
+    @JsonProperty("jabMark")
+    private String jabMark;
+    @JsonProperty("rqbMark")
+    private String rqbMark;
+    @JsonProperty("specMark")
+    private String specMark;
+    @JsonProperty("frontIntroduceCde")
+    private String frontIntroduceCde;
+    @JsonProperty("frontIntroduceNme")
+    private String frontIntroduceNme;
+    @JsonProperty("followWeChatFlag")
+    private String followWeChatFlag;
+    @JsonProperty("renewImageFlag")
+    private String renewImageFlag;
+    @JsonProperty("leadsId")
+    private String leadsId;
+    @JsonProperty("chaSalesCde")
+    private String chaSalesCde;
+    @JsonProperty("chaSalesType")
+    private String chaSalesType;
+    @JsonProperty("busiLabel")
+    private String busiLabel;
+    @JsonProperty("dualRecordCde")
+    private String dualRecordCde;
+    @JsonProperty("dualRecordType")
+    private String dualRecordType;
+    @JsonProperty("jkMark")
+    private String jkMark;
+    @JsonProperty("yyMark")
+    private String yyMark;
+    @JsonProperty("hyMark")
+    private String hyMark;
+    @JsonProperty("jkhosMark")
+    private String jkhosMark;
+    @JsonProperty("orderNoOrg")
+    private String orderNoOrg;
+    @JsonProperty("retrospectFlag")
+    private String retrospectFlag;
+    @JsonProperty("authenticateFlag")
+    private String authenticateFlag;
+    @JsonProperty("zkbsnsTyp")
+    private String zkbsnsTyp;
+    @JsonProperty("zkbsnsSubtyp")
+    private String zkbsnsSubtyp;
+    @JsonProperty("yxbsnsTyp")
+    private String yxbsnsTyp;
+    @JsonProperty("bankCde")
+    private String bankCde;
+    @JsonProperty("bankName")
+    private String bankName;
+    @JsonProperty("bankSubCde")
+    private String bankSubCde;
+    @JsonProperty("bankSubName")
+    private String bankSubName;
+    @JsonProperty("relDptCde")
+    private String relDptCde;
+    @JsonProperty("bankBsnsTyp")
+    private String bankBsnsTyp;
+    @JsonProperty("jyChargeMark")
+    private String jyChargeMark;
+    @JsonProperty("orderNoCore")
+    private String orderNoCore;
+    @JsonProperty("jqPlyNoOrg")
+    private String jqPlyNoOrg;
+    @JsonProperty("syPlyNoOrg")
+    private String syPlyNoOrg;
+}

+ 202 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/request/quote/VehicleInfoDTO.java

@@ -0,0 +1,202 @@
+package com.jzg.quotation.dajia.crawler.entity.request.quote;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+@NoArgsConstructor
+@Data
+public class VehicleInfoDTO {
+
+    @JsonProperty("vehicleCode")
+    private String vehicleCode;
+    @JsonProperty("jqQuestion")
+    private String jqQuestion;
+    @JsonProperty("jqAnswer")
+    private String jqAnswer;
+    @JsonProperty("syQuestion")
+    private String syQuestion;
+    @JsonProperty("syAnswer")
+    private String syAnswer;
+    @JsonProperty("premiumFlag")
+    private String premiumFlag;
+    @JsonProperty("pureRange")
+    private String pureRange;
+    @JsonProperty("plateNo")
+    private String plateNo;
+    @JsonProperty("isPlateNo")
+    private String isPlateNo;
+    @JsonProperty("vin")
+    private String vin;
+    @JsonProperty("engineNo")
+    private String engineNo;
+    @JsonProperty("plateType")
+    private String plateType;
+    @JsonProperty("isFieldCar")
+    private String isFieldCar;
+    @JsonProperty("registerDate")
+    private String registerDate;
+    @JsonProperty("certificationDate")
+    private String certificationDate;
+    @JsonProperty("brandName")
+    private String brandName;
+    @JsonProperty("brand")
+    private String brand;
+    @JsonProperty("motorType")
+    private String motorType;
+    @JsonProperty("useNatureShow")
+    private String useNatureShow;
+    @JsonProperty("vehicleType")
+    private String vehicleType;
+    @JsonProperty("seatCount")
+    private String seatCount;
+    @JsonProperty("purchasePrice")
+    private String purchasePrice;
+    @JsonProperty("negotiatedValue")
+    private String negotiatedValue;
+    @JsonProperty("displacement")
+    private String displacement;
+    @JsonProperty("fuelType")
+    private String fuelType;
+    @JsonProperty("approvedLoad")
+    private String approvedLoad;
+    @JsonProperty("isTransferCar")
+    private String isTransferCar;
+    @JsonProperty("specialMark")
+    private String specialMark;
+    @JsonProperty("loanVehicleFlag")
+    private String loanVehicleFlag;
+    @JsonProperty("buyCarDate")
+    private String buyCarDate;
+    @JsonProperty("newCarFlag")
+    private String newCarFlag;
+    @JsonProperty("weight")
+    private String weight;
+    @JsonProperty("negotiatedActulValue")
+    private String negotiatedActulValue;
+    @JsonProperty("colorCode")
+    private String colorCode;
+    @JsonProperty("power")
+    private String power;
+    @JsonProperty("teamCarId")
+    private String teamCarId;
+    @JsonProperty("vehicleCheckCode")
+    private String vehicleCheckCode;
+    @JsonProperty("vhlCertType")
+    private String vhlCertType;
+    @JsonProperty("vhlCertNo")
+    private String vhlCertNo;
+    @JsonProperty("vhlCertDate")
+    private String vhlCertDate;
+    @JsonProperty("tonnage")
+    private String tonnage;
+    @JsonProperty("carOwnerName")
+    private String carOwnerName;
+    @JsonProperty("transferDate")
+    private String transferDate;
+    @JsonProperty("plateColor")
+    private String plateColor;
+    @JsonProperty("enrollDate")
+    private String enrollDate;
+    @JsonProperty("countryNature")
+    private String countryNature;
+    @JsonProperty("carModelName")
+    private String carModelName;
+    @JsonProperty("carUserType")
+    private String carUserType;
+    @JsonProperty("actualValue")
+    private String actualValue;
+    @JsonProperty("relationWithInsured")
+    private String relationWithInsured;
+    @JsonProperty("frmNoError")
+    private String frmNoError;
+    @JsonProperty("innerCustomer")
+    private String innerCustomer;
+    @JsonProperty("productSystem")
+    private String productSystem;
+    @JsonProperty("mortgageMrk")
+    private String mortgageMrk;
+    @JsonProperty("transferRoll")
+    private String transferRoll;
+    @JsonProperty("transferRollTime")
+    private String transferRollTime;
+    @JsonProperty("vehCodeSH")
+    private String vehCodeSH;
+    @JsonProperty("carYear")
+    private String carYear;
+    @JsonProperty("queryCode")
+    private String queryCode;
+    @JsonProperty("jqQueryCode")
+    private String jqQueryCode;
+    @JsonProperty("lastPayNum")
+    private String lastPayNum;
+    @JsonProperty("lastYearNCD")
+    private String lastYearNCD;
+    @JsonProperty("rateNCD")
+    private String rateNCD;
+    @JsonProperty("predose")
+    private String predose;
+    @JsonProperty("isRepair")
+    private String isRepair;
+    @JsonProperty("repairCode")
+    private String repairCode;
+    @JsonProperty("repairName")
+    private String repairName;
+    @JsonProperty("useNatureJG")
+    private String useNatureJG;
+    @JsonProperty("haulge")
+    private String haulge;
+    @JsonProperty("isSuccess")
+    private String isSuccess;
+    @JsonProperty("glassType")
+    private String glassType;
+    @JsonProperty("ownerMessageType")
+    private String ownerMessageType;
+    @JsonProperty("traUsageCde")
+    private String traUsageCde;
+    @JsonProperty("newSalesName")
+    private String newSalesName;
+    @JsonProperty("newSalesAreaCode")
+    private String newSalesAreaCode;
+    @JsonProperty("saleShop")
+    private String saleShop;
+    @JsonProperty("specialRiskFlag")
+    private String specialRiskFlag;
+    @JsonProperty("vehicleTypeFirst")
+    private String vehicleTypeFirst;
+    @JsonProperty("vehicleTypeSecond")
+    private String vehicleTypeSecond;
+    @JsonProperty("newPower")
+    private String newPower;
+    @JsonProperty("teamOrderNo")
+    private String teamOrderNo;
+    @JsonProperty("teamOrderName")
+    private String teamOrderName;
+    @JsonProperty("affirmCde")
+    private String affirmCde;
+    @JsonProperty("modelEnergyType")
+    private String modelEnergyType;
+    @JsonProperty("topSpeed")
+    private String topSpeed;
+    @JsonProperty("isOcr")
+    private String isOcr;
+    @JsonProperty("vehicleStyleUniqueId")
+    private String vehicleStyleUniqueId;
+    @JsonProperty("industryModelCode")
+    private String industryModelCode;
+    @JsonProperty("hkPlateNo")
+    private String hkPlateNo;
+    @JsonProperty("drivingArea")
+    private String drivingArea;
+    @JsonProperty("historicalInformation")
+    private String historicalInformation;
+    @JsonProperty("carId")
+    private String carId;
+    @JsonProperty("vehicleTypeName")
+    private String vehicleTypeName;
+    @JsonProperty("ocrTaskId")
+    private String ocrTaskId;
+    @JsonProperty("vehicleTypeNew")
+    private String vehicleTypeNew;
+}

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

@@ -0,0 +1,110 @@
+package com.jzg.quotation.dajia.crawler.entity.request.quote;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@NoArgsConstructor
+@Data
+public class VehicleOwnerInfoDTO {
+
+    @JsonProperty("ownerId")
+    private String ownerId;
+    @JsonProperty("personName")
+    private String personName;
+    @JsonProperty("clientType")
+    private String clientType;
+    @JsonProperty("identifyType")
+    private String identifyType;
+    @JsonProperty("identifyNo")
+    private String identifyNo;
+    @JsonProperty("gender")
+    private String gender;
+    @JsonProperty("birthday")
+    private String birthday;
+    @JsonProperty("companyNature")
+    private String companyNature;
+    @JsonProperty("province")
+    private String province;
+    @JsonProperty("city")
+    private String city;
+    @JsonProperty("county")
+    private String county;
+    @JsonProperty("suffixAddr")
+    private String suffixAddr;
+    @JsonProperty("address")
+    private String address;
+    @JsonProperty("postCode")
+    private String postCode;
+    @JsonProperty("contactName")
+    private String contactName;
+    @JsonProperty("telephone")
+    private String telephone;
+    @JsonProperty("identifyEndDate")
+    private String identifyEndDate;
+    @JsonProperty("identifyEndDateMrk")
+    private String identifyEndDateMrk;
+    @JsonProperty("country")
+    private String country;
+    @JsonProperty("mobile")
+    private String mobile;
+    @JsonProperty("tel")
+    private String tel;
+    @JsonProperty("cusLvl")
+    private String cusLvl;
+    @JsonProperty("business")
+    private String business;
+    @JsonProperty("resvTxt4")
+    private String resvTxt4;
+    @JsonProperty("resvTxt5")
+    private String resvTxt5;
+    @JsonProperty("resvTxt6")
+    private String resvTxt6;
+    @JsonProperty("nation")
+    private String nation;
+    @JsonProperty("expiredDate")
+    private String expiredDate;
+
+    @JsonProperty("email")
+    private String email;
+
+    @JsonProperty("cusRiskLvl")
+    private String cusRiskLvl;
+
+    @JsonProperty("resvTxt1")
+    private String resvTxt1;
+
+    @JsonProperty("isOcr")
+    private String isOcr;
+
+    @JsonProperty("agentCertNo")
+    private String agentCertNo;
+
+    @JsonProperty("agentCertType")
+    private String agentCertType;
+
+    @JsonProperty("agentEmail")
+    private String agentEmail;
+
+    @JsonProperty("agentMobile")
+    private String agentMobile;
+
+    @JsonProperty("agentName")
+    private String agentName;
+
+    @JsonProperty("agentType")
+    private String agentType;
+
+    @JsonProperty("agentAddress")
+    private String agentAddress;
+
+    @JsonProperty("antiRiskLevel")
+    private String antiRiskLevel;
+
+    @JsonProperty("ocrTaskId")
+    private String ocrTaskId;
+
+    @JsonProperty("samePerson")
+    private String samePerson;
+
+}

+ 29 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerActualValueResponse.java

@@ -0,0 +1,29 @@
+package com.jzg.quotation.dajia.crawler.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@NoArgsConstructor
+@Data
+public class DaJiaCrawlerActualValueResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 4622405636035859687L;
+
+    @JsonProperty("actualValue")
+    private String actualValue;
+
+    @JsonProperty("usedYearCode")
+    private String usedYearCode;
+
+    @JsonProperty("usedYear")
+    private String usedYear;
+
+    @JsonProperty("rate")
+    private String rate;
+
+}

+ 45 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerBaseResponse.java

@@ -0,0 +1,45 @@
+package com.jzg.quotation.dajia.crawler.entity.response;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+
+/**
+ * @version
+ * @description: 大家财险【爬虫】【总】【响应体】
+ * @author: wenks
+ * @date: 2025/2/11 15:06
+ **/
+@NoArgsConstructor
+@Data
+public class DaJiaCrawlerBaseResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -7410523311993599008L;
+
+    /**
+     * 状态码
+     */
+    @JsonProperty("code")
+    private String code;
+
+    /**
+     * 返回信息
+     */
+    @JsonProperty("message")
+    private String message;
+
+    /**
+     * 结果
+     */
+    @JsonProperty("result")
+    private String result;
+
+    @JsonProperty("traceId")
+    private String traceId;
+}

+ 32 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerCaptchaResponse.java

@@ -0,0 +1,32 @@
+package com.jzg.quotation.dajia.crawler.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @description: 大家财险【爬虫】【验证码】【响应体】
+ * @author: wenks
+ * @date: 2025/2/11 11:49
+ **/
+@NoArgsConstructor
+@Data
+public class DaJiaCrawlerCaptchaResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 2057455674665599565L;
+
+    @JsonProperty("uuid")
+    private String uuid;
+
+    /**
+     * base64 影像
+     */
+    @JsonProperty("img")
+    private String img;
+
+
+}

+ 143 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerCarResponse.java

@@ -0,0 +1,143 @@
+package com.jzg.quotation.dajia.crawler.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+@NoArgsConstructor
+@Data
+public class DaJiaCrawlerCarResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 8290844541630850445L;
+
+    @JsonProperty("pageNum")
+    private Integer pageNum;
+
+    @JsonProperty("pageSize")
+    private Integer pageSize;
+
+    @JsonProperty("list")
+    private List<ListDTO> list;
+
+    @JsonProperty("total")
+    private Integer total;
+
+    @JsonProperty("channelOrderNo")
+    private String channelOrderNo;
+
+    @NoArgsConstructor
+    @Data
+    public static class ListDTO {
+        @JsonProperty("vehicleId")
+        private String vehicleId;
+        @JsonProperty("brandId")
+        private String brandId;
+        @JsonProperty("vehicleName")
+        private String vehicleName;
+        @JsonProperty("vehicleAlias")
+        private String vehicleAlias;
+        @JsonProperty("vehicleMaker")
+        private String vehicleMaker;
+        @JsonProperty("yearPattern")
+        private String yearPattern;
+        @JsonProperty("brandName")
+        private String brandName;
+        @JsonProperty("familyName")
+        private String familyName;
+        @JsonProperty("vehicleClass")
+        private String vehicleClass;
+        @JsonProperty("vehicleType")
+        private String vehicleType;
+        @JsonProperty("syxClassname")
+        private String syxClassname;
+        @JsonProperty("jqxClassname")
+        private String jqxClassname;
+        @JsonProperty("searchCode")
+        private String searchCode;
+        @JsonProperty("vehicleExhaust")
+        private Double vehicleExhaust;
+        @JsonProperty("vehicleTonnage")
+        private String vehicleTonnage;
+        @JsonProperty("vehicleSeat")
+        private Integer vehicleSeat;
+        @JsonProperty("vehiclePriceTax")
+        private Integer vehiclePriceTax;
+        @JsonProperty("antiTheft")
+        private String antiTheft;
+        @JsonProperty("airbag")
+        private String airbag;
+        @JsonProperty("absFlag")
+        private String absFlag;
+        @JsonProperty("transmissionType")
+        private String transmissionType;
+        @JsonProperty("remark")
+        private String remark;
+        @JsonProperty("qualityMax")
+        private Integer qualityMax;
+        @JsonProperty("qualityMin")
+        private Integer qualityMin;
+        @JsonProperty("vehiclePrice")
+        private Integer vehiclePrice;
+        @JsonProperty("vehiclePriceTax1")
+        private String vehiclePriceTax1;
+        @JsonProperty("factoryId")
+        private String factoryId;
+        @JsonProperty("power")
+        private String power;
+        @JsonProperty("vehicleTypeNew")
+        private String vehicleTypeNew;
+        @JsonProperty("powerTypeCode")
+        private String powerTypeCode;
+        @JsonProperty("powerTypeName")
+        private String powerTypeName;
+        @JsonProperty("travelTaxMark")
+        private String travelTaxMark;
+        @JsonProperty("vehicleHyCode")
+        private String vehicleHyCode;
+        @JsonProperty("vehicleHyName")
+        private String vehicleHyName;
+        @JsonProperty("cfrmNo")
+        private String cfrmNo;
+        @JsonProperty("cengNo")
+        private String cengNo;
+        @JsonProperty("cplateNo")
+        private String cplateNo;
+        @JsonProperty("ncurbWt")
+        private String ncurbWt;
+        @JsonProperty("cplateTyp")
+        private String cplateTyp;
+        @JsonProperty("ttransferDate")
+        private String ttransferDate;
+        @JsonProperty("cregVhlTyp")
+        private String cregVhlTyp;
+        @JsonProperty("cvhlTyp")
+        private String cvhlTyp;
+        @JsonProperty("cusageCde")
+        private String cusageCde;
+        @JsonProperty("cfstRegYmBar")
+        private String cfstRegYmBar;
+        @JsonProperty("nseatNum")
+        private String nseatNum;
+        @JsonProperty("ntonage")
+        private String ntonage;
+        @JsonProperty("ndisplacement")
+        private String ndisplacement;
+        @JsonProperty("cregOwner")
+        private String cregOwner;
+        @JsonProperty("ctraUsageCde")
+        private String ctraUsageCde;
+        @JsonProperty("chaulge")
+        private String chaulge;
+        @JsonProperty("tcertificateDate")
+        private String tcertificateDate;
+        @JsonProperty("cfuelType")
+        private String cfuelType;
+        @JsonProperty("cmodelEnergyType")
+        private String cmodelEnergyType;
+    }
+}

+ 115 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerPriceResponse.java

@@ -0,0 +1,115 @@
+package com.jzg.quotation.dajia.crawler.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
+import com.jzg.quotation.dajia.crawler.entity.request.quote.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@NoArgsConstructor
+@Data
+public class DaJiaCrawlerPriceResponse {
+
+    @JsonProperty("proposalInfo")
+    private ProposalInfoDTO proposalInfo;
+
+    @JsonProperty("applicantInfo")
+    private PersonnelInformation applicantInfo;
+
+    @JsonProperty("insuredInfos")
+    private List<PersonnelInformation> insuredInfos;
+
+    @JsonProperty("vehicleOwnerInfo")
+    private VehicleOwnerInfoDTO vehicleOwnerInfo;
+
+    @JsonProperty("vehicleInfo")
+    private VehicleInfoDTO vehicleInfo;
+
+    @JsonProperty("compulsoryInsurance")
+    private CompulsoryInsuranceDTO compulsoryInsurance;
+
+    @JsonProperty("businessInsurance")
+    private BusinessInsuranceDTO businessInsurance;
+
+    @JsonProperty("driveInsurance")
+    private DriveInsuranceDTO driveInsurance;
+
+    @JsonProperty("motorDriveInsurance")
+    private String motorDriveInsurance;
+
+    @JsonProperty("checkCarInfomation")
+    private CheckCarInfomationDTO checkCarInfomation;
+
+    @JsonProperty("flatvhlInfo")
+    private FlatvhlInfoDTO flatvhlInfo;
+
+    @JsonProperty("flatvhlInfoList")
+    private String flatvhlInfoList;
+
+    @JsonProperty("acctinfo")
+    private AcctinfoDTO acctinfo;
+
+    @JsonProperty("productInformation")
+    private String productInformation;
+
+    @JsonProperty("exceptionCode")
+    private ExceptionCodeDTO exceptionCode;
+
+    @JsonProperty("deliveryVO")
+    private String deliveryVO;
+
+    @JsonProperty("incrementVO")
+    private IncrementVODTO incrementVO;
+
+    @JsonProperty("increasedValueMsg")
+    private String increasedValueMsg;
+
+    @JsonProperty("jabFamilyDriveInsurance")
+    private String jabFamilyDriveInsurance;
+
+    @JsonProperty("rqbFamilyDriveInsurance")
+    private String rqbFamilyDriveInsurance;
+
+    @JsonProperty("reInsureVo")
+    private String reInsureVo;
+
+    @JsonProperty("chdDivisorVoList")
+    private String chdDivisorVoList;
+
+    @JsonProperty("jkFamilyDriveInsurance")
+    private String jkFamilyDriveInsurance;
+
+    @JsonProperty("yyDriveInsurance")
+    private String yyDriveInsurance;
+
+    @JsonProperty("hyDriveInsurance")
+    private String hyDriveInsurance;
+
+    @JsonProperty("jkhosDriveInsurance")
+    private String jkhosDriveInsurance;
+
+    @JsonProperty("jyChargeDriveInsurance")
+    private String jyChargeDriveInsurance;
+
+    @NoArgsConstructor
+    @Data
+    public static class ExceptionCodeDTO {
+
+        @JsonProperty("code")
+        private String code;
+
+        @JsonProperty("msg")
+        private String msg;
+
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class IncrementVODTO {
+        @JsonProperty("incrementList")
+        private String incrementList;
+    }
+
+}

+ 211 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/entity/response/DaJiaCrawlerSaveResponse.java

@@ -0,0 +1,211 @@
+package com.jzg.quotation.dajia.crawler.entity.response;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.dajia.crawler.entity.request.quote.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+@NoArgsConstructor
+@Data
+public class DaJiaCrawlerSaveResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 219172726271491872L;
+
+    @JsonProperty("proposalInfo")
+    private ProposalInfoDTO proposalInfo;
+
+    @JsonProperty("applicantInfo")
+    private PersonnelInformation applicantInfo;
+
+    @JsonProperty("insuredInfos")
+    private List<PersonnelInformation> insuredInfos;
+
+    @JsonProperty("vehicleOwnerInfo")
+    private VehicleOwnerInfoDTO vehicleOwnerInfo;
+
+    @JsonProperty("vehicleInfo")
+    private VehicleInfoDTO vehicleInfo;
+
+    @JsonProperty("compulsoryInsurance")
+    private CompulsoryInsuranceDTO compulsoryInsurance;
+
+    @JsonProperty("businessInsurance")
+    private BusinessInsuranceDTO businessInsurance;
+
+    @JsonProperty("driveInsurance")
+    private DriveInsuranceDTO driveInsurance;
+
+    @JsonProperty("motorDriveInsurance")
+    private MotorDriveInsuranceDTO motorDriveInsurance;
+
+    @JsonProperty("checkCarInfomation")
+    private CheckCarInfomationDTO checkCarInfomation;
+
+    @JsonProperty("flatvhlInfo")
+    private FlatvhlInfoDTO flatvhlInfo;
+
+    @JsonProperty("flatvhlInfoList")
+    private String flatvhlInfoList;
+
+    @JsonProperty("acctinfo")
+    private AcctinfoDTO acctinfo;
+
+    @JsonProperty("productInformation")
+    private String productInformation;
+
+    @JsonProperty("exceptionCode")
+    private String exceptionCode;
+
+    @JsonProperty("deliveryVO")
+    private DeliveryVODTO deliveryVO;
+
+    @JsonProperty("incrementVO")
+    private IncrementVODTO incrementVO;
+
+    @JsonProperty("increasedValueMsg")
+    private String increasedValueMsg;
+    @JsonProperty("jabFamilyDriveInsurance")
+    private JabFamilyDriveInsuranceDTO jabFamilyDriveInsurance;
+    @JsonProperty("rqbFamilyDriveInsurance")
+    private RqbFamilyDriveInsuranceDTO rqbFamilyDriveInsurance;
+    @JsonProperty("reInsureVo")
+    private String reInsureVo;
+    @JsonProperty("chdDivisorVoList")
+    private String chdDivisorVoList;
+    @JsonProperty("jkFamilyDriveInsurance")
+    private JkFamilyDriveInsuranceDTO jkFamilyDriveInsurance;
+    @JsonProperty("yyDriveInsurance")
+    private YyDriveInsuranceDTO yyDriveInsurance;
+    @JsonProperty("hyDriveInsurance")
+    private HyDriveInsuranceDTO hyDriveInsurance;
+    @JsonProperty("jkhosDriveInsurance")
+    private JkhosDriveInsuranceDTO jkhosDriveInsurance;
+    @JsonProperty("jyChargeDriveInsurance")
+    private JyChargeDriveInsuranceDTO jyChargeDriveInsurance;
+
+
+    @NoArgsConstructor
+    @Data
+    public static class MotorDriveInsuranceDTO {
+        @JsonProperty("productInfo")
+        private String productInfo;
+        @JsonProperty("itemKinds")
+        private String itemKinds;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class DeliveryVODTO {
+        @JsonProperty("vin")
+        private String vin;
+        @JsonProperty("ciAppNo")
+        private String ciAppNo;
+        @JsonProperty("biAppNo")
+        private String biAppNo;
+        @JsonProperty("dptCde")
+        private String dptCde;
+        @JsonProperty("custName")
+        private String custName;
+        @JsonProperty("appDate")
+        private String appDate;
+        @JsonProperty("custMobile")
+        private String custMobile;
+        @JsonProperty("epolicyMark")
+        private String epolicyMark;
+        @JsonProperty("custProvince")
+        private String custProvince;
+        @JsonProperty("custCity")
+        private String custCity;
+        @JsonProperty("custQuxian")
+        private String custQuxian;
+        @JsonProperty("custAddress")
+        private String custAddress;
+        @JsonProperty("completeAddress")
+        private String completeAddress;
+        @JsonProperty("backMark")
+        private String backMark;
+        @JsonProperty("deliveryDate")
+        private String deliveryDate;
+        @JsonProperty("deliverType")
+        private String deliverType;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class IncrementVODTO {
+        @JsonProperty("incrementList")
+        private String incrementList;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class JabFamilyDriveInsuranceDTO {
+        @JsonProperty("productInfo")
+        private String productInfo;
+        @JsonProperty("itemKinds")
+        private String itemKinds;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class RqbFamilyDriveInsuranceDTO {
+        @JsonProperty("productInfo")
+        private String productInfo;
+        @JsonProperty("itemKinds")
+        private String itemKinds;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class JkFamilyDriveInsuranceDTO {
+        @JsonProperty("productInfo")
+        private String productInfo;
+        @JsonProperty("itemKinds")
+        private String itemKinds;
+        @JsonProperty("uncarInsuredInfos")
+        private String uncarInsuredInfos;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class YyDriveInsuranceDTO {
+        @JsonProperty("productInfo")
+        private String productInfo;
+        @JsonProperty("itemKinds")
+        private String itemKinds;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class HyDriveInsuranceDTO {
+        @JsonProperty("productInfo")
+        private String productInfo;
+        @JsonProperty("itemKinds")
+        private String itemKinds;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class JkhosDriveInsuranceDTO {
+        @JsonProperty("productInfo")
+        private String productInfo;
+        @JsonProperty("itemKinds")
+        private String itemKinds;
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class JyChargeDriveInsuranceDTO {
+        @JsonProperty("productInfo")
+        private String productInfo;
+        @JsonProperty("itemKinds")
+        private String itemKinds;
+    }
+
+}

+ 20 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/service/DaJiaCrawlerRequest.java

@@ -0,0 +1,20 @@
+package com.jzg.quotation.dajia.crawler.service;
+
+
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.quotation.commons.service.QuotationCrawlerBaseService;
+
+/**
+ * @description: 大家财险请求
+ * @author: wenks
+ * @date: 2025/2/12 11:06
+ **/
+public interface DaJiaCrawlerRequest extends QuotationCrawlerBaseService {
+
+
+
+}
+
+
+

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

@@ -0,0 +1,67 @@
+package com.jzg.quotation.dajia.crawler.service.impl;
+
+
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.quotation.commons.entity.vo.base.LoginBase;
+import com.jzg.quotation.commons.entity.vo.quote.AttributionInformationVo;
+import com.jzg.quotation.commons.entity.vo.quote.CarInfoVo;
+import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
+import com.jzg.quotation.dajia.crawler.component.DaJiaRequestComponent;
+import com.jzg.quotation.dajia.crawler.converter.DaJiaCrawlerQuoteResultsConverter;
+import com.jzg.quotation.dajia.crawler.entity.DaJiaCrawlerConfigureParameters;
+import com.jzg.quotation.dajia.crawler.entity.request.*;
+import com.jzg.quotation.dajia.crawler.entity.response.DaJiaCrawlerCarResponse;
+import com.jzg.quotation.dajia.crawler.entity.response.DaJiaCrawlerPriceResponse;
+import com.jzg.quotation.dajia.crawler.entity.response.DaJiaCrawlerSaveResponse;
+import com.jzg.quotation.dajia.crawler.service.DaJiaCrawlerRequest;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpHeaders;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
+
+    private final DaJiaRequestComponent daJiaRequestComponent;
+
+    @Override
+    public void login(LoginBase loginBase) {
+        daJiaRequestComponent.authenticate(loginBase.getUsername(), loginBase.getUsername());
+    }
+
+    @Override
+    public QuoteResultsVo quote(QuoteVo quoteVo) {
+        // 获取token的请求头
+        AttributionInformationVo attributionInformationVo = quoteVo.getAttributionInformationVo();
+        HttpHeaders headers = daJiaRequestComponent.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
+        // 配置信息
+        DaJiaCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(DaJiaCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
+
+        // 车型查询
+        CarInfoVo carInfoVo = quoteVo.getCarInfoVo();
+        DaJiaCrawlerCarRequest daJiaCrawlerCarRequest = new DaJiaCrawlerCarRequest();
+
+        List<DaJiaCrawlerCarResponse.ListDTO> car = daJiaRequestComponent.car(daJiaCrawlerCarRequest, headers);
+        // 获取相同的车型
+
+        // 计算折旧价格
+        DaJiaCrawlerActualValueRequest daJiaCrawlerActualValueRequest = new DaJiaCrawlerActualValueRequest();
+        String actualValue = daJiaRequestComponent.actualValue(daJiaCrawlerActualValueRequest, headers);
+
+        // 保费计算
+        DaJiaCrawlerPriceRequest daJiaCrawlerPriceRequest = new DaJiaCrawlerPriceRequest();
+        DaJiaCrawlerPriceResponse crawlerPriceResponse = daJiaRequestComponent.price(daJiaCrawlerPriceRequest, headers);
+
+        // 订单保存
+        DaJiaCrawlerSaveRequest daJiaCrawlerSaveRequest = new DaJiaCrawlerSaveRequest(crawlerPriceResponse, "");
+        DaJiaCrawlerSaveResponse daJiaCrawlerSaveResponse = daJiaRequestComponent.save(daJiaCrawlerSaveRequest, headers);
+
+        // 返回报价信息
+        return new DaJiaCrawlerQuoteResultsConverter().toQuoteResultsVo(crawlerPriceResponse);
+    }
+
+
+}

+ 61 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/utils/DESEncryption.java

@@ -0,0 +1,61 @@
+package com.jzg.quotation.dajia.crawler.utils;
+
+
+import cn.hutool.core.codec.Base64;
+import cn.hutool.crypto.Mode;
+import cn.hutool.crypto.Padding;
+import cn.hutool.crypto.symmetric.DES;
+import org.apache.tomcat.util.buf.HexUtils;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+
+/**
+ * @description: 大家财险 DES ECB 加密解密
+ * @author: wenks
+ * @date: 2025/2/11 15:36
+ **/
+public class DESEncryption {
+
+    private DESEncryption() {
+        throw new AssertionError();
+    }
+
+    private static final String SIGN = "DJCX";
+
+    /**
+     * 加密key的过程
+     * @return DES
+     */
+    private static DES des() {
+        LocalDate localDate = LocalDate.now();
+        int dayOfMonth = localDate.getDayOfMonth();
+        int month = localDate.getMonthValue() - 2;
+        String now = localDate.plusMonths(dayOfMonth + month).format(DateTimeFormatter.ofPattern("yyyyMMdd"));
+        String key = now + SIGN;
+        String encode = Base64.encode(key);
+        return new DES(Mode.ECB, Padding.PKCS5Padding, encode.getBytes());
+    }
+
+    /**
+     * 加密
+     *
+     * @param data 需要加密的报文
+     * @return 加密参数
+     */
+    public static String encrypt(String data) {
+        return des().encryptHex(data);
+    }
+
+    /**
+     * 解密
+     *
+     * @param data 加密参数
+     * @return 加密后的参数
+     */
+    public static String decrypt(String data) {
+        byte[] bytes = HexUtils.fromHexString(data);
+        return des().decryptStr(bytes);
+    }
+
+}

+ 36 - 0
tenant/insurance/quotation-dajia/src/main/resources/application.yaml

@@ -0,0 +1,36 @@
+server:
+  port: 9898
+spring:
+  redis:
+    redisson:
+      address: redis://192.168.0.250:6379
+      password: 123456
+      database: 0
+  main:
+    allow-circular-references: true
+  datasource:
+    url: jdbc:mysql://39.98.239.48:3366/platform?serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
+    username: root
+    password: '@RqGHG#KZ*C9ytkQ'
+    driverClassName: com.mysql.cj.jdbc.Driver
+
+mybatis-plus:
+  mapper-locations: classpath*:/mapper/*Mapper.xml
+  global-config:
+    db-config:
+      logic-delete-field: is_delete
+      logic-delete-value: 1
+      logic-not-delete-value: 0
+  configuration:
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+data-scope:
+  tables:
+    - sys_user_jzg_info
+    - sys_dept
+
+minio:
+  url: http://192.168.0.250:9000
+  access-key: v7Zb8XhyLcYNcSHlxvyK
+  secret-key: 58YibMwpxGKtXcekPL065OM4GonC1hf2tFMjI9EN
+  bucket-name: jzg

+ 31 - 0
tenant/insurance/quotation-dajia/src/test/java/com/jzg/quotation/dajia/DaJiaCrawlerRequestTest.java

@@ -0,0 +1,31 @@
+package com.jzg.quotation.dajia;
+
+import com.alibaba.fastjson.JSON;
+import com.jzg.quotation.dajia.crawler.component.DaJiaRequestComponent;
+import com.jzg.quotation.dajia.crawler.entity.request.DaJiaCrawlerAuthenticateRequest;
+import com.jzg.quotation.dajia.crawler.utils.DESEncryption;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+public class DaJiaCrawlerRequestTest {
+
+    @Autowired
+    private DaJiaRequestComponent requestComponent;
+
+    @Test
+    public void testService() {
+        DaJiaCrawlerAuthenticateRequest request = new DaJiaCrawlerAuthenticateRequest();
+        request.setUsername("DJ829092");
+        request.setPassword(DESEncryption.encrypt("Dj147258@"));
+        request.setCheckCode("2");
+        request.setImgId("7157fbdbc6c94d7f97589b3dccb12ad2");
+        request.setRememberMe(false);
+        request.setOperatorId("DJ829092");
+        String jsonString = JSON.toJSONString(request);
+        String encrypt = DESEncryption.encrypt(jsonString);
+        System.out.println(encrypt);
+    }
+
+}

+ 28 - 0
tenant/insurance/quotation-summary/pom.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.jzg</groupId>
+        <artifactId>insurance</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>quotation-summary</artifactId>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.jzg</groupId>
+            <artifactId>quotation-dajia</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+</project>

+ 14 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/SummaryQuotationApplication.java

@@ -0,0 +1,14 @@
+package com.jzg.quotation.summary;
+
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class SummaryQuotationApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(SummaryQuotationApplication.class, args);
+    }
+
+}

+ 0 - 31
tenant/insurance/yongcheng/pom.xml

@@ -1,31 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>com.jzg</groupId>
-        <artifactId>insurance</artifactId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
-    <artifactId>yongcheng</artifactId>
-    <packaging>jar</packaging>
-    <name>yongcheng Maven Webapp</name>
-    <url>http://maven.apache.org</url>
-    <dependencies>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>3.8.1</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.dataformat</groupId>
-            <artifactId>jackson-dataformat-xml</artifactId>
-            <version>2.9.0</version>
-        </dependency>
-
-    </dependencies>
-    <build>
-        <finalName>yongcheng</finalName>
-    </build>
-</project>

+ 0 - 23
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/api/ApiComponents.java

@@ -1,23 +0,0 @@
-package com.jzg.yongcheng.api;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.jzg.yongcheng.utils.RequestApiComponents;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import reactor.core.publisher.Mono;
-
-@Component
-public class ApiComponents {
-
-    @Autowired
-    RequestApiComponents requestApiComponents;
-
-    /**
-     * 报价
-     * @return
-     */
-    public String quote() throws JsonProcessingException {
-        Mono<ApiComponents> post = requestApiComponents.post("", ApiComponents.class);
-        return post.block().toString();
-    }
-}

+ 0 - 66
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/aspect/AsyncLoggingAspect.java

@@ -1,66 +0,0 @@
-package com.jzg.yongcheng.aspect;
-
-import com.alibaba.fastjson.JSONObject;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.annotation.Around;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Pointcut;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Component;
-import reactor.core.publisher.Mono;
-
-import java.util.concurrent.CompletableFuture;
-
-@Aspect
-@Component
-public class AsyncLoggingAspect {
-
-    private static final Logger logger = LoggerFactory.getLogger(AsyncLoggingAspect.class);
-
-    @Pointcut("execution(* com.jzg.*.controller..*(..))")
-    public void controllerMethods() {}
-
-    @Around("controllerMethods()")
-    public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
-        // 记录开始时间
-        long startTime = System.currentTimeMillis();
-
-        // 执行目标方法并获取返回的 Mono
-        Object result = joinPoint.proceed();
-
-        // 检查返回的是否是 Mono 类型
-        if (result instanceof Mono) {
-            // 如果是 Mono,异步记录日志并在操作完成后处理结果
-            logAsync(joinPoint, (Mono<?>) result);
-        } else {
-            // 如果不是 Mono,直接记录同步日志
-            logAsync(joinPoint, Mono.just(result));
-        }
-
-        // 记录响应时间
-        long elapsedTime = System.currentTimeMillis() - startTime;
-        logger.info("Method execution time: {} ms", elapsedTime);
-
-        return result;
-    }
-
-    // 异步执行日志记录
-    @Async
-    public CompletableFuture<Void> logAsync(ProceedingJoinPoint joinPoint, Mono<?> resultMono) {
-        //完成时记录日志
-        Object[] args = joinPoint.getArgs();
-        StringBuilder params = new StringBuilder();
-        for (Object arg : args) {
-            params.append(arg).append(" ");
-        }
-        return resultMono.doOnTerminate(() -> {
-            logger.info("Request to method: {}", joinPoint.getSignature().toShortString());
-            logger.info("Request parameters: {}", params.toString().trim());
-            resultMono.subscribe(result -> {
-                logger.info("Method result: {}", JSONObject.toJSONString(result));
-            });
-        }).then().toFuture();
-    }
-}

+ 0 - 31
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/config/WebClientConfig.java

@@ -1,31 +0,0 @@
-package com.jzg.yongcheng.config;
-
-import io.netty.channel.ChannelOption;
-import io.netty.handler.timeout.ReadTimeoutHandler;
-import org.springframework.context.annotation.Bean;
-import org.springframework.http.client.reactive.ReactorClientHttpConnector;
-import org.springframework.web.reactive.function.client.WebClient;
-import reactor.netty.http.client.HttpClient;
-import reactor.netty.resources.ConnectionProvider;
-import java.util.concurrent.TimeUnit;
-
-
-public class WebClientConfig {
-    @Bean
-    public WebClient webClient() {
-        // 配置连接池
-        ConnectionProvider connectionProvider = ConnectionProvider.create(
-                "myConnectionPool",
-                50
-        );
-
-        HttpClient httpClient = HttpClient.create(connectionProvider)
-                .tcpConfiguration(tcpClient ->
-                        tcpClient.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 5000)  // 设置连接超时时间
-                                .doOnConnected(conn -> conn.addHandlerLast(new ReadTimeoutHandler(5, TimeUnit.SECONDS)))  // 设置读取超时
-                );
-        return WebClient.builder()
-                .clientConnector(new ReactorClientHttpConnector(httpClient))
-                .build();
-    }
-}

+ 0 - 40
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/controller/QuoteController.java

@@ -1,40 +0,0 @@
-package com.jzg.yongcheng.controller;
-
-import com.alibaba.fastjson.JSONObject;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.jzg.commons.core.page.HttpResult;
-import com.jzg.yongcheng.entity.Accident;
-import com.jzg.yongcheng.entity.AccidentResponse;
-import com.jzg.yongcheng.entity.AccidentalDrivingQueryVo;
-import com.jzg.yongcheng.entity.YcConfigureParameters;
-import com.jzg.yongcheng.utils.RequestApiComponents;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import reactor.core.publisher.Mono;
-import reactor.core.scheduler.Schedulers;
-
-import java.net.http.HttpResponse;
-
-@Tag(name="永城保险公司接口")
-@RestController
-@RequestMapping("/yc")
-public class QuoteController {
-
-    @Autowired
-    RequestApiComponents requestApiComponents;
-
-
-
-    //demo  测试
-    @PostMapping("/jyx")
-    public Mono<HttpResult<AccidentResponse>> quote(@RequestBody AccidentalDrivingQueryVo accidentalDrivingVo) throws JsonProcessingException {
-        String configStr = "{\"agentCode\":\"14B700P00020\",\"agentNme\":\"太原天勤保险代理有限公司\",\"agentType\":\"191010\",\"cBsnsTyp\":\"19002\",\"cChaType\":\"191010\",\"cCntrNme\":\"天勤\",\"cOprcde\":\"21489962X\",\"conferCode\":\"14B700P0002001\",\"custNature\":\"192099\",\"dptCde\":\"14B7\",\"operatorCode\":\"21489962X\",\"password\":\"tianqin2023@\",\"qlftNo\":\"202930000000800\",\"salesmanNo\":\"114000213\",\"userName\":\"tianqin\"}";
-        YcConfigureParameters ycConfigureParameters = JSONObject.parseObject(configStr, YcConfigureParameters.class);
-        Accident accident = Accident.buildPayParam(accidentalDrivingVo, ycConfigureParameters, null);
-        return Mono.fromCallable(() -> HttpResult.ok(requestApiComponents.post(accident, AccidentResponse.class)
-                .subscribeOn(Schedulers.boundedElastic()).block()));
-    }
-
-
-}

+ 0 - 71
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/Accident.java

@@ -1,71 +0,0 @@
-package com.jzg.yongcheng.entity;
-
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
-import jakarta.validation.Valid;
-import lombok.Data;
-import org.apache.commons.lang3.StringUtils;
-
-@Data
-@JacksonXmlRootElement(localName = "tns:newQueryYwCvrg")
-public class Accident {
-
-    @JacksonXmlProperty(isAttribute = false, localName = "request")
-    private RequestLabel requestLabel;
-
-
-    @Data
-    public static class RequestLabel {
-        /**
-         * authorityData
-         */
-        @Valid
-        @JacksonXmlProperty(isAttribute = false, localName = "authorityData")
-        private AuthorityDataXml authorityData;
-
-
-        /**
-         * 机构号
-         * 两位,二级机构
-         */
-        @JacksonXmlProperty(localName = "deptcde")
-        private String deptcde;
-
-        /**
-         * 方案号
-         * 非必填
-         */
-        @JacksonXmlProperty(localName = "schemeNo")
-        private String schemeNo;
-
-        /**
-         * 座位数
-         */
-        @JacksonXmlProperty(localName = "seatsNum")
-        private String seatsNum;
-
-
-    }
-
-    /**
-     * 构造 请求参数
-     *
-     * @author: lig
-     * @date: 2023-02-15
-     */
-    public static Accident buildPayParam(AccidentalDrivingQueryVo accidentalDrivingVo, YcConfigureParameters ycConfigureParameters, String schemeNo) {
-        Accident m = new Accident();
-        RequestLabel r = new RequestLabel();
-        r.setAuthorityData(ycConfigureParameters.gainAuthorityDataXml());
-//        r.setDeptcde(ycConfigureParameters.getDptCde().substring(0, 2));
-        r.setDeptcde("14");
-        r.setSeatsNum("5");
-        if (StringUtils.isNotEmpty(schemeNo)) {
-            r.setSchemeNo(schemeNo);
-        }
-        m.setRequestLabel(r);
-        return m;
-    }
-
-
-}

+ 0 - 37
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/AccidentResponse.java

@@ -1,37 +0,0 @@
-package com.jzg.yongcheng.entity;
-
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
-import lombok.Data;
-
-@Data
-@JacksonXmlRootElement(localName = "packet")
-public class AccidentResponse {
-
-
-    @JacksonXmlProperty(localName = "head")
-    private Head head;
-    /**
-     *
-     */
-    @JacksonXmlProperty(localName = "responseYwCvrg")
-    private ResponseYwCvrg responseYwCvrg;
-
-
-    @Data
-    public static class Head {
-        @JacksonXmlProperty(localName = "responseCompleteMessageStatus")
-        private ResponseCompleteMessageStatus responseCompleteMessageStatus;
-    }
-
-    @Data
-    public static class ResponseCompleteMessageStatus {
-        @JacksonXmlProperty(localName = "messageStatusCode")
-        private String messageStatusCode;
-        @JacksonXmlProperty(localName = "messageStatusDescription")
-        private String messageStatusDescription;
-
-    }
-
-
-}

+ 0 - 38
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/AccidentalDrivingQueryVo.java

@@ -1,38 +0,0 @@
-package com.jzg.yongcheng.entity;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-
-import java.io.Serializable;
-
-@Data
-public class AccidentalDrivingQueryVo implements Serializable {
-
-
-    private static final long serialVersionUID = 6098565535096545432L;
-
-    @NotNull(message = "保险公司编号必填")
-    @NotEmpty(message = "保险公司编号不能为空")
-    @Schema(description = "保险公司编号")
-    private String companyCode;
-
-    @Schema(description = "座位数")
-    private int seatNum;
-
-    @NotNull(message = "协议ID必填")
-    @Schema(description = "协议ID")
-    private String agreementId;
-
-    @Schema(description = "方案号")
-    private String code;
-
-    @Schema(description = "使用性质")
-    private String cUsageCde;
-
-    @Schema(description = "投保类型")
-    private String cProdNo;
-
-
-}

+ 0 - 22
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/AuthorityDataXml.java

@@ -1,22 +0,0 @@
-package com.jzg.yongcheng.entity;
-
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
-import lombok.Data;
-import org.springframework.beans.factory.annotation.Value;
-
-@Data
-public class AuthorityDataXml {
-
-
-    //用户名   永诚所提供的接口权限账号
-    @JacksonXmlProperty(localName = "userName")
-    @Value("${yc.api.userName}")
-    private String userName;
-
-    //密码    永诚所提供的接口权限密码
-    @Value("${yc.api.password}")
-    @JacksonXmlProperty(localName = "password")
-    private String password;
-
-
-}

+ 0 - 78
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/ResponseYwCvrg.java

@@ -1,78 +0,0 @@
-package com.jzg.yongcheng.entity;
-
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
-import lombok.Data;
-
-import java.util.List;
-
-@Data
-public class ResponseYwCvrg {
-
-
-    @JacksonXmlElementWrapper(useWrapping = false)
-    @JacksonXmlProperty(localName = "cvrgList")
-    private List<CvrgList> cvrgList;
-
-
-    @Data
-    public static class CvrgList {
-
-        /**
-         * 座位数
-         */
-        @JacksonXmlProperty(localName = "cauthorizedSeat")
-        private String cauthorizedSeat;
-
-        /**
-         * 险别代码
-         */
-        @JacksonXmlProperty(localName = "cInsuranceCode")
-        private String cInsuranceCode;
-
-        /**
-         * 险别名称
-         */
-        @JacksonXmlProperty(localName = "cInsuranceLiability")
-        private String cInsuranceLiability;
-
-        /**
-         * 方案名称
-         */
-        @JacksonXmlProperty(localName = "cInsuranceType")
-        private String cInsuranceType;
-
-        /**
-         * 方案号
-         */
-        @JacksonXmlProperty(localName = "cInsuranceTypeCode")
-        private String cInsuranceTypeCode;
-
-        /**
-         * 每车保额
-         */
-        @JacksonXmlProperty(localName = "nInsuranceAmountCar")
-        private String nInsuranceAmountCar;
-
-        /**
-         * 每座保额
-         */
-        @JacksonXmlProperty(localName = "nInsuranceAmountSeat")
-        private String nInsuranceAmountSeat;
-
-        /**
-         * 责任保费
-         */
-        @JacksonXmlProperty(localName = "nLiabilityPremium")
-        private String nLiabilityPremium;
-
-        /**
-         * 限购份数
-         */
-        @JacksonXmlProperty(localName = "nPurchaseLimitsNum")
-        private String nPurchaseLimitsNum;
-
-    }
-
-
-}

+ 0 - 77
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/entity/YcConfigureParameters.java

@@ -1,77 +0,0 @@
-package com.jzg.yongcheng.entity;
-
-
-import lombok.Data;
-
-@Data
-public class YcConfigureParameters {
-
-    //机构代码(dptCde)
-    private String dptCde;
-    //渠道编码(agentCode)
-    private String agentCode;
-    //协议编码(conferCode)
-    private String conferCode;
-    //渠道分类(agentType)
-    private String agentType;
-    //代理人名称(agentNme)
-    private String agentNme;
-    //代理人资格证号(qlftNo)
-    private String qlftNo;
-    //录入人(operatorCode)
-    private String operatorCode;
-    //业务员代码(salesmanNo)
-    private String salesmanNo;
-    //新业务来源(CChaType)
-    private String CChaType;
-    //客户性质(custNature)
-    private String custNature;
-    //操作人员代码(cOprcde)
-    private String cOprcde;
-    //业务来源(cBsnsTyp)
-    private String cBsnsTyp;
-    //用户名
-    private String userName;
-    //密码
-    private String password;
-    //投保联系人  ≤5个字
-    private String cCntrNme;
-
-
-
-    /**
-     * 获取渠道
-     */
-//    public Agent gainAgent() {
-//        Agent agent = new Agent();
-//        agent.setAgentCode(agentCode);
-//        agent.setConferCode(conferCode);
-//        agent.setAgentType(agentType);
-//        agent.setAgentNme(agentNme);
-//        agent.setQlftNo(qlftNo);
-//        agent.setCustNature(custNature);
-//        agent.setAgentProfId(qlftNo);
-//        agent.setSubCoNo(conferCode);
-//        return agent;
-//    }
-
-    /**
-     * @description: 获取验证数据
-     * @author: lig
-     * @date: 2023年02月07日 0007
-     */
-    public AuthorityDataXml gainAuthorityDataXml() {
-        AuthorityDataXml authorityDataXml = new AuthorityDataXml();
-        authorityDataXml.setUserName(getUserName());
-        authorityDataXml.setPassword(getPassword());
-        return authorityDataXml;
-    }
-    public AuthorityDataXml gainAuthorityDataXml(YcConfigureParameters ycConfigureParamete) {
-        AuthorityDataXml authorityDataXml = new AuthorityDataXml();
-        authorityDataXml.setUserName(ycConfigureParamete.getUserName());
-        authorityDataXml.setPassword(ycConfigureParamete.getPassword());
-        return authorityDataXml;
-    }
-
-
-}

+ 0 - 103
tenant/insurance/yongcheng/src/main/java/com/jzg/yongcheng/utils/RequestApiComponents.java

@@ -1,103 +0,0 @@
-package com.jzg.yongcheng.utils;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.dataformat.xml.XmlMapper;
-import com.jzg.commons.exception.SystemException;
-import org.apache.commons.lang3.StringEscapeUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
-import org.springframework.stereotype.Component;
-import org.springframework.web.reactive.function.client.WebClient;
-import reactor.core.publisher.Mono;
-
-@Component
-public class RequestApiComponents {
-
-    private WebClient webClient;
-
-    @Autowired
-    private WebClient.Builder webClientBuilder;
-
-    private ObjectMapper gainXmlMapper() {
-        ObjectMapper xmlMapper = new XmlMapper();
-        xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-        xmlMapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);
-        xmlMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
-        xmlMapper.setPropertyNamingStrategy(PropertyNamingStrategy.UPPER_CAMEL_CASE);
-        xmlMapper.enable(MapperFeature.USE_STD_BEAN_NAMING);
-        xmlMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
-        return xmlMapper;
-    }
-
-    public <Q, S> Mono<S> post(Q q, Class<S> tClass) throws JsonProcessingException {
-        String url = "http://39.98.214.159/yongcheng/NewQueryYwCvrgWebService";
-        // 设置请求头
-        HttpHeaders httpHeaders = new HttpHeaders();
-        httpHeaders.set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36");
-        httpHeaders.setContentType(MediaType.parseMediaType("text/xml;charset=UTF-8"));
-        webClient = webClientBuilder.baseUrl(url)
-                .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_XML_VALUE)
-                .defaultHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36")
-                .build();
-
-        // 构造 SOAP XML 请求体
-        String xmlString = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tns=\"http://newWS.front" +
-                ".app.echannel.ebiz.alltrust.com/\">";
-        xmlString += "<soapenv:Body>";
-        xmlString += gainXmlMapper().writeValueAsString(q); // 将请求对象转换为 XML 字符串
-        xmlString += "</soapenv:Body>\n" +
-                "</soapenv:Envelope>";
-
-        // 使用 WebClient 发起请求
-        return webClient
-                .post()
-                .bodyValue(xmlString)  // 设置请求体
-                .retrieve()  // 发起请求
-                .bodyToMono(String.class)  // 将响应转换为 Mono<String>
-                .map(responseBody -> {
-                    // 处理响应
-                    String responseStringMsg = StringEscapeUtils.unescapeXml(responseBody);
-                    String cleanStr = cleanResponseStr(responseStringMsg);
-
-                    if (!cleanStr.contains("<")) {
-                        return (S) cleanStr;
-                    }
-
-                    // 将响应的 XML 字符串反序列化成目标对象
-                    try {
-                        S bean = gainXmlMapper().readValue(cleanStr, tClass);
-                        if (bean == null) {
-                            throw new SystemException("请求失败");
-                        }
-                        return bean;
-                    } catch (JsonProcessingException e) {
-                        throw new SystemException("解析响应失败", e.getMessage());
-                    }
-                });
-    }
-
-
-    public static String cleanResponseStr(String responseData) {
-        String rStr = "";
-        String str = "";
-        if (responseData.indexOf("<response>") > 0) {
-            rStr = responseData.substring(responseData.indexOf("<response>") + 10, responseData.indexOf("</response>"));
-        } else if (responseData.indexOf("<return>") > 0) {
-            rStr = responseData.substring(responseData.indexOf("<return>") + 8, responseData.indexOf("</return>"));
-        }
-        if (StringUtils.isEmpty(rStr)) {
-            rStr = responseData.substring(responseData.indexOf("<response>") + 10, responseData.indexOf("</response>"));
-        }
-        String lRStr = rStr.replaceAll("&lt;", "<");
-        str = lRStr.replaceAll("&gt;", ">");
-
-        return str.trim();
-    }
-
-
-
-}

+ 0 - 34
tenant/insurance/yongcheng/src/main/resources/application.yml

@@ -1,34 +0,0 @@
-server:
-  port: 9100
-spring:
-  main:
-    allow-bean-definition-overriding: true
-  redis:
-    redisson:
-      address: redis://192.168.0.250:6379
-      password: 123456
-      database: 0
-#
-#  datasource:
-#      url: jdbc:mysql://39.98.239.48:3366/platform?serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
-#      username: root
-#      password: '@RqGHG#KZ*C9ytkQ'
-#      driverClassName: com.mysql.cj.jdbc.Driver
-
-mybatis-plus:
-  mapper-locations: classpath*:/mapper/*Mapper.xml
-  configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-config:
-  sso: 0
-
-
-minio:
-  url: http://test-api.baoxianzhanggui.com
-  access-key: N8hf40VDM3Uf2xJ5vnvE
-  secret-key: CDe1raroqIMo5R2KhHl6ZQbJOhdq0mrtCI78g3vq
-  bucket-name: jzg
-
-logging:
-  config: classpath:logback-spring.xml
-

+ 0 - 34
tenant/insurance/yongcheng/src/main/resources/logback-spring.xml

@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration>
-    <appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender">
-        <!-- Graylog server 的主机名或 IP 地址 -->
-        <graylogHost>192.168.0.250</graylogHost>
-        <!-- Graylog 服务器端口,通常为 12201(UDP)或 12202(TCP) -->
-        <graylogPort>12201</graylogPort>
-        <!-- 可选项:指定协议,默认使用 UDP -->
-        <transport>UDP</transport>
-        <!-- 发送日志时是否压缩 -->
-        <compress>true</compress>
-        <!-- 是否在 GELF 消息中加入时间戳 -->
-        <includeTimestamp>true</includeTimestamp>
-        <!-- 日志内容最大字节数 -->
-        <maxMessageSize>32768</maxMessageSize>
-        <!-- 设置自定义字段 -->
-        <additionalFields>
-        </additionalFields>
-    </appender>
-
-    <!-- 控制台输出日志,非必须,可以根据需要选择性启用 -->
-    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-        <layout class="ch.qos.logback.classic.layout.TTLLLayout">
-            <Pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</Pattern>
-        </layout>
-    </appender>
-
-    <!-- 输出到控制台 -->
-    <root level="INFO">
-        <appender-ref ref="GELF"/>
-        <appender-ref ref="STDOUT"/>
-    </root>
-
-</configuration>