jinshihui 10 months ago
parent
commit
4d5fe9752b
19 changed files with 4230 additions and 226 deletions
  1. 7 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/CarInfoVo.java
  2. 3 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteResultsVo.java
  3. 3 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/base/OrderBase.java
  4. 1 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  5. 8 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/build/ZiJinCrawlerQuoteResultsVoBuild.java
  6. 42 2
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/component/ZiJinCrawlerRequestComponent.java
  7. 10 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/request/ZiJinCrawlerGetCarActualValueRequest.java
  8. 19 1
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/request/ZiJinCrawlerQuotationRequest.java
  9. 34 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/request/ZiJinCrawlerSaveProposalRequest.java
  10. 1018 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/request/ZiJinCrawlerSaveQuoteInfoRequest.java
  11. 359 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/response/ZiJinCrawlerSaveProposalResponse.java
  12. 1910 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/response/ZiJinCrawlerSaveQuoteInfoResponse.java
  13. 2 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/enums/RequestUrl.java
  14. 7 1
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/ZiJinCrawlerOrderService.java
  15. 9 1
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/impl/ZiJinCrawlerOrderServiceImpl.java
  16. 797 219
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/impl/ZiJinCrawlerRequestImpl.java
  17. 0 0
      tenant/insurance/quotation-zijin/src/main/resources/js/auto.js
  18. 1 1
      tenant/insurance/quotation-zijin/src/main/resources/js/content.js
  19. 0 0
      tenant/insurance/quotation-zijin/src/main/resources/js/tsssss.js

+ 7 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/CarInfoVo.java

@@ -3,6 +3,7 @@ package com.jzg.commons.entity.quote.vo;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.jzg.commons.constants.quote.enums.quote.*;
 import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -143,6 +144,12 @@ public class CarInfoVo implements Serializable {
 
     @Schema(description = "能源种类名称")
     private String energyTypeName;
+
+    /**
+     * 车辆能源类型,D1通常代表汽油
+     */
+    private String modelEnergyType;
+
     /**
      * @see PropertyCode
      * 所属性质代码

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteResultsVo.java

@@ -109,6 +109,9 @@ public class QuoteResultsVo implements Serializable {
      */
     private InsOrderStatusEnum quoteStatusEnum;
 
+    /**
+     * 报价状态
+     */
     private String quoteStatus;
 
     /**

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/base/OrderBase.java

@@ -57,6 +57,9 @@ public class OrderBase implements Serializable {
      */
     private String productId;
 
+    /**
+     * 产品编码
+     */
     private String productsCode;
 
     /**

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

@@ -203,7 +203,7 @@ public class UnifyOrderManager {
      * 统一报价
      *
      * @param quoteVo
-     * @return
+     * @return HttpResult<QuoteResultsVo>
      */
     @OrderOperationLog(
             module = "车险订单",

+ 8 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/build/ZiJinCrawlerQuoteResultsVoBuild.java

@@ -17,6 +17,7 @@ import java.util.stream.Collectors;
  * @date:
  **/
 public class ZiJinCrawlerQuoteResultsVoBuild {
+
     /**
      * 处理报价失败结果
      * @param ziJinCrawlerQuotationResponse
@@ -32,6 +33,13 @@ public class ZiJinCrawlerQuoteResultsVoBuild {
         return quoteResultsVo;
     }
 
+    /**
+     * 处理报价结果
+     * @param ordersNo
+     * @param quoteVo
+     * @param ziJinCrawlerQuotationResponse
+     * @return QuoteResultsVo
+     */
     public static QuoteResultsVo buildQuoteResultsVo(String ordersNo, QuoteVo quoteVo, ZiJinCrawlerQuotationResponse ziJinCrawlerQuotationResponse) {
         QuoteResultsVo quoteResultsVo = new QuoteResultsVo();
         quoteResultsVo.setOrdersNo(ordersNo);

+ 42 - 2
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/component/ZiJinCrawlerRequestComponent.java

@@ -104,7 +104,7 @@ public class ZiJinCrawlerRequestComponent {
      * @param ziJinCrawlerCheckCaptchaRequest
      * @return ZiJinCrawlerCheckCaptchaResponse
      */
-    public ZiJinCrawlerCheckCaptchaResponse checkCaptchaAndGetToken(ZiJinCrawlerCheckCaptchaRequest ziJinCrawlerCheckCaptchaRequest,String token) throws IOException {
+    public ZiJinCrawlerCheckCaptchaResponse checkCaptchaAndGetToken(ZiJinCrawlerCheckCaptchaRequest ziJinCrawlerCheckCaptchaRequest, String token) throws IOException {
         log.info("ziJinCrawlerCheckCaptchaRequest请求参数的值:{}", JSON.toJSONString(ziJinCrawlerCheckCaptchaRequest));
 
         HttpHeaders httpHeaders = setHttpHeaders();
@@ -124,7 +124,7 @@ public class ZiJinCrawlerRequestComponent {
      * @param token
      * @return ZiJinCrawlerCheckTokenResponse
      */
-    public ZiJinCrawlerCheckTokenResponse checkToken(ZiJinCrawlerCheckTokenRequest ziJinCrawlerCheckTokenRequest,String token) throws IOException {
+    public ZiJinCrawlerCheckTokenResponse checkToken(ZiJinCrawlerCheckTokenRequest ziJinCrawlerCheckTokenRequest, String token) throws IOException {
         log.info("ziJinCrawlerCheckTokenRequest请求参数的值:{}", JSON.toJSONString(ziJinCrawlerCheckTokenRequest));
 
         HttpHeaders httpHeaders = setHttpHeaders();
@@ -185,6 +185,7 @@ public class ZiJinCrawlerRequestComponent {
         HttpHeaders httpHeaders = setHttpHeaders();
 
         String jsonString = JSON.toJSONString(ziJinCrawlerCarRequest);
+        log.info("ziJinCrawlerCarRequest请求参数的值:{}", jsonString);
         ResponseEntity<ZiJinCrawlerCarResponse> responseEntity = requestComponent.post(RequestUrl.CAR.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()), jsonString, ZiJinCrawlerCarResponse.class, httpHeaders);
         return responseEntity.getBody();
     }
@@ -200,6 +201,7 @@ public class ZiJinCrawlerRequestComponent {
         //设置headers
         HttpHeaders httpHeaders = setHttpHeaders();
         String jsonString = JSON.toJSONString(ziJinCrawlerGetOrderNoRequest);
+        log.info("ziJinCrawlerGetOrderNoRequest请求参数的值:{}", jsonString);
         ResponseEntity<ZiJinCrawlerGetOrderNoResponse> responseEntity = requestComponent.post(RequestUrl.GET_ORDER_NUMBER.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()), jsonString, ZiJinCrawlerGetOrderNoResponse.class, httpHeaders);
         return responseEntity.getBody();
     }
@@ -215,6 +217,7 @@ public class ZiJinCrawlerRequestComponent {
         //设置headers
         HttpHeaders httpHeaders = setHttpHeaders();
         String jsonString = JSON.toJSONString(ziJinCrawlerGetCarActualValueRequest);
+        log.info("ziJinCrawlerGetCarActualValueRequest请求参数的值:{}", jsonString);
         ResponseEntity<ZiJinCrawlerGetCarActualValueResponse> responseEntity = requestComponent.post(RequestUrl.GET_ACTUAL_VALUE.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()), jsonString, ZiJinCrawlerGetCarActualValueResponse.class, httpHeaders);
         return responseEntity.getBody();
     }
@@ -230,10 +233,47 @@ public class ZiJinCrawlerRequestComponent {
         //设置headers
         HttpHeaders httpHeaders = setHttpHeaders();
         String jsonString = JSON.toJSONString(ziJinCrawlerQuotationRequest);
+        log.info("ziJinCrawlerQuotationRequest请求参数的值:{}", jsonString);
         ResponseEntity<ZiJinCrawlerQuotationResponse> post = requestComponent.post(RequestUrl.PRICE.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()), jsonString, ZiJinCrawlerQuotationResponse.class, httpHeaders);
         return post.getBody();
     }
 
+    /**
+     * 保存报价信息
+     *
+     * @param ziJinCrawlerSaveQuoteInformationRequest
+     * @param headers
+     * @return ZiJinCrawlerSaveQuoteInformationResponse
+     */
+    public ZiJinCrawlerSaveQuoteInfoResponse saveQuoteInformation(ZiJinCrawlerSaveQuoteInfoRequest ziJinCrawlerSaveQuoteInfoRequest, HttpHeaders headers) throws IOException {
+        //设置headers
+        HttpHeaders httpHeaders = setHttpHeaders();
+
+        String jsonString = JSON.toJSONString(ziJinCrawlerSaveQuoteInfoRequest);
+        log.info("ziJinCrawlerSaveQuoteInfoRequest请求参数的值:{}", jsonString);
+        ResponseEntity<ZiJinCrawlerSaveQuoteInfoResponse> responseEntity = requestComponent.post(RequestUrl.SAVE_QUOTE_INFORMATION.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()), jsonString, ZiJinCrawlerSaveQuoteInfoResponse.class, httpHeaders);
+        return responseEntity.getBody();
+    }
+
+     /**
+     * 保存投保单
+     *
+     * @param ziJinCrawlerSaveProposalRequest
+     * @param headers
+     * @return ZiJinCrawlerSaveProposalResponse
+     */
+    public ZiJinCrawlerSaveProposalResponse saveProposal(ZiJinCrawlerSaveProposalRequest ziJinCrawlerSaveProposalRequest, HttpHeaders headers) throws IOException {
+        //设置headers
+        HttpHeaders httpHeaders = setHttpHeaders();
+
+        String jsonString = JSON.toJSONString(ziJinCrawlerSaveProposalRequest);
+        log.info("ziJinCrawlerSaveProposalRequest请求参数的值:{}", jsonString);
+        ResponseEntity<ZiJinCrawlerSaveProposalResponse> responseEntity = requestComponent.post(RequestUrl.SAVE_PROPOSAL_ORDER.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()), jsonString, ZiJinCrawlerSaveProposalResponse.class, httpHeaders);
+        return responseEntity.getBody();
+    }
+
+
+
     /**
      * 核保
      *

+ 10 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/request/ZiJinCrawlerGetCarActualValueRequest.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.zijin.crawler.entity.request;
 
+import com.alibaba.fastjson.annotation.JSONField;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -21,53 +22,62 @@ public class ZiJinCrawlerGetCarActualValueRequest implements Serializable {
      * 车辆类型代码,A0通常代表小型车
      */
     @JsonProperty("carKindCode")
+    @JSONField(ordinal = 1)
     private String carKindCode;
 
     /**
      * 初次登记日期,车辆首次上牌日期
      */
     @JsonProperty("enrollDate")
+    @JSONField(ordinal = 2)
     private String enrollDate;
 
     /**
      * 更新登记日期,车辆信息最后更新日期
      */
     @JsonProperty("updateEnrollDate")
+    @JSONField(ordinal = 3)
     private String updateEnrollDate;
 
     /**
      * 购车价格,车辆购买时的价格(单位:元)
      */
     @JsonProperty("purchasePrice")
+    @JSONField(ordinal = 4)
     private String purchasePrice;
 
     /**
      * 座位数,车辆核定座位数量
      */
     @JsonProperty("seatCount")
+    @JSONField(ordinal = 5)
     private Integer seatCount;
 
     /**
      * 使用性质代码,85通常代表非营业用
      */
     @JsonProperty("useNatureCode")
+    @JSONField(ordinal = 6)
     private String useNatureCode;
 
     /**
      * 保险开始日期,保单生效日期
      */
     @JsonProperty("startDate")
+    @JSONField(ordinal = 7)
     private String startDate;
 
     /**
      * 新能源标志,0代表传统燃油车
      */
     @JsonProperty("newEnergyFlag")
+    @JSONField(ordinal = 8)
     private String newEnergyFlag;
 
     /**
      * 车辆能源类型,D1通常代表汽油
      */
     @JsonProperty("modelEnergyType")
+    @JSONField(ordinal = 9)
     private String modelEnergyType;
 }

+ 19 - 1
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/request/ZiJinCrawlerQuotationRequest.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.zijin.crawler.entity.request;
 
+import com.alibaba.fastjson.annotation.JSONField;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -22,102 +23,119 @@ public class ZiJinCrawlerQuotationRequest implements Serializable {
      * 基础信息对象
      */
     @JsonProperty("baseInfo")
+    @JSONField(ordinal = 1)
     private BaseInfo baseInfo;
 
     /**
      * 车主信息
      */
     @JsonProperty("carOwnerInfo")
+    @JSONField(ordinal = 2)
     private CarOwnerInfo carOwnerInfo;
 
     /**
      * 保险标志
      */
     @JsonProperty("insuranceSign")
+    @JSONField(ordinal = 3)
     private String insuranceSign;
 
     /**
      * 被保险人列表
      */
     @JsonProperty("insuredList")
+    @JSONField(ordinal = 4)
     private List<InsuredList> insuredList;
 
     /**
      * 订单ID
      */
     @JsonProperty("orderId")
+    @JSONField(ordinal = 5)
     private String orderId;
 
     /**
      * 订单来源
      */
     @JsonProperty("orderOrigin")
+    @JSONField(ordinal = 6)
     private String orderOrigin;
 
     /**
      * 需求单校验标志
      */
     @JsonProperty("demandNoCheckFlag")
+    @JSONField(ordinal = 7)
     private String demandNoCheckFlag;
 
     /**
      * 产品代码
      */
     @JsonProperty("productCode")
+    @JSONField(ordinal = 8)
     private String productCode;
 
     /**
      * 产品名称
      */
     @JsonProperty("productName")
+    @JSONField(ordinal = 9)
     private String productName;
 
     /**
      * 减税信息
      */
     @JsonProperty("taxRelifInfo")
+    @JSONField(ordinal = 10)
     private TaxRelifInfo taxRelifInfo;
 
     /**
      * 险种列表
      */
     @JsonProperty("itemKindList")
+    @JSONField(ordinal = 11)
     private List<ItemKindList> itemKindList;
 
     /**
      * 附加保单信息列表
      */
     @JsonProperty("carPolicySubInfoList")
+    @JSONField(ordinal = 12)
     private List<CarPolicySubInfoList> carPolicySubInfoList;
 
     /**
      * 车辆信息
      */
     @JsonProperty("vehicleInfo")
+    @JSONField(ordinal = 13)
     private VehicleInfo vehicleInfo;
 
     /**
      * 盈利数据列表
      */
     @JsonProperty("profitDataList")
+    @JSONField(ordinal = 14)
     private List<ProfitDataList> profitDataList;
 
     /**
      * 税务字段
      */
     @JsonProperty("taxFields")
+    @JSONField(ordinal = 15)
     private String taxFields;
 
     /**
      * 附加险列表
      */
     @JsonProperty("attachRiskList")
+    @JSONField(ordinal = 16)
     private List<AttachRiskList> attachRiskList;
 
     /**
      * 车载设备保费列表
      */
     @JsonProperty("carDevicePremiumDtoList")
+    @JSONField(ordinal = 17)
     private List<CarDevicePremiumDtoList> carDevicePremiumDtoList;
 
     /**
@@ -287,7 +305,7 @@ public class ZiJinCrawlerQuotationRequest implements Serializable {
         private String businessName;
 
         /**
-         * MongoDB文档ID
+         * ID
          */
         @JsonProperty("_id")
         private String idMongo;

+ 34 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/request/ZiJinCrawlerSaveProposalRequest.java

@@ -0,0 +1,34 @@
+package com.jzg.quotation.zijin.crawler.entity.request;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 紫金保司保存投保单请求参数实体类
+ */
+@Data
+@NoArgsConstructor
+public class ZiJinCrawlerSaveProposalRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 7427030740879200532L;
+
+    /**
+     * 订单号
+     */
+    @JsonProperty("orderNo")
+    @JSONField(ordinal = 1)
+    private String orderNo;
+
+    /**
+     * 投保单校验号
+     */
+    @JsonProperty("proposalCheckNo")
+    @JSONField(ordinal = 2)
+    private String proposalCheckNo;
+}

+ 1018 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/request/ZiJinCrawlerSaveQuoteInfoRequest.java

@@ -0,0 +1,1018 @@
+package com.jzg.quotation.zijin.crawler.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 紫金保险保存报价信息请求实体类
+ *
+ * <p>该类用于封装保存保险报价信息时所需的请求数据,包含基础信息、车主信息、车辆信息、
+ * 被保人信息、险种明细等完整的保险报价数据结构。</p>
+ *
+ * @author system
+ * @since 2025-11-12
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Data
+public class ZiJinCrawlerSaveQuoteInfoRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 代理人代码
+     */
+    @JsonProperty("agentCode")
+    private String agentCode;
+
+    /**
+     * 订单ID
+     */
+    @JsonProperty("orderId")
+    private String orderId;
+
+    /**
+     * 订单号
+     */
+    @JsonProperty("orderNo")
+    private String orderNo;
+
+    /**
+     * 基础信息
+     */
+    @JsonProperty("baseInfo")
+    private BaseInfo baseInfo;
+
+    /**
+     * 车主信息
+     */
+    @JsonProperty("carOwnerInfo")
+    private CarOwnerInfo carOwnerInfo;
+
+    /**
+     * 车险附加险信息列表
+     */
+    @JsonProperty("carPolicySubInfoList")
+    private List<CarPolicySubInfo> carPolicySubInfoList;
+
+    /**
+     * 附加险列表
+     */
+    @JsonProperty("attachRiskList")
+    private List<Object> attachRiskList;
+
+    /**
+     * 被保人列表
+     */
+    @JsonProperty("insuredList")
+    private List<InsuredInfo> insuredList;
+
+    /**
+     * 险别明细列表
+     */
+    @JsonProperty("itemKindList")
+    private List<ItemKindInfo> itemKindList;
+
+    /**
+     * 收费信息列表
+     */
+    @JsonProperty("chargingInfoList")
+    private List<Object> chargingInfoList;
+
+    /**
+     * 订单来源
+     */
+    @JsonProperty("orderOrigin")
+    private String orderOrigin;
+
+    /**
+     * 产品代码
+     */
+    @JsonProperty("productCode")
+    private String productCode;
+
+    /**
+     * 产品名称
+     */
+    @JsonProperty("productName")
+    private String productName;
+
+    /**
+     * 提交信息
+     */
+    @JsonProperty("submitInfo")
+    private Map<String, Object> submitInfo;
+
+    /**
+     * 车船税减免信息
+     */
+    @JsonProperty("taxRelifInfo")
+    private TaxRelifInfo taxRelifInfo;
+
+    /**
+     * 终端ID
+     */
+    @JsonProperty("terminalId")
+    private String terminalId;
+
+    /**
+     * 终端类型
+     */
+    @JsonProperty("terminalIdType")
+    private String terminalIdType;
+
+    /**
+     * 投保标识
+     */
+    @JsonProperty("insuranceSign")
+    private String insuranceSign;
+
+    /**
+     * 车辆信息
+     */
+    @JsonProperty("vehicleInfo")
+    private VehicleInfo vehicleInfo;
+
+    /**
+     * 车辆设备保费列表
+     */
+    @JsonProperty("carDevicePremiumDtoList")
+    private List<Object> carDevicePremiumDtoList;
+
+    /**
+     * 约定列表
+     */
+    @JsonProperty("engageList")
+    private List<Object> engageList;
+
+    /**
+     * 附件文件列表
+     */
+    @JsonProperty("itemFileDataList")
+    private List<ItemFileData> itemFileDataList;
+
+    /**
+     * 订单附加信息
+     */
+    @JsonProperty("orderAttachInfo")
+    private OrderAttachInfo orderAttachInfo;
+
+    /**
+     * 是否包含子机构
+     */
+    @JsonProperty("isIncludeSubCom")
+    private Integer isIncludeSubCom;
+
+    /**
+     * 基础信息内部类
+     */
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @Builder
+    @Data
+    public static class BaseInfo implements Serializable {
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JsonProperty("teamType")
+        private String teamType;
+
+        @JsonProperty("agentCode")
+        private String agentCode;
+
+        @JsonProperty("agreementNo")
+        private String agreementNo;
+
+        @JsonProperty("businessNature")
+        private String businessNature;
+
+        @JsonProperty("comCode")
+        private String comCode;
+
+        @JsonProperty("comName")
+        private String comName;
+
+        @JsonProperty("areaCode")
+        private String areaCode;
+
+        @JsonProperty("handler1Code")
+        private String handler1Code;
+
+        @JsonProperty("handler1Name")
+        private String handler1Name;
+
+        @JsonProperty("operatorCode")
+        private String operatorCode;
+
+        @JsonProperty("startDate")
+        private String startDate;
+
+        @JsonProperty("startDateCI")
+        private String startDateCI;
+
+        @JsonProperty("startHour")
+        private String startHour;
+
+        @JsonProperty("startHourCI")
+        private String startHourCI;
+
+        @JsonProperty("startMinute")
+        private String startMinute;
+
+        @JsonProperty("startMinuteCI")
+        private String startMinuteCI;
+
+        @JsonProperty("endDate")
+        private String endDate;
+
+        @JsonProperty("endDateCI")
+        private String endDateCI;
+
+        @JsonProperty("endHour")
+        private String endHour;
+
+        @JsonProperty("endHourCI")
+        private String endHourCI;
+
+        @JsonProperty("endMinute")
+        private String endMinute;
+
+        @JsonProperty("endMinuteCI")
+        private String endMinuteCI;
+
+        @JsonProperty("isCI")
+        private Boolean isCI;
+
+        @JsonProperty("isBI")
+        private Boolean isBI;
+
+        @JsonProperty("riskCodeEnum")
+        private RiskCodeEnum riskCodeEnum;
+
+        @JsonProperty("useRateFlag")
+        private Boolean useRateFlag;
+
+        @JsonProperty("argueSolution")
+        private String argueSolution;
+
+        @JsonProperty("autoTransRenewFlag")
+        private String autoTransRenewFlag;
+
+        @JsonProperty("proposalCheckNo")
+        private String proposalCheckNo;
+
+        @JsonProperty("xbFlag")
+        private String xbFlag;
+
+        @JsonProperty("xbFlagCI")
+        private String xbFlagCI;
+
+        @JsonProperty("goalInsuredFlag")
+        private String goalInsuredFlag;
+
+        @JsonProperty("configName")
+        private String configName;
+
+        @JsonProperty("id")
+        private String id;
+
+        @JsonProperty("businessName")
+        private String businessName;
+
+        @JsonProperty("_id")
+        private String underscoreId;
+
+        @JsonProperty("desc")
+        private String desc;
+
+        @JsonProperty("handerCode")
+        private String handerCode;
+
+        @JsonProperty("handerName")
+        private String handerName;
+
+        @JsonProperty("applicationType")
+        private String applicationType;
+
+        @JsonProperty("split")
+        private String split;
+
+        @JsonProperty("sumPremiumCI")
+        private Double sumPremiumCI;
+
+        @JsonProperty("sumPremium")
+        private Double sumPremium;
+
+        @JsonProperty("calculateFlag")
+        private String calculateFlag;
+
+        /**
+         * 险种枚举信息内部类
+         */
+        @NoArgsConstructor
+        @AllArgsConstructor
+        @Builder
+        @Data
+        public static class RiskCodeEnum implements Serializable {
+            @Serial
+            private static final long serialVersionUID = 1L;
+
+            @JsonProperty("CSTax")
+            private CSTaxInfo CSTax;
+
+            @JsonProperty("CI")
+            private CIInfo CI;
+
+            @JsonProperty("BI")
+            private BIInfo BI;
+
+            @JsonProperty("productCode")
+            private String productCode;
+
+            @JsonProperty("productName")
+            private String productName;
+
+            @JsonProperty("useNatureList")
+            private List<String> useNatureList;
+
+            @JsonProperty("vehicleKindAndUseNature")
+            private List<String> vehicleKindAndUseNature;
+
+            @JsonProperty("icon")
+            private String icon;
+
+            @JsonProperty("name")
+            private String name;
+
+            /**
+             * 车船税信息内部类
+             */
+            @NoArgsConstructor
+            @AllArgsConstructor
+            @Builder
+            @Data
+            public static class CSTaxInfo implements Serializable {
+                @Serial
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("riskCode")
+                private String riskCode;
+
+                @JsonProperty("riskName")
+                private String riskName;
+            }
+
+            /**
+             * 交强险信息内部类
+             */
+            @NoArgsConstructor
+            @AllArgsConstructor
+            @Builder
+            @Data
+            public static class CIInfo implements Serializable {
+                @Serial
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("riskCode")
+                private String riskCode;
+
+                @JsonProperty("riskName")
+                private String riskName;
+
+                @JsonProperty("amount")
+                private String amount;
+            }
+
+            /**
+             * 商业险信息内部类
+             */
+            @NoArgsConstructor
+            @AllArgsConstructor
+            @Builder
+            @Data
+            public static class BIInfo implements Serializable {
+                @Serial
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("riskCode")
+                private String riskCode;
+
+                @JsonProperty("oldRiskCode")
+                private String oldRiskCode;
+
+                @JsonProperty("riskName")
+                private String riskName;
+
+                @JsonProperty("oldRiskName")
+                private String oldRiskName;
+            }
+        }
+    }
+
+    /**
+     * 车主信息内部类
+     */
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @Builder
+    @Data
+    public static class CarOwnerInfo implements Serializable {
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JsonProperty("customerAmlPropReqDtoList")
+        private List<Object> customerAmlPropReqDtoList;
+
+        @JsonProperty("carOwner")
+        private String carOwner;
+
+        @JsonProperty("ownerIdentifyNumber")
+        private String ownerIdentifyNumber;
+
+        @JsonProperty("ownerIdentifyType")
+        private String ownerIdentifyType;
+
+        @JsonProperty("vehicleOwnerNature")
+        private String vehicleOwnerNature;
+
+        @JsonProperty("ownerAddress")
+        private String ownerAddress;
+    }
+
+    /**
+     * 车险附加险信息内部类
+     */
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @Builder
+    @Data
+    public static class CarPolicySubInfo implements Serializable {
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JsonProperty("planName")
+        private String planName;
+
+        @JsonProperty("insureGradeNo")
+        private String insureGradeNo;
+
+        @JsonProperty("isUseInsured")
+        private String isUseInsured;
+
+        @JsonProperty("quantity")
+        private String quantity;
+
+        @JsonProperty("riskCode")
+        private String riskCode;
+
+        @JsonProperty("riskName")
+        private String riskName;
+
+        @JsonProperty("sumAmount")
+        private Long sumAmount;
+
+        @JsonProperty("sumPremium")
+        private Integer sumPremium;
+
+        @JsonProperty("actualPremium")
+        private String actualPremium;
+
+        @JsonProperty("productCode")
+        private String productCode;
+    }
+
+    /**
+     * 被保人信息内部类
+     */
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @Builder
+    @Data
+    public static class InsuredInfo implements Serializable {
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JsonProperty("address")
+        private String address;
+
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+
+        @JsonProperty("identifyType")
+        private String identifyType;
+
+        @JsonProperty("insuredFlag")
+        private Integer insuredFlag;
+
+        @JsonProperty("insuredName")
+        private String insuredName;
+
+        @JsonProperty("insuredNature")
+        private String insuredNature;
+
+        @JsonProperty("insuredType")
+        private String insuredType;
+
+        @JsonProperty("longAddress")
+        private String longAddress;
+
+        @JsonProperty("mobile")
+        private String mobile;
+
+        @JsonProperty("sex")
+        private String sex;
+
+        @JsonProperty("nationality")
+        private String nationality;
+
+        @JsonProperty("occupation")
+        private String occupation;
+
+        @JsonProperty("addressProvince")
+        private String addressProvince;
+
+        @JsonProperty("addressPrefecture")
+        private String addressPrefecture;
+
+        @JsonProperty("addressCounty")
+        private String addressCounty;
+
+        @JsonProperty("postCode")
+        private String postCode;
+
+        @JsonProperty("insuredRelationship")
+        private String insuredRelationship;
+
+        @JsonProperty("validDate")
+        private String validDate;
+
+        @JsonProperty("countryRegions")
+        private String countryRegions;
+
+        @JsonProperty("vehicleRelationCode")
+        private String vehicleRelationCode;
+
+        @JsonProperty("certigier")
+        private Map<String, Object> certigier;
+
+        @JsonProperty("chief")
+        private Map<String, Object> chief;
+
+        @JsonProperty("riskLevelName")
+        private String riskLevelName;
+
+        @JsonProperty("riskLevel")
+        private String riskLevel;
+
+        @JsonProperty("reserved2")
+        private String reserved2;
+
+        @JsonProperty("reserved")
+        private List<Object> reserved;
+
+        @JsonProperty("businessManager")
+        private BusinessManager businessManager;
+
+        @JsonProperty("phoneHolder")
+        private PhoneHolder phoneHolder;
+
+        @JsonProperty("isPhoneOwner")
+        private String isPhoneOwner;
+
+        @JsonProperty("issuer")
+        private String issuer;
+
+        @JsonProperty("iDStartDate")
+        private String iDStartDate;
+
+        /**
+         * 业务经理信息内部类
+         */
+        @NoArgsConstructor
+        @AllArgsConstructor
+        @Builder
+        @Data
+        public static class BusinessManager implements Serializable {
+            @Serial
+            private static final long serialVersionUID = 1L;
+
+            @JsonProperty("insuredFlag")
+            private String insuredFlag;
+        }
+
+        /**
+         * 手机持有人信息内部类
+         */
+        @NoArgsConstructor
+        @AllArgsConstructor
+        @Builder
+        @Data
+        public static class PhoneHolder implements Serializable {
+            @Serial
+            private static final long serialVersionUID = 1L;
+
+            @JsonProperty("insuredFlag")
+            private String insuredFlag;
+        }
+    }
+
+    /**
+     * 险别明细信息内部类
+     */
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @Builder
+    @Data
+    public static class ItemKindInfo implements Serializable {
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JsonProperty("amount")
+        private Object amount;
+
+        @JsonProperty("kindCode")
+        private String kindCode;
+
+        @JsonProperty("kindName")
+        private String kindName;
+
+        @JsonProperty("riskCode")
+        private String riskCode;
+
+        @JsonProperty("premium")
+        private String premium;
+
+        @JsonProperty("benchMarkPremium")
+        private String benchMarkPremium;
+
+        @JsonProperty("basePremium")
+        private String basePremium;
+
+        @JsonProperty("serviceTimes")
+        private String serviceTimes;
+    }
+
+    /**
+     * 车船税减免信息内部类
+     */
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @Builder
+    @Data
+    public static class TaxRelifInfo implements Serializable {
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JsonProperty("taxRelifFlag")
+        private String taxRelifFlag;
+
+        @JsonProperty("sumPayTax")
+        private String sumPayTax;
+
+        @JsonProperty("taxpayerName")
+        private String taxpayerName;
+
+        @JsonProperty("taxpayerIdentifier")
+        private String taxpayerIdentifier;
+
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+
+        @JsonProperty("payLastYear")
+        private String payLastYear;
+
+        @JsonProperty("lastCIPaymentTime")
+        private String lastCIPaymentTime;
+
+        @JsonProperty("taxActual")
+        private String taxActual;
+
+        @JsonProperty("previousPay")
+        private String previousPay;
+
+        @JsonProperty("lateFee")
+        private String lateFee;
+
+        @JsonProperty("taxRegistryNumber")
+        private String taxRegistryNumber;
+
+        @JsonProperty("isPlatformTax")
+        private Boolean isPlatformTax;
+
+        @JsonProperty("extendChar1")
+        private String extendChar1;
+
+        @JsonProperty("taxUnit")
+        private String taxUnit;
+
+        @JsonProperty("completeKerbMass")
+        private String completeKerbMass;
+
+        @JsonProperty("payerCode")
+        private String payerCode;
+
+        @JsonProperty("payStartDate")
+        private String payStartDate;
+
+        @JsonProperty("payEndDate")
+        private String payEndDate;
+
+        @JsonProperty("taxRelifFlagCN")
+        private String taxRelifFlagCN;
+
+        @JsonProperty("exceedDaysCount")
+        private String exceedDaysCount;
+
+        @JsonProperty("currentTaxDue")
+        private CurrentTaxDue currentTaxDue;
+
+        /**
+         * 当期应缴税款信息内部类
+         */
+        @NoArgsConstructor
+        @AllArgsConstructor
+        @Builder
+        @Data
+        public static class CurrentTaxDue implements Serializable {
+            @Serial
+            private static final long serialVersionUID = 1L;
+
+            @JsonProperty("taxLocationCode")
+            private String taxLocationCode;
+
+            @JsonProperty("taxEndDate")
+            private String taxEndDate;
+
+            @JsonProperty("taxStartDate")
+            private String taxStartDate;
+
+            @JsonProperty("taxUnitTypeCode")
+            private String taxUnitTypeCode;
+
+            @JsonProperty("taxDue")
+            private Integer taxDue;
+
+            @JsonProperty("unitRate")
+            private Integer unitRate;
+
+            @JsonProperty("annualTaxAmount")
+            private Integer annualTaxAmount;
+
+            @JsonProperty("exceedDaysCount")
+            private Integer exceedDaysCount;
+
+            @JsonProperty("overDue")
+            private Integer overDue;
+
+            @JsonProperty("taxConditionCode")
+            private String taxConditionCode;
+
+            @JsonProperty("totalAmount")
+            private Integer totalAmount;
+        }
+    }
+
+    /**
+     * 车辆信息内部类
+     */
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @Builder
+    @Data
+    public static class VehicleInfo implements Serializable {
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JsonProperty("useYears")
+        private Integer useYears;
+
+        @JsonProperty("actualValue")
+        private Double actualValue;
+
+        @JsonProperty("agreeActualValue")
+        private Double agreeActualValue;
+
+        @JsonProperty("brandName")
+        private String brandName;
+
+        @JsonProperty("carKindCode")
+        private String carKindCode;
+
+        @JsonProperty("carKindDetailId")
+        private String carKindDetailId;
+
+        @JsonProperty("carLoanFlag")
+        private String carLoanFlag;
+
+        @JsonProperty("certificateDate")
+        private String certificateDate;
+
+        @JsonProperty("chgOwnerFlag")
+        private String chgOwnerFlag;
+
+        @JsonProperty("completekerbmass")
+        private Integer completekerbmass;
+
+        @JsonProperty("ecdemicVehicleFlag")
+        private String ecdemicVehicleFlag;
+
+        @JsonProperty("engineNo")
+        private String engineNo;
+
+        @JsonProperty("enrollDate")
+        private String enrollDate;
+
+        @JsonProperty("updateEnrollDate")
+        private String updateEnrollDate;
+
+        @JsonProperty("exhaustCapacity")
+        private Integer exhaustCapacity;
+
+        @JsonProperty("fuelType")
+        private String fuelType;
+
+        @JsonProperty("fuelTypeJY")
+        private String fuelTypeJY;
+
+        @JsonProperty("newEnergyFlag")
+        private String newEnergyFlag;
+
+        @JsonProperty("licenseColorCode")
+        private String licenseColorCode;
+
+        @JsonProperty("licenseKindCode")
+        private String licenseKindCode;
+
+        @JsonProperty("licenseNo")
+        private String licenseNo;
+
+        @JsonProperty("loanVehicleFlag")
+        private String loanVehicleFlag;
+
+        @JsonProperty("modelCode")
+        private String modelCode;
+
+        @JsonProperty("noLicenseFlag")
+        private String noLicenseFlag;
+
+        @JsonProperty("issueDate")
+        private String issueDate;
+
+        @JsonProperty("oriCarKindName")
+        private String oriCarKindName;
+
+        @JsonProperty("platVehicleCode")
+        private String platVehicleCode;
+
+        @JsonProperty("power")
+        private String power;
+
+        @JsonProperty("printUseNatureCode")
+        private String printUseNatureCode;
+
+        @JsonProperty("purchasePrice")
+        private String purchasePrice;
+
+        @JsonProperty("seatCount")
+        private Integer seatCount;
+
+        @JsonProperty("useNatureCode")
+        private String useNatureCode;
+
+        @JsonProperty("vehicleId")
+        private String vehicleId;
+
+        @JsonProperty("makeDate")
+        private String makeDate;
+
+        @JsonProperty("makeDateJQ")
+        private String makeDateJQ;
+
+        @JsonProperty("aliasName")
+        private String aliasName;
+
+        @JsonProperty("carCheckStatus")
+        private String carCheckStatus;
+
+        @JsonProperty("carCheckReason")
+        private String carCheckReason;
+
+        @JsonProperty("vehicleKindAndUseNature")
+        private List<String> vehicleKindAndUseNature;
+
+        @JsonProperty("oriBrandName")
+        private String oriBrandName;
+
+        @JsonProperty("oriPurchasePrice")
+        private String oriPurchasePrice;
+
+        @JsonProperty("isInvokeJingYou")
+        private String isInvokeJingYou;
+
+        @JsonProperty("vehicleStyleUniqueId")
+        private String vehicleStyleUniqueId;
+
+        @JsonProperty("printModelName")
+        private String printModelName;
+
+        @JsonProperty("oriModelName")
+        private String oriModelName;
+
+        @JsonProperty("vINNo")
+        private String vINNo;
+
+        @JsonProperty("modelEnergyType")
+        private String modelEnergyType;
+    }
+
+    /**
+     * 附件文件数据内部类
+     */
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @Builder
+    @Data
+    public static class ItemFileData implements Serializable {
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JsonProperty("fileList")
+        private List<FileInfo> fileList;
+
+        @JsonProperty("riskCode")
+        private String riskCode;
+
+        /**
+         * 文件信息内部类
+         */
+        @NoArgsConstructor
+        @AllArgsConstructor
+        @Builder
+        @Data
+        public static class FileInfo implements Serializable {
+            @Serial
+            private static final long serialVersionUID = 1L;
+
+            @JsonProperty("fileId")
+            private String fileId;
+
+            @JsonProperty("fileType")
+            private String fileType;
+        }
+    }
+
+    /**
+     * 订单附加信息内部类
+     */
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @Builder
+    @Data
+    public static class OrderAttachInfo implements Serializable {
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JsonProperty("carAppliRelation")
+        private String carAppliRelation;
+
+        @JsonProperty("carInsuredRelation")
+        private String carInsuredRelation;
+
+        @JsonProperty("carCheckStatus")
+        private String carCheckStatus;
+
+        @JsonProperty("carCheckReason")
+        private String carCheckReason;
+
+        @JsonProperty("vehicleId")
+        private String vehicleId;
+
+        @JsonProperty("printModelName")
+        private String printModelName;
+
+        @JsonProperty("printUseNatureCode")
+        private String printUseNatureCode;
+
+        @JsonProperty("vehicleOwnerNature")
+        private String vehicleOwnerNature;
+
+        @JsonProperty("ownerAddress")
+        private String ownerAddress;
+
+        @JsonProperty("sale4SFlag")
+        private String sale4SFlag;
+
+        @JsonProperty("policySupplementaryInfoList")
+        private List<Object> policySupplementaryInfoList;
+    }
+}

+ 359 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/response/ZiJinCrawlerSaveProposalResponse.java

@@ -0,0 +1,359 @@
+package com.jzg.quotation.zijin.crawler.entity.response;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 紫金财险保存投保单响应实体类
+ *
+ * <p>该类用于封装保存投保单请求的响应数据,包含投保单号、保单号、费用信息等。</p>
+ *
+ * @author claude
+ * @since 2025/11/13
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class ZiJinCrawlerSaveProposalResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 返回码
+     */
+    @JSONField(ordinal = 1)
+    @JsonProperty("rtnCode")
+    private String rtnCode;
+
+    /**
+     * 返回信息
+     */
+    @JSONField(ordinal = 2)
+    @JsonProperty("rtnMsg")
+    private String rtnMsg;
+
+    /**
+     * 数据对象
+     */
+    @JSONField(ordinal = 3)
+    @JsonProperty("data")
+    private Data data;
+
+    /**
+     * 数据对象内部类
+     */
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @lombok.Data
+    public static class Data implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        /**
+         * 商业险投保单号
+         */
+        @JSONField(ordinal = 1)
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+
+        /**
+         * 交强险保单号
+         */
+        @JSONField(ordinal = 2)
+        @JsonProperty("policyNoCI")
+        private String policyNoCI;
+
+        /**
+         * 强制下修标识
+         */
+        @JSONField(ordinal = 3)
+        @JsonProperty("forceDownModify")
+        private String forceDownModify;
+
+        /**
+         * 订单号
+         */
+        @JSONField(ordinal = 4)
+        @JsonProperty("orderNo")
+        private String orderNo;
+
+        /**
+         * 加密商业险投保单号
+         */
+        @JSONField(ordinal = 5)
+        @JsonProperty("encryptProposalNo")
+        private String encryptProposalNo;
+
+        /**
+         * 费用信息
+         */
+        @JSONField(ordinal = 6)
+        @JsonProperty("feeImformationDto")
+        private FeeInformationDto feeImformationDto;
+
+        /**
+         * 加密订单号
+         */
+        @JSONField(ordinal = 7)
+        @JsonProperty("encryptOrderNo")
+        private String encryptOrderNo;
+
+        /**
+         * 加密交强险投保单号
+         */
+        @JSONField(ordinal = 8)
+        @JsonProperty("encryptProposalNoCI")
+        private String encryptProposalNoCI;
+
+        /**
+         * 商业险保单号
+         */
+        @JSONField(ordinal = 9)
+        @JsonProperty("policyNo")
+        private String policyNo;
+
+        /**
+         * 关联信息
+         */
+        @JSONField(ordinal = 10)
+        @JsonProperty("replationInfo")
+        private String replationInfo;
+
+        /**
+         * 交强险投保单号
+         */
+        @JSONField(ordinal = 11)
+        @JsonProperty("proposalNoCI")
+        private String proposalNoCI;
+    }
+
+    /**
+     * 费用信息实体类
+     */
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @lombok.Data
+    public static class FeeInformationDto implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        /**
+         * 交强险业绩比例2
+         */
+        @JSONField(ordinal = 1)
+        @JsonProperty("jqPerformanceRatio2")
+        private String jqPerformanceRatio2;
+
+        /**
+         * 交强险销售费用2
+         */
+        @JSONField(ordinal = 2)
+        @JsonProperty("jqSalesExpense2")
+        private String jqSalesExpense2;
+
+        /**
+         * 商业险销售费用比例2
+         */
+        @JSONField(ordinal = 3)
+        @JsonProperty("sySalesExpenseRatio2")
+        private String sySalesExpenseRatio2;
+
+        /**
+         * 交强险业绩比例
+         */
+        @JSONField(ordinal = 4)
+        @JsonProperty("jqPerformanceRatio")
+        private String jqPerformanceRatio;
+
+        /**
+         * 交强险比例标识
+         */
+        @JSONField(ordinal = 5)
+        @JsonProperty("jqRatioFlag")
+        private String jqRatioFlag;
+
+        /**
+         * 商业险销售费用比例
+         */
+        @JSONField(ordinal = 6)
+        @JsonProperty("sySalesExpenseRatio")
+        private String sySalesExpenseRatio;
+
+        /**
+         * 商业险手续费
+         */
+        @JSONField(ordinal = 7)
+        @JsonProperty("syFee")
+        private String syFee;
+
+        /**
+         * 商业险业绩比例2
+         */
+        @JSONField(ordinal = 8)
+        @JsonProperty("syPerformanceRatio2")
+        private String syPerformanceRatio2;
+
+        /**
+         * 商业险销售费用
+         */
+        @JSONField(ordinal = 9)
+        @JsonProperty("sySalesExpense")
+        private String sySalesExpense;
+
+        /**
+         * 商业险业绩
+         */
+        @JSONField(ordinal = 10)
+        @JsonProperty("syPerformance")
+        private String syPerformance;
+
+        /**
+         * 商业险业绩比例
+         */
+        @JSONField(ordinal = 11)
+        @JsonProperty("syPerformanceRatio")
+        private String syPerformanceRatio;
+
+        /**
+         * 交强险手续费比例
+         */
+        @JSONField(ordinal = 12)
+        @JsonProperty("jqFeeRatio")
+        private String jqFeeRatio;
+
+        /**
+         * 交强险销售费用比例
+         */
+        @JSONField(ordinal = 13)
+        @JsonProperty("jqSalesExpenseRatio")
+        private String jqSalesExpenseRatio;
+
+        /**
+         * 返回码
+         */
+        @JSONField(ordinal = 14)
+        @JsonProperty("rtnCode")
+        private String rtnCode;
+
+        /**
+         * 交强险手续费比例2
+         */
+        @JSONField(ordinal = 15)
+        @JsonProperty("jqFeeRatio2")
+        private String jqFeeRatio2;
+
+        /**
+         * 交强险销售费用比例2
+         */
+        @JSONField(ordinal = 16)
+        @JsonProperty("jqSalesExpenseRatio2")
+        private String jqSalesExpenseRatio2;
+
+        /**
+         * 商业险销售费用2
+         */
+        @JSONField(ordinal = 17)
+        @JsonProperty("sySalesExpense2")
+        private String sySalesExpense2;
+
+        /**
+         * 商业险手续费比例
+         */
+        @JSONField(ordinal = 18)
+        @JsonProperty("syFeeRatio")
+        private String syFeeRatio;
+
+        /**
+         * 商业险令牌ID
+         */
+        @JSONField(ordinal = 19)
+        @JsonProperty("tokenId")
+        private String tokenId;
+
+        /**
+         * 交强险手续费2
+         */
+        @JSONField(ordinal = 20)
+        @JsonProperty("jqFee2")
+        private String jqFee2;
+
+        /**
+         * 交强险销售费用
+         */
+        @JSONField(ordinal = 21)
+        @JsonProperty("jqSalesExpense")
+        private String jqSalesExpense;
+
+        /**
+         * 商业险手续费比例2
+         */
+        @JSONField(ordinal = 22)
+        @JsonProperty("syFeeRatio2")
+        private String syFeeRatio2;
+
+        /**
+         * 返回信息
+         */
+        @JSONField(ordinal = 23)
+        @JsonProperty("rtnMsg")
+        private String rtnMsg;
+
+        /**
+         * 商业险业绩2
+         */
+        @JSONField(ordinal = 24)
+        @JsonProperty("syPerformance2")
+        private String syPerformance2;
+
+        /**
+         * 交强险令牌ID
+         */
+        @JSONField(ordinal = 25)
+        @JsonProperty("tokenIdCI")
+        private String tokenIdCI;
+
+        /**
+         * 交强险手续费
+         */
+        @JSONField(ordinal = 26)
+        @JsonProperty("jqFee")
+        private String jqFee;
+
+        /**
+         * 商业险手续费2
+         */
+        @JSONField(ordinal = 27)
+        @JsonProperty("syFee2")
+        private String syFee2;
+
+        /**
+         * 交强险业绩2
+         */
+        @JSONField(ordinal = 28)
+        @JsonProperty("jqPerformance2")
+        private String jqPerformance2;
+
+        /**
+         * 商业险比例标识
+         */
+        @JSONField(ordinal = 29)
+        @JsonProperty("syRatioFlag")
+        private String syRatioFlag;
+
+        /**
+         * 交强险业绩
+         */
+        @JSONField(ordinal = 30)
+        @JsonProperty("jqPerformance")
+        private String jqPerformance;
+    }
+}

+ 1910 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/response/ZiJinCrawlerSaveQuoteInfoResponse.java

@@ -0,0 +1,1910 @@
+package com.jzg.quotation.zijin.crawler.entity.response;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 紫金财险爬虫保存报价信息响应
+ * @author: claude
+ * @date: 2025/11/13
+ */
+@NoArgsConstructor
+@Data
+public class ZiJinCrawlerSaveQuoteInfoResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 返回码
+     */
+    @JSONField(ordinal = 1)
+    @JsonProperty("rtnCode")
+    private String rtnCode;
+
+    /**
+     * 返回消息
+     */
+    @JSONField(ordinal = 2)
+    @JsonProperty("rtnMsg")
+    private String rtnMsg;
+
+    /**
+     * 结果对象
+     */
+    @JSONField(ordinal = 3)
+    @JsonProperty("resultObj")
+    private ResultObj resultObj;
+
+    /**
+     * 订单ID
+     */
+    @JSONField(ordinal = 4)
+    @JsonProperty("orderId")
+    private String orderId;
+
+    /**
+     * 订单号
+     */
+    @JSONField(ordinal = 5)
+    @JsonProperty("orderNo")
+    private String orderNo;
+
+    /**
+     * 结果对象内部类
+     */
+    @NoArgsConstructor
+    @Data
+    public static class ResultObj implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JSONField(ordinal = 1)
+        @JsonProperty("orderId")
+        private String orderId;
+
+        @JSONField(ordinal = 2)
+        @JsonProperty("orderNo")
+        private String orderNo;
+
+        @JSONField(ordinal = 3)
+        @JsonProperty("orderOrigin")
+        private String orderOrigin;
+
+        @JSONField(ordinal = 4)
+        @JsonProperty("insuranceSign")
+        private String insuranceSign;
+
+        @JSONField(ordinal = 5)
+        @JsonProperty("productCode")
+        private String productCode;
+
+        @JSONField(ordinal = 6)
+        @JsonProperty("productName")
+        private String productName;
+
+        @JSONField(ordinal = 7)
+        @JsonProperty("planName")
+        private String planName;
+
+        @JSONField(ordinal = 8)
+        @JsonProperty("comCode")
+        private String comCode;
+
+        @JSONField(ordinal = 9)
+        @JsonProperty("baseInfo")
+        private BaseInfo baseInfo;
+
+        @JSONField(ordinal = 10)
+        @JsonProperty("carOwnerInfo")
+        private CarOwnerInfo carOwnerInfo;
+
+        @JSONField(ordinal = 11)
+        @JsonProperty("insuredList")
+        private List<InsuredInfo> insuredList;
+
+        @JSONField(ordinal = 12)
+        @JsonProperty("vehicleInfo")
+        private VehicleInfo vehicleInfo;
+
+        @JSONField(ordinal = 13)
+        @JsonProperty("taxRelifInfo")
+        private TaxRelifInfo taxRelifInfo;
+
+        @JSONField(ordinal = 14)
+        @JsonProperty("itemKindList")
+        private List<ItemKind> itemKindList;
+
+        @JSONField(ordinal = 15)
+        @JsonProperty("deliveryInfo")
+        private String deliveryInfo;
+
+        @JSONField(ordinal = 16)
+        @JsonProperty("engageList")
+        private List<Object> engageList;
+
+        @JSONField(ordinal = 17)
+        @JsonProperty("profitDataList")
+        private String profitDataList;
+
+        @JSONField(ordinal = 18)
+        @JsonProperty("carDevicePremiumDtoList")
+        private List<Object> carDevicePremiumDtoList;
+
+        @JSONField(ordinal = 19)
+        @JsonProperty("itemFileDataList")
+        private List<ItemFileData> itemFileDataList;
+
+        @JSONField(ordinal = 20)
+        @JsonProperty("carPolicySubInfoList")
+        private List<CarPolicySubInfo> carPolicySubInfoList;
+
+        @JSONField(ordinal = 21)
+        @JsonProperty("deletedFlag")
+        private String deletedFlag;
+
+        @JSONField(ordinal = 22)
+        @JsonProperty("handlingFeeFlag")
+        private String handlingFeeFlag;
+
+        @JSONField(ordinal = 23)
+        @JsonProperty("agentCode")
+        private String agentCode;
+
+        @JSONField(ordinal = 24)
+        @JsonProperty("proposalAreaCode")
+        private String proposalAreaCode;
+
+        @JSONField(ordinal = 25)
+        @JsonProperty("proposalCityCode")
+        private String proposalCityCode;
+
+        @JSONField(ordinal = 26)
+        @JsonProperty("terminalId")
+        private String terminalId;
+
+        @JSONField(ordinal = 27)
+        @JsonProperty("terminalIdType")
+        private String terminalIdType;
+
+        @JSONField(ordinal = 28)
+        @JsonProperty("submitInfo")
+        private SubmitInfo submitInfo;
+
+        @JSONField(ordinal = 29)
+        @JsonProperty("thirdOrderNo")
+        private String thirdOrderNo;
+
+        @JSONField(ordinal = 30)
+        @JsonProperty("thirdOrderType")
+        private String thirdOrderType;
+
+        @JSONField(ordinal = 31)
+        @JsonProperty("channelCode")
+        private String channelCode;
+
+        @JSONField(ordinal = 32)
+        @JsonProperty("orderAttachInfo")
+        private OrderAttachInfo orderAttachInfo;
+
+        @JSONField(ordinal = 33)
+        @JsonProperty("attachRiskList")
+        private List<Object> attachRiskList;
+
+        @JSONField(ordinal = 34)
+        @JsonProperty("chargingInfoList")
+        private List<Object> chargingInfoList;
+
+        @JSONField(ordinal = 35)
+        @JsonProperty("demandNoCheckFlag")
+        private String demandNoCheckFlag;
+
+        @JSONField(ordinal = 36)
+        @JsonProperty("offlineXCommiFlag")
+        private String offlineXCommiFlag;
+
+        @JSONField(ordinal = 37)
+        @JsonProperty("batchNo")
+        private String batchNo;
+
+        @JSONField(ordinal = 38)
+        @JsonProperty("isIncludeSubCom")
+        private String isIncludeSubCom;
+
+        @JSONField(ordinal = 39)
+        @JsonProperty("expandInfoList")
+        private String expandInfoList;
+    }
+
+    /**
+     * 基础信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class BaseInfo implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JSONField(ordinal = 1)
+        @JsonProperty("policyNo")
+        private String policyNo;
+
+        @JSONField(ordinal = 2)
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+
+        @JSONField(ordinal = 3)
+        @JsonProperty("policyNoCI")
+        private String policyNoCI;
+
+        @JSONField(ordinal = 4)
+        @JsonProperty("proposalNoCI")
+        private String proposalNoCI;
+
+        @JSONField(ordinal = 5)
+        @JsonProperty("underWriteFlag")
+        private String underWriteFlag;
+
+        @JSONField(ordinal = 6)
+        @JsonProperty("underWriteFlagCI")
+        private String underWriteFlagCI;
+
+        @JSONField(ordinal = 7)
+        @JsonProperty("underWriteMessageCI")
+        private String underWriteMessageCI;
+
+        @JSONField(ordinal = 8)
+        @JsonProperty("underWriteMessage")
+        private String underWriteMessage;
+
+        @JSONField(ordinal = 9)
+        @JsonProperty("ciApplicationStatus")
+        private String ciApplicationStatus;
+
+        @JSONField(ordinal = 10)
+        @JsonProperty("applicationStatus")
+        private String applicationStatus;
+
+        @JSONField(ordinal = 11)
+        @JsonProperty("startDate")
+        private String startDate;
+
+        @JSONField(ordinal = 12)
+        @JsonProperty("startHour")
+        private String startHour;
+
+        @JSONField(ordinal = 13)
+        @JsonProperty("startMinute")
+        private String startMinute;
+
+        @JSONField(ordinal = 14)
+        @JsonProperty("endDate")
+        private String endDate;
+
+        @JSONField(ordinal = 15)
+        @JsonProperty("endHour")
+        private String endHour;
+
+        @JSONField(ordinal = 16)
+        @JsonProperty("endMinute")
+        private String endMinute;
+
+        @JSONField(ordinal = 17)
+        @JsonProperty("startDateCI")
+        private String startDateCI;
+
+        @JSONField(ordinal = 18)
+        @JsonProperty("startHourCI")
+        private String startHourCI;
+
+        @JSONField(ordinal = 19)
+        @JsonProperty("startMinuteCI")
+        private String startMinuteCI;
+
+        @JSONField(ordinal = 20)
+        @JsonProperty("endDateCI")
+        private String endDateCI;
+
+        @JSONField(ordinal = 21)
+        @JsonProperty("endHourCI")
+        private String endHourCI;
+
+        @JSONField(ordinal = 22)
+        @JsonProperty("endMinuteCI")
+        private String endMinuteCI;
+
+        @JSONField(ordinal = 23)
+        @JsonProperty("inputDate")
+        private String inputDate;
+
+        @JSONField(ordinal = 24)
+        @JsonProperty("pnpDate")
+        private String pnpDate;
+
+        @JSONField(ordinal = 25)
+        @JsonProperty("relationPolicyFlag")
+        private String relationPolicyFlag;
+
+        @JSONField(ordinal = 26)
+        @JsonProperty("isInstantFlag")
+        private String isInstantFlag;
+
+        @JSONField(ordinal = 27)
+        @JsonProperty("autoTransRenewFlag")
+        private String autoTransRenewFlag;
+
+        @JSONField(ordinal = 28)
+        @JsonProperty("sumPremium")
+        private String sumPremium;
+
+        @JSONField(ordinal = 29)
+        @JsonProperty("sumPremiumCI")
+        private String sumPremiumCI;
+
+        @JSONField(ordinal = 30)
+        @JsonProperty("policyType")
+        private String policyType;
+
+        @JSONField(ordinal = 31)
+        @JsonProperty("invoiceType")
+        private String invoiceType;
+
+        @JSONField(ordinal = 32)
+        @JsonProperty("policyTypeCI")
+        private String policyTypeCI;
+
+        @JSONField(ordinal = 33)
+        @JsonProperty("invoiceTypeCI")
+        private String invoiceTypeCI;
+
+        @JSONField(ordinal = 34)
+        @JsonProperty("applicationType")
+        private String applicationType;
+
+        @JSONField(ordinal = 35)
+        @JsonProperty("calculateFlag")
+        private String calculateFlag;
+
+        @JSONField(ordinal = 36)
+        @JsonProperty("sumAmount")
+        private String sumAmount;
+
+        @JSONField(ordinal = 37)
+        @JsonProperty("argueSolution")
+        private String argueSolution;
+
+        @JSONField(ordinal = 38)
+        @JsonProperty("arbitBoardName")
+        private String arbitBoardName;
+
+        @JSONField(ordinal = 39)
+        @JsonProperty("needKindCodes")
+        private String needKindCodes;
+
+        @JSONField(ordinal = 40)
+        @JsonProperty("answer")
+        private String answer;
+
+        @JSONField(ordinal = 41)
+        @JsonProperty("demandNo")
+        private String demandNo;
+
+        @JSONField(ordinal = 42)
+        @JsonProperty("demandNoCI")
+        private String demandNoCI;
+
+        @JSONField(ordinal = 43)
+        @JsonProperty("answerCI")
+        private String answerCI;
+
+        @JSONField(ordinal = 44)
+        @JsonProperty("provinceCode")
+        private String provinceCode;
+
+        @JSONField(ordinal = 45)
+        @JsonProperty("provinceName")
+        private String provinceName;
+
+        @JSONField(ordinal = 46)
+        @JsonProperty("cityCode")
+        private String cityCode;
+
+        @JSONField(ordinal = 47)
+        @JsonProperty("cityName")
+        private String cityName;
+
+        @JSONField(ordinal = 48)
+        @JsonProperty("networkCode")
+        private String networkCode;
+
+        @JSONField(ordinal = 49)
+        @JsonProperty("networkName")
+        private String networkName;
+
+        @JSONField(ordinal = 50)
+        @JsonProperty("saveCustomerFlag")
+        private String saveCustomerFlag;
+
+        @JSONField(ordinal = 51)
+        @JsonProperty("introduceCode")
+        private String introduceCode;
+
+        @JSONField(ordinal = 52)
+        @JsonProperty("introduceName")
+        private String introduceName;
+
+        @JSONField(ordinal = 53)
+        @JsonProperty("introduceAgreementNo")
+        private String introduceAgreementNo;
+
+        @JSONField(ordinal = 54)
+        @JsonProperty("channelCode")
+        private String channelCode;
+
+        @JSONField(ordinal = 55)
+        @JsonProperty("channelName")
+        private String channelName;
+
+        @JSONField(ordinal = 56)
+        @JsonProperty("localCharge")
+        private String localCharge;
+
+        @JSONField(ordinal = 57)
+        @JsonProperty("floatCoefficient")
+        private String floatCoefficient;
+
+        @JSONField(ordinal = 58)
+        @JsonProperty("operationName")
+        private String operationName;
+
+        @JSONField(ordinal = 59)
+        @JsonProperty("operationGrade")
+        private String operationGrade;
+
+        @JSONField(ordinal = 60)
+        @JsonProperty("hospitalName")
+        private String hospitalName;
+
+        @JSONField(ordinal = 61)
+        @JsonProperty("outpatientNumber")
+        private String outpatientNumber;
+
+        @JSONField(ordinal = 62)
+        @JsonProperty("pbSourceType")
+        private String pbSourceType;
+
+        @JSONField(ordinal = 63)
+        @JsonProperty("anaesthesiaProject")
+        private String anaesthesiaProject;
+
+        @JSONField(ordinal = 64)
+        @JsonProperty("sumQuantity")
+        private String sumQuantity;
+
+        @JSONField(ordinal = 65)
+        @JsonProperty("isMajorOperation")
+        private String isMajorOperation;
+
+        @JSONField(ordinal = 66)
+        @JsonProperty("shareId")
+        private String shareId;
+
+        @JSONField(ordinal = 67)
+        @JsonProperty("insurancePeriod")
+        private String insurancePeriod;
+
+        @JSONField(ordinal = 68)
+        @JsonProperty("salesPerson")
+        private String salesPerson;
+
+        @JSONField(ordinal = 69)
+        @JsonProperty("professionalNum")
+        private String professionalNum;
+
+        @JSONField(ordinal = 70)
+        @JsonProperty("comCode")
+        private String comCode;
+
+        @JSONField(ordinal = 71)
+        @JsonProperty("handler1Code")
+        private String handler1Code;
+
+        @JSONField(ordinal = 72)
+        @JsonProperty("businessNature")
+        private String businessNature;
+
+        @JSONField(ordinal = 73)
+        @JsonProperty("businessNatureCN")
+        private String businessNatureCN;
+
+        @JSONField(ordinal = 74)
+        @JsonProperty("agentCode")
+        private String agentCode;
+
+        @JSONField(ordinal = 75)
+        @JsonProperty("agreementNo")
+        private String agreementNo;
+
+        @JSONField(ordinal = 76)
+        @JsonProperty("discount")
+        private String discount;
+
+        @JSONField(ordinal = 77)
+        @JsonProperty("operatorCode")
+        private String operatorCode;
+
+        @JSONField(ordinal = 78)
+        @JsonProperty("othFlag")
+        private String othFlag;
+
+        @JSONField(ordinal = 79)
+        @JsonProperty("replationInfo")
+        private String replationInfo;
+
+        @JSONField(ordinal = 80)
+        @JsonProperty("exhibitAgencyAgreementNo")
+        private String exhibitAgencyAgreementNo;
+
+        @JSONField(ordinal = 81)
+        @JsonProperty("isDjq")
+        private String isDjq;
+
+        @JSONField(ordinal = 82)
+        @JsonProperty("lcRate")
+        private String lcRate;
+
+        @JSONField(ordinal = 83)
+        @JsonProperty("forceDownModify")
+        private String forceDownModify;
+
+        @JSONField(ordinal = 84)
+        @JsonProperty("choosePremium")
+        private String choosePremium;
+
+        @JSONField(ordinal = 85)
+        @JsonProperty("split")
+        private String split;
+
+        @JSONField(ordinal = 86)
+        @JsonProperty("mixFlag")
+        private String mixFlag;
+
+        @JSONField(ordinal = 87)
+        @JsonProperty("xbFlag")
+        private String xbFlag;
+
+        @JSONField(ordinal = 88)
+        @JsonProperty("xbFlagCI")
+        private String xbFlagCI;
+
+        @JSONField(ordinal = 89)
+        @JsonProperty("machineCode")
+        private String machineCode;
+
+        @JSONField(ordinal = 90)
+        @JsonProperty("mergeFlag")
+        private String mergeFlag;
+
+        @JSONField(ordinal = 91)
+        @JsonProperty("goalInsuredFlag")
+        private String goalInsuredFlag;
+
+        @JSONField(ordinal = 92)
+        @JsonProperty("lender")
+        private String lender;
+
+        @JSONField(ordinal = 93)
+        @JsonProperty("renewalInfoDto")
+        private String renewalInfoDto;
+
+        @JSONField(ordinal = 94)
+        @JsonProperty("oldPolicyNo")
+        private String oldPolicyNo;
+
+        @JSONField(ordinal = 95)
+        @JsonProperty("uwRel")
+        private String uwRel;
+
+        @JSONField(ordinal = 96)
+        @JsonProperty("additionSumPremium")
+        private String additionSumPremium;
+
+        @JSONField(ordinal = 97)
+        @JsonProperty("visaCode")
+        private String visaCode;
+
+        @JSONField(ordinal = 98)
+        @JsonProperty("locTypeCode")
+        private String locTypeCode;
+
+        @JSONField(ordinal = 99)
+        @JsonProperty("projectId")
+        private String projectId;
+
+        @JSONField(ordinal = 100)
+        @JsonProperty("productGroupNo")
+        private String productGroupNo;
+
+        @JSONField(ordinal = 101)
+        @JsonProperty("quotationNo")
+        private String quotationNo;
+
+        @JSONField(ordinal = 102)
+        @JsonProperty("installPayFlag")
+        private String installPayFlag;
+
+        @JSONField(ordinal = 103)
+        @JsonProperty("installPayYears")
+        private String installPayYears;
+
+        @JSONField(ordinal = 104)
+        @JsonProperty("productFlag")
+        private String productFlag;
+
+        @JSONField(ordinal = 105)
+        @JsonProperty("productId")
+        private String productId;
+
+        @JSONField(ordinal = 106)
+        @JsonProperty("merchandiseId")
+        private String merchandiseId;
+
+        @JSONField(ordinal = 107)
+        @JsonProperty("merchandiseCode")
+        private String merchandiseCode;
+
+        @JSONField(ordinal = 108)
+        @JsonProperty("vehicleVerificationInfoDto")
+        private String vehicleVerificationInfoDto;
+
+        @JSONField(ordinal = 109)
+        @JsonProperty("noCarAttachmentFileDtoList")
+        private String noCarAttachmentFileDtoList;
+    }
+
+    /**
+     * 车主信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class CarOwnerInfo implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JSONField(ordinal = 1)
+        @JsonProperty("vehicleOwnerNature")
+        private String vehicleOwnerNature;
+
+        @JSONField(ordinal = 2)
+        @JsonProperty("carOwner")
+        private String carOwner;
+
+        @JSONField(ordinal = 3)
+        @JsonProperty("ownerIdentifyType")
+        private String ownerIdentifyType;
+
+        @JSONField(ordinal = 4)
+        @JsonProperty("ownerIdentifyNumber")
+        private String ownerIdentifyNumber;
+
+        @JSONField(ordinal = 5)
+        @JsonProperty("mobile")
+        private String mobile;
+
+        @JSONField(ordinal = 6)
+        @JsonProperty("ownerAddress")
+        private String ownerAddress;
+
+        @JSONField(ordinal = 7)
+        @JsonProperty("email")
+        private String email;
+
+        @JSONField(ordinal = 8)
+        @JsonProperty("ownerIdentifyTypeCN")
+        private String ownerIdentifyTypeCN;
+    }
+
+    /**
+     * 被保人信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class InsuredInfo implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JSONField(ordinal = 1)
+        @JsonProperty("insuredType")
+        private String insuredType;
+
+        @JSONField(ordinal = 2)
+        @JsonProperty("insuredNature")
+        private String insuredNature;
+
+        @JSONField(ordinal = 3)
+        @JsonProperty("insuredFlag")
+        private String insuredFlag;
+
+        @JSONField(ordinal = 4)
+        @JsonProperty("insuredIdentity")
+        private String insuredIdentity;
+
+        @JSONField(ordinal = 5)
+        @JsonProperty("isInsuredRelation")
+        private String isInsuredRelation;
+
+        @JSONField(ordinal = 6)
+        @JsonProperty("identifyType")
+        private String identifyType;
+
+        @JSONField(ordinal = 7)
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+
+        @JSONField(ordinal = 8)
+        @JsonProperty("insuredName")
+        private String insuredName;
+
+        @JSONField(ordinal = 9)
+        @JsonProperty("sex")
+        private String sex;
+
+        @JSONField(ordinal = 10)
+        @JsonProperty("sexName")
+        private String sexName;
+
+        @JSONField(ordinal = 11)
+        @JsonProperty("age")
+        private String age;
+
+        @JSONField(ordinal = 12)
+        @JsonProperty("validDate")
+        private String validDate;
+
+        @JSONField(ordinal = 13)
+        @JsonProperty("birthday")
+        private String birthday;
+
+        @JSONField(ordinal = 14)
+        @JsonProperty("mobile")
+        private String mobile;
+
+        @JSONField(ordinal = 15)
+        @JsonProperty("email")
+        private String email;
+
+        @JSONField(ordinal = 16)
+        @JsonProperty("address")
+        private String address;
+
+        @JSONField(ordinal = 17)
+        @JsonProperty("longAddress")
+        private String longAddress;
+
+        @JSONField(ordinal = 18)
+        @JsonProperty("occupation")
+        private String occupation;
+
+        @JSONField(ordinal = 19)
+        @JsonProperty("occupationCode")
+        private String occupationCode;
+
+        @JSONField(ordinal = 20)
+        @JsonProperty("occupationName")
+        private String occupationName;
+
+        @JSONField(ordinal = 21)
+        @JsonProperty("insuredRelationship")
+        private String insuredRelationship;
+
+        @JSONField(ordinal = 22)
+        @JsonProperty("businessSort")
+        private String businessSort;
+
+        @JSONField(ordinal = 23)
+        @JsonProperty("businessSortCN")
+        private String businessSortCN;
+
+        @JSONField(ordinal = 24)
+        @JsonProperty("postCode")
+        private String postCode;
+
+        @JSONField(ordinal = 25)
+        @JsonProperty("nation")
+        private String nation;
+
+        @JSONField(ordinal = 26)
+        @JsonProperty("issuer")
+        private String issuer;
+
+        @JSONField(ordinal = 27)
+        @JsonProperty("insuredIdentityCN")
+        private String insuredIdentityCN;
+
+        @JSONField(ordinal = 28)
+        @JsonProperty("isInsuredRelationCN")
+        private String isInsuredRelationCN;
+
+        @JSONField(ordinal = 29)
+        @JsonProperty("identifyTypeCN")
+        private String identifyTypeCN;
+
+        @JSONField(ordinal = 30)
+        @JsonProperty("linkerName")
+        private String linkerName;
+
+        @JSONField(ordinal = 31)
+        @JsonProperty("phoneNumber")
+        private String phoneNumber;
+
+        @JSONField(ordinal = 32)
+        @JsonProperty("postAddress")
+        private String postAddress;
+
+        @JSONField(ordinal = 33)
+        @JsonProperty("marriage")
+        private String marriage;
+
+        @JSONField(ordinal = 34)
+        @JsonProperty("marriageName")
+        private String marriageName;
+
+        @JSONField(ordinal = 35)
+        @JsonProperty("socialInsurance")
+        private String socialInsurance;
+
+        @JSONField(ordinal = 36)
+        @JsonProperty("socialInsuranceName")
+        private String socialInsuranceName;
+
+        @JSONField(ordinal = 37)
+        @JsonProperty("planCode")
+        private String planCode;
+
+        @JSONField(ordinal = 38)
+        @JsonProperty("itemKindJson")
+        private String itemKindJson;
+
+        @JSONField(ordinal = 39)
+        @JsonProperty("busiScope")
+        private String busiScope;
+
+        @JSONField(ordinal = 40)
+        @JsonProperty("certigierName")
+        private String certigierName;
+
+        @JSONField(ordinal = 41)
+        @JsonProperty("certigierType")
+        private String certigierType;
+
+        @JSONField(ordinal = 42)
+        @JsonProperty("certigierNumber")
+        private String certigierNumber;
+
+        @JSONField(ordinal = 43)
+        @JsonProperty("certigierNumValidDate")
+        private String certigierNumValidDate;
+
+        @JSONField(ordinal = 44)
+        @JsonProperty("chiefName")
+        private String chiefName;
+
+        @JSONField(ordinal = 45)
+        @JsonProperty("chiefType")
+        private String chiefType;
+
+        @JSONField(ordinal = 46)
+        @JsonProperty("chiefNumber")
+        private String chiefNumber;
+
+        @JSONField(ordinal = 47)
+        @JsonProperty("chiefNumValidDate")
+        private String chiefNumValidDate;
+
+        @JSONField(ordinal = 48)
+        @JsonProperty("riskLevel")
+        private String riskLevel;
+
+        @JSONField(ordinal = 49)
+        @JsonProperty("reserved2")
+        private String reserved2;
+
+        @JSONField(ordinal = 50)
+        @JsonProperty("nationality")
+        private String nationality;
+
+        @JSONField(ordinal = 51)
+        @JsonProperty("mainCarCustomInfoList")
+        private String mainCarCustomInfoList;
+
+        @JSONField(ordinal = 52)
+        @JsonProperty("idCardStartDate")
+        private String idCardStartDate;
+
+        @JSONField(ordinal = 53)
+        @JsonProperty("validPeriod3")
+        private String validPeriod3;
+
+        @JSONField(ordinal = 54)
+        @JsonProperty("insuredAddress")
+        private String insuredAddress;
+
+        @JSONField(ordinal = 55)
+        @JsonProperty("countryRegions")
+        private String countryRegions;
+
+        @JSONField(ordinal = 56)
+        @JsonProperty("addressProvince")
+        private String addressProvince;
+
+        @JSONField(ordinal = 57)
+        @JsonProperty("addressPrefecture")
+        private String addressPrefecture;
+
+        @JSONField(ordinal = 58)
+        @JsonProperty("addressCounty")
+        private String addressCounty;
+
+        @JSONField(ordinal = 59)
+        @JsonProperty("soaStartTime")
+        private String soaStartTime;
+
+        @JSONField(ordinal = 60)
+        @JsonProperty("soaEndTime")
+        private String soaEndTime;
+
+        @JSONField(ordinal = 61)
+        @JsonProperty("industryCode1")
+        private String industryCode1;
+
+        @JSONField(ordinal = 62)
+        @JsonProperty("industryCode2")
+        private String industryCode2;
+
+        @JSONField(ordinal = 63)
+        @JsonProperty("industryCode3")
+        private String industryCode3;
+
+        @JSONField(ordinal = 64)
+        @JsonProperty("linkEmail")
+        private String linkEmail;
+
+        @JSONField(ordinal = 65)
+        @JsonProperty("linkMobilePhone")
+        private String linkMobilePhone;
+
+        @JSONField(ordinal = 66)
+        @JsonProperty("linkPostalCode")
+        private String linkPostalCode;
+
+        @JSONField(ordinal = 67)
+        @JsonProperty("linkDetailAddress")
+        private String linkDetailAddress;
+
+        @JSONField(ordinal = 68)
+        @JsonProperty("insuredSchool")
+        private String insuredSchool;
+
+        @JSONField(ordinal = 69)
+        @JsonProperty("insuredClass")
+        private String insuredClass;
+
+        @JSONField(ordinal = 70)
+        @JsonProperty("artifCompanyNature")
+        private String artifCompanyNature;
+
+        @JSONField(ordinal = 71)
+        @JsonProperty("idstartDate")
+        private String idstartDate;
+
+        @JSONField(ordinal = 72)
+        @JsonProperty("iDStartDate")
+        private String iDStartDate;
+    }
+
+    /**
+     * 车辆信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class VehicleInfo implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JSONField(ordinal = 1)
+        @JsonProperty("vehicleId")
+        private String vehicleId;
+
+        @JSONField(ordinal = 2)
+        @JsonProperty("licenseNo")
+        private String licenseNo;
+
+        @JSONField(ordinal = 3)
+        @JsonProperty("carKindCode")
+        private String carKindCode;
+
+        @JSONField(ordinal = 4)
+        @JsonProperty("useNatureCode")
+        private String useNatureCode;
+
+        @JSONField(ordinal = 5)
+        @JsonProperty("seatCount")
+        private String seatCount;
+
+        @JSONField(ordinal = 6)
+        @JsonProperty("tonCount")
+        private String tonCount;
+
+        @JSONField(ordinal = 7)
+        @JsonProperty("tractionTone")
+        private String tractionTone;
+
+        @JSONField(ordinal = 8)
+        @JsonProperty("actualValue")
+        private String actualValue;
+
+        @JSONField(ordinal = 9)
+        @JsonProperty("agreeActualValue")
+        private String agreeActualValue;
+
+        @JSONField(ordinal = 10)
+        @JsonProperty("engineNo")
+        private String engineNo;
+
+        @JSONField(ordinal = 11)
+        @JsonProperty("vINNo")
+        private String vINNo;
+
+        @JSONField(ordinal = 12)
+        @JsonProperty("printModelName")
+        private String printModelName;
+
+        @JSONField(ordinal = 13)
+        @JsonProperty("enrollDate")
+        private String enrollDate;
+
+        @JSONField(ordinal = 14)
+        @JsonProperty("updateEnrollDate")
+        private String updateEnrollDate;
+
+        @JSONField(ordinal = 15)
+        @JsonProperty("certificateDate")
+        private String certificateDate;
+
+        @JSONField(ordinal = 16)
+        @JsonProperty("noDamageYears")
+        private String noDamageYears;
+
+        @JSONField(ordinal = 17)
+        @JsonProperty("licenseKindCode")
+        private String licenseKindCode;
+
+        @JSONField(ordinal = 18)
+        @JsonProperty("carLoanFlag")
+        private String carLoanFlag;
+
+        @JSONField(ordinal = 19)
+        @JsonProperty("brandName")
+        private String brandName;
+
+        @JSONField(ordinal = 20)
+        @JsonProperty("oriBrandName")
+        private String oriBrandName;
+
+        @JSONField(ordinal = 21)
+        @JsonProperty("oriModelName")
+        private String oriModelName;
+
+        @JSONField(ordinal = 22)
+        @JsonProperty("oriCarKindName")
+        private String oriCarKindName;
+
+        @JSONField(ordinal = 23)
+        @JsonProperty("oriCarKindNameCN")
+        private String oriCarKindNameCN;
+
+        @JSONField(ordinal = 24)
+        @JsonProperty("chgOwnerFlag")
+        private String chgOwnerFlag;
+
+        @JSONField(ordinal = 25)
+        @JsonProperty("chgOwnerFlagByPlatform")
+        private String chgOwnerFlagByPlatform;
+
+        @JSONField(ordinal = 26)
+        @JsonProperty("licenseColorCode")
+        private String licenseColorCode;
+
+        @JSONField(ordinal = 27)
+        @JsonProperty("purchasePrice")
+        private String purchasePrice;
+
+        @JSONField(ordinal = 28)
+        @JsonProperty("oriPurchasePrice")
+        private String oriPurchasePrice;
+
+        @JSONField(ordinal = 29)
+        @JsonProperty("importFlag")
+        private String importFlag;
+
+        @JSONField(ordinal = 30)
+        @JsonProperty("import_Flag")
+        private String import_Flag;
+
+        @JSONField(ordinal = 31)
+        @JsonProperty("familyCode")
+        private String familyCode;
+
+        @JSONField(ordinal = 32)
+        @JsonProperty("exhaustCapacity")
+        private String exhaustCapacity;
+
+        @JSONField(ordinal = 33)
+        @JsonProperty("remark")
+        private String remark;
+
+        @JSONField(ordinal = 34)
+        @JsonProperty("modelName")
+        private String modelName;
+
+        @JSONField(ordinal = 35)
+        @JsonProperty("carKindDetailId")
+        private String carKindDetailId;
+
+        @JSONField(ordinal = 36)
+        @JsonProperty("marketYear")
+        private String marketYear;
+
+        @JSONField(ordinal = 37)
+        @JsonProperty("noLicenseFlag")
+        private String noLicenseFlag;
+
+        @JSONField(ordinal = 38)
+        @JsonProperty("insuredArea")
+        private String insuredArea;
+
+        @JSONField(ordinal = 39)
+        @JsonProperty("platVehicleCode")
+        private String platVehicleCode;
+
+        @JSONField(ordinal = 40)
+        @JsonProperty("completekerbmass")
+        private String completekerbmass;
+
+        @JSONField(ordinal = 41)
+        @JsonProperty("carInsuredRelation")
+        private String carInsuredRelation;
+
+        @JSONField(ordinal = 42)
+        @JsonProperty("makeDate")
+        private String makeDate;
+
+        @JSONField(ordinal = 43)
+        @JsonProperty("insuredAreaCN")
+        private String insuredAreaCN;
+
+        @JSONField(ordinal = 44)
+        @JsonProperty("modelCode")
+        private String modelCode;
+
+        @JSONField(ordinal = 45)
+        @JsonProperty("contractNo")
+        private String contractNo;
+
+        @JSONField(ordinal = 46)
+        @JsonProperty("platFormContractNo")
+        private String platFormContractNo;
+
+        @JSONField(ordinal = 47)
+        @JsonProperty("contractSerialNo")
+        private String contractSerialNo;
+
+        @JSONField(ordinal = 48)
+        @JsonProperty("netWorkCode")
+        private String netWorkCode;
+
+        @JSONField(ordinal = 49)
+        @JsonProperty("netWorkName")
+        private String netWorkName;
+
+        @JSONField(ordinal = 50)
+        @JsonProperty("zlFlag")
+        private String zlFlag;
+
+        @JSONField(ordinal = 51)
+        @JsonProperty("printUseNatureCode")
+        private String printUseNatureCode;
+
+        @JSONField(ordinal = 52)
+        @JsonProperty("printUseNatureCodeCN")
+        private String printUseNatureCodeCN;
+
+        @JSONField(ordinal = 53)
+        @JsonProperty("power")
+        private String power;
+
+        @JSONField(ordinal = 54)
+        @JsonProperty("saleCompany")
+        private String saleCompany;
+
+        @JSONField(ordinal = 55)
+        @JsonProperty("saleProvinceCode")
+        private String saleProvinceCode;
+
+        @JSONField(ordinal = 56)
+        @JsonProperty("saleProvinceName")
+        private String saleProvinceName;
+
+        @JSONField(ordinal = 57)
+        @JsonProperty("saleAreaCode")
+        private String saleAreaCode;
+
+        @JSONField(ordinal = 58)
+        @JsonProperty("saleAreaName")
+        private String saleAreaName;
+
+        @JSONField(ordinal = 59)
+        @JsonProperty("sale4SFlag")
+        private String sale4SFlag;
+
+        @JSONField(ordinal = 60)
+        @JsonProperty("fuelType")
+        private String fuelType;
+
+        @JSONField(ordinal = 61)
+        @JsonProperty("loanVehicleFlag")
+        private String loanVehicleFlag;
+
+        @JSONField(ordinal = 62)
+        @JsonProperty("ecdemicVehicleFlag")
+        private String ecdemicVehicleFlag;
+
+        @JSONField(ordinal = 63)
+        @JsonProperty("certificateType")
+        private String certificateType;
+
+        @JSONField(ordinal = 64)
+        @JsonProperty("certificateNo")
+        private String certificateNo;
+
+        @JSONField(ordinal = 65)
+        @JsonProperty("certificateDateBei")
+        private String certificateDateBei;
+
+        @JSONField(ordinal = 66)
+        @JsonProperty("issueDate")
+        private String issueDate;
+
+        @JSONField(ordinal = 67)
+        @JsonProperty("newVehicleFlag")
+        private String newVehicleFlag;
+
+        @JSONField(ordinal = 68)
+        @JsonProperty("vehicleInfoSource")
+        private String vehicleInfoSource;
+
+        @JSONField(ordinal = 69)
+        @JsonProperty("jGTransferDate")
+        private String jGTransferDate;
+
+        @JSONField(ordinal = 70)
+        @JsonProperty("frontOrBack")
+        private String frontOrBack;
+
+        @JSONField(ordinal = 71)
+        @JsonProperty("insuredMileage")
+        private String insuredMileage;
+
+        @JSONField(ordinal = 72)
+        @JsonProperty("equipmentNumber")
+        private String equipmentNumber;
+
+        @JSONField(ordinal = 73)
+        @JsonProperty("activate")
+        private String activate;
+
+        @JSONField(ordinal = 74)
+        @JsonProperty("useYears")
+        private String useYears;
+
+        @JSONField(ordinal = 75)
+        @JsonProperty("mileageTraveled")
+        private String mileageTraveled;
+
+        @JSONField(ordinal = 76)
+        @JsonProperty("surplusMileage")
+        private String surplusMileage;
+
+        @JSONField(ordinal = 77)
+        @JsonProperty("remainingMileage")
+        private String remainingMileage;
+
+        @JSONField(ordinal = 78)
+        @JsonProperty("equipmentPartner")
+        private String equipmentPartner;
+
+        @JSONField(ordinal = 79)
+        @JsonProperty("equipmentCode")
+        private String equipmentCode;
+
+        @JSONField(ordinal = 80)
+        @JsonProperty("newEnergyFlag")
+        private String newEnergyFlag;
+
+        @JSONField(ordinal = 81)
+        @JsonProperty("pureRange")
+        private String pureRange;
+
+        @JSONField(ordinal = 82)
+        @JsonProperty("modelEnergyType")
+        private String modelEnergyType;
+
+        @JSONField(ordinal = 83)
+        @JsonProperty("cardealerName")
+        private String cardealerName;
+
+        @JSONField(ordinal = 84)
+        @JsonProperty("colorCode")
+        private String colorCode;
+
+        @JSONField(ordinal = 85)
+        @JsonProperty("cylinder")
+        private String cylinder;
+
+        @JSONField(ordinal = 86)
+        @JsonProperty("speed")
+        private String speed;
+
+        @JSONField(ordinal = 87)
+        @JsonProperty("vehicleStyleUniqueId")
+        private String vehicleStyleUniqueId;
+
+        @JSONField(ordinal = 88)
+        @JsonProperty("manuFacturerName")
+        private String manuFacturerName;
+
+        @JSONField(ordinal = 89)
+        @JsonProperty("runMiles")
+        private String runMiles;
+
+        @JSONField(ordinal = 90)
+        @JsonProperty("makeDateJQ")
+        private String makeDateJQ;
+
+        @JSONField(ordinal = 91)
+        @JsonProperty("isInvokeJingYou")
+        private String isInvokeJingYou;
+
+        @JSONField(ordinal = 92)
+        @JsonProperty("carLength")
+        private String carLength;
+
+        @JSONField(ordinal = 93)
+        @JsonProperty("carWidth")
+        private String carWidth;
+
+        @JSONField(ordinal = 94)
+        @JsonProperty("carHigh")
+        private String carHigh;
+
+        @JSONField(ordinal = 95)
+        @JsonProperty("totalMass")
+        private String totalMass;
+    }
+
+    /**
+     * 车船税减免信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class TaxRelifInfo implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JSONField(ordinal = 1)
+        @JsonProperty("taxActual")
+        private String taxActual;
+
+        @JSONField(ordinal = 2)
+        @JsonProperty("previousPay")
+        private String previousPay;
+
+        @JSONField(ordinal = 3)
+        @JsonProperty("lateFee")
+        private String lateFee;
+
+        @JSONField(ordinal = 4)
+        @JsonProperty("sumPayTax")
+        private String sumPayTax;
+
+        @JSONField(ordinal = 5)
+        @JsonProperty("taxComName")
+        private String taxComName;
+
+        @JSONField(ordinal = 6)
+        @JsonProperty("taxDue")
+        private String taxDue;
+
+        @JSONField(ordinal = 7)
+        @JsonProperty("extendChar2")
+        private String extendChar2;
+
+        @JSONField(ordinal = 8)
+        @JsonProperty("taxRelifFlag")
+        private String taxRelifFlag;
+
+        @JSONField(ordinal = 9)
+        @JsonProperty("relifReason")
+        private String relifReason;
+
+        @JSONField(ordinal = 10)
+        @JsonProperty("freeRateText")
+        private String freeRateText;
+
+        @JSONField(ordinal = 11)
+        @JsonProperty("taxRelief")
+        private String taxRelief;
+
+        @JSONField(ordinal = 12)
+        @JsonProperty("payTaxDate")
+        private String payTaxDate;
+
+        @JSONField(ordinal = 13)
+        @JsonProperty("unitCertiNo")
+        private String unitCertiNo;
+
+        @JSONField(ordinal = 14)
+        @JsonProperty("carAddressCode")
+        private String carAddressCode;
+
+        @JSONField(ordinal = 15)
+        @JsonProperty("identifyNumberTJ")
+        private String identifyNumberTJ;
+
+        @JSONField(ordinal = 16)
+        @JsonProperty("addressName")
+        private String addressName;
+
+        @JSONField(ordinal = 17)
+        @JsonProperty("cSTTaxCertificateType")
+        private String cSTTaxCertificateType;
+
+        @JSONField(ordinal = 18)
+        @JsonProperty("postCode")
+        private String postCode;
+
+        @JSONField(ordinal = 19)
+        @JsonProperty("phoneNumber")
+        private String phoneNumber;
+
+        @JSONField(ordinal = 20)
+        @JsonProperty("licenseType")
+        private String licenseType;
+
+        @JSONField(ordinal = 21)
+        @JsonProperty("completeKerbMass")
+        private String completeKerbMass;
+
+        @JSONField(ordinal = 22)
+        @JsonProperty("taxPaidAreaCode")
+        private String taxPaidAreaCode;
+
+        @JSONField(ordinal = 23)
+        @JsonProperty("taxDocumentDate")
+        private String taxDocumentDate;
+
+        @JSONField(ordinal = 24)
+        @JsonProperty("paidFreeCertificate")
+        private String paidFreeCertificate;
+
+        @JSONField(ordinal = 25)
+        @JsonProperty("taxComCode")
+        private String taxComCode;
+
+        @JSONField(ordinal = 26)
+        @JsonProperty("taxpayerName")
+        private String taxpayerName;
+
+        @JSONField(ordinal = 27)
+        @JsonProperty("taxpayerIdentifier")
+        private String taxpayerIdentifier;
+
+        @JSONField(ordinal = 28)
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+
+        @JSONField(ordinal = 29)
+        @JsonProperty("calculateMode")
+        private String calculateMode;
+
+        @JSONField(ordinal = 30)
+        @JsonProperty("payLastYear")
+        private String payLastYear;
+
+        @JSONField(ordinal = 31)
+        @JsonProperty("lastCIPaymentTime")
+        private String lastCIPaymentTime;
+
+        @JSONField(ordinal = 32)
+        @JsonProperty("taxRegistryNumber")
+        private String taxRegistryNumber;
+    }
+
+    /**
+     * 险别明细
+     */
+    @NoArgsConstructor
+    @Data
+    public static class ItemKind implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JSONField(ordinal = 1)
+        @JsonProperty("riskCode")
+        private String riskCode;
+
+        @JSONField(ordinal = 2)
+        @JsonProperty("kindCode")
+        private String kindCode;
+
+        @JSONField(ordinal = 3)
+        @JsonProperty("kindName")
+        private String kindName;
+
+        @JSONField(ordinal = 4)
+        @JsonProperty("amount")
+        private String amount;
+
+        @JSONField(ordinal = 5)
+        @JsonProperty("discount")
+        private String discount;
+
+        @JSONField(ordinal = 6)
+        @JsonProperty("premium")
+        private String premium;
+
+        @JSONField(ordinal = 7)
+        @JsonProperty("calculateFlag")
+        private String calculateFlag;
+
+        @JSONField(ordinal = 8)
+        @JsonProperty("flag")
+        private String flag;
+
+        @JSONField(ordinal = 9)
+        @JsonProperty("rate")
+        private String rate;
+
+        @JSONField(ordinal = 10)
+        @JsonProperty("basePremium")
+        private String basePremium;
+
+        @JSONField(ordinal = 11)
+        @JsonProperty("benchMarkPremium")
+        private String benchMarkPremium;
+
+        @JSONField(ordinal = 12)
+        @JsonProperty("unitAmount")
+        private String unitAmount;
+
+        @JSONField(ordinal = 13)
+        @JsonProperty("quantity")
+        private String quantity;
+
+        @JSONField(ordinal = 14)
+        @JsonProperty("value")
+        private String value;
+
+        @JSONField(ordinal = 15)
+        @JsonProperty("modeCode")
+        private String modeCode;
+
+        @JSONField(ordinal = 16)
+        @JsonProperty("modeName")
+        private String modeName;
+
+        @JSONField(ordinal = 17)
+        @JsonProperty("itemCode")
+        private String itemCode;
+
+        @JSONField(ordinal = 18)
+        @JsonProperty("itemDetailName")
+        private String itemDetailName;
+
+        @JSONField(ordinal = 19)
+        @JsonProperty("itemExplanation")
+        private String itemExplanation;
+
+        @JSONField(ordinal = 20)
+        @JsonProperty("premium2")
+        private String premium2;
+
+        @JSONField(ordinal = 21)
+        @JsonProperty("deductibleRate")
+        private String deductibleRate;
+
+        @JSONField(ordinal = 22)
+        @JsonProperty("model")
+        private String model;
+
+        @JSONField(ordinal = 23)
+        @JsonProperty("modeCodeCN")
+        private String modeCodeCN;
+
+        @JSONField(ordinal = 24)
+        @JsonProperty("serviceTimes")
+        private String serviceTimes;
+
+        @JSONField(ordinal = 25)
+        @JsonProperty("shortRate")
+        private String shortRate;
+    }
+
+    /**
+     * 附件文件数据
+     */
+    @NoArgsConstructor
+    @Data
+    public static class ItemFileData implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JSONField(ordinal = 1)
+        @JsonProperty("riskCode")
+        private String riskCode;
+
+        @JSONField(ordinal = 2)
+        @JsonProperty("businessNo")
+        private String businessNo;
+
+        @JSONField(ordinal = 3)
+        @JsonProperty("fileList")
+        private List<FileItem> fileList;
+    }
+
+    /**
+     * 文件项
+     */
+    @NoArgsConstructor
+    @Data
+    public static class FileItem implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JSONField(ordinal = 1)
+        @JsonProperty("fileType")
+        private String fileType;
+
+        @JSONField(ordinal = 2)
+        @JsonProperty("fileId")
+        private String fileId;
+
+        @JSONField(ordinal = 3)
+        @JsonProperty("fileBase64")
+        private String fileBase64;
+
+        @JSONField(ordinal = 4)
+        @JsonProperty("fileName")
+        private String fileName;
+
+        @JSONField(ordinal = 5)
+        @JsonProperty("fileUrl")
+        private String fileUrl;
+
+        @JSONField(ordinal = 6)
+        @JsonProperty("operateTime")
+        private String operateTime;
+    }
+
+    /**
+     * 车险附加险信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class CarPolicySubInfo implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JSONField(ordinal = 1)
+        @JsonProperty("productCode")
+        private String productCode;
+
+        @JSONField(ordinal = 2)
+        @JsonProperty("productName")
+        private String productName;
+
+        @JSONField(ordinal = 3)
+        @JsonProperty("planName")
+        private String planName;
+
+        @JSONField(ordinal = 4)
+        @JsonProperty("riskCode")
+        private String riskCode;
+
+        @JSONField(ordinal = 5)
+        @JsonProperty("riskName")
+        private String riskName;
+
+        @JSONField(ordinal = 6)
+        @JsonProperty("insureGradeNo")
+        private String insureGradeNo;
+
+        @JSONField(ordinal = 7)
+        @JsonProperty("quantity")
+        private String quantity;
+
+        @JSONField(ordinal = 8)
+        @JsonProperty("sumAmount")
+        private String sumAmount;
+
+        @JSONField(ordinal = 9)
+        @JsonProperty("sumPremium")
+        private String sumPremium;
+
+        @JSONField(ordinal = 10)
+        @JsonProperty("address")
+        private String address;
+
+        @JSONField(ordinal = 11)
+        @JsonProperty("isUseInsured")
+        private String isUseInsured;
+
+        @JSONField(ordinal = 12)
+        @JsonProperty("actualPremium")
+        private String actualPremium;
+
+        @JSONField(ordinal = 13)
+        @JsonProperty("commi")
+        private String commi;
+
+        @JSONField(ordinal = 14)
+        @JsonProperty("commi2")
+        private String commi2;
+
+        @JSONField(ordinal = 15)
+        @JsonProperty("salary")
+        private String salary;
+
+        @JSONField(ordinal = 16)
+        @JsonProperty("salary2")
+        private String salary2;
+
+        @JSONField(ordinal = 17)
+        @JsonProperty("sumNoTaxPremium")
+        private String sumNoTaxPremium;
+    }
+
+    /**
+     * 提交信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class SubmitInfo implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JSONField(ordinal = 1)
+        @JsonProperty("remark")
+        private String remark;
+    }
+
+    /**
+     * 订单附加信息
+     */
+    @NoArgsConstructor
+    @Data
+    public static class OrderAttachInfo implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 1L;
+
+        @JSONField(ordinal = 1)
+        @JsonProperty("carCheckStatus")
+        private String carCheckStatus;
+
+        @JSONField(ordinal = 2)
+        @JsonProperty("carChecker")
+        private String carChecker;
+
+        @JSONField(ordinal = 3)
+        @JsonProperty("carCheckerName")
+        private String carCheckerName;
+
+        @JSONField(ordinal = 4)
+        @JsonProperty("carCheckTime")
+        private String carCheckTime;
+
+        @JSONField(ordinal = 5)
+        @JsonProperty("carCheckDetail")
+        private String carCheckDetail;
+
+        @JSONField(ordinal = 6)
+        @JsonProperty("carCheckReason")
+        private String carCheckReason;
+
+        @JSONField(ordinal = 7)
+        @JsonProperty("vehicleOwnerNature")
+        private String vehicleOwnerNature;
+
+        @JSONField(ordinal = 8)
+        @JsonProperty("carInsuredRelation")
+        private String carInsuredRelation;
+
+        @JSONField(ordinal = 9)
+        @JsonProperty("carAppliRelation")
+        private String carAppliRelation;
+
+        @JSONField(ordinal = 10)
+        @JsonProperty("printModelName")
+        private String printModelName;
+
+        @JSONField(ordinal = 11)
+        @JsonProperty("ownerAddress")
+        private String ownerAddress;
+
+        @JSONField(ordinal = 12)
+        @JsonProperty("printUseNatureCode")
+        private String printUseNatureCode;
+
+        @JSONField(ordinal = 13)
+        @JsonProperty("vehicleId")
+        private String vehicleId;
+
+        @JSONField(ordinal = 14)
+        @JsonProperty("saleCompany")
+        private String saleCompany;
+
+        @JSONField(ordinal = 15)
+        @JsonProperty("saleAreaCode")
+        private String saleAreaCode;
+
+        @JSONField(ordinal = 16)
+        @JsonProperty("sale4SFlag")
+        private String sale4SFlag;
+
+        @JSONField(ordinal = 17)
+        @JsonProperty("flowIdJg")
+        private String flowIdJg;
+
+        @JSONField(ordinal = 18)
+        @JsonProperty("transferDateJg")
+        private String transferDateJg;
+
+        @JSONField(ordinal = 19)
+        @JsonProperty("infoResource")
+        private String infoResource;
+
+        @JSONField(ordinal = 20)
+        @JsonProperty("introduceInfoDto")
+        private String introduceInfoDto;
+
+        @JSONField(ordinal = 21)
+        @JsonProperty("beneficialOwnerList")
+        private String beneficialOwnerList;
+
+        @JSONField(ordinal = 22)
+        @JsonProperty("policySupplementaryInfoList")
+        private List<Object> policySupplementaryInfoList;
+
+        @JSONField(ordinal = 23)
+        @JsonProperty("issueDate")
+        private String issueDate;
+    }
+}

+ 2 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/enums/RequestUrl.java

@@ -22,6 +22,8 @@ public enum RequestUrl implements CrawlerRequestUrlStandard {
     GET_ORDER_NUMBER("/dpgateway/insurance-order/carInsurance/orderQueryVehicleAndTraffic","获取订单号"),
     GET_ACTUAL_VALUE("/api/v1/insurance/public/vehicle-proposal/vehicleModel/getActualValue", "获取车辆实际价值"),
     PRICE("/api/v1/vehicle/proposal-process/premium-calculation", "计算保费"),
+    SAVE_QUOTE_INFORMATION("/dpgateway/insurance-order/order/save", "保存报价信息"),
+    SAVE_PROPOSAL_ORDER("/kscd-frontend/order/saveProposal", "保存投保单"),
     // 核保
     UNDERWRITING("/kscd-frontend/carAutoUnderwriting", "核保"),
     //上传影像

+ 7 - 1
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/ZiJinCrawlerOrderService.java

@@ -11,7 +11,13 @@ import com.jzg.quotation.zijin.crawler.entity.response.ZiJinCrawlerQuotationResp
  **/
 public interface ZiJinCrawlerOrderService {
 
-    void save(QuoteVo quoteVo, ZiJinCrawlerQuotationResponse boHaiCrawlerQuotationResponse, boolean success);
+    /**
+     * 保存紫金财险爬虫订单
+     * @param quoteVo
+     * @param ziJinCrawlerQuotationResponse
+     * @param success
+     */
+    void save(QuoteVo quoteVo, ZiJinCrawlerQuotationResponse ziJinCrawlerQuotationResponse, boolean success);
 
     ZiJinCrawlerOrder getById(String ordersNo);
 

+ 9 - 1
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/impl/ZiJinCrawlerOrderServiceImpl.java

@@ -21,6 +21,12 @@ public class ZiJinCrawlerOrderServiceImpl implements ZiJinCrawlerOrderService {
 
     private final ZiJinCrawlerOrderRepository boHaiCrawlerOrderRepository;
 
+    /**
+     * 保存紫金财险爬虫订单
+     * @param quoteVo
+     * @param ziJinCrawlerQuotationResponse
+     * @param success
+     */
     @Override
     public void save(QuoteVo quoteVo, ZiJinCrawlerQuotationResponse ziJinCrawlerQuotationResponse, boolean success) {
         ZiJinCrawlerOrder order = new ZiJinCrawlerOrder();
@@ -38,10 +44,12 @@ public class ZiJinCrawlerOrderServiceImpl implements ZiJinCrawlerOrderService {
             order.setSyApplyNo(ziJinCrawlerQuotationResponse.getData().getBusinessPolicy().getApplicationNo());
             order.setBiPremium(ziJinCrawlerQuotationResponse.getData().getBusinessPolicy().getPremium());
         }*/
-        order.setTotalPremium(ziJinCrawlerQuotationResponse.getBasePart().getSumPremium().toString());
+
         order.setCreateTime(LocalDateTime.now());
         order.setUpdateTime(LocalDateTime.now());
         if (!success) {
+            // 报价失败,总保费设为0
+            order.setTotalPremium("0");
             order.setErrorMsg(ziJinCrawlerQuotationResponse.getRtnMsg());
         }
         boHaiCrawlerOrderRepository.save(order);

+ 797 - 219
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/impl/ZiJinCrawlerRequestImpl.java

@@ -3,7 +3,9 @@ package com.jzg.quotation.zijin.crawler.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.google.zxing.NotFoundException;
+
 import java.util.Arrays;
+
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
@@ -26,6 +28,7 @@ import com.jzg.quotation.zijin.crawler.entity.response.*;
 import com.jzg.quotation.zijin.crawler.service.ZiJinCrawlerRequest;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.http.HttpHeaders;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
@@ -104,119 +107,29 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
             log.info("ziJinCrawlerCarResponse参数的值:{}", JSON.toJSONString(ziJinCrawlerCarResponse));
 
             // 车辆和交通查询(获取订单号)
-            ZiJinCrawlerGetOrderNoRequest ziJinCrawlerGetOrderNoRequest = new ZiJinCrawlerGetOrderNoRequest();
-            ziJinCrawlerGetOrderNoRequest.setBrandName("荣威CSA6452NEAQ多用途乘用车");
-            ziJinCrawlerGetOrderNoRequest.setLicenseNo("晋HJW581");
-            ziJinCrawlerGetOrderNoRequest.setOperatorCode("214000151");
-            ziJinCrawlerGetOrderNoRequest.setOrderOrigin("KSCD_PROD");
-            ziJinCrawlerGetOrderNoRequest.setProposalAreaCode("140000");
-            ziJinCrawlerGetOrderNoRequest.setProposalCityCode("140000");
-            ziJinCrawlerGetOrderNoRequest.setUserComCode("2140000601");
-            ziJinCrawlerGetOrderNoRequest.setVinNo("LSJA24U69MS091895");
-            ziJinCrawlerGetOrderNoRequest.setModelCode("RWD1598SQQ");
-            ziJinCrawlerGetOrderNoRequest.setProductCode("CAR20190517");
-            ziJinCrawlerGetOrderNoRequest.setProductName("机动车保险");
-            ziJinCrawlerGetOrderNoRequest.setTerminalId("KSCD");
-            ziJinCrawlerGetOrderNoRequest.setTerminalIdType("Vue-PC");
-
+            ZiJinCrawlerGetOrderNoRequest ziJinCrawlerGetOrderNoRequest = buildGetOrderNoRequest();
             ZiJinCrawlerGetOrderNoResponse ziJinCrawlerGetOrderNoResponse = ziJinCrawlerRequestComponent.getOrderNo(ziJinCrawlerGetOrderNoRequest, headers);
             log.info("ziJinCrawlerGetOrderNoResponse参数的值:{}", JSON.toJSONString(ziJinCrawlerGetOrderNoResponse));
 
             //获取车辆实际价值
-            ZiJinCrawlerGetCarActualValueRequest ziJinCrawlerGetCarActualValueRequest = new ZiJinCrawlerGetCarActualValueRequest();
-
-            ziJinCrawlerGetCarActualValueRequest.setCarKindCode("A0");
-            ziJinCrawlerGetCarActualValueRequest.setEnrollDate("2021-11-01");
-            ziJinCrawlerGetCarActualValueRequest.setUpdateEnrollDate("2021-11-01");
-            ziJinCrawlerGetCarActualValueRequest.setPurchasePrice("103800");
-            ziJinCrawlerGetCarActualValueRequest.setSeatCount(5);
-            ziJinCrawlerGetCarActualValueRequest.setUseNatureCode("85");
-            ziJinCrawlerGetCarActualValueRequest.setStartDate("2025-11-05");
-            ziJinCrawlerGetCarActualValueRequest.setNewEnergyFlag("0");
-            ziJinCrawlerGetCarActualValueRequest.setModelEnergyType("D1");
-
+            ZiJinCrawlerGetCarActualValueRequest ziJinCrawlerGetCarActualValueRequest = buildGetCarActualValueRequest(quoteVo);
             ZiJinCrawlerGetCarActualValueResponse ziJinCrawlerGetCarActualValueResponse = ziJinCrawlerRequestComponent.getCarActualValue(ziJinCrawlerGetCarActualValueRequest, headers);
             log.info("ziJinCrawlerGetCarActualValueResponse参数的值:{}", JSON.toJSONString(ziJinCrawlerGetCarActualValueResponse));
 
-
             //  报价接口
             ZiJinCrawlerQuotationRequest ziJinCrawlerQuotationRequest = new ZiJinCrawlerQuotationRequest();
-
             // 设置基础信息
-            ZiJinCrawlerQuotationRequest.BaseInfo baseInfo = new ZiJinCrawlerQuotationRequest.BaseInfo();
-            baseInfo.setAgentCode("U200002008048");
-            baseInfo.setAgreementNo("U200002008048-01");
-            baseInfo.setBusinessNature("2");
-            baseInfo.setComCode("2140000601");
-            baseInfo.setComName("山西分公司直销业务一部");
-            baseInfo.setHandler1Code("214003397");
-            baseInfo.setHandler1Name("李玉婷1");
-            baseInfo.setOperatorCode("214000151");
-            baseInfo.setStartDate("2025-11-04");
-            baseInfo.setStartDateCI("2025-11-04");
-            baseInfo.setStartHour("00");
-            baseInfo.setStartHourCI("00");
-            baseInfo.setStartMinute("00");
-            baseInfo.setStartMinuteCI("00");
-            baseInfo.setEndDate("2026-11-03");
-            baseInfo.setEndDateCI("2026-11-03");
-            baseInfo.setEndHour("24");
-            baseInfo.setEndHourCI("24");
-            baseInfo.setEndMinute("00");
-            baseInfo.setEndMinuteCI("00");
-            baseInfo.setXbFlag("0");
-            baseInfo.setXbFlagCI("0");
-            baseInfo.setGoalInsuredFlag("0");
-            baseInfo.setConfigName("李");
-            baseInfo.setId("c0417848dcce40ec8a8c40492f6ef2d3");
-            baseInfo.setBusinessName("个人代理");
-            baseInfo.setIdMongo("c0417848dcce40ec8a8c40492f6ef2d3");
-            baseInfo.setDesc("李");
-            baseInfo.setHanderCode("214003397");
-            baseInfo.setHanderName("李玉婷1");
-            baseInfo.setDemandNo("V0101ZKIC140025112202163902568");
-            baseInfo.setDemandNoCI("01ZKIC140025111912163901668390");
-            baseInfo.setCalculateFlag("0");
+            ZiJinCrawlerQuotationRequest.BaseInfo baseInfo = buildBaseInfo(quoteVo);
             ziJinCrawlerQuotationRequest.setBaseInfo(baseInfo);
 
             // 设置车主信息
-            ZiJinCrawlerQuotationRequest.CarOwnerInfo carOwnerInfo = new ZiJinCrawlerQuotationRequest.CarOwnerInfo();
-            carOwnerInfo.setCarOwner("王婧");
-            carOwnerInfo.setOwnerIdentifyNumber("14092519990322002X");
-            carOwnerInfo.setOwnerIdentifyType("01");
-            carOwnerInfo.setVehicleOwnerNature("1");
-            ziJinCrawlerQuotationRequest.setCarOwnerInfo(carOwnerInfo);
+            ziJinCrawlerQuotationRequest.setCarOwnerInfo(buildCarOwnerInfo());
 
             // 设置保险标志
             ziJinCrawlerQuotationRequest.setInsuranceSign("0");
 
             // 设置被保险人列表
-            List<ZiJinCrawlerQuotationRequest.InsuredList> insuredList = new ArrayList<>();
-            ZiJinCrawlerQuotationRequest.InsuredList insured1 = new ZiJinCrawlerQuotationRequest.InsuredList();
-            insured1.setInsuredName("王婧");
-            insured1.setInsuredNature("3");
-            insured1.setIdentifyType("01");
-            insured1.setIdentifyNumber("14092519990322002X");
-            insured1.setSex("2");
-            insured1.setInsuredType("1");
-            insured1.setMobile("18840186946");
-            insured1.setPostCode("030053");
-            insured1.setInsuredFlag(2);
-            insuredList.add(insured1);
-
-            ZiJinCrawlerQuotationRequest.InsuredList insured2 = new ZiJinCrawlerQuotationRequest.InsuredList();
-            insured2.setInsuredName("王婧");
-            insured2.setInsuredNature("3");
-            insured2.setIdentifyType("01");
-            insured2.setIdentifyNumber("14092519990322002X");
-            insured2.setSex("2");
-            insured2.setInsuredType("1");
-            insured2.setMobile("18840186946");
-            insured2.setPostCode("030053");
-            insured2.setInsuredFlag(1);
-            insuredList.add(insured2);
-
-            ziJinCrawlerQuotationRequest.setInsuredList(insuredList);
+            ziJinCrawlerQuotationRequest.setInsuredList(buildInsuredList());
 
             // 设置订单ID
             ziJinCrawlerQuotationRequest.setOrderId("8aaa2c189a3d3d79019a48d1745253d1");
@@ -230,131 +143,19 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
             ziJinCrawlerQuotationRequest.setProductName("机动车保险");
 
             // 设置减税信息
-            ZiJinCrawlerQuotationRequest.TaxRelifInfo taxRelifInfo = new ZiJinCrawlerQuotationRequest.TaxRelifInfo();
-            taxRelifInfo.setTaxRelifFlag("1");
-            taxRelifInfo.setTaxpayerName("王婧");
-            taxRelifInfo.setTaxpayerIdentifier("01");
-            taxRelifInfo.setIdentifyNumber("14092519990322002X");
-            taxRelifInfo.setTaxRegistryNumber("911401005929792152");
-            taxRelifInfo.setCompleteKerbMass("1.539");
-            ziJinCrawlerQuotationRequest.setTaxRelifInfo(taxRelifInfo);
+            ziJinCrawlerQuotationRequest.setTaxRelifInfo(buildTaxRelifInfo());
 
             // 设置险种列表
-            List<ZiJinCrawlerQuotationRequest.ItemKindList> itemKindList = new ArrayList<>();
-            ZiJinCrawlerQuotationRequest.ItemKindList itemKind1 = new ZiJinCrawlerQuotationRequest.ItemKindList();
-            itemKind1.setAmount("200000");
-            itemKind1.setKindCode("BZ");
-            itemKind1.setKindName("交通事故强制责任险");
-            itemKind1.setRiskCode("0590");
-            itemKind1.setBenchMarkPremium("950.0000");
-            itemKind1.setBasePremium("950.0000");
-            itemKindList.add(itemKind1);
-
-            ZiJinCrawlerQuotationRequest.ItemKindList itemKind2 = new ZiJinCrawlerQuotationRequest.ItemKindList();
-            itemKind2.setAmount(2000000);
-            itemKind2.setKindCode("B");
-            itemKind2.setKindName("机动车第三者责任保险");
-            itemKind2.setRiskCode("050A");
-            itemKind2.setBenchMarkPremium("687.7600");
-            itemKind2.setBasePremium("515.8200");
-            itemKindList.add(itemKind2);
-
-            ZiJinCrawlerQuotationRequest.ItemKindList itemKind3 = new ZiJinCrawlerQuotationRequest.ItemKindList();
-            itemKind3.setAmount("20000");
-            itemKind3.setKindCode("S1");
-            itemKind3.setKindName("附加医保外用药责任险(机动车第三者责任保险)");
-            itemKind3.setRiskCode("050A");
-            itemKind3.setBenchMarkPremium("28.3100");
-            itemKind3.setBasePremium("21.2300");
-            itemKindList.add(itemKind3);
-
-            ZiJinCrawlerQuotationRequest.ItemKindList itemKind4 = new ZiJinCrawlerQuotationRequest.ItemKindList();
-            itemKind4.setKindCode("T1");
-            itemKind4.setKindName("道路救援服务特约条款");
-            itemKind4.setRiskCode("050A");
-            itemKind4.setServiceTimes("2");
-            itemKind4.setBenchMarkPremium("0.0000");
-            itemKind4.setBasePremium("0.0000");
-            itemKindList.add(itemKind4);
-
-            ziJinCrawlerQuotationRequest.setItemKindList(itemKindList);
+            ziJinCrawlerQuotationRequest.setItemKindList(buildItemKindList());
 
             // 设置附加保单信息列表
-            List<ZiJinCrawlerQuotationRequest.CarPolicySubInfoList> carPolicySubInfoList = new ArrayList<>();
-            ZiJinCrawlerQuotationRequest.CarPolicySubInfoList carPolicySubInfo1 = new ZiJinCrawlerQuotationRequest.CarPolicySubInfoList();
-            carPolicySubInfo1.setPlanName("山西9座以内非营业客车驾乘险10万档:36元/座-10万+1万+30元/天");
-            carPolicySubInfo1.setInsureGradeNo("214000737028");
-            carPolicySubInfo1.setIsUseInsured("1");
-            carPolicySubInfo1.setQuantity("1");
-            carPolicySubInfo1.setRiskCode("0737");
-            carPolicySubInfo1.setRiskName("驾乘人员人身意外伤害保险");
-            carPolicySubInfo1.setSumAmount(577000);
-            carPolicySubInfo1.setSumPremium(180);
-            carPolicySubInfo1.setActualPremium("180.00");
-            carPolicySubInfo1.setProductCode("ZKICATM_GRDL_Plan");
-            carPolicySubInfoList.add(carPolicySubInfo1);
-            ziJinCrawlerQuotationRequest.setCarPolicySubInfoList(carPolicySubInfoList);
+            ziJinCrawlerQuotationRequest.setCarPolicySubInfoList(buildCarPolicySubInfoList());
 
             // 设置车辆信息
-            ZiJinCrawlerQuotationRequest.VehicleInfo vehicleInfo = new ZiJinCrawlerQuotationRequest.VehicleInfo();
-            vehicleInfo.setActualValue(73905.6);
-            vehicleInfo.setAgreeActualValue(73905.6);
-            vehicleInfo.setBrandName("荣威CSA6452NEAQ多用途乘用车");
-            vehicleInfo.setCarKindCode("A0");
-            vehicleInfo.setCarKindDetailId("KA");
-            vehicleInfo.setCarLoanFlag("1");
-            vehicleInfo.setCertificateDate("2021-11-01");
-            vehicleInfo.setChgOwnerFlag("1");
-            vehicleInfo.setCompletekerbmass(1539);
-            vehicleInfo.setEcdemicVehicleFlag("0");
-            vehicleInfo.setEngineNo("DNSM9070392");
-            vehicleInfo.setEnrollDate("2021-11-01");
-            vehicleInfo.setUpdateEnrollDate("2021-11-01");
-            vehicleInfo.setExhaustCapacity(1490);
-            vehicleInfo.setFuelType("0");
-            vehicleInfo.setFuelTypeJY("D1");
-            vehicleInfo.setNewEnergyFlag("0");
-            vehicleInfo.setLicenseColorCode("01");
-            vehicleInfo.setLicenseKindCode("02");
-            vehicleInfo.setLicenseNo("晋HJW581");
-            vehicleInfo.setLoanVehicleFlag("0");
-            vehicleInfo.setModelCode("RWD1598SQQ");
-            vehicleInfo.setNoLicenseFlag("1");
-            vehicleInfo.setIssueDate("2025-10-16");
-            vehicleInfo.setOriCarKindName("K33");
-            vehicleInfo.setPlatVehicleCode("CRWARJUC0001");
-            vehicleInfo.setPower("133");
-            vehicleInfo.setPurchasePrice("103800");
-            vehicleInfo.setSeatCount(5);
-            vehicleInfo.setUseNatureCode("85");
-            vehicleInfo.setVehicleId("1");
-            vehicleInfo.setVinNo("LSJA24U69MS091895");
-            vehicleInfo.setMakeDate("2025-10-16");
-            vehicleInfo.setMakeDateJQ("2025-10-16");
-            vehicleInfo.setPrintVehicleModelName("荣威CSA6452NEAQ多用途乘用车");
-            vehicleInfo.setAliasName("荣威RX5 PLUS 330TGI 1.5T TST国潮智臻版");
-            vehicleInfo.setSale4SFlag("0");
-            vehicleInfo.setOriBrandName("荣威CSA6452NEAQ多用途乘用车");
-            vehicleInfo.setOriPurchasePrice("103800");
-            vehicleInfo.setIsInvokeJingYou("1");
-            vehicleInfo.setVehicleStyleUniqueId("800004584");
-            vehicleInfo.setOriModelName("荣威CSA6452NEAQ多用途乘用车");
-            vehicleInfo.setModelEnergyType("D1");
-            vehicleInfo.setPrintModelName("荣威CSA6452NEAQ多用途乘用车");
-            ziJinCrawlerQuotationRequest.setVehicleInfo(vehicleInfo);
+            ziJinCrawlerQuotationRequest.setVehicleInfo(buildVehicleInfo());
 
             // 设置盈利数据列表
-            List<ZiJinCrawlerQuotationRequest.ProfitDataList> profitDataList = new ArrayList<>();
-            ZiJinCrawlerQuotationRequest.ProfitDataList profitData1 = new ZiJinCrawlerQuotationRequest.ProfitDataList();
-            profitData1.setProfitCode("C31");
-            profitData1.setProfitRate("1.05");
-            profitDataList.add(profitData1);
-
-            ZiJinCrawlerQuotationRequest.ProfitDataList profitData2 = new ZiJinCrawlerQuotationRequest.ProfitDataList();
-            profitData2.setProfitCode("C32");
-            profitData2.setProfitRate("1.000000");
-            profitDataList.add(profitData2);
-            ziJinCrawlerQuotationRequest.setProfitDataList(profitDataList);
+            ziJinCrawlerQuotationRequest.setProfitDataList(buildProfitDataList());
 
             // 设置税务字段
             ziJinCrawlerQuotationRequest.setTaxFields("identifyNumber,taxpayerIdentifier,taxpayerName,taxRegistryNumber");
@@ -372,6 +173,19 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
                 return ZiJinCrawlerQuoteResultsVoBuild.buildQuoteFailResultsVo(ziJinCrawlerQuotationResponse);
             } else {
                 //报价成功
+                //保存报价信息
+                ZiJinCrawlerSaveQuoteInfoRequest ziJinCrawlerSaveQuoteInfoRequest = buildSaveQuoteInfoRequest();
+
+                ZiJinCrawlerSaveQuoteInfoResponse ziJinCrawlerSaveQuoteInfoResponse = ziJinCrawlerRequestComponent.saveQuoteInformation(ziJinCrawlerSaveQuoteInfoRequest, headers);
+                log.info("ziJinCrawlerSaveQuoteInfoResponse参数的值:{}", JSON.toJSONString(ziJinCrawlerSaveQuoteInfoResponse));
+
+                //保存投保单
+                ZiJinCrawlerSaveProposalRequest ziJinCrawlerSaveProposalRequest = new  ZiJinCrawlerSaveProposalRequest();
+                ziJinCrawlerSaveProposalRequest.setOrderNo(ziJinCrawlerGetOrderNoResponse.getOrderNo());
+                ziJinCrawlerSaveProposalRequest.setProposalCheckNo(ziJinCrawlerQuotationResponse.getBasePart().getProposalCheckNo());
+                ZiJinCrawlerSaveProposalResponse ziJinCrawlerSaveProposalResponse = ziJinCrawlerRequestComponent.saveProposal(ziJinCrawlerSaveProposalRequest, headers);
+                log.info("ziJinCrawlerSaveProposalResponse参数的值:{}", JSON.toJSONString(ziJinCrawlerSaveProposalResponse));
+
                 ziJinCrawlerOrderService.save(quoteVo, ziJinCrawlerQuotationResponse, true);
                 return ZiJinCrawlerQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo.getOrder().getOrdersNo(), quoteVo, ziJinCrawlerQuotationResponse);
             }
@@ -487,9 +301,9 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
 
             ZiJinCrawlerImageUploadResponse ziJinCrawlerImageUploadResponse = ziJinCrawlerRequestComponent.uploadImage(ziJinCrawlerImageUploadRequest, headers);
             log.info("boHaiCrawlerImageUploadSubmitResponse对象的值:{}", JSON.toJSONString(ziJinCrawlerImageUploadResponse));
-            if("0000".equals(ziJinCrawlerImageUploadResponse.getRtnCode())){
+            if ("0000".equals(ziJinCrawlerImageUploadResponse.getRtnCode())) {
                 log.info("影像上传成功,影像ID:{}", ziJinCrawlerImageUploadResponse.getFileId());
-            }else{
+            } else {
                 log.error("影像上传失败,错误码:{},错误信息:{}", ziJinCrawlerImageUploadResponse.getRtnCode(), ziJinCrawlerImageUploadResponse.getRtnMsg());
                 throw new RuntimeException("影像上传失败,错误码:" + ziJinCrawlerImageUploadResponse.getRtnCode() + ",错误信息:" + ziJinCrawlerImageUploadResponse.getRtnMsg());
             }
@@ -528,7 +342,7 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
                 policyNoEncryptMap.put(policyNos.get(i), encryptCodes.get(i));
             }
             //2、下载保单
-            ZiJinCrawlerDownloadPolicyRequest ziJinCrawlerDownloadPolicyRequest =new ZiJinCrawlerDownloadPolicyRequest();
+            ZiJinCrawlerDownloadPolicyRequest ziJinCrawlerDownloadPolicyRequest = new ZiJinCrawlerDownloadPolicyRequest();
 
             DownloadPolicyResultVo downloadPolicyResultVo = new DownloadPolicyResultVo();
             // 下载交强险保单
@@ -601,12 +415,12 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
     /**
      * 设置查询车险保单列表请求参数
      *
-     * @param beginDate 开始日期
-     * @param endDate   结束日期
+     * @param beginDate    开始日期
+     * @param endDate      结束日期
      * @param loginComCode 登录公司编码
      * @return ZiJinCrawlerQueryCarPolicyListRequest
      */
-    private ZiJinCrawlerQueryCarPolicyListRequest setQueryCarPolicyListRequest(String beginDate, String endDate,String loginComCode) {
+    private ZiJinCrawlerQueryCarPolicyListRequest setQueryCarPolicyListRequest(String beginDate, String endDate, String loginComCode) {
         ZiJinCrawlerQueryCarPolicyListRequest ziJinCrawlerQueryCarPolicyListRequest = new ZiJinCrawlerQueryCarPolicyListRequest();
         ziJinCrawlerQueryCarPolicyListRequest.setInputDateBegin(beginDate);
         ziJinCrawlerQueryCarPolicyListRequest.setInputDateEnd(endDate);
@@ -618,8 +432,772 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
         ziJinCrawlerQueryCarPolicyListRequest.setRiskCodeList(Arrays.asList());
         ziJinCrawlerQueryCarPolicyListRequest.setPaidAndIneffectiveSwitch("1");
         ziJinCrawlerQueryCarPolicyListRequest.setInvokeSystem("0201");
-        return  ziJinCrawlerQueryCarPolicyListRequest;
+        return ziJinCrawlerQueryCarPolicyListRequest;
+    }
+
+    /**
+     * 构建获取订单号请求对象
+     *
+     * @return ZiJinCrawlerGetOrderNoRequest
+     */
+    private ZiJinCrawlerGetOrderNoRequest buildGetOrderNoRequest() {
+        ZiJinCrawlerGetOrderNoRequest request = new ZiJinCrawlerGetOrderNoRequest();
+        request.setBrandName("荣威CSA6452NEAQ多用途乘用车");
+        request.setLicenseNo("晋HJW581");
+        request.setOperatorCode("214000151");
+        request.setOrderOrigin("KSCD_PROD");
+        request.setProposalAreaCode("140000");
+        request.setProposalCityCode("140000");
+        request.setUserComCode("2140000601");
+        request.setVinNo("LSJA24U69MS091895");
+        request.setModelCode("RWD1598SQQ");
+        request.setProductCode("CAR20190517");
+        request.setProductName("机动车保险");
+        request.setTerminalId("KSCD");
+        request.setTerminalIdType("Vue-PC");
+        return request;
+    }
+
+    /**
+     * 构建获取车辆实际价值请求对象
+     *
+     * @return ZiJinCrawlerGetCarActualValueRequest
+     */
+    @NotNull
+    private static ZiJinCrawlerGetCarActualValueRequest buildGetCarActualValueRequest(QuoteVo quoteVo) {
+        ZiJinCrawlerGetCarActualValueRequest ziJinCrawlerGetCarActualValueRequest = new ZiJinCrawlerGetCarActualValueRequest();
+        ziJinCrawlerGetCarActualValueRequest.setCarKindCode(quoteVo.getCarInfoVo().getCarKindCode());
+        ziJinCrawlerGetCarActualValueRequest.setEnrollDate(quoteVo.getCarInfoVo().getRegisterDate());
+        ziJinCrawlerGetCarActualValueRequest.setUpdateEnrollDate(quoteVo.getCarInfoVo().getRegisterDate());
+        ziJinCrawlerGetCarActualValueRequest.setPurchasePrice(quoteVo.getCarInfoVo().getPurchasePrice());
+        ziJinCrawlerGetCarActualValueRequest.setSeatCount(Integer.valueOf(quoteVo.getCarInfoVo().getSeatCount()));
+        ziJinCrawlerGetCarActualValueRequest.setUseNatureCode(quoteVo.getCarInfoVo().getCarNatureCode());
+        ziJinCrawlerGetCarActualValueRequest.setStartDate(quoteVo.getCiRiskInfoVo().getStartDate().substring(0, 10));
+        ziJinCrawlerGetCarActualValueRequest.setNewEnergyFlag(quoteVo.getCarInfoVo().getEnergyTypeCode());
+        ziJinCrawlerGetCarActualValueRequest.setModelEnergyType(quoteVo.getCarInfoVo().getModelEnergyType());
+        return ziJinCrawlerGetCarActualValueRequest;
+    }
+
+    /**
+     * 构建报价基础信息对象
+     *
+     * @return ZiJinCrawlerQuotationRequest.BaseInfo
+     */
+    private ZiJinCrawlerQuotationRequest.BaseInfo buildBaseInfo(QuoteVo quoteVo) {
+        ZiJinCrawlerQuotationRequest.BaseInfo baseInfo = new ZiJinCrawlerQuotationRequest.BaseInfo();
+        baseInfo.setAgentCode("U200002008048");
+        baseInfo.setAgreementNo("U200002008048-01");
+        baseInfo.setBusinessNature("2");
+        baseInfo.setComCode("2140000601");
+        baseInfo.setComName("山西分公司直销业务一部");
+        baseInfo.setHandler1Code("214003397");
+        baseInfo.setHandler1Name("李玉婷1");
+        baseInfo.setOperatorCode("214000151");
+        baseInfo.setStartDate(quoteVo.getCiRiskInfoVo().getStartDate().substring(0, 10));
+        baseInfo.setStartDateCI(quoteVo.getCiRiskInfoVo().getStartDate().substring(0, 10));
+        baseInfo.setStartHour("00");
+        baseInfo.setStartHourCI("00");
+        baseInfo.setStartMinute("00");
+        baseInfo.setStartMinuteCI("00");
+        baseInfo.setEndDate(quoteVo.getCiRiskInfoVo().getEndDate().substring(0, 10));
+        baseInfo.setEndDateCI(quoteVo.getCiRiskInfoVo().getEndDate().substring(0, 10));
+        baseInfo.setEndHour("24");
+        baseInfo.setEndHourCI("24");
+        baseInfo.setEndMinute("00");
+        baseInfo.setEndMinuteCI("00");
+        baseInfo.setXbFlag("0");
+        baseInfo.setXbFlagCI("0");
+        baseInfo.setGoalInsuredFlag("0");
+        baseInfo.setConfigName("李");
+        baseInfo.setId("c0417848dcce40ec8a8c40492f6ef2d3");
+        baseInfo.setBusinessName("个人代理");
+        baseInfo.setIdMongo("c0417848dcce40ec8a8c40492f6ef2d3");
+        baseInfo.setDesc("李");
+        baseInfo.setHanderCode("214003397");
+        baseInfo.setHanderName("李玉婷1");
+        baseInfo.setDemandNo("V0101ZKIC140025112202163902568");
+        baseInfo.setDemandNoCI("01ZKIC140025111912163901668390");
+        baseInfo.setCalculateFlag("0");
+        return baseInfo;
+    }
+
+    /**
+     * 构建车主信息对象
+     *
+     * @return ZiJinCrawlerQuotationRequest.CarOwnerInfo
+     */
+    private ZiJinCrawlerQuotationRequest.CarOwnerInfo buildCarOwnerInfo() {
+        ZiJinCrawlerQuotationRequest.CarOwnerInfo carOwnerInfo = new ZiJinCrawlerQuotationRequest.CarOwnerInfo();
+        carOwnerInfo.setCarOwner("王婧");
+        carOwnerInfo.setOwnerIdentifyNumber("14092519990322002X");
+        carOwnerInfo.setOwnerIdentifyType("01");
+        carOwnerInfo.setVehicleOwnerNature("1");
+        return carOwnerInfo;
+    }
+
+    /**
+     * 构建被保险人列表
+     *
+     * @return List<ZiJinCrawlerQuotationRequest.InsuredList>
+     */
+    private List<ZiJinCrawlerQuotationRequest.InsuredList> buildInsuredList() {
+        List<ZiJinCrawlerQuotationRequest.InsuredList> insuredList = new ArrayList<>();
+
+        // 第一个被保险人
+        ZiJinCrawlerQuotationRequest.InsuredList insured1 = new ZiJinCrawlerQuotationRequest.InsuredList();
+        insured1.setInsuredName("王婧");
+        insured1.setInsuredNature("3");
+        insured1.setIdentifyType("01");
+        insured1.setIdentifyNumber("14092519990322002X");
+        insured1.setSex("2");
+        insured1.setInsuredType("1");
+        insured1.setMobile("18840186946");
+        insured1.setPostCode("030053");
+        insured1.setInsuredFlag(2);
+        insuredList.add(insured1);
+
+        // 第二个被保险人
+        ZiJinCrawlerQuotationRequest.InsuredList insured2 = new ZiJinCrawlerQuotationRequest.InsuredList();
+        insured2.setInsuredName("王婧");
+        insured2.setInsuredNature("3");
+        insured2.setIdentifyType("01");
+        insured2.setIdentifyNumber("14092519990322002X");
+        insured2.setSex("2");
+        insured2.setInsuredType("1");
+        insured2.setMobile("18840186946");
+        insured2.setPostCode("030053");
+        insured2.setInsuredFlag(1);
+        insuredList.add(insured2);
+        return insuredList;
+    }
+
+    /**
+     * 构建减税信息对象
+     *
+     * @return ZiJinCrawlerQuotationRequest.TaxRelifInfo
+     */
+    private ZiJinCrawlerQuotationRequest.TaxRelifInfo buildTaxRelifInfo() {
+        ZiJinCrawlerQuotationRequest.TaxRelifInfo taxRelifInfo = new ZiJinCrawlerQuotationRequest.TaxRelifInfo();
+        taxRelifInfo.setTaxRelifFlag("1");
+        taxRelifInfo.setTaxpayerName("王婧");
+        taxRelifInfo.setTaxpayerIdentifier("01");
+        taxRelifInfo.setIdentifyNumber("14092519990322002X");
+        taxRelifInfo.setTaxRegistryNumber("911401005929792152");
+        taxRelifInfo.setCompleteKerbMass("1.539");
+        return taxRelifInfo;
+    }
+
+    /**
+     * 构建险种列表
+     *
+     * @return List<ZiJinCrawlerQuotationRequest.ItemKindList>
+     */
+    private List<ZiJinCrawlerQuotationRequest.ItemKindList> buildItemKindList() {
+        List<ZiJinCrawlerQuotationRequest.ItemKindList> itemKindList = new ArrayList<>();
+
+        // 交通事故强制责任险
+        ZiJinCrawlerQuotationRequest.ItemKindList itemKind1 = new ZiJinCrawlerQuotationRequest.ItemKindList();
+        itemKind1.setAmount("200000");
+        itemKind1.setKindCode("BZ");
+        itemKind1.setKindName("交通事故强制责任险");
+        itemKind1.setRiskCode("0590");
+        itemKind1.setBenchMarkPremium("950.0000");
+        itemKind1.setBasePremium("950.0000");
+        itemKindList.add(itemKind1);
+
+        // 机动车第三者责任保险
+        ZiJinCrawlerQuotationRequest.ItemKindList itemKind2 = new ZiJinCrawlerQuotationRequest.ItemKindList();
+        itemKind2.setAmount(2000000);
+        itemKind2.setKindCode("B");
+        itemKind2.setKindName("机动车第三者责任保险");
+        itemKind2.setRiskCode("050A");
+        itemKind2.setBenchMarkPremium("687.7600");
+        itemKind2.setBasePremium("515.8200");
+        itemKindList.add(itemKind2);
+
+        // 附加医保外用药责任险
+        ZiJinCrawlerQuotationRequest.ItemKindList itemKind3 = new ZiJinCrawlerQuotationRequest.ItemKindList();
+        itemKind3.setAmount("20000");
+        itemKind3.setKindCode("S1");
+        itemKind3.setKindName("附加医保外用药责任险(机动车第三者责任保险)");
+        itemKind3.setRiskCode("050A");
+        itemKind3.setBenchMarkPremium("28.3100");
+        itemKind3.setBasePremium("21.2300");
+        itemKindList.add(itemKind3);
+
+        // 道路救援服务特约条款
+        ZiJinCrawlerQuotationRequest.ItemKindList itemKind4 = new ZiJinCrawlerQuotationRequest.ItemKindList();
+        itemKind4.setKindCode("T1");
+        itemKind4.setKindName("道路救援服务特约条款");
+        itemKind4.setRiskCode("050A");
+        itemKind4.setServiceTimes("2");
+        itemKind4.setBenchMarkPremium("0.0000");
+        itemKind4.setBasePremium("0.0000");
+        itemKindList.add(itemKind4);
+        return itemKindList;
+    }
+
+    /**
+     * 构建附加保单信息列表
+     *
+     * @return List<ZiJinCrawlerQuotationRequest.CarPolicySubInfoList>
+     */
+    private List<ZiJinCrawlerQuotationRequest.CarPolicySubInfoList> buildCarPolicySubInfoList() {
+        List<ZiJinCrawlerQuotationRequest.CarPolicySubInfoList> carPolicySubInfoList = new ArrayList<>();
+
+        ZiJinCrawlerQuotationRequest.CarPolicySubInfoList carPolicySubInfo1 = new ZiJinCrawlerQuotationRequest.CarPolicySubInfoList();
+        carPolicySubInfo1.setPlanName("山西9座以内非营业客车驾乘险10万档:36元/座-10万+1万+30元/天");
+        carPolicySubInfo1.setInsureGradeNo("214000737028");
+        carPolicySubInfo1.setIsUseInsured("1");
+        carPolicySubInfo1.setQuantity("1");
+        carPolicySubInfo1.setRiskCode("0737");
+        carPolicySubInfo1.setRiskName("驾乘人员人身意外伤害保险");
+        carPolicySubInfo1.setSumAmount(577000);
+        carPolicySubInfo1.setSumPremium(180);
+        carPolicySubInfo1.setActualPremium("180.00");
+        carPolicySubInfo1.setProductCode("ZKICATM_GRDL_Plan");
+        carPolicySubInfoList.add(carPolicySubInfo1);
+        return carPolicySubInfoList;
+    }
+
+    /**
+     * 构建车辆信息对象
+     *
+     * @return ZiJinCrawlerQuotationRequest.VehicleInfo
+     */
+    private ZiJinCrawlerQuotationRequest.VehicleInfo buildVehicleInfo() {
+        ZiJinCrawlerQuotationRequest.VehicleInfo vehicleInfo = new ZiJinCrawlerQuotationRequest.VehicleInfo();
+
+        // 基础车辆信息
+        vehicleInfo.setActualValue(73905.6);
+        vehicleInfo.setAgreeActualValue(73905.6);
+        vehicleInfo.setBrandName("荣威CSA6452NEAQ多用途乘用车");
+        vehicleInfo.setCarKindCode("A0");
+        vehicleInfo.setCarKindDetailId("KA");
+        vehicleInfo.setCarLoanFlag("1");
+        vehicleInfo.setCertificateDate("2021-11-01");
+        vehicleInfo.setChgOwnerFlag("1");
+        vehicleInfo.setCompletekerbmass(1539);
+        vehicleInfo.setEcdemicVehicleFlag("0");
+        vehicleInfo.setEngineNo("DNSM9070392");
+
+        // 日期相关
+        vehicleInfo.setEnrollDate("2021-11-01");
+        vehicleInfo.setUpdateEnrollDate("2021-11-01");
+        vehicleInfo.setIssueDate("2025-10-16");
+        vehicleInfo.setMakeDate("2025-10-16");
+        vehicleInfo.setMakeDateJQ("2025-10-16");
+
+        // 车辆技术参数
+        vehicleInfo.setExhaustCapacity(1490);
+        vehicleInfo.setFuelType("0");
+        vehicleInfo.setFuelTypeJY("D1");
+        vehicleInfo.setNewEnergyFlag("0");
+        vehicleInfo.setPower("133");
+        vehicleInfo.setModelEnergyType("D1");
+
+        // 牌照和车辆识别
+        vehicleInfo.setLicenseColorCode("01");
+        vehicleInfo.setLicenseKindCode("02");
+        vehicleInfo.setLicenseNo("晋HJW581");
+        vehicleInfo.setLoanVehicleFlag("0");
+        vehicleInfo.setModelCode("RWD1598SQQ");
+        vehicleInfo.setNoLicenseFlag("1");
+        vehicleInfo.setVehicleId("1");
+        vehicleInfo.setVinNo("LSJA24U69MS091895");
+
+        // 车辆分类和用途
+        vehicleInfo.setSeatCount(5);
+        vehicleInfo.setUseNatureCode("85");
+        vehicleInfo.setOriCarKindName("K33");
+        vehicleInfo.setPlatVehicleCode("CRWARJUC0001");
+        vehicleInfo.setVehicleStyleUniqueId("800004584");
+
+        // 价格和商业信息
+        vehicleInfo.setPurchasePrice("103800");
+        vehicleInfo.setSale4SFlag("0");
+        vehicleInfo.setOriPurchasePrice("103800");
+        vehicleInfo.setIsInvokeJingYou("1");
+
+        // 型号名称
+        vehicleInfo.setPrintVehicleModelName("荣威CSA6452NEAQ多用途乘用车");
+        vehicleInfo.setAliasName("荣威RX5 PLUS 330TGI 1.5T TST国潮智臻版");
+        vehicleInfo.setOriBrandName("荣威CSA6452NEAQ多用途乘用车");
+        vehicleInfo.setOriModelName("荣威CSA6452NEAQ多用途乘用车");
+        vehicleInfo.setPrintModelName("荣威CSA6452NEAQ多用途乘用车");
+
+        return vehicleInfo;
+    }
+
+    /**
+     * 构建盈利数据列表
+     *
+     * @return List<ZiJinCrawlerQuotationRequest.ProfitDataList>
+     */
+    private List<ZiJinCrawlerQuotationRequest.ProfitDataList> buildProfitDataList() {
+        List<ZiJinCrawlerQuotationRequest.ProfitDataList> profitDataList = new ArrayList<>();
+
+        // 第一个盈利数据项
+        ZiJinCrawlerQuotationRequest.ProfitDataList profitData1 = new ZiJinCrawlerQuotationRequest.ProfitDataList();
+        profitData1.setProfitCode("C31");
+        profitData1.setProfitRate("1.05");
+        profitDataList.add(profitData1);
+
+        // 第二个盈利数据项
+        ZiJinCrawlerQuotationRequest.ProfitDataList profitData2 = new ZiJinCrawlerQuotationRequest.ProfitDataList();
+        profitData2.setProfitCode("C32");
+        profitData2.setProfitRate("1.000000");
+        profitDataList.add(profitData2);
+        return profitDataList;
     }
 
+    /**
+     * 构建保存报价信息请求对象
+     *
+     * @return 构建完成的保存报价信息请求对象
+     */
+    private ZiJinCrawlerSaveQuoteInfoRequest buildSaveQuoteInfoRequest() {
+        ZiJinCrawlerSaveQuoteInfoRequest ziJinCrawlerSaveQuoteInfoRequest = new ZiJinCrawlerSaveQuoteInfoRequest();
+
+        // 设置代理人代码
+        ziJinCrawlerSaveQuoteInfoRequest.setAgentCode("U200002008048");
+        // 设置订单ID
+        ziJinCrawlerSaveQuoteInfoRequest.setOrderId("8aaa7b969a3d35a6019a520b019017d9");
+        // 设置订单号
+        ziJinCrawlerSaveQuoteInfoRequest.setOrderNo("DPO2025110000642872");
+
+        // 设置基础信息
+        ZiJinCrawlerSaveQuoteInfoRequest.BaseInfo baseInfo = ZiJinCrawlerSaveQuoteInfoRequest.BaseInfo.builder()
+            .teamType("10")
+            .agentCode("U200002008048")
+            .agreementNo("U200002008048-01")
+            .businessNature("2")
+            .comCode("2140000601")
+            .comName("山西分公司直销业务一部")
+            .areaCode("140000")
+            .handler1Code("214003397")
+            .handler1Name("李玉婷1")
+            .operatorCode("214000151")
+            .startDate("2025-11-06")
+            .startDateCI("2025-11-06")
+            .startHour("00")
+            .startHourCI("00")
+            .startMinute("00")
+            .startMinuteCI("00")
+            .endDate("2026-11-05")
+            .endDateCI("2026-11-05")
+            .endHour("24")
+            .endHourCI("24")
+            .endMinute("00")
+            .endMinuteCI("00")
+            .isCI(true)
+            .isBI(true)
+            .riskCodeEnum(ZiJinCrawlerSaveQuoteInfoRequest.BaseInfo.RiskCodeEnum.builder()
+                .CSTax(ZiJinCrawlerSaveQuoteInfoRequest.BaseInfo.RiskCodeEnum.CSTaxInfo.builder()
+                    .riskCode("CSTax")
+                    .riskName("车船税")
+                    .build())
+                .CI(ZiJinCrawlerSaveQuoteInfoRequest.BaseInfo.RiskCodeEnum.CIInfo.builder()
+                    .riskCode("0590")
+                    .riskName("机动车交通事故责任强制保险")
+                    .amount("200000")
+                    .build())
+                .BI(ZiJinCrawlerSaveQuoteInfoRequest.BaseInfo.RiskCodeEnum.BIInfo.builder()
+                    .riskCode("050A")
+                    .oldRiskCode("0501")
+                    .riskName("机动车商业保险(2020版)")
+                    .oldRiskName("新机动车商业险")
+                    .build())
+                .productCode("CAR20190517")
+                .productName("机动车保险")
+                .useNatureList(Arrays.asList("82", "83", "84", "85", "9A", "9B", "9C", "9D"))
+                .vehicleKindAndUseNature(Arrays.asList("85", "A0"))
+                .icon("iconfont iconjidongche1")
+                .name("car")
+                .build())
+            .useRateFlag(true)
+            .argueSolution("1")
+            .autoTransRenewFlag("20")
+            .proposalCheckNo("7b4eaaaa9251429aa7dfd2beedf17af7")
+            .xbFlag("0")
+            .xbFlagCI("0")
+            .goalInsuredFlag("0")
+            .configName("李")
+            .id("c0417848dcce40ec8a8c40492f6ef2d3")
+            .businessName("个人代理")
+            .underscoreId("c0417848dcce40ec8a8c40492f6ef2d3")
+            .desc("李")
+            .handerCode("214003397")
+            .handerName("李玉婷1")
+            .applicationType("T")
+            .split("1")
+            .sumPremiumCI(950.0)
+            .sumPremium(631.45)
+            .calculateFlag("0")
+            .build();
+        ziJinCrawlerSaveQuoteInfoRequest.setBaseInfo(baseInfo);
+
+        // 设置车主信息
+        ZiJinCrawlerSaveQuoteInfoRequest.CarOwnerInfo carOwnerInfo = ZiJinCrawlerSaveQuoteInfoRequest.CarOwnerInfo.builder()
+            .customerAmlPropReqDtoList(new ArrayList<>())
+            .carOwner("王婧")
+            .ownerIdentifyNumber("14092519990322002X")
+            .ownerIdentifyType("01")
+            .vehicleOwnerNature("1")
+            .ownerAddress("山西省宁武县西马坊乡梅洞村66号")
+            .build();
+        ziJinCrawlerSaveQuoteInfoRequest.setCarOwnerInfo(carOwnerInfo);
+
+        // 设置车险附加险信息列表
+        List<ZiJinCrawlerSaveQuoteInfoRequest.CarPolicySubInfo> carPolicySubInfoList = new ArrayList<>();
+        ZiJinCrawlerSaveQuoteInfoRequest.CarPolicySubInfo carPolicySubInfo = ZiJinCrawlerSaveQuoteInfoRequest.CarPolicySubInfo.builder()
+            .planName("山西9座以内非营业客车驾乘险10万档:36元/座-10万+1万+30元/天")
+            .insureGradeNo("214000737028")
+            .isUseInsured("1")
+            .quantity("1")
+            .riskCode("0737")
+            .riskName("驾乘人员人身意外伤害保险")
+            .sumAmount(577000L)
+            .sumPremium(180)
+            .actualPremium("180.00")
+            .productCode("ZKICATM_GRDL_Plan")
+            .build();
+        carPolicySubInfoList.add(carPolicySubInfo);
+        ziJinCrawlerSaveQuoteInfoRequest.setCarPolicySubInfoList(carPolicySubInfoList);
+
+        // 设置附加险列表
+        ziJinCrawlerSaveQuoteInfoRequest.setAttachRiskList(new ArrayList<>());
+
+        // 设置被保人列表
+        List<ZiJinCrawlerSaveQuoteInfoRequest.InsuredInfo> insuredList = new ArrayList<>();
+
+        // 商业险被保人
+        Map<String, Object> businessManager = new HashMap<>();
+        businessManager.put("insuredFlag", "1");
+        Map<String, Object> phoneHolder = new HashMap<>();
+        phoneHolder.put("insuredFlag", "2");
+        Map<String, Object> certigier = new HashMap<>();
+        Map<String, Object> chief = new HashMap<>();
+
+        ZiJinCrawlerSaveQuoteInfoRequest.InsuredInfo insuredInfoBI = ZiJinCrawlerSaveQuoteInfoRequest.InsuredInfo.builder()
+            .address("山西省宁武县西马坊乡梅洞村66号")
+            .identifyNumber("14092519990322002X")
+            .identifyType("01")
+            .insuredFlag(2)
+            .insuredName("王婧")
+            .insuredNature("3")
+            .insuredType("1")
+            .longAddress("山西省宁武县西马坊乡梅洞村66号")
+            .mobile("18840186946")
+            .sex("2")
+            .nationality("中国")
+            .occupation("A0104002")
+            .addressProvince("140000")
+            .addressPrefecture("140900")
+            .addressCounty("140925")
+            .postCode("030053")
+            .insuredRelationship("1")
+            .validDate("2045-09-03")
+            .countryRegions("CHN")
+            .vehicleRelationCode("1")
+            .certigier(certigier)
+            .chief(chief)
+            .riskLevelName("一般")
+            .riskLevel("4")
+            .reserved2("1")
+            .reserved(new ArrayList<>())
+            .businessManager(ZiJinCrawlerSaveQuoteInfoRequest.InsuredInfo.BusinessManager.builder()
+                .insuredFlag("1")
+                .build())
+            .phoneHolder(ZiJinCrawlerSaveQuoteInfoRequest.InsuredInfo.PhoneHolder.builder()
+                .insuredFlag("2")
+                .build())
+            .isPhoneOwner("1")
+            .issuer("宁武县公安局")
+            .iDStartDate("2025-09-03")
+            .build();
+        insuredList.add(insuredInfoBI);
+
+        // 交强险被保人
+        ZiJinCrawlerSaveQuoteInfoRequest.InsuredInfo insuredInfoCI = ZiJinCrawlerSaveQuoteInfoRequest.InsuredInfo.builder()
+            .address("山西省宁武县西马坊乡梅洞村66号")
+            .identifyNumber("14092519990322002X")
+            .identifyType("01")
+            .insuredFlag(1)
+            .insuredName("王婧")
+            .insuredNature("3")
+            .insuredType("1")
+            .longAddress("山西省宁武县西马坊乡梅洞村66号")
+            .mobile("18840186946")
+            .sex("2")
+            .nationality("中国")
+            .occupation("A0104002")
+            .addressProvince("140000")
+            .addressPrefecture("140900")
+            .addressCounty("140925")
+            .postCode("030053")
+            .insuredRelationship("1")
+            .validDate("2045-09-03")
+            .countryRegions("CHN")
+            .vehicleRelationCode("1")
+            .certigier(new HashMap<>())
+            .chief(new HashMap<>())
+            .riskLevelName("一般")
+            .riskLevel("4")
+            .reserved2("1")
+            .reserved(new ArrayList<>())
+            .businessManager(ZiJinCrawlerSaveQuoteInfoRequest.InsuredInfo.BusinessManager.builder()
+                .insuredFlag("1")
+                .build())
+            .phoneHolder(ZiJinCrawlerSaveQuoteInfoRequest.InsuredInfo.PhoneHolder.builder()
+                .insuredFlag("2")
+                .build())
+            .isPhoneOwner("1")
+            .issuer("宁武县公安局")
+            .iDStartDate("2025-09-03")
+            .build();
+        insuredList.add(insuredInfoCI);
+
+        ziJinCrawlerSaveQuoteInfoRequest.setInsuredList(insuredList);
+
+        // 设置险别明细列表
+        List<ZiJinCrawlerSaveQuoteInfoRequest.ItemKindInfo> itemKindList = new ArrayList<>();
+
+        // 交强险
+        ZiJinCrawlerSaveQuoteInfoRequest.ItemKindInfo itemKindCI = ZiJinCrawlerSaveQuoteInfoRequest.ItemKindInfo.builder()
+            .amount("200000")
+            .kindCode("BZ")
+            .kindName("交通事故强制责任险")
+            .riskCode("0590")
+            .premium("950.0000")
+            .benchMarkPremium("950.0000")
+            .basePremium("950.0000")
+            .build();
+        itemKindList.add(itemKindCI);
+
+        // 第三者责任险
+        ZiJinCrawlerSaveQuoteInfoRequest.ItemKindInfo itemKindB = ZiJinCrawlerSaveQuoteInfoRequest.ItemKindInfo.builder()
+            .amount(2000000)
+            .kindCode("B")
+            .kindName("机动车第三者责任保险")
+            .riskCode("050A")
+            .premium("606.4900")
+            .benchMarkPremium("687.7600")
+            .basePremium("515.8200")
+            .build();
+        itemKindList.add(itemKindB);
+
+        // 医保外用药责任险
+        ZiJinCrawlerSaveQuoteInfoRequest.ItemKindInfo itemKindS1 = ZiJinCrawlerSaveQuoteInfoRequest.ItemKindInfo.builder()
+            .amount("20000")
+            .kindCode("S1")
+            .kindName("附加医保外用药责任险(机动车第三者责任保险)")
+            .riskCode("050A")
+            .premium("24.9600")
+            .benchMarkPremium("28.3100")
+            .basePremium("21.2300")
+            .build();
+        itemKindList.add(itemKindS1);
+
+        // 道路救援服务特约条款
+        ZiJinCrawlerSaveQuoteInfoRequest.ItemKindInfo itemKindT1 = ZiJinCrawlerSaveQuoteInfoRequest.ItemKindInfo.builder()
+            .kindCode("T1")
+            .kindName("道路救援服务特约条款")
+            .riskCode("050A")
+            .serviceTimes("2")
+            .premium("0.0000")
+            .benchMarkPremium("0.0000")
+            .basePremium("0.0000")
+            .build();
+        itemKindList.add(itemKindT1);
+
+        ziJinCrawlerSaveQuoteInfoRequest.setItemKindList(itemKindList);
+
+        // 设置收费信息列表
+        ziJinCrawlerSaveQuoteInfoRequest.setChargingInfoList(new ArrayList<>());
+
+        // 设置订单来源
+        ziJinCrawlerSaveQuoteInfoRequest.setOrderOrigin("KSCD_PROD");
+
+        // 设置产品代码
+        ziJinCrawlerSaveQuoteInfoRequest.setProductCode("CAR20190517");
+
+        // 设置产品名称
+        ziJinCrawlerSaveQuoteInfoRequest.setProductName("机动车保险");
+
+        // 设置提交信息
+        ziJinCrawlerSaveQuoteInfoRequest.setSubmitInfo(new HashMap<>());
+
+        // 设置车船税减免信息
+        ZiJinCrawlerSaveQuoteInfoRequest.TaxRelifInfo taxRelifInfo = ZiJinCrawlerSaveQuoteInfoRequest.TaxRelifInfo.builder()
+            .taxRelifFlag("1")
+            .sumPayTax("300.0")
+            .taxpayerName("王婧")
+            .taxpayerIdentifier("01")
+            .identifyNumber("14092519990322002X")
+            .payLastYear("2024")
+            .lastCIPaymentTime("2025-11-05")
+            .taxActual("300.0")
+            .previousPay("0.0")
+            .lateFee("0.0")
+            .taxRegistryNumber("911401005929792152")
+            .isPlatformTax(true)
+            .extendChar1("K33")
+            .taxUnit("300.0")
+            .completeKerbMass("1.5390")
+            .payerCode("14092519990322002X")
+            .payStartDate("2025-01-01")
+            .payEndDate("2025-12-31")
+            .taxRelifFlagCN("正常缴税")
+            .exceedDaysCount("0")
+            .currentTaxDue(ZiJinCrawlerSaveQuoteInfoRequest.TaxRelifInfo.CurrentTaxDue.builder()
+                .taxLocationCode("140000")
+                .taxEndDate("2025-12-31 00:00:00")
+                .taxStartDate("2025-01-01 00:00:00")
+                .taxUnitTypeCode("1")
+                .taxDue(300)
+                .unitRate(300)
+                .annualTaxAmount(300)
+                .exceedDaysCount(0)
+                .overDue(0)
+                .taxConditionCode("T")
+                .totalAmount(300)
+                .build())
+            .build();
+        ziJinCrawlerSaveQuoteInfoRequest.setTaxRelifInfo(taxRelifInfo);
+
+        // 设置终端ID
+        ziJinCrawlerSaveQuoteInfoRequest.setTerminalId("KSCD");
+
+        // 设置终端类型
+        ziJinCrawlerSaveQuoteInfoRequest.setTerminalIdType("Vue-PC");
+
+        // 设置投保标识
+        ziJinCrawlerSaveQuoteInfoRequest.setInsuranceSign("0");
+
+        // 设置车辆信息
+        ZiJinCrawlerSaveQuoteInfoRequest.VehicleInfo vehicleInfo = ZiJinCrawlerSaveQuoteInfoRequest.VehicleInfo.builder()
+            .useYears(4)
+            .actualValue(73905.6)
+            .agreeActualValue(73905.6)
+            .brandName("荣威CSA6452NEAQ多用途乘用车")
+            .carKindCode("A0")
+            .carKindDetailId("KA")
+            .carLoanFlag("1")
+            .certificateDate("2021-11-01")
+            .chgOwnerFlag("1")
+            .completekerbmass(1539)
+            .ecdemicVehicleFlag("0")
+            .engineNo("DNSM9070392")
+            .enrollDate("2021-11-01")
+            .updateEnrollDate("2021-11-01")
+            .exhaustCapacity(1490)
+            .fuelType("0")
+            .fuelTypeJY("D1")
+            .newEnergyFlag("0")
+            .licenseColorCode("01")
+            .licenseKindCode("02")
+            .licenseNo("晋HJW581")
+            .loanVehicleFlag("0")
+            .modelCode("RWD1598SQQ")
+            .noLicenseFlag("1")
+            .issueDate("2025-10-15")
+            .oriCarKindName("K33")
+            .platVehicleCode("CRWARJUC0001")
+            .power("133")
+            .printUseNatureCode("")
+            .purchasePrice("103800")
+            .seatCount(5)
+            .useNatureCode("85")
+            .vehicleId("1")
+            .makeDate("2025-10-16")
+            .makeDateJQ("2025-10-16")
+            .aliasName("荣威RX5 PLUS 330TGI 1.5T TST国潮智臻版")
+            .carCheckStatus("2")
+            .carCheckReason("2")
+            .vehicleKindAndUseNature(Arrays.asList("85", "A0"))
+            .oriBrandName("荣威CSA6452NEAQ多用途乘用车")
+            .oriPurchasePrice("103800")
+            .isInvokeJingYou("1")
+            .vehicleStyleUniqueId("800004584")
+            .printModelName("荣威CSA6452NEAQ多用途乘用车")
+            .oriModelName("荣威CSA6452NEAQ多用途乘用车")
+            .vINNo("LSJA24U69MS091895")
+            .modelEnergyType("D1")
+            .build();
+        ziJinCrawlerSaveQuoteInfoRequest.setVehicleInfo(vehicleInfo);
+
+        // 设置车辆设备保费列表
+        ziJinCrawlerSaveQuoteInfoRequest.setCarDevicePremiumDtoList(new ArrayList<>());
+
+        // 设置约定列表
+        ziJinCrawlerSaveQuoteInfoRequest.setEngageList(new ArrayList<>());
+
+        // 设置附件文件列表
+        List<ZiJinCrawlerSaveQuoteInfoRequest.ItemFileData> itemFileDataList = new ArrayList<>();
+
+        // 商业险文件
+        List<ZiJinCrawlerSaveQuoteInfoRequest.ItemFileData.FileInfo> fileListBI = new ArrayList<>();
+        fileListBI.add(ZiJinCrawlerSaveQuoteInfoRequest.ItemFileData.FileInfo.builder()
+            .fileId("51b6fdf2df7147e9a665a6f4bb877a7f")
+            .fileType("56")
+            .build());
+        fileListBI.add(ZiJinCrawlerSaveQuoteInfoRequest.ItemFileData.FileInfo.builder()
+            .fileId("8b102633adf14e01836d36f5ce2901e6")
+            .fileType("53")
+            .build());
+        fileListBI.add(ZiJinCrawlerSaveQuoteInfoRequest.ItemFileData.FileInfo.builder()
+            .fileId("b86066b5e45b413fa70214f79e05e719")
+            .fileType("53")
+            .build());
+
+        ZiJinCrawlerSaveQuoteInfoRequest.ItemFileData itemFileDataBI = ZiJinCrawlerSaveQuoteInfoRequest.ItemFileData.builder()
+            .fileList(fileListBI)
+            .riskCode("050A")
+            .build();
+        itemFileDataList.add(itemFileDataBI);
+
+        // 交强险文件
+        List<ZiJinCrawlerSaveQuoteInfoRequest.ItemFileData.FileInfo> fileListCI = new ArrayList<>();
+        fileListCI.add(ZiJinCrawlerSaveQuoteInfoRequest.ItemFileData.FileInfo.builder()
+            .fileId("51b6fdf2df7147e9a665a6f4bb877a7f")
+            .fileType("56")
+            .build());
+        fileListCI.add(ZiJinCrawlerSaveQuoteInfoRequest.ItemFileData.FileInfo.builder()
+            .fileId("8b102633adf14e01836d36f5ce2901e6")
+            .fileType("53")
+            .build());
+        fileListCI.add(ZiJinCrawlerSaveQuoteInfoRequest.ItemFileData.FileInfo.builder()
+            .fileId("b86066b5e45b413fa70214f79e05e719")
+            .fileType("53")
+            .build());
+
+        ZiJinCrawlerSaveQuoteInfoRequest.ItemFileData itemFileDataCI = ZiJinCrawlerSaveQuoteInfoRequest.ItemFileData.builder()
+            .fileList(fileListCI)
+            .riskCode("0590")
+            .build();
+        itemFileDataList.add(itemFileDataCI);
+
+        ziJinCrawlerSaveQuoteInfoRequest.setItemFileDataList(itemFileDataList);
+
+        // 设置订单附加信息
+        ZiJinCrawlerSaveQuoteInfoRequest.OrderAttachInfo orderAttachInfo = ZiJinCrawlerSaveQuoteInfoRequest.OrderAttachInfo.builder()
+            .carAppliRelation("1")
+            .carInsuredRelation("1")
+            .carCheckStatus("2")
+            .carCheckReason("2")
+            .vehicleId("1")
+            .printModelName("荣威CSA6452NEAQ多用途乘用车")
+            .printUseNatureCode("")
+            .vehicleOwnerNature("1")
+            .ownerAddress("山西省宁武县西马坊乡梅洞村66号")
+            .sale4SFlag("0")
+            .policySupplementaryInfoList(new ArrayList<>())
+            .build();
+        ziJinCrawlerSaveQuoteInfoRequest.setOrderAttachInfo(orderAttachInfo);
+        // 设置是否包含子机构
+        ziJinCrawlerSaveQuoteInfoRequest.setIsIncludeSubCom(1);
+        return ziJinCrawlerSaveQuoteInfoRequest;
+    }
 
 }

File diff suppressed because it is too large
+ 0 - 0
tenant/insurance/quotation-zijin/src/main/resources/js/auto.js


+ 1 - 1
tenant/insurance/quotation-zijin/src/main/resources/js/content.js

@@ -1 +1 @@
-___content ="WId8AiamdwfDpeb3pahkThuRvzTveYSEgb6YVJs87tPu0tNFS9FmCJypqHmScyTsoPew_qsV5KL1hcLkbzEkowFh7e0Ad0mB9tnwH9zFvu_Ysu3hfCT2VPnpB9oSNO.3LcjxaqHUgoVCA6qV3SzEon9Vu9HOCCKqLt9daEeU0gEnTOdn_Uy2FeyeUWu1P3hoggG6.FMqQ3g";
+___content ="ZjC40HORs9423fHsB4GMEYDsk5rT3XRt1eQs4r79Wxp6PVKUZOGk_m584GOaJkHYMdUJ1vcgOLCrkgjKtX8pC_0NYjnFnm0b.FK6Ds0ZrI2SvQ0qbN7HGKQukV3uLt6hYqHCA1CdJLRWDioyEQVgKPlYHV.tPWVtVZ5j4y.6wQFyxOnDdOCgajLi0V7X3wu433r5nj_.7UQ";

File diff suppressed because it is too large
+ 0 - 0
tenant/insurance/quotation-zijin/src/main/resources/js/tsssss.js


Some files were not shown because too many files changed in this diff