Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

wanghao 2 месяцев назад
Родитель
Сommit
8f6adc792a
28 измененных файлов с 4230 добавлено и 95 удалено
  1. 4 0
      commons/src/main/java/com/jzg/commons/entity/finance/dto/CompanySuperviseSettlementReportDto.java
  2. 62 0
      commons/src/main/java/com/jzg/commons/entity/finance/dto/InsFeeFollowOrderReconciliationSaveDTO.java
  3. 96 0
      commons/src/main/java/com/jzg/commons/entity/finance/po/InsFeeFollowOrderReconciliation.java
  4. 41 0
      commons/src/main/java/com/jzg/commons/entity/finance/vo/InsFeeFollowOrderReconciliationVO.java
  5. 3 0
      commons/src/main/java/com/jzg/commons/entity/orders/vo/OrderListVo.java
  6. 1 0
      gateway/src/main/resources/application-dev.yml
  7. 1 0
      gateway/src/main/resources/application-prod.yml
  8. 1 0
      gateway/src/main/resources/application-test.yml
  9. 18 3
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/component/AnShengCrawlerRequestComponent.java
  10. 7 1
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/constant/enums/RequestUrl.java
  11. 5 1
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerComprehensiveQueryInsurenetRequest.java
  12. 30 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerSaleSlipRequest.java
  13. 3497 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/response/AnShengCrawlerPolicyResponse.java
  14. 50 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/response/AnShengCrawlerQuoteResultResponse.java
  15. 72 31
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/impl/AnShengCrawlerRequestImpl.java
  16. 14 6
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/component/HengBangCrawlerRequestComponent.java
  17. 90 32
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/service/Impl/HengBangCrawlerRequestImpl.java
  18. 8 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/aspect/QuoteVerificationAspect.java
  19. 1 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeOrdersServiceImpl.java
  20. 5 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/state/config/OrderStateConfig.java
  21. 1 0
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml
  22. 60 0
      tenant/organization/src/main/java/com/jzg/organization/controller/InsFeeFollowOrderReconciliationController.java
  23. 13 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/InsFeeFollowOrderReconciliationMapper.java
  24. 5 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/InsPlyIncomeInvoiceSettlementMapper.java
  25. 28 0
      tenant/organization/src/main/java/com/jzg/organization/service/InsFeeFollowOrderReconciliationService.java
  26. 53 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/InsFeeFollowOrderReconciliationServiceImpl.java
  27. 61 18
      tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java
  28. 3 2
      tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

+ 4 - 0
commons/src/main/java/com/jzg/commons/entity/finance/dto/CompanySuperviseSettlementReportDto.java

@@ -43,6 +43,7 @@ public class CompanySuperviseSettlementReportDto implements Serializable {
     @Schema(description = "应收手续费")
     private String superviseFee;
 
+
     @Schema(description = "应收跟单费")
     private String followFee;
 
@@ -76,6 +77,9 @@ public class CompanySuperviseSettlementReportDto implements Serializable {
     @Schema(description = "虚增金额合计")
     private String totalOverinflatedAmount;
 
+    @Schema(description = "回款差额合计")
+    private String settlementPaymentDifference;
+
     @Schema(description = "子保险公司数据")
     private List<CompanySuperviseSettlementReportDto> children;
 

+ 62 - 0
commons/src/main/java/com/jzg/commons/entity/finance/dto/InsFeeFollowOrderReconciliationSaveDTO.java

@@ -0,0 +1,62 @@
+package com.jzg.commons.entity.finance.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 对账记录新增/修改参数
+ */
+@Data
+public class InsFeeFollowOrderReconciliationSaveDTO {
+
+    /**
+     * 主键ID(修改时必传,新增不传)
+     */
+    private Long id;
+
+    /**
+     * 年份
+     */
+    private Integer year;
+
+    /**
+     * 月份
+     */
+    private Integer month;
+
+    /**
+     * 保险公司ID
+     */
+    private String companyId;
+
+    /**
+     * 分支保险公司ID
+     */
+    private String partnerCompanyId;
+
+    /**
+     * 系统编码
+     */
+    private String systemCode;
+
+    /**
+     * 对账金额
+     */
+    private BigDecimal reconciliationAmount;
+
+    /**
+     * 虚增差额
+     */
+    private BigDecimal falselyIncreasedDifference;
+
+    /**
+     * 虚增原因
+     */
+    private String falselyIncreasedReason;
+
+    /**
+     * 开票类型
+     */
+    private String invoiceType;
+}

+ 96 - 0
commons/src/main/java/com/jzg/commons/entity/finance/po/InsFeeFollowOrderReconciliation.java

@@ -0,0 +1,96 @@
+package com.jzg.commons.entity.finance.po;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 手续费跟单费对账表 实体类
+ */
+@Data
+@TableName("ins_fee_follow_order_reconciliation")
+public class InsFeeFollowOrderReconciliation {
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+
+    /**
+     * 年份
+     */
+    private Integer year;
+
+    /**
+     * 月份
+     */
+    private Integer month;
+
+    /**
+     * 保险公司ID
+     */
+    private String companyId;
+
+    /**
+     * 分支保险公司ID
+     */
+    private String partnerCompanyId;
+
+    /**
+     * 系统编码
+     */
+    private String systemCode;
+
+    /**
+     * 创建人
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    /**
+     * 更新人
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    /**
+     * 逻辑删除标识 0-未删除 1-已删除
+     */
+    @TableLogic
+    private Integer isDelete;
+
+    /**
+     * 对账金额
+     */
+    private BigDecimal reconciliationAmount;
+
+    /**
+     * 虚增差额
+     */
+    private BigDecimal falselyIncreasedDifference;
+
+    /**
+     * 虚增原因
+     */
+    private String falselyIncreasedReason;
+
+    /**
+     * 开票类型
+     * 1、手续费 2、跟单费 3、驾意险手续费 4、驾意险跟单费 5、平台应收-车险 6、平台应收-非车险
+     */
+    private String invoiceType;
+}

+ 41 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/InsFeeFollowOrderReconciliationVO.java

@@ -0,0 +1,41 @@
+package com.jzg.commons.entity.finance.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 对账记录返回视图对象
+ */
+@Data
+public class InsFeeFollowOrderReconciliationVO {
+
+    private Long id;
+
+    private Integer year;
+
+    private Integer month;
+
+    private String companyId;
+
+    private String partnerCompanyId;
+
+    private String systemCode;
+
+    private String createBy;
+
+    private LocalDateTime createTime;
+
+    private String updateBy;
+
+    private LocalDateTime updateTime;
+
+    private BigDecimal reconciliationAmount;
+
+    private BigDecimal falselyIncreasedDifference;
+
+    private String falselyIncreasedReason;
+
+    private String invoiceType;
+}

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/orders/vo/OrderListVo.java

@@ -157,5 +157,8 @@ public class OrderListVo {
 
     private Object mainDetails;
 
+    //错误信息
+    private String errorMessage;
+
 
 }

+ 1 - 0
gateway/src/main/resources/application-dev.yml

@@ -104,6 +104,7 @@ spring:
                   - /newCarJudgeRules/**
                   - /sysDistributionSetting/**
                   - /organization/**
+                  - /followReconciliation/**
 
         - id: summary_route
           uri: http://localhost:9898/

+ 1 - 0
gateway/src/main/resources/application-prod.yml

@@ -96,6 +96,7 @@ spring:
                   - /sysDistributionSetting/**
                   - /organization/wechat/**
                   - /signIn/**
+                  - /followReconciliation/**
 
         - id: summary_route
           uri: http://172.24.144.227:9898/

+ 1 - 0
gateway/src/main/resources/application-test.yml

@@ -98,6 +98,7 @@ spring:
                   - /account/**
                   - /accountCard/**
                   - /amountAuditing/**
+                  - /followReconciliation/**
 
         - id: summary_route
           uri: http://192.168.5.250:9898/

+ 18 - 3
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/component/AnShengCrawlerRequestComponent.java

@@ -290,14 +290,12 @@ public class AnShengCrawlerRequestComponent {
      * @param headers 请求头
      * @return 支付链接
      */
-    public String payment(AnShengCrawlerPaymentRequest request, HttpHeaders headers) {
+    public AnShengCrawlerPaymentResponse payment(AnShengCrawlerPaymentRequest request, HttpHeaders headers) {
         try {
             return Optional.ofNullable(requestComponent.formData(
                             RequestUrl.PAYMENT.getRequestUrl(anShengCrawlerProperties.getUrl()),
                             request, AnShengCrawlerPaymentResponse.class, headers))
                     .map(ResponseEntity::getBody)
-                    .map(AnShengCrawlerPaymentResponse::getData)
-                    .map(AnShengCrawlerPaymentResponse.DataDTO::getFxQRCode)
                     .orElse(null);
         } catch (Exception e) {
             e.printStackTrace();
@@ -382,4 +380,21 @@ public class AnShengCrawlerRequestComponent {
         log.info("滑块码:{}",JSONObject.toJSONString(dragSliderResp));
         return dragSliderResp;
     }
+
+    public AnShengCrawlerQuoteResultResponse queryAutoUnderwriteInfo(MultiValueMap<String, String> secondForm,HttpHeaders headers) {
+        ResponseEntity<AnShengCrawlerQuoteResultResponse> responseEntity = requestComponent.formData(RequestUrl.QUERY_AUTO_UNDERWRITE_INFO.getRequestUrl(anShengCrawlerProperties.getUrl()), secondForm, AnShengCrawlerQuoteResultResponse.class, headers);
+
+        AnShengCrawlerQuoteResultResponse response = Optional.ofNullable(responseEntity)
+                .map(HttpEntity::getBody)
+                .orElseThrow(() -> new SystemException("程序异常请联系管理员"));
+
+        return response;
+    }
+
+    public AnShengCrawlerPolicyResponse getSaleSlip(AnShengCrawlerSaleSlipRequest anShengCrawlerSaleSlipRequest, HttpHeaders headers) {
+        ResponseEntity<AnShengCrawlerPolicyResponse> responseEntity = requestComponent.formData(RequestUrl.GET_SALE_SLIP.getRequestUrl(anShengCrawlerProperties.getUrl()), anShengCrawlerSaleSlipRequest, AnShengCrawlerPolicyResponse.class, headers);
+        return Optional.ofNullable(responseEntity)
+                .map(HttpEntity::getBody)
+                .orElseThrow(() -> new SystemException("程序异常请联系管理员"));
+    }
 }

+ 7 - 1
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/constant/enums/RequestUrl.java

@@ -50,7 +50,13 @@ public enum RequestUrl implements CrawlerRequestUrlStandard {
     NEW_ORDER("/astmobile/newgsOrder.do", "获取订单"),
 
     //   新归属登录
-    NEW_GS_LOGIN("/astmobile/newgsLogin.do", "归属登录")
+    NEW_GS_LOGIN("/astmobile/newgsLogin.do", "归属登录"),
+
+    //   新归属登录
+    QUERY_AUTO_UNDERWRITE_INFO("/portalapi/queryAutoUnderwriteInfo", "归属登录"),
+
+    //   获取销售单
+    GET_SALE_SLIP("/portalapi/getSaleSlip", "获取销售单")
 
 
     ;

+ 5 - 1
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerComprehensiveQueryInsurenetRequest.java

@@ -49,10 +49,13 @@ public class AnShengCrawlerComprehensiveQueryInsurenetRequest {
     @JsonProperty("pageSize")
     private Integer pageSize;
 
+    @JsonProperty("vehicleLicenceCode")
+    private String vehicleLicenceCode;
+
     @JsonProperty("channelSourceList")
     private List<String> channelSourceList;
 
-    public AnShengCrawlerComprehensiveQueryInsurenetRequest(String agentCode, String departmentCode, String documentNo, String quotationTime) {
+    public AnShengCrawlerComprehensiveQueryInsurenetRequest(String agentCode, String departmentCode, String documentNo, String quotationTime,String vehicleLicenceCode) {
         this.agentCode = agentCode;
         this.updateType = 2;
         this.page = 1;
@@ -73,5 +76,6 @@ public class AnShengCrawlerComprehensiveQueryInsurenetRequest {
         // 订单号
         this.documentNo = documentNo;
         this.isSubDepartment = true;
+        this.vehicleLicenceCode = vehicleLicenceCode;
     }
 }

+ 30 - 0
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerSaleSlipRequest.java

@@ -0,0 +1,30 @@
+package com.jzg.quotation.ansheng.crawler.entity.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class AnShengCrawlerSaleSlipRequest implements Serializable {
+
+    @JsonProperty("documentNo")
+    private String documentNo;
+
+    @JsonProperty("type")
+    private String type;
+
+
+    public AnShengCrawlerSaleSlipRequest(String documentNo){
+        this.documentNo = documentNo;
+        this.type = "5";
+
+    }
+
+
+}

+ 3497 - 0
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/response/AnShengCrawlerPolicyResponse.java

@@ -0,0 +1,3497 @@
+package com.jzg.quotation.ansheng.crawler.entity.response;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 完整保单信息响应实体(全字段)
+ */
+@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class AnShengCrawlerPolicyResponse implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @JsonProperty("code")
+    private Integer code;
+
+    @JsonProperty("data")
+    private DataVo data;
+
+    @JsonProperty("message")
+    private String message;
+
+    @JsonProperty("simpleMessage")
+    private String simpleMessage;
+
+    @Data
+    @JsonIgnoreProperties(ignoreUnknown = true)
+    public static class DataVo implements Serializable {
+        private static final long serialVersionUID = 1L;
+
+        @JsonProperty("isTryCal")
+        private Boolean isTryCal;
+
+        @JsonProperty("breakRules")
+        private Boolean breakRules;
+
+        @JsonProperty("isDutyAmount")
+        private Boolean isDutyAmount;
+
+        @JsonProperty("groupCodeIsView")
+        private Boolean groupCodeIsView;
+
+        @JsonProperty("isApplicantPayment")
+        private String isApplicantPayment;
+
+        @JsonProperty("cheatPermission")
+        private Boolean cheatPermission;
+
+        @JsonProperty("saleChannelSource")
+        private SaleChannelSource saleChannelSource;
+
+        @JsonProperty("isPolicyPaymentSwitch")
+        private String isPolicyPaymentSwitch;
+
+        @JsonProperty("isVirtualProductFlag")
+        private Boolean isVirtualProductFlag;
+
+        @JsonProperty("isShowFloatCommision")
+        private Boolean isShowFloatCommision;
+
+        @JsonProperty("isBusinessInsureFlag")
+        private Boolean isBusinessInsureFlag;
+
+        @JsonProperty("AbleShowVehicleStates")
+        private String ableShowVehicleStates;
+
+        @JsonProperty("isUsePlatform")
+        private Boolean isUsePlatform;
+
+        @JsonProperty("giftFlag")
+        private String giftFlag;
+
+        @JsonProperty("abstemiousCarTaxFlag")
+        private String abstemiousCarTaxFlag;
+
+        @JsonProperty("contract")
+        private Contract contract;
+
+        @JsonProperty("autoBusinessType")
+        private String autoBusinessType;
+
+        @JsonProperty("floatDiscountConfigList")
+        private List<FloatDiscountConfig> floatDiscountConfigList;
+
+        @JsonProperty("premiumParameterMap")
+        private Map<String, String> premiumParameterMap;
+
+        @JsonProperty("policyRatioSum")
+        private PolicyRatioSum policyRatioSum;
+
+        @JsonProperty("isAutoPlan")
+        private Boolean isAutoPlan;
+
+        @JsonProperty("isCompulsoryInsureFlag")
+        private Boolean isCompulsoryInsureFlag;
+
+        @JsonProperty("policySaleInfo")
+        private PolicySaleInfo policySaleInfo;
+
+        @JsonProperty("UnableShowField")
+        private UnableShowField unableShowField;
+
+        @JsonProperty("refundFlag")
+        private Boolean refundFlag;
+
+        @JsonProperty("isAxa")
+        private Boolean isAxa;
+
+        @JsonProperty("isFDDLock")
+        private String isFDDLock;
+
+        /* ================= 内部类 ================= */
+
+        @Data
+        @JsonIgnoreProperties(ignoreUnknown = true)
+        public static class SaleChannelSource implements Serializable {
+            private static final long serialVersionUID = 1L;
+
+            @JsonProperty("page")
+            private Integer page;
+            @JsonProperty("pageSize")
+            private Integer pageSize;
+            @JsonProperty("saleNo")
+            private String saleNo;
+        }
+
+        @Data
+        @JsonIgnoreProperties(ignoreUnknown = true)
+        public static class FloatDiscountConfig implements Serializable {
+            private static final long serialVersionUID = 1L;
+
+            @JsonProperty("floatId")
+            private String floatId;
+            @JsonProperty("floatName")
+            private String floatName;
+            @JsonProperty("floatValue")
+            private Double floatValue;
+            @JsonProperty("departmentCode")
+            private String departmentCode;
+            @JsonProperty("departmentName")
+            private String departmentName;
+            @JsonProperty("displayFlag")
+            private String displayFlag;
+        }
+
+        @Data
+        @JsonIgnoreProperties(ignoreUnknown = true)
+        public static class PolicyRatioSum implements Serializable {
+            private static final long serialVersionUID = 1L;
+
+            @JsonProperty("ratioOd")
+            private Double ratioOd;
+            @JsonProperty("ratioTp")
+            private Double ratioTp;
+            @JsonProperty("ratioTheft")
+            private Double ratioTheft;
+            @JsonProperty("ratioOther")
+            private Double ratioOther;
+            @JsonProperty("ratiototal")
+            private Double ratiototal;
+            @JsonProperty("averageRatio")
+            private Double averageRatio;
+        }
+
+        @Data
+        @JsonIgnoreProperties(ignoreUnknown = true)
+        public static class PolicySaleInfo implements Serializable {
+            private static final long serialVersionUID = 1L;
+
+            @JsonProperty("saleNo")
+            private String saleNo;
+            @JsonProperty("dataSource")
+            private String dataSource;
+            @JsonProperty("departmentCode")
+            private String departmentCode;
+            @JsonProperty("applicantCode")
+            private String applicantCode;
+            @JsonProperty("signTime")
+            private String signTime;
+            @JsonProperty("applyTime")
+            private String applyTime;
+            @JsonProperty("currencyCode")
+            private String currencyCode;
+            @JsonProperty("totalStandardPremium")
+            private Double totalStandardPremium;
+            @JsonProperty("totalAgreePremium")
+            private Double totalAgreePremium;
+            @JsonProperty("totalActualPremium")
+            private Double totalActualPremium;
+        }
+
+        @Data
+        @JsonIgnoreProperties(ignoreUnknown = true)
+        public static class UnableShowField implements Serializable {
+            private static final long serialVersionUID = 1L;
+
+            @JsonProperty("P")
+            private String p;
+            @JsonProperty("T")
+            private String t;
+        }
+
+        @Data
+        @JsonIgnoreProperties(ignoreUnknown = true)
+        public static class Contract implements Serializable {
+            private static final long serialVersionUID = 1L;
+
+            @JsonProperty("page")
+            private Integer page;
+            @JsonProperty("pageSize")
+            private Integer pageSize;
+            @JsonProperty("policyBase")
+            private PolicyBase policyBase;
+            @JsonProperty("brandAutoModel")
+            private BrandAutoModel brandAutoModel;
+            @JsonProperty("targets")
+            private List<Target> targets;
+            @JsonProperty("policyPayments")
+            private List<PolicyPayment> policyPayments;
+            @JsonProperty("policyAttachments")
+            private List<PolicyAttachment> policyAttachments;
+            @JsonProperty("policyPersons")
+            private List<PolicyPerson> policyPersons;
+            @JsonProperty("agentDefine")
+            private AgentDefine agentDefine;
+            @JsonProperty("departmentDefine")
+            private DepartmentDefine departmentDefine;
+            @JsonProperty("planDefine")
+            private PlanDefine planDefine;
+            @JsonProperty("productDefine")
+            private ProductDefine productDefine;
+            @JsonProperty("saleBusinessSource")
+            private SaleBusinessSource saleBusinessSource;
+            @JsonProperty("policyCoverages")
+            private List<PolicyCoverage> policyCoverages;
+            @JsonProperty("productDutys")
+            private List<ProductDuty> productDutys;
+            @JsonProperty("policyRatios")
+            private List<ContractPolicyRatio> policyRatios;
+            @JsonProperty("underwriteInfos")
+            private List<UnderwriteInfo> underwriteInfos;
+            @JsonProperty("billInfoDetail")
+            private BillInfoDetail billInfoDetail;
+            @JsonProperty("beneficiaries")
+            private List<Object> beneficiaries;
+            @JsonProperty("claimRecordList")
+            private List<Object> claimRecordList;
+            @JsonProperty("reInsureItemList")
+            private List<Object> reInsureItemList;
+            @JsonProperty("carInsurancePlatformList")
+            private List<Object> carInsurancePlatformList;
+            @JsonProperty("endorseApplyInfo")
+            private EndorseApplyInfo endorseApplyInfo;
+            @JsonProperty("policyExtend")
+            private PolicyExtend policyExtend;
+            @JsonProperty("flag")
+            private Boolean flag;
+            @JsonProperty("hasNon")
+            private Boolean hasNon;
+            @JsonProperty("allAmountChangeFlag")
+            private String allAmountChangeFlag;
+            @JsonProperty("fullReductionInfo")
+            private FullReductionInfo fullReductionInfo;
+            @JsonProperty("premiumParameter")
+            private PremiumParameter premiumParameter;
+            @JsonProperty("policyRelations")
+            private List<PolicyRelation> policyRelations;
+            @JsonProperty("policyRelInfo")
+            private PolicyRelInfo policyRelInfo;
+            @JsonProperty("oneCarOnePriceInfo")
+            private OneCarOnePriceInfo oneCarOnePriceInfo;
+            @JsonProperty("noVehicleNo")
+            private Boolean noVehicleNo;
+            @JsonProperty("noCarowner")
+            private Boolean noCarowner;
+            @JsonProperty("cheatQueryResult")
+            private List<CheatQueryResult> cheatQueryResult;
+            @JsonProperty("riskInfo")
+            private List<Object> riskInfo;
+            @JsonProperty("releaseMark")
+            private Boolean releaseMark;
+            @JsonProperty("vinVehciles")
+            private List<VinVehcile> vinVehciles;
+            @JsonProperty("lastUnderwriteInfo")
+            private LastUnderwriteInfo lastUnderwriteInfo;
+            @JsonProperty("haveCBDorODorCDA")
+            private Boolean haveCBDorODorCDA;
+            @JsonProperty("cancelPolicy")
+            private Boolean cancelPolicy;
+            @JsonProperty("returnPolicy")
+            private Boolean returnPolicy;
+            @JsonProperty("claimReturnBlackPolicy")
+            private Boolean claimReturnBlackPolicy;
+            @JsonProperty("businessType")
+            private String businessType;
+            @JsonProperty("insuranceEndTime")
+            private String insuranceEndTime;
+            @JsonProperty("departmentCode")
+            private String departmentCode;
+            @JsonProperty("planCode")
+            private String planCode;
+            @JsonProperty("insuranceBeginTime")
+            private String insuranceBeginTime;
+            @JsonProperty("applicant")
+            private Applicant applicant;
+            @JsonProperty("vehicle")
+            private Vehicle vehicle;
+            @JsonProperty("usageAttributeCode")
+            private String usageAttributeCode;
+            @JsonProperty("insuraner")
+            private Insuraner insuraner;
+            @JsonProperty("internalDepartmentCode")
+            private String internalDepartmentCode;
+            @JsonProperty("businessInsureCa")
+            private Boolean businessInsureCa;
+            @JsonProperty("compulsoryInsureCa")
+            private Boolean compulsoryInsureCa;
+            @JsonProperty("productCode")
+            private String productCode;
+            @JsonProperty("vehicleOwner")
+            private VehicleOwner vehicleOwner;
+            @JsonProperty("businessTypeDetail")
+            private String businessTypeDetail;
+            @JsonProperty("returnOrCancelPolicy")
+            private Boolean returnOrCancelPolicy;
+            @JsonProperty("insuredPerson")
+            private InsuredPerson insuredPerson;
+            @JsonProperty("applicantPerson")
+            private ApplicantPerson applicantPerson;
+            @JsonProperty("ownerPerson")
+            private OwnerPerson ownerPerson;
+            @JsonProperty("commerialFlag")
+            private Boolean commerialFlag;
+            @JsonProperty("vehicleAge")
+            private Double vehicleAge;
+
+            /* ===== Contract 的内部类 ===== */
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class PolicyBase implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("createdDate")
+                private String createdDate;
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("applyPolicyNo")
+                private String applyPolicyNo;
+                @JsonProperty("saleNo")
+                private String saleNo;
+                @JsonProperty("vehicleLicenceCode")
+                private String vehicleLicenceCode;
+                @JsonProperty("vehicleFrameNo")
+                private String vehicleFrameNo;
+                @JsonProperty("applyTime")
+                private String applyTime;
+                @JsonProperty("underwriteMark")
+                private String underwriteMark;
+                @JsonProperty("inputByName")
+                private String inputByName;
+                @JsonProperty("inputBy")
+                private String inputBy;
+                @JsonProperty("inputDate")
+                private String inputDate;
+                @JsonProperty("planCode")
+                private String planCode;
+                @JsonProperty("productCode")
+                private String productCode;
+                @JsonProperty("departmentCode")
+                private String departmentCode;
+                @JsonProperty("includeSubDep")
+                private Boolean includeSubDep;
+                @JsonProperty("channelSource")
+                private String channelSource;
+                @JsonProperty("insuranceBeginTime")
+                private String insuranceBeginTime;
+                @JsonProperty("insuranceEndTime")
+                private String insuranceEndTime;
+                @JsonProperty("applicantName")
+                private String applicantName;
+                @JsonProperty("applicantPhone")
+                private String applicantPhone;
+                @JsonProperty("insuranerName")
+                private String insuranerName;
+                @JsonProperty("agentCode")
+                private String agentCode;
+                @JsonProperty("agentLevelCode")
+                private String agentLevelCode;
+                @JsonProperty("agentName")
+                private String agentName;
+                @JsonProperty("currencyCode")
+                private String currencyCode;
+                @JsonProperty("currencyCodeName")
+                private String currencyCodeName;
+                @JsonProperty("totalInsuredAmount")
+                private Double totalInsuredAmount;
+                @JsonProperty("totalStandardPremium")
+                private Double totalStandardPremium;
+                @JsonProperty("totalAgreePremium")
+                private Double totalAgreePremium;
+                @JsonProperty("totalActualPremium")
+                private Double totalActualPremium;
+                @JsonProperty("totalNetPremium")
+                private Double totalNetPremium;
+                @JsonProperty("totalActualSumPremium")
+                private Double totalActualSumPremium;
+                @JsonProperty("addedValueTax")
+                private Double addedValueTax;
+                @JsonProperty("rateScale")
+                private Integer rateScale;
+                @JsonProperty("rateTwoScale")
+                private Integer rateTwoScale;
+                @JsonProperty("businessType")
+                private String businessType;
+                @JsonProperty("businessTypeDetail")
+                private String businessTypeDetail;
+                @JsonProperty("insuranceBeginTimeSY")
+                private String insuranceBeginTimeSY;
+                @JsonProperty("targetType")
+                private String targetType;
+                @JsonProperty("shortTimeCoefficient")
+                private String shortTimeCoefficient;
+                @JsonProperty("quoteTaskNo")
+                private String quoteTaskNo;
+                @JsonProperty("ratioODSum")
+                private Double ratioODSum;
+                @JsonProperty("ratioTPSum")
+                private Double ratioTPSum;
+                @JsonProperty("ratioTHEFTSum")
+                private Double ratioTHEFTSum;
+                @JsonProperty("ratioOTHERSum")
+                private Double ratioOTHERSum;
+                @JsonProperty("fixedSpecialPromise")
+                private String fixedSpecialPromise;
+                @JsonProperty("alterableSpecialPromise")
+                private String alterableSpecialPromise;
+                @JsonProperty("policyScoreDecisionWay")
+                private String policyScoreDecisionWay;
+                @JsonProperty("keyOverServer")
+                private String keyOverServer;
+                @JsonProperty("applyQueryCode")
+                private String applyQueryCode;
+                @JsonProperty("applyQueryPlatformID")
+                private String applyQueryPlatformID;
+                @JsonProperty("ePolicyPDFTime")
+                private String ePolicyPDFTime;
+                @JsonProperty("disputedSettleMode")
+                private String disputedSettleMode;
+                @JsonProperty("disputedSettleModeName")
+                private String disputedSettleModeName;
+                @JsonProperty("signTime")
+                private String signTime;
+                @JsonProperty("personnelName")
+                private String personnelName;
+                @JsonProperty("claimRecordBizSize")
+                private Integer claimRecordBizSize;
+                @JsonProperty("claimRecordSize")
+                private Integer claimRecordSize;
+                @JsonProperty("realBusinessType")
+                private String realBusinessType;
+                @JsonProperty("relationId")
+                private String relationId;
+                @JsonProperty("transfer")
+                private String transfer;
+                @JsonProperty("forcePolicyFlag")
+                private String forcePolicyFlag;
+                @JsonProperty("relationPolicy")
+                private String relationPolicy;
+                @JsonProperty("relationPolicyName")
+                private String relationPolicyName;
+                @JsonProperty("policySource")
+                private String policySource;
+                @JsonProperty("appCheckVihecleCode")
+                private String appCheckVihecleCode;
+                @JsonProperty("getPoundage")
+                private String getPoundage;
+                @JsonProperty("mainVersionNo")
+                private String mainVersionNo;
+                @JsonProperty("firstTrialTaskNo")
+                private String firstTrialTaskNo;
+                @JsonProperty("commissionRateUpper")
+                private String commissionRateUpper;
+                @JsonProperty("companyCommissionRateUpper")
+                private String companyCommissionRateUpper;
+                @JsonProperty("commissionChargeProportion")
+                private String commissionChargeProportion;
+                @JsonProperty("certificationType")
+                private String certificationType;
+                @JsonProperty("baseFlag")
+                private String baseFlag;
+                @JsonProperty("allClaimAmountBiz")
+                private Integer allClaimAmountBiz;
+                @JsonProperty("allClaimAmount")
+                private Integer allClaimAmount;
+                @JsonProperty("peccancyRecordSize")
+                private String peccancyRecordSize;
+                @JsonProperty("localRenewView")
+                private String localRenewView;
+                @JsonProperty("localPeccancyZize")
+                private Integer localPeccancyZize;
+                @JsonProperty("localLossRatio")
+                private Integer localLossRatio;
+                @JsonProperty("illegalInsuredCertFlag")
+                private Boolean illegalInsuredCertFlag;
+                @JsonProperty("immediateEffectFlag")
+                private String immediateEffectFlag;
+                @JsonProperty("servicePolicyList")
+                private List<ServicePolicy> servicePolicyList;
+                @JsonProperty("standarded")
+                private String standarded;
+                @JsonProperty("circPaymentNo")
+                private String circPaymentNo;
+                @JsonProperty("isManualRateFlag")
+                private String isManualRateFlag;
+                @JsonProperty("notSeeFeeSign")
+                private String notSeeFeeSign;
+                @JsonProperty("isHaveFee")
+                private String isHaveFee;
+                @JsonProperty("isOverdue")
+                private Boolean isOverdue;
+                @JsonProperty("blackDivisor")
+                private String blackDivisor;
+                @JsonProperty("policyNoState")
+                private String policyNoState;
+                @JsonProperty("basicTypeCountsMap")
+                private List<Object> basicTypeCountsMap;
+                @JsonProperty("policyAssociationQuotation")
+                private String policyAssociationQuotation;
+                @JsonProperty("giftFlowSwitch")
+                private String giftFlowSwitch;
+                @JsonProperty("applicantAgeFlag")
+                private Boolean applicantAgeFlag;
+                @JsonProperty("insuranerAgeFlag")
+                private Boolean insuranerAgeFlag;
+                @JsonProperty("personnelAgeFlag")
+                private Boolean personnelAgeFlag;
+                @JsonProperty("minRatioMode")
+                private String minRatioMode;
+                @JsonProperty("factorScale")
+                private String factorScale;
+                @JsonProperty("insuranceEndTimeSY")
+                private String insuranceEndTimeSY;
+                @JsonProperty("compulsoryInsureFlag")
+                private Boolean compulsoryInsureFlag;
+                @JsonProperty("businessInsureFlag")
+                private Boolean businessInsureFlag;
+                @JsonProperty("shortTimeCoefficientShow")
+                private Boolean shortTimeCoefficientShow;
+
+                @Data
+                @JsonIgnoreProperties(ignoreUnknown = true)
+                public static class ServicePolicy implements Serializable {
+                    private static final long serialVersionUID = 1L;
+
+                    @JsonProperty("page")
+                    private Integer page;
+                    @JsonProperty("pageSize")
+                    private Integer pageSize;
+                    @JsonProperty("policyNo")
+                    private String policyNo;
+                    @JsonProperty("serviceType")
+                    private String serviceType;
+                    @JsonProperty("serviceId")
+                    private String serviceId;
+                    @JsonProperty("activationFlag")
+                    private String activationFlag;
+                    @JsonProperty("inureDate")
+                    private String inureDate;
+                    @JsonProperty("departmentCode")
+                    private String departmentCode;
+                    @JsonProperty("docType")
+                    private String docType;
+                    @JsonProperty("serviceName")
+                    private String serviceName;
+                }
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class BrandAutoModel implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("flag")
+                private String flag;
+                @JsonProperty("limitVehicle")
+                private Integer limitVehicle;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class Target implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("targetType")
+                private String targetType;
+                @JsonProperty("targetId")
+                private String targetId;
+                @JsonProperty("vehicleVer")
+                private String vehicleVer;
+                @JsonProperty("targetCoverages")
+                private List<TargetCoverage> targetCoverages;
+                @JsonProperty("targetRatios")
+                private List<Object> targetRatios;
+                @JsonProperty("beneficiaryList")
+                private List<Object> beneficiaryList;
+                @JsonProperty("policyPricing")
+                private PolicyPricing policyPricing;
+                @JsonProperty("vehicleLicenceCode")
+                private String vehicleLicenceCode;
+                @JsonProperty("vehicleFrameNo")
+                private String vehicleFrameNo;
+                @JsonProperty("engineNo")
+                private String engineNo;
+                @JsonProperty("firstRegisterDate")
+                private String firstRegisterDate;
+                @JsonProperty("importFlag")
+                private String importFlag;
+                @JsonProperty("vehicleType")
+                private String vehicleType;
+                @JsonProperty("vehicleStyle")
+                private String vehicleStyle;
+                @JsonProperty("autoModelCode")
+                private String autoModelCode;
+                @JsonProperty("vehicleSeats")
+                private Integer vehicleSeats;
+                @JsonProperty("originalVehicleSeats")
+                private Integer originalVehicleSeats;
+                @JsonProperty("fuelType")
+                private String fuelType;
+                @JsonProperty("autoModelChnName")
+                private String autoModelChnName;
+                @JsonProperty("licenceTypeCode")
+                private String licenceTypeCode;
+                @JsonProperty("ecdemicVehicleFlag")
+                private String ecdemicVehicleFlag;
+                @JsonProperty("exhaustCapability")
+                private Double exhaustCapability;
+                @JsonProperty("originalExhaustCapability")
+                private Double originalExhaustCapability;
+                @JsonProperty("vehicleTonnages")
+                private Integer vehicleTonnages;
+                @JsonProperty("originalVehicleTonnages")
+                private Integer originalVehicleTonnages;
+                @JsonProperty("power")
+                private Integer power;
+                @JsonProperty("maxDesignSpeed")
+                private String maxDesignSpeed;
+                @JsonProperty("customerNegotiatePrice")
+                private Double customerNegotiatePrice;
+                @JsonProperty("originalCustomerNegotiatePrice")
+                private Double originalCustomerNegotiatePrice;
+                @JsonProperty("vehicleTax")
+                private VehicleTax vehicleTax;
+                @JsonProperty("vehicleStyleDesc")
+                private String vehicleStyleDesc;
+                @JsonProperty("modelCode")
+                private String modelCode;
+                @JsonProperty("weigth")
+                private Double weigth;
+                @JsonProperty("originalVehicleWeigth")
+                private Double originalVehicleWeigth;
+                @JsonProperty("maker")
+                private String maker;
+                @JsonProperty("brandChnName")
+                private String brandChnName;
+                @JsonProperty("averageMile")
+                private Integer averageMile;
+                @JsonProperty("carName")
+                private String carName;
+                @JsonProperty("categoryCode")
+                private String categoryCode;
+                @JsonProperty("categoryName")
+                private String categoryName;
+                @JsonProperty("configType")
+                private String configType;
+                @JsonProperty("deptCode")
+                private String deptCode;
+                @JsonProperty("deptName")
+                private String deptName;
+                @JsonProperty("modelIdCode")
+                private String modelIdCode;
+                @JsonProperty("noticeType")
+                private String noticeType;
+                @JsonProperty("partInfo")
+                private String partInfo;
+                @JsonProperty("powerType")
+                private String powerType;
+                @JsonProperty("series")
+                private String series;
+                @JsonProperty("seriesCode")
+                private String seriesCode;
+                @JsonProperty("tradeCode")
+                private String tradeCode;
+                @JsonProperty("tradeName")
+                private String tradeName;
+                @JsonProperty("vehicleLossInsuredValue")
+                private Integer vehicleLossInsuredValue;
+                @JsonProperty("vehicleTypeName")
+                private String vehicleTypeName;
+                @JsonProperty("makeDate")
+                private String makeDate;
+                @JsonProperty("stopFlag")
+                private String stopFlag;
+                @JsonProperty("detailDesc")
+                private String detailDesc;
+                @JsonProperty("dbVehicleType")
+                private String dbVehicleType;
+                @JsonProperty("brand")
+                private String brand;
+                @JsonProperty("vehicleColor")
+                private String vehicleColor;
+                @JsonProperty("salePrice")
+                private String salePrice;
+                @JsonProperty("brandCode")
+                private String brandCode;
+                @JsonProperty("noDamageYears")
+                private Integer noDamageYears;
+                @JsonProperty("madeDate")
+                private String madeDate;
+                @JsonProperty("licenceTypeName")
+                private String licenceTypeName;
+                @JsonProperty("modelsListedYear")
+                private String modelsListedYear;
+                @JsonProperty("vehiclePurchasePrice")
+                private String vehiclePurchasePrice;
+                @JsonProperty("thirdResultClaimRecordBiz")
+                private List<Object> thirdResultClaimRecordBiz;
+                @JsonProperty("thirdResultPeccancyRecord")
+                private List<Object> thirdResultPeccancyRecord;
+                @JsonProperty("riskWarnings")
+                private List<Object> riskWarnings;
+                @JsonProperty("duplicatedList")
+                private List<Object> duplicatedList;
+                @JsonProperty("precisionScores")
+                private List<Object> precisionScores;
+                @JsonProperty("checkVehicleInfo")
+                private CheckVehicleInfo checkVehicleInfo;
+                @JsonProperty("theftproofEquipmentCode")
+                private String theftproofEquipmentCode;
+                @JsonProperty("standardName")
+                private String standardName;
+                @JsonProperty("vehicleDBFlag")
+                private String vehicleDBFlag;
+                @JsonProperty("diffVehicleAgeYearMoth")
+                private String diffVehicleAgeYearMoth;
+                @JsonProperty("macauVehicleFlag")
+                private String macauVehicleFlag;
+                @JsonProperty("ratio")
+                private String ratio;
+                @JsonProperty("vehicleRegisterDate")
+                private String vehicleRegisterDate;
+                @JsonProperty("commissionAgent")
+                private Map<String, Object> commissionAgent;
+                @JsonProperty("totalMass")
+                private Double totalMass;
+                @JsonProperty("local")
+                private Boolean local;
+                @JsonProperty("targetTotalActualPremium")
+                private Double targetTotalActualPremium;
+
+                @Data
+                @JsonIgnoreProperties(ignoreUnknown = true)
+                public static class TargetCoverage implements Serializable {
+                    private static final long serialVersionUID = 1L;
+
+                    @JsonProperty("page")
+                    private Integer page;
+                    @JsonProperty("pageSize")
+                    private Integer pageSize;
+                    @JsonProperty("dutyId")
+                    private String dutyId;
+                    @JsonProperty("fullYearPremium")
+                    private String fullYearPremium;
+                    @JsonProperty("dutyCode")
+                    private String dutyCode;
+                    @JsonProperty("dutyChineseName")
+                    private String dutyChineseName;
+                    @JsonProperty("seats")
+                    private Integer seats;
+                    @JsonProperty("premiumRate")
+                    private Integer premiumRate;
+                    @JsonProperty("deductionAmount")
+                    private Integer deductionAmount;
+                    @JsonProperty("deductible")
+                    private Integer deductible;
+                    @JsonProperty("medicalAmount")
+                    private Integer medicalAmount;
+                    @JsonProperty("dieAmount")
+                    private Integer dieAmount;
+                    @JsonProperty("propertyAmount")
+                    private Integer propertyAmount;
+                    @JsonProperty("noFaultMedicalAmount")
+                    private Integer noFaultMedicalAmount;
+                    @JsonProperty("noFaultDieAmount")
+                    private Integer noFaultDieAmount;
+                    @JsonProperty("noFaultPropertyAmount")
+                    private Integer noFaultPropertyAmount;
+                    @JsonProperty("allAmount")
+                    private Integer allAmount;
+                    @JsonProperty("insuredAmount")
+                    private Double insuredAmount;
+                    @JsonProperty("totalStandardPremium")
+                    private Double totalStandardPremium;
+                    @JsonProperty("totalAgreePremium")
+                    private Double totalAgreePremium;
+                    @JsonProperty("totalActualPremium")
+                    private Double totalActualPremium;
+                    @JsonProperty("totalNetPremium")
+                    private Double totalNetPremium;
+                    @JsonProperty("addedValueTax")
+                    private Double addedValueTax;
+                    @JsonProperty("equipmentInsureAmount")
+                    private Double equipmentInsureAmount;
+                    @JsonProperty("allAmountDef")
+                    private Double allAmountDef;
+                    @JsonProperty("newFlag")
+                    private Boolean newFlag;
+                    @JsonProperty("modifyFlag")
+                    private Boolean modifyFlag;
+                    @JsonProperty("calculateEndorsePremium")
+                    private Integer calculateEndorsePremium;
+                    @JsonProperty("checkEndorsePremium")
+                    private Double checkEndorsePremium;
+                    @JsonProperty("dutyVer")
+                    private String dutyVer;
+                    @JsonProperty("applyPolicyNo")
+                    private String applyPolicyNo;
+                    @JsonProperty("insuredAmountDef")
+                    private Double insuredAmountDef;
+                    @JsonProperty("dutyTargetType")
+                    private String dutyTargetType;
+                    @JsonProperty("checkTotalNetPremium")
+                    private Integer checkTotalNetPremium;
+                    @JsonProperty("checkAddedValueTax")
+                    private Integer checkAddedValueTax;
+                    @JsonProperty("checked")
+                    private Boolean checked;
+                    @JsonProperty("deductionRate")
+                    private Integer deductionRate;
+                    @JsonProperty("serviceNum")
+                    private String serviceNum;
+                    @JsonProperty("mileage")
+                    private String mileage;
+                    @JsonProperty("setMeal")
+                    private String setMeal;
+                    @JsonProperty("isTelpeson")
+                    private String isTelpeson;
+                    @JsonProperty("telPhone")
+                    private String telPhone;
+                    @JsonProperty("insuranceBeginTime")
+                    private String insuranceBeginTime;
+                    @JsonProperty("insuranceEndTime")
+                    private String insuranceEndTime;
+                    @JsonProperty("refundFlag")
+                    private String refundFlag;
+                    @JsonProperty("coverageNum")
+                    private Integer coverageNum;
+                    @JsonProperty("isShareSumDutyFlag")
+                    private String isShareSumDutyFlag;
+                    @JsonProperty("priority")
+                    private String priority;
+                    @JsonProperty("coverageCancelOrReturn")
+                    private Boolean coverageCancelOrReturn;
+                    @JsonProperty("coverageReturn")
+                    private Boolean coverageReturn;
+                    @JsonProperty("coverageCancel")
+                    private Boolean coverageCancel;
+                    @JsonProperty("claimCoverageReturn")
+                    private Boolean claimCoverageReturn;
+                    @JsonProperty("ariExpense")
+                    private Integer ariExpense;
+                }
+
+                @Data
+                @JsonIgnoreProperties(ignoreUnknown = true)
+                public static class PolicyPricing implements Serializable {
+                    private static final long serialVersionUID = 1L;
+
+                    @JsonProperty("page")
+                    private Integer page;
+                    @JsonProperty("pageSize")
+                    private Integer pageSize;
+                    @JsonProperty("usageAttributeCode")
+                    private String usageAttributeCode;
+                    @JsonProperty("ownershipAttributeCode")
+                    private String ownershipAttributeCode;
+                    @JsonProperty("dbVehicleValue")
+                    private Integer dbVehicleValue;
+                    @JsonProperty("isMotorcade")
+                    private String isMotorcade;
+                    @JsonProperty("specialCarFlag")
+                    private String specialCarFlag;
+                    @JsonProperty("autoRuleRatioOD")
+                    private Double autoRuleRatioOD;
+                    @JsonProperty("autoRuleRatioTP")
+                    private Double autoRuleRatioTP;
+                    @JsonProperty("autoRuleRatioTHEFT")
+                    private Double autoRuleRatioTHEFT;
+                    @JsonProperty("autoRuleRatioOTHER")
+                    private Double autoRuleRatioOTHER;
+                    @JsonProperty("autoFloatTargetRebate")
+                    private Integer autoFloatTargetRebate;
+                    @JsonProperty("autoFloatRatioOD")
+                    private Integer autoFloatRatioOD;
+                    @JsonProperty("autoFloatHandingCost")
+                    private Integer autoFloatHandingCost;
+                    @JsonProperty("ratioFluctuateType")
+                    private String ratioFluctuateType;
+                    @JsonProperty("ratioFluctuateTypeName")
+                    private String ratioFluctuateTypeName;
+                    @JsonProperty("scoreRunId")
+                    private String scoreRunId;
+                    @JsonProperty("applyQueryCode")
+                    private String applyQueryCode;
+                    @JsonProperty("vehicleTypeChiName")
+                    private String vehicleTypeChiName;
+                    @JsonProperty("priceType")
+                    private String priceType;
+                    @JsonProperty("dbVehicleVeiw")
+                    private String dbVehicleVeiw;
+                    @JsonProperty("dbVehicleBrand")
+                    private String dbVehicleBrand;
+                    @JsonProperty("riskFlag")
+                    private String riskFlag;
+                    @JsonProperty("vehicleAlias")
+                    private String vehicleAlias;
+                    @JsonProperty("dbVehicleTypeName")
+                    private String dbVehicleTypeName;
+                    @JsonProperty("dbVehicleSeats")
+                    private String dbVehicleSeats;
+                    @JsonProperty("dbExhaustCapability")
+                    private String dbExhaustCapability;
+                    @JsonProperty("dbVehicleTonnages")
+                    private String dbVehicleTonnages;
+                    @JsonProperty("dbVehicleWeigth")
+                    private String dbVehicleWeigth;
+                    @JsonProperty("ifModelRate")
+                    private String ifModelRate;
+                    @JsonProperty("modelrate")
+                    private String modelrate;
+                    @JsonProperty("isSpecialInsuranceVehicle")
+                    private String isSpecialInsuranceVehicle;
+                    @JsonProperty("preferentialPremium")
+                    private String preferentialPremium;
+                    @JsonProperty("lastyearStartDate")
+                    private String lastyearStartDate;
+                    @JsonProperty("lastyearEndDate")
+                    private String lastyearEndDate;
+                    @JsonProperty("claimAdjustRatio")
+                    private String claimAdjustRatio;
+                    @JsonProperty("peccancyAdjustRatio")
+                    private String peccancyAdjustRatio;
+                    @JsonProperty("nonclaimAdjustOld")
+                    private Double nonclaimAdjustOld;
+                    @JsonProperty("allClaimAmountBiz")
+                    private Integer allClaimAmountBiz;
+                    @JsonProperty("claimRecordSize")
+                    private Integer claimRecordSize;
+                    @JsonProperty("peccancyPotationSize")
+                    private Integer peccancyPotationSize;
+                    @JsonProperty("peccancyDrunkSize")
+                    private Integer peccancyDrunkSize;
+                    @JsonProperty("reInsureItemList")
+                    private List<Object> reInsureItemList;
+                    @JsonProperty("nonclaimAdjust")
+                    private Double nonclaimAdjust;
+                    @JsonProperty("isMortgage")
+                    private String isMortgage;
+                    @JsonProperty("modelDiscount")
+                    private Double modelDiscount;
+                    @JsonProperty("riskScore")
+                    private Integer riskScore;
+                    @JsonProperty("unifiedScore")
+                    private Integer unifiedScore;
+                    @JsonProperty("color")
+                    private String color;
+                    @JsonProperty("riskScoreTwenty")
+                    private Integer riskScoreTwenty;
+                    @JsonProperty("bizName")
+                    private String bizName;
+                    @JsonProperty("rateTable")
+                    private String rateTable;
+                    @JsonProperty("adviceDiscount")
+                    private Integer adviceDiscount;
+                    @JsonProperty("businessInOrOut")
+                    private String businessInOrOut;
+                    @JsonProperty("modelDiscountShow")
+                    private String modelDiscountShow;
+                    @JsonProperty("ruleRatioOD")
+                    private Double ruleRatioOD;
+                    @JsonProperty("ruleRatioTP")
+                    private Double ruleRatioTP;
+                    @JsonProperty("ruleRatioTHEFT")
+                    private Double ruleRatioTHEFT;
+                    @JsonProperty("ruleRatioOTHER")
+                    private Double ruleRatioOTHER;
+                    @JsonProperty("partInfo")
+                    private String partInfo;
+                    @JsonProperty("vehicleCode")
+                    private String vehicleCode;
+                    @JsonProperty("claimAdjustLevel")
+                    private String claimAdjustLevel;
+                    @JsonProperty("comprehensiveScore")
+                    private Integer comprehensiveScore;
+                    @JsonProperty("ruleRatioAverage")
+                    private Double ruleRatioAverage;
+                    @JsonProperty("sumPeccancy")
+                    private String sumPeccancy;
+                    @JsonProperty("seriousPeccancy")
+                    private String seriousPeccancy;
+                    @JsonProperty("slightPeccancyCount")
+                    private String slightPeccancyCount;
+                    @JsonProperty("electronicCertInfo")
+                    private List<ElectronicCertInfo> electronicCertInfo;
+                    @JsonProperty("lastyearEndDateFormat")
+                    private String lastyearEndDateFormat;
+                    @JsonProperty("newColor")
+                    private String newColor;
+                    @JsonProperty("lastyearStartDateFormat")
+                    private String lastyearStartDateFormat;
+
+                    @Data
+                    @JsonIgnoreProperties(ignoreUnknown = true)
+                    public static class ElectronicCertInfo implements Serializable {
+                        private static final long serialVersionUID = 1L;
+
+                        @JsonProperty("name")
+                        private String name;
+                    }
+                }
+
+                @Data
+                @JsonIgnoreProperties(ignoreUnknown = true)
+                public static class VehicleTax implements Serializable {
+                    private static final long serialVersionUID = 1L;
+
+                    @JsonProperty("page")
+                    private Integer page;
+                    @JsonProperty("pageSize")
+                    private Integer pageSize;
+                    @JsonProperty("lateDay")
+                    private Integer lateDay;
+                    @JsonProperty("urgentState")
+                    private Boolean urgentState;
+                    @JsonProperty("endorseChange")
+                    private Boolean endorseChange;
+                    @JsonProperty("taxDocumentDateString")
+                    private String taxDocumentDateString;
+                    @JsonProperty("startDateString")
+                    private String startDateString;
+                    @JsonProperty("endDateString")
+                    private String endDateString;
+                    @JsonProperty("recordVehicleTax")
+                    private Boolean recordVehicleTax;
+                    @JsonProperty("payTaxe")
+                    private Boolean payTaxe;
+                    @JsonProperty("lowercaseVehicleTaxAmount")
+                    private Integer lowercaseVehicleTaxAmount;
+                }
+
+                @Data
+                @JsonIgnoreProperties(ignoreUnknown = true)
+                public static class CheckVehicleInfo implements Serializable {
+                    private static final long serialVersionUID = 1L;
+
+                    @JsonProperty("page")
+                    private Integer page;
+                    @JsonProperty("pageSize")
+                    private Integer pageSize;
+                    @JsonProperty("checkVehicleFlag")
+                    private String checkVehicleFlag;
+                }
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class PolicyPayment implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("paymentPremiumTimes")
+                private Integer paymentPremiumTimes;
+                @JsonProperty("paymentPersonCode")
+                private String paymentPersonCode;
+                @JsonProperty("paymentBeginDate")
+                private String paymentBeginDate;
+                @JsonProperty("paymentEndDate")
+                private String paymentEndDate;
+                @JsonProperty("actualPremium")
+                private Double actualPremium;
+                @JsonProperty("paymentMode")
+                private String paymentMode;
+                @JsonProperty("paymentPersonCertCode")
+                private String paymentPersonCertCode;
+                @JsonProperty("paymentRate")
+                private Integer paymentRate;
+                @JsonProperty("termId")
+                private String termId;
+                @JsonProperty("shopId")
+                private String shopId;
+                @JsonProperty("flatUnits")
+                private String flatUnits;
+                @JsonProperty("realPaymentMode")
+                private String realPaymentMode;
+                @JsonProperty("accountType")
+                private String accountType;
+                @JsonProperty("isApplicantPayment")
+                private String isApplicantPayment;
+                @JsonProperty("paymentCodeCash")
+                private Boolean paymentCodeCash;
+                @JsonProperty("paymentCodePrePay")
+                private Boolean paymentCodePrePay;
+                @JsonProperty("paymentNeedConfirmCode")
+                private Boolean paymentNeedConfirmCode;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class PolicyAttachment implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("createdDate")
+                private String createdDate;
+                @JsonProperty("updatedDate")
+                private String updatedDate;
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("attachmentNo")
+                private String attachmentNo;
+                @JsonProperty("attachmentType")
+                private String attachmentType;
+                @JsonProperty("attachmentName")
+                private String attachmentName;
+                @JsonProperty("uploadFileNo")
+                private String uploadFileNo;
+                @JsonProperty("uploadFileType")
+                private String uploadFileType;
+                @JsonProperty("uploadFileTypeName")
+                private String uploadFileTypeName;
+                @JsonProperty("secretUploadFileNo")
+                private String secretUploadFileNo;
+                @JsonProperty("uploadFileFlag")
+                private String uploadFileFlag;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class PolicyPerson implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("personnelCode")
+                private String personnelCode;
+                @JsonProperty("personnelAttribute")
+                private String personnelAttribute;
+                @JsonProperty("relationshipWithInsured")
+                private String relationshipWithInsured;
+                @JsonProperty("personnelInfoBase")
+                private PersonnelInfoBase personnelInfoBase;
+                @JsonProperty("sameInsuranerPersonnel")
+                private String sameInsuranerPersonnel;
+                @JsonProperty("person")
+                private Boolean person;
+                @JsonProperty("group")
+                private Boolean group;
+                @JsonProperty("owner")
+                private Boolean owner;
+                @JsonProperty("applicant")
+                private Boolean applicant;
+                @JsonProperty("insuraner")
+                private Boolean insuraner;
+
+                @Data
+                @JsonIgnoreProperties(ignoreUnknown = true)
+                public static class PersonnelInfoBase implements Serializable {
+                    private static final long serialVersionUID = 1L;
+
+                    @JsonProperty("page")
+                    private Integer page;
+                    @JsonProperty("pageSize")
+                    private Integer pageSize;
+                    @JsonProperty("personnelCode")
+                    private String personnelCode;
+                    @JsonProperty("vipMark")
+                    private String vipMark;
+                    @JsonProperty("personTypeDetailCode")
+                    private String personTypeDetailCode;
+                    @JsonProperty("person")
+                    private Person person;
+                    @JsonProperty("personTypeOverseas")
+                    private String personTypeOverseas;
+                    @JsonProperty("certificateType")
+                    private String certificateType;
+                    @JsonProperty("certificateNo")
+                    private String certificateNo;
+                    @JsonProperty("personnelName")
+                    private String personnelName;
+                    @JsonProperty("mobileTelephone")
+                    private String mobileTelephone;
+                    @JsonProperty("address")
+                    private String address;
+
+                    @Data
+                    @JsonIgnoreProperties(ignoreUnknown = true)
+                    public static class Person implements Serializable {
+                        private static final long serialVersionUID = 1L;
+
+                        @JsonProperty("page")
+                        private Integer page;
+                        @JsonProperty("pageSize")
+                        private Integer pageSize;
+                        @JsonProperty("personnelCode")
+                        private String personnelCode;
+                        @JsonProperty("personnelName")
+                        private String personnelName;
+                        @JsonProperty("certificateType")
+                        private String certificateType;
+                        @JsonProperty("certificateNo")
+                        private String certificateNo;
+                        @JsonProperty("mobileTelephone")
+                        private String mobileTelephone;
+                        @JsonProperty("homeAreaCode")
+                        private String homeAreaCode;
+                        @JsonProperty("homeTelephone")
+                        private String homeTelephone;
+                        @JsonProperty("officeAreaCode")
+                        private String officeAreaCode;
+                        @JsonProperty("officeTelephone")
+                        private String officeTelephone;
+                        @JsonProperty("postcode")
+                        private String postcode;
+                        @JsonProperty("email")
+                        private String email;
+                        @JsonProperty("address")
+                        private String address;
+                        @JsonProperty("birthday")
+                        private String birthday;
+                        @JsonProperty("homeAddress")
+                        private String homeAddress;
+                        @JsonProperty("homeAddressAfter")
+                        private String homeAddressAfter;
+                        @JsonProperty("homeAreaCountyCode")
+                        private String homeAreaCountyCode;
+                        @JsonProperty("homeCityCode")
+                        private String homeCityCode;
+                        @JsonProperty("homeProvinceCode")
+                        private String homeProvinceCode;
+                        @JsonProperty("invalidateFlag")
+                        private String invalidateFlag;
+                        @JsonProperty("isRuralOrUrban")
+                        private String isRuralOrUrban;
+                        @JsonProperty("personnelAge")
+                        private String personnelAge;
+                        @JsonProperty("professionCode")
+                        private String professionCode;
+                        @JsonProperty("sexCode")
+                        private String sexCode;
+                        @JsonProperty("effectedDate")
+                        private String effectedDate;
+                        @JsonProperty("expiredDate")
+                        private String expiredDate;
+                        @JsonProperty("certType")
+                        private String certType;
+                        @JsonProperty("nationalityType")
+                        private String nationalityType;
+                        @JsonProperty("longExpiredDate")
+                        private String longExpiredDate;
+                        @JsonProperty("idCardAccess")
+                        private String idCardAccess;
+                        @JsonProperty("idCardAccessDate")
+                        private String idCardAccessDate;
+                        @JsonProperty("homeAddrShow")
+                        private String homeAddrShow;
+                        @JsonProperty("certiAddrShow")
+                        private String certiAddrShow;
+                        @JsonProperty("other1AddrShow")
+                        private String other1AddrShow;
+                        @JsonProperty("other2AddrShow")
+                        private String other2AddrShow;
+                    }
+                }
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class AgentDefine implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("createdBy")
+                private String createdBy;
+                @JsonProperty("createdDate")
+                private String createdDate;
+                @JsonProperty("updatedBy")
+                private String updatedBy;
+                @JsonProperty("updatedDate")
+                private String updatedDate;
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("userId")
+                private String userId;
+                @JsonProperty("principalid")
+                private String principalid;
+                @JsonProperty("agentCode")
+                private String agentCode;
+                @JsonProperty("departmentCode")
+                private String departmentCode;
+                @JsonProperty("organName")
+                private String organName;
+                @JsonProperty("saleTeamCode")
+                private String saleTeamCode;
+                @JsonProperty("agentMark")
+                private String agentMark;
+                @JsonProperty("authorMark")
+                private String authorMark;
+                @JsonProperty("agentChineseName")
+                private String agentChineseName;
+                @JsonProperty("agentAbbr")
+                private String agentAbbr;
+                @JsonProperty("agentCharactorGeneral")
+                private String agentCharactorGeneral;
+                @JsonProperty("agentCharactor")
+                private String agentCharactor;
+                @JsonProperty("agentCharactorName")
+                private String agentCharactorName;
+                @JsonProperty("saleAgentCode")
+                private String saleAgentCode;
+                @JsonProperty("realName")
+                private String realName;
+                @JsonProperty("telephone")
+                private String telephone;
+                @JsonProperty("email")
+                private String email;
+                @JsonProperty("address")
+                private String address;
+                @JsonProperty("openBank")
+                private String openBank;
+                @JsonProperty("openBankName")
+                private String openBankName;
+                @JsonProperty("bankAccount")
+                private String bankAccount;
+                @JsonProperty("agentChief")
+                private String agentChief;
+                @JsonProperty("licenseNo")
+                private String licenseNo;
+                @JsonProperty("queryMark")
+                private String queryMark;
+                @JsonProperty("invalidateDate")
+                private String invalidateDate;
+                @JsonProperty("province")
+                private String province;
+                @JsonProperty("city")
+                private String city;
+                @JsonProperty("cityName")
+                private String cityName;
+                @JsonProperty("organizeType")
+                private String organizeType;
+                @JsonProperty("saleTeamName")
+                private String saleTeamName;
+                @JsonProperty("agentPopedom")
+                private String agentPopedom;
+                @JsonProperty("agentNamePrint")
+                private String agentNamePrint;
+                @JsonProperty("agentInstructionLs")
+                private String agentInstructionLs;
+                @JsonProperty("effectiveDateDate")
+                private String effectiveDateDate;
+                @JsonProperty("businessLicenceNumber")
+                private String businessLicenceNumber;
+                @JsonProperty("licenceIssueTime")
+                private String licenceIssueTime;
+                @JsonProperty("licenceEndTime")
+                private String licenceEndTime;
+                @JsonProperty("licenceSignTime")
+                private String licenceSignTime;
+                @JsonProperty("agentLevelCode")
+                private String agentLevelCode;
+                @JsonProperty("bankPerName")
+                private String bankPerName;
+                @JsonProperty("bankPerType")
+                private String bankPerType;
+                @JsonProperty("bankOpenName")
+                private String bankOpenName;
+                @JsonProperty("bankOpenChnName")
+                private String bankOpenChnName;
+                @JsonProperty("validateApplyUnderwrite")
+                private Integer validateApplyUnderwrite;
+                @JsonProperty("iccardFlag")
+                private String iccardFlag;
+                @JsonProperty("isTotalproject")
+                private String isTotalproject;
+                @JsonProperty("organCodeCard")
+                private String organCodeCard;
+                @JsonProperty("platformQueryControlFlag")
+                private String platformQueryControlFlag;
+                @JsonProperty("platformQueryStandardRatio")
+                private Integer platformQueryStandardRatio;
+                @JsonProperty("platformQueryAlertScale")
+                private Double platformQueryAlertScale;
+                @JsonProperty("platformQueryCurrentRatio")
+                private Double platformQueryCurrentRatio;
+                @JsonProperty("realBusinessType")
+                private String realBusinessType;
+                @JsonProperty("chiefBrandId")
+                private String chiefBrandId;
+                @JsonProperty("chief4S")
+                private String chief4S;
+                @JsonProperty("brand")
+                private String brand;
+                @JsonProperty("deleteFlag")
+                private String deleteFlag;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class DepartmentDefine implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("createdBy")
+                private String createdBy;
+                @JsonProperty("createdDate")
+                private String createdDate;
+                @JsonProperty("updatedBy")
+                private String updatedBy;
+                @JsonProperty("updatedDate")
+                private String updatedDate;
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("departmentCode")
+                private String departmentCode;
+                @JsonProperty("internalDepartmentCode")
+                private String internalDepartmentCode;
+                @JsonProperty("departmentChineseName")
+                private String departmentChineseName;
+                @JsonProperty("departmentAbbrName")
+                private String departmentAbbrName;
+                @JsonProperty("departmentLevel")
+                private Integer departmentLevel;
+                @JsonProperty("foundDate")
+                private String foundDate;
+                @JsonProperty("chineseAddress")
+                private String chineseAddress;
+                @JsonProperty("postCode")
+                private String postCode;
+                @JsonProperty("departmentEnglishName")
+                private String departmentEnglishName;
+                @JsonProperty("englishAddress")
+                private String englishAddress;
+                @JsonProperty("telephone")
+                private String telephone;
+                @JsonProperty("fax")
+                private String fax;
+                @JsonProperty("upperDepartmentCode")
+                private String upperDepartmentCode;
+                @JsonProperty("linkManCode")
+                private String linkManCode;
+                @JsonProperty("levelDepCode")
+                private String levelDepCode;
+                @JsonProperty("regulatoryDepartmentCode")
+                private String regulatoryDepartmentCode;
+                @JsonProperty("secondBranchCode")
+                private String secondBranchCode;
+                @JsonProperty("thirdBranchCode")
+                private String thirdBranchCode;
+                @JsonProperty("needValidateFour")
+                private String needValidateFour;
+                @JsonProperty("pigeonholeDeptCode")
+                private String pigeonholeDeptCode;
+                @JsonProperty("revenueRegisterNo")
+                private String revenueRegisterNo;
+                @JsonProperty("standareasCode")
+                private String standareasCode;
+                @JsonProperty("departmentPrintName")
+                private String departmentPrintName;
+                @JsonProperty("agentRatioSetupRule")
+                private String agentRatioSetupRule;
+                @JsonProperty("validateAttachment")
+                private String validateAttachment;
+                @JsonProperty("noticeBill")
+                private String noticeBill;
+                @JsonProperty("taxPayNo")
+                private String taxPayNo;
+                @JsonProperty("instalment")
+                private Integer instalment;
+                @JsonProperty("reportBeforeRegister")
+                private String reportBeforeRegister;
+                @JsonProperty("alarmMark")
+                private String alarmMark;
+                @JsonProperty("vehicleReportTelephone")
+                private String vehicleReportTelephone;
+                @JsonProperty("vehicleLiscenceCodePrefix")
+                private String vehicleLiscenceCodePrefix;
+                @JsonProperty("financeDepartmentCode")
+                private String financeDepartmentCode;
+                @JsonProperty("claimAddress")
+                private String claimAddress;
+                @JsonProperty("invoicePdf")
+                private String invoicePdf;
+                @JsonProperty("claimDealDepartmentCode")
+                private String claimDealDepartmentCode;
+                @JsonProperty("platform")
+                private String platform;
+                @JsonProperty("reCancelPolicy")
+                private String reCancelPolicy;
+                @JsonProperty("isCanclePolicy")
+                private String isCanclePolicy;
+                @JsonProperty("isQueryBackcode")
+                private String isQueryBackcode;
+                @JsonProperty("isPutChangedPremium")
+                private String isPutChangedPremium;
+                @JsonProperty("uploadHistoryPolicy")
+                private String uploadHistoryPolicy;
+                @JsonProperty("genRestricFlag")
+                private String genRestricFlag;
+                @JsonProperty("invoicePrint")
+                private String invoicePrint;
+                @JsonProperty("printStampTax")
+                private String printStampTax;
+                @JsonProperty("endorseInvoicePrint")
+                private String endorseInvoicePrint;
+                @JsonProperty("checkCar")
+                private String checkCar;
+                @JsonProperty("createPolicyLabel")
+                private String createPolicyLabel;
+                @JsonProperty("needValidate")
+                private String needValidate;
+                @JsonProperty("factorRatio")
+                private String factorRatio;
+                @JsonProperty("bussinessTax")
+                private String bussinessTax;
+                @JsonProperty("personnelTax")
+                private String personnelTax;
+                @JsonProperty("isForsePrint")
+                private String isForsePrint;
+                @JsonProperty("premiumPaymentMode")
+                private String premiumPaymentMode;
+                @JsonProperty("outerPaymentFlag")
+                private String outerPaymentFlag;
+                @JsonProperty("hrDepartmentCode")
+                private String hrDepartmentCode;
+                @JsonProperty("canReturnVehicletax")
+                private Integer canReturnVehicletax;
+                @JsonProperty("modifyVehicletax")
+                private Integer modifyVehicletax;
+                @JsonProperty("paymentNoticPrint")
+                private Integer paymentNoticPrint;
+                @JsonProperty("policyInvoiceRemarkPrint")
+                private String policyInvoiceRemarkPrint;
+                @JsonProperty("affiliatedCharacter")
+                private Integer affiliatedCharacter;
+                @JsonProperty("splitPolicy")
+                private Integer splitPolicy;
+                @JsonProperty("validChargeAffirmControl")
+                private Integer validChargeAffirmControl;
+                @JsonProperty("specialPromisePay")
+                private Integer specialPromisePay;
+                @JsonProperty("chequeInsureDeferredDays")
+                private Integer chequeInsureDeferredDays;
+                @JsonProperty("centralizedEvaluateFlag")
+                private String centralizedEvaluateFlag;
+                @JsonProperty("vehiclePriceType")
+                private String vehiclePriceType;
+                @JsonProperty("usePlatform")
+                private Integer usePlatform;
+                @JsonProperty("platformDestin")
+                private Integer platformDestin;
+                @JsonProperty("messageType")
+                private Integer messageType;
+                @JsonProperty("platformVehiclepriceType")
+                private String platformVehiclepriceType;
+                @JsonProperty("modifySpecialPromise")
+                private Integer modifySpecialPromise;
+                @JsonProperty("enableStandardFactorratio")
+                private String enableStandardFactorratio;
+                @JsonProperty("fillupMoney")
+                private String fillupMoney;
+                @JsonProperty("ministerFund")
+                private String ministerFund;
+                @JsonProperty("localHistoryPlatformDays")
+                private String localHistoryPlatformDays;
+                @JsonProperty("hiddenCustomerPhone")
+                private String hiddenCustomerPhone;
+                @JsonProperty("autoCardPrint")
+                private String autoCardPrint;
+                @JsonProperty("insurancePeriodJoinTips")
+                private String insurancePeriodJoinTips;
+                @JsonProperty("telQualityRule")
+                private Integer telQualityRule;
+                @JsonProperty("runcardCertificateDate")
+                private String runcardCertificateDate;
+                @JsonProperty("localPondPlatformDays")
+                private String localPondPlatformDays;
+                @JsonProperty("localPondPlatformTimes")
+                private String localPondPlatformTimes;
+                @JsonProperty("canUsePlatformAtApply")
+                private String canUsePlatformAtApply;
+                @JsonProperty("platformCacheQueryMode")
+                private String platformCacheQueryMode;
+                @JsonProperty("queryCacheFlag")
+                private String queryCacheFlag;
+                @JsonProperty("exeRuleType")
+                private String exeRuleType;
+                @JsonProperty("rateFactorDisplayControl")
+                private String rateFactorDisplayControl;
+                @JsonProperty("eposFormat")
+                private String eposFormat;
+                @JsonProperty("taxFieldConfig")
+                private String taxFieldConfig;
+                @JsonProperty("needValidateSecond")
+                private String needValidateSecond;
+                @JsonProperty("lockedFactorRatio")
+                private String lockedFactorRatio;
+                @JsonProperty("areaFlag")
+                private String areaFlag;
+                @JsonProperty("ruleRemote")
+                private String ruleRemote;
+                @JsonProperty("printControl")
+                private String printControl;
+                @JsonProperty("platformRequestCode")
+                private String platformRequestCode;
+                @JsonProperty("usePlatformVersion")
+                private String usePlatformVersion;
+                @JsonProperty("checkRepeatApply")
+                private String checkRepeatApply;
+                @JsonProperty("checkRenewPolicy")
+                private String checkRenewPolicy;
+                @JsonProperty("addressCheckModeScript")
+                private String addressCheckModeScript;
+                @JsonProperty("factorCheckFlag")
+                private String factorCheckFlag;
+                @JsonProperty("factorMinRatioFlag")
+                private String factorMinRatioFlag;
+                @JsonProperty("riskScoreType")
+                private String riskScoreType;
+                @JsonProperty("riskScoreCheck")
+                private String riskScoreCheck;
+                @JsonProperty("riskScoreShow")
+                private String riskScoreShow;
+                @JsonProperty("isAutoDrawback")
+                private String isAutoDrawback;
+                @JsonProperty("decisionScript")
+                private String decisionScript;
+                @JsonProperty("invoicePrintAbbrName")
+                private String invoicePrintAbbrName;
+                @JsonProperty("companyName")
+                private String companyName;
+                @JsonProperty("companyCurtailName")
+                private String companyCurtailName;
+                @JsonProperty("needValidateThird")
+                private String needValidateThird;
+                @JsonProperty("countryCode")
+                private String countryCode;
+                @JsonProperty("state")
+                private String state;
+                @JsonProperty("city")
+                private String city;
+                @JsonProperty("documentObsoleteNum")
+                private String documentObsoleteNum;
+                @JsonProperty("taxAmount")
+                private String taxAmount;
+                @JsonProperty("platformVinAddress")
+                private String platformVinAddress;
+                @JsonProperty("ditchFactor")
+                private String ditchFactor;
+                @JsonProperty("queryCacheNewFlag")
+                private String queryCacheNewFlag;
+                @JsonProperty("myScoreBasicConfig")
+                private String myScoreBasicConfig;
+                @JsonProperty("endorseRateDate")
+                private String endorseRateDate;
+                @JsonProperty("signCode")
+                private String signCode;
+                @JsonProperty("epolicyStartDate")
+                private String epolicyStartDate;
+                @JsonProperty("epolicyCommonCode")
+                private String epolicyCommonCode;
+                @JsonProperty("certificationChannelId")
+                private String certificationChannelId;
+                @JsonProperty("duomControlSwitch")
+                private String duomControlSwitch;
+                @JsonProperty("platformAreaCode")
+                private String platformAreaCode;
+                @JsonProperty("registerDateFlag")
+                private Boolean registerDateFlag;
+                @JsonProperty("eInvoiceSwitchTrack")
+                private String eInvoiceSwitchTrack;
+                @JsonProperty("newCarNeedApplyQuery")
+                private Boolean newCarNeedApplyQuery;
+                @JsonProperty("paymentTypeControl")
+                private Boolean paymentTypeControl;
+                @JsonProperty("deptEndorseNotCalulateVehicletex")
+                private Boolean deptEndorseNotCalulateVehicletex;
+                @JsonProperty("openPlatformVehicleTaxProcess")
+                private Boolean openPlatformVehicleTaxProcess;
+                @JsonProperty("searchPlatformDriver")
+                private Boolean searchPlatformDriver;
+                @JsonProperty("searchVehicleRTA")
+                private Boolean searchVehicleRTA;
+                @JsonProperty("openAlienVehicle")
+                private Boolean openAlienVehicle;
+                @JsonProperty("disputedSettleMode")
+                private Boolean disputedSettleMode;
+                @JsonProperty("levelDepCodeFirstLevel")
+                private String levelDepCodeFirstLevel;
+                @JsonProperty("premiumVehicle")
+                private Boolean premiumVehicle;
+                @JsonProperty("floatCustomerNegotiatePrice")
+                private Boolean floatCustomerNegotiatePrice;
+                @JsonProperty("priceOfNewAndOldCarsHandle")
+                private Boolean priceOfNewAndOldCarsHandle;
+                @JsonProperty("customerPriceExceed")
+                private Boolean customerPriceExceed;
+                @JsonProperty("sysErrorCustomerPriceExceed")
+                private Boolean sysErrorCustomerPriceExceed;
+                @JsonProperty("floatPriceSplit")
+                private Boolean floatPriceSplit;
+                @JsonProperty("dispRiskPricing")
+                private Boolean dispRiskPricing;
+                @JsonProperty("departmentCashFlag")
+                private String departmentCashFlag;
+                @JsonProperty("queryNeedAccessControl")
+                private Boolean queryNeedAccessControl;
+                @JsonProperty("showModelDiscount")
+                private Boolean showModelDiscount;
+                @JsonProperty("autoUnderwritingRuleFlag")
+                private Boolean autoUnderwritingRuleFlag;
+                @JsonProperty("allowRepeatApplyPolicy")
+                private Boolean allowRepeatApplyPolicy;
+                @JsonProperty("dispRiskError")
+                private Boolean dispRiskError;
+                @JsonProperty("idCardColletControl")
+                private Boolean idCardColletControl;
+                @JsonProperty("goodDriver")
+                private Boolean goodDriver;
+                @JsonProperty("motorFullEndorse")
+                private Boolean motorFullEndorse;
+                @JsonProperty("viewDriver")
+                private Boolean viewDriver;
+                @JsonProperty("nationalPlatformThirdQuarter22")
+                private Boolean nationalPlatformThirdQuarter22;
+                @JsonProperty("detailsAddrFlag")
+                private Boolean detailsAddrFlag;
+                @JsonProperty("breakRules")
+                private Boolean breakRules;
+                @JsonProperty("registerDate")
+                private Boolean registerDate;
+                @JsonProperty("payTaxesChoose")
+                private Boolean payTaxesChoose;
+                @JsonProperty("nationwideSecondQuarterFlag")
+                private Boolean nationwideSecondQuarterFlag;
+                @JsonProperty("useBeijingNewVehicletaxPlanform")
+                private Boolean useBeijingNewVehicletaxPlanform;
+                @JsonProperty("abstemiousCarTaxDerate")
+                private Boolean abstemiousCarTaxDerate;
+                @JsonProperty("runCardCertificateDate")
+                private Boolean runCardCertificateDate;
+                @JsonProperty("antiFraudJS")
+                private Boolean antiFraudJS;
+                @JsonProperty("needCheckAddress")
+                private Boolean needCheckAddress;
+                @JsonProperty("antiFraud")
+                private Boolean antiFraud;
+                @JsonProperty("realNameCheckForEpos")
+                private Boolean realNameCheckForEpos;
+                @JsonProperty("autoUploadHistoryPolicy")
+                private Boolean autoUploadHistoryPolicy;
+                @JsonProperty("oldPlanCodeEndorseUsePlatform")
+                private Boolean oldPlanCodeEndorseUsePlatform;
+                @JsonProperty("personnelNameDetails")
+                private Boolean personnelNameDetails;
+                @JsonProperty("taxBeginDateNoControl")
+                private Boolean taxBeginDateNoControl;
+                @JsonProperty("showGroupClaimRatio")
+                private Boolean showGroupClaimRatio;
+                @JsonProperty("customerGroupLabelFlag")
+                private Boolean customerGroupLabelFlag;
+                @JsonProperty("showFloatCommision")
+                private Boolean showFloatCommision;
+                @JsonProperty("disputedSettleModeArbitrate")
+                private Boolean disputedSettleModeArbitrate;
+                @JsonProperty("defaultBrandType")
+                private String defaultBrandType;
+                @JsonProperty("steerCardVehicleTypeLockedByExhaustCapability")
+                private Boolean steerCardVehicleTypeLockedByExhaustCapability;
+                @JsonProperty("checkReturnCode")
+                private Boolean checkReturnCode;
+                @JsonProperty("policyFormat")
+                private Boolean policyFormat;
+                @JsonProperty("needCustomerInfo")
+                private Boolean needCustomerInfo;
+                @JsonProperty("vehicleSafetyInspection")
+                private Boolean vehicleSafetyInspection;
+                @JsonProperty("showPayAddAndDeleteBtn")
+                private Boolean showPayAddAndDeleteBtn;
+                @JsonProperty("showReparationsPremium")
+                private Boolean showReparationsPremium;
+                @JsonProperty("vehicleStateFlag")
+                private Boolean vehicleStateFlag;
+                @JsonProperty("personCert")
+                private Boolean personCert;
+                @JsonProperty("certDepartmentName")
+                private Boolean certDepartmentName;
+                @JsonProperty("taxVehicleType")
+                private Boolean taxVehicleType;
+                @JsonProperty("lastYearEndDateFlag")
+                private Boolean lastYearEndDateFlag;
+                @JsonProperty("payNo")
+                private Boolean payNo;
+                @JsonProperty("payFreeState")
+                private Boolean payFreeState;
+                @JsonProperty("deductionDueCode")
+                private Boolean deductionDueCode;
+                @JsonProperty("deductionDueType")
+                private Boolean deductionDueType;
+                @JsonProperty("deductionDueProportion")
+                private Boolean deductionDueProportion;
+                @JsonProperty("deduction")
+                private Boolean deduction;
+                @JsonProperty("freeNo")
+                private Boolean freeNo;
+                @JsonProperty("defaultBillTypePaper")
+                private Boolean defaultBillTypePaper;
+                @JsonProperty("clearTaxFlag")
+                private Boolean clearTaxFlag;
+                @JsonProperty("fromTaxRegisterNo")
+                private Boolean fromTaxRegisterNo;
+                @JsonProperty("vehicleTypeDiff")
+                private Boolean vehicleTypeDiff;
+                @JsonProperty("ncdDisplaySwitchFlag")
+                private Boolean ncdDisplaySwitchFlag;
+                @JsonProperty("manualInputFreeNoFlag")
+                private Boolean manualInputFreeNoFlag;
+                @JsonProperty("platfromTimeAutoChoose")
+                private Boolean platfromTimeAutoChoose;
+                @JsonProperty("configCertDepartment")
+                private Boolean configCertDepartment;
+                @JsonProperty("printOrderFlag")
+                private Boolean printOrderFlag;
+                @JsonProperty("institutionCQ")
+                private Boolean institutionCQ;
+                @JsonProperty("bargainingByPlanform")
+                private Boolean bargainingByPlanform;
+                @JsonProperty("runCardCertificateAndFirstRegister")
+                private Boolean runCardCertificateAndFirstRegister;
+                @JsonProperty("depCodeSubStrThree")
+                private String depCodeSubStrThree;
+                @JsonProperty("vocationPriceCanModified")
+                private Boolean vocationPriceCanModified;
+                @JsonProperty("usePreciseService")
+                private Boolean usePreciseService;
+                @JsonProperty("axaApplyPolicyFormat")
+                private Boolean axaApplyPolicyFormat;
+                @JsonProperty("enableEndorseFind")
+                private Boolean enableEndorseFind;
+                @JsonProperty("agentBusiness")
+                private Boolean agentBusiness;
+                @JsonProperty("needCertCardValidityDate")
+                private Boolean needCertCardValidityDate;
+                @JsonProperty("runcardCertificateDateInput")
+                private Boolean runcardCertificateDateInput;
+                @JsonProperty("showPersonnelInfoCheck")
+                private Boolean showPersonnelInfoCheck;
+                @JsonProperty("lockTaxBeginDate")
+                private Boolean lockTaxBeginDate;
+                @JsonProperty("vehicleTaxStatusMode")
+                private String vehicleTaxStatusMode;
+                @JsonProperty("epolicyNeedEmail")
+                private Boolean epolicyNeedEmail;
+                @JsonProperty("taxPaymentBeginTimeChoose")
+                private String taxPaymentBeginTimeChoose;
+                @JsonProperty("policyAssociationQuotation")
+                private Boolean policyAssociationQuotation;
+                @JsonProperty("showPureRiskPremium")
+                private Boolean showPureRiskPremium;
+                @JsonProperty("duomControlFlag")
+                private Boolean duomControlFlag;
+                @JsonProperty("nationalPlatformThirdQuarter23")
+                private Boolean nationalPlatformThirdQuarter23;
+                @JsonProperty("vinFromBasicOrPlatform")
+                private Boolean vinFromBasicOrPlatform;
+                @JsonProperty("steerCardVehicleType")
+                private String steerCardVehicleType;
+                @JsonProperty("businessChangePlatform")
+                private String businessChangePlatform;
+                @JsonProperty("policyInfoSendPlatform")
+                private String policyInfoSendPlatform;
+                @JsonProperty("trafficDataPlatform")
+                private String trafficDataPlatform;
+                @JsonProperty("PriceTypeDefault")
+                private String PriceTypeDefault;
+                @JsonProperty("beCoveredWithVehicle")
+                private Boolean beCoveredWithVehicle;
+                @JsonProperty("peccancyTimeValueMode")
+                private String peccancyTimeValueMode;
+                @JsonProperty("isBeijingNewProcessOfCollector")
+                private Boolean isBeijingNewProcessOfCollector;
+                @JsonProperty("vehicleTaxCalculationWay")
+                private String vehicleTaxCalculationWay;
+                @JsonProperty("areaVehicleTax")
+                private String areaVehicleTax;
+                @JsonProperty("realNameIntercept")
+                private Boolean realNameIntercept;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class PlanDefine implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("createdBy")
+                private String createdBy;
+                @JsonProperty("createdDate")
+                private String createdDate;
+                @JsonProperty("updatedBy")
+                private String updatedBy;
+                @JsonProperty("updatedDate")
+                private String updatedDate;
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("planCode")
+                private String planCode;
+                @JsonProperty("planType")
+                private String planType;
+                @JsonProperty("planChineseName")
+                private String planChineseName;
+                @JsonProperty("planChineseNameAbbr")
+                private String planChineseNameAbbr;
+                @JsonProperty("targetType")
+                private String targetType;
+                @JsonProperty("targetName")
+                private String targetName;
+                @JsonProperty("riskUnitName")
+                private String riskUnitName;
+                @JsonProperty("needValidate")
+                private String needValidate;
+                @JsonProperty("effectiveDateDelay")
+                private Integer effectiveDateDelay;
+                @JsonProperty("productType")
+                private String productType;
+                @JsonProperty("planSeries")
+                private String planSeries;
+                @JsonProperty("index")
+                private String index;
+                @JsonProperty("hasVehicleTax")
+                private String hasVehicleTax;
+                @JsonProperty("autoPlan")
+                private Boolean autoPlan;
+                @JsonProperty("businessInsure")
+                private Boolean businessInsure;
+                @JsonProperty("compulsoryInsure")
+                private Boolean compulsoryInsure;
+                @JsonProperty("dutyAmount")
+                private Boolean dutyAmount;
+                @JsonProperty("compulsoryNotMoto")
+                private Boolean compulsoryNotMoto;
+                @JsonProperty("virtualProduct")
+                private Boolean virtualProduct;
+                @JsonProperty("autoAccident")
+                private Boolean autoAccident;
+                @JsonProperty("axa")
+                private Boolean axa;
+                @JsonProperty("autoBusinessType")
+                private String autoBusinessType;
+                @JsonProperty("businessMotorcycle")
+                private Boolean businessMotorcycle;
+                @JsonProperty("healthPlanCode")
+                private Boolean healthPlanCode;
+                @JsonProperty("axaTour")
+                private Boolean axaTour;
+                @JsonProperty("axaAccident")
+                private Boolean axaAccident;
+                @JsonProperty("disputedSettleModeArbitrate")
+                private Boolean disputedSettleModeArbitrate;
+                @JsonProperty("vehiclePurchasePrice")
+                private Boolean vehiclePurchasePrice;
+                @JsonProperty("forSale")
+                private Boolean forSale;
+                @JsonProperty("nonCarRetailPlanCode")
+                private Boolean nonCarRetailPlanCode;
+                @JsonProperty("motorcycleInsure")
+                private Boolean motorcycleInsure;
+                @JsonProperty("limitAcceptAge")
+                private Boolean limitAcceptAge;
+                @JsonProperty("telSaleSpecial")
+                private Boolean telSaleSpecial;
+                @JsonProperty("needReturnCerti")
+                private Boolean needReturnCerti;
+                @JsonProperty("upOneYear")
+                private Boolean upOneYear;
+                @JsonProperty("shortRateCalculate")
+                private String shortRateCalculate;
+                @JsonProperty("premiumCarry")
+                private String premiumCarry;
+                @JsonProperty("upOneYearPlan")
+                private Boolean upOneYearPlan;
+                @JsonProperty("changeSelectedTargetTable")
+                private Boolean changeSelectedTargetTable;
+                @JsonProperty("immediateEffect")
+                private Boolean immediateEffect;
+                @JsonProperty("autoBusiness")
+                private Boolean autoBusiness;
+                @JsonProperty("motorcycleCompulsory")
+                private Boolean motorcycleCompulsory;
+                @JsonProperty("telSalesBusiness")
+                private Boolean telSalesBusiness;
+                @JsonProperty("compulsoryMoto")
+                private Boolean compulsoryMoto;
+                @JsonProperty("planCode504")
+                private Boolean planCode504;
+                @JsonProperty("riAmountMode")
+                private String riAmountMode;
+                @JsonProperty("axaFamily")
+                private Boolean axaFamily;
+                @JsonProperty("axaGolf")
+                private Boolean axaGolf;
+                @JsonProperty("useReverse")
+                private Boolean useReverse;
+                @JsonProperty("autoRenewal")
+                private Boolean autoRenewal;
+                @JsonProperty("showEndoresMemoPaymentWay")
+                private Boolean showEndoresMemoPaymentWay;
+                @JsonProperty("reportEngine")
+                private String reportEngine;
+                @JsonProperty("tireRisk")
+                private Boolean tireRisk;
+                @JsonProperty("masterAdditionControl")
+                private Boolean masterAdditionControl;
+                @JsonProperty("axaLiability")
+                private Boolean axaLiability;
+                @JsonProperty("productVersion")
+                private Boolean productVersion;
+                @JsonProperty("nonCarRetail")
+                private Boolean nonCarRetail;
+                @JsonProperty("useXslfo")
+                private Boolean useXslfo;
+                @JsonProperty("applyUseXslfo")
+                private Boolean applyUseXslfo;
+                @JsonProperty("underwritePlanSeries")
+                private String underwritePlanSeries;
+                @JsonProperty("enonmotorPlan")
+                private Boolean enonmotorPlan;
+                @JsonProperty("planReApplyWay")
+                private String planReApplyWay;
+                @JsonProperty("reinsCededPlan")
+                private Boolean reinsCededPlan;
+                @JsonProperty("nonNeedCertNo")
+                private Boolean nonNeedCertNo;
+                @JsonProperty("groupTravel")
+                private Boolean groupTravel;
+                @JsonProperty("enonmotor")
+                private Boolean enonmotor;
+                @JsonProperty("groupHealth")
+                private Boolean groupHealth;
+                @JsonProperty("checkAmount")
+                private Boolean checkAmount;
+                @JsonProperty("getByRule")
+                private Boolean getByRule;
+                @JsonProperty("oldDutyOdamount")
+                private Boolean oldDutyOdamount;
+                @JsonProperty("personnalAccidentProduct")
+                private Boolean personnalAccidentProduct;
+                @JsonProperty("nonAutoCalculateModeProduct")
+                private Boolean nonAutoCalculateModeProduct;
+                @JsonProperty("premiumRateUnits")
+                private Double premiumRateUnits;
+                @JsonProperty("existPolicyExtendProduct")
+                private Boolean existPolicyExtendProduct;
+                @JsonProperty("ecardProduct")
+                private Boolean ecardProduct;
+                @JsonProperty("needAttachmentProduct")
+                private Boolean needAttachmentProduct;
+                @JsonProperty("insureTermRelate")
+                private Boolean insureTermRelate;
+                @JsonProperty("noTargetProduct")
+                private Boolean noTargetProduct;
+                @JsonProperty("equitmentInsure")
+                private Boolean equitmentInsure;
+                @JsonProperty("useMailNo")
+                private Boolean useMailNo;
+                @JsonProperty("noWriteInsure")
+                private Boolean noWriteInsure;
+                @JsonProperty("groupInsure")
+                private Boolean groupInsure;
+                @JsonProperty("chargesingleInsure")
+                private Boolean chargesingleInsure;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class ProductDefine implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("createdBy")
+                private String createdBy;
+                @JsonProperty("createdDate")
+                private String createdDate;
+                @JsonProperty("updatedBy")
+                private String updatedBy;
+                @JsonProperty("updatedDate")
+                private String updatedDate;
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("planCode")
+                private String planCode;
+                @JsonProperty("productCode")
+                private String productCode;
+                @JsonProperty("productName")
+                private String productName;
+                @JsonProperty("needValidate")
+                private String needValidate;
+                @JsonProperty("orderId")
+                private String orderId;
+                @JsonProperty("productVersionNo")
+                private String productVersionNo;
+                @JsonProperty("id")
+                private String id;
+                @JsonProperty("dutyChoice")
+                private String dutyChoice;
+                @JsonProperty("checked")
+                private String checked;
+                @JsonProperty("stopPlanInsure")
+                private Boolean stopPlanInsure;
+                @JsonProperty("autoRenewal")
+                private Boolean autoRenewal;
+                @JsonProperty("returnMode")
+                private String returnMode;
+                @JsonProperty("rateForAXA")
+                private String rateForAXA;
+                @JsonProperty("shortPolicy")
+                private Boolean shortPolicy;
+                @JsonProperty("giveRisk")
+                private String giveRisk;
+                @JsonProperty("isCalculatePremium")
+                private String isCalculatePremium;
+                @JsonProperty("productFactory")
+                private Boolean productFactory;
+                @JsonProperty("calculateModeStr")
+                private String calculateModeStr;
+                @JsonProperty("useTemplates")
+                private String useTemplates;
+                @JsonProperty("haveAloneApplyPremission")
+                private Boolean haveAloneApplyPremission;
+                @JsonProperty("tpaClaims")
+                private Boolean tpaClaims;
+                @JsonProperty("printQuestionnaire")
+                private Boolean printQuestionnaire;
+                @JsonProperty("stopInsure")
+                private Boolean stopInsure;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class SaleBusinessSource implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("saleNo")
+                private String saleNo;
+                @JsonProperty("businessSourceCode")
+                private String businessSourceCode;
+                @JsonProperty("businessSourceDetailCode")
+                private String businessSourceDetailCode;
+                @JsonProperty("saleAgentCode")
+                private String saleAgentCode;
+                @JsonProperty("saleAgentName")
+                private String saleAgentName;
+                @JsonProperty("saleGroupCode")
+                private String saleGroupCode;
+                @JsonProperty("saleGroupName")
+                private String saleGroupName;
+                @JsonProperty("businessSourceName")
+                private String businessSourceName;
+                @JsonProperty("businessSourceDetailName")
+                private String businessSourceDetailName;
+                @JsonProperty("assistantCode")
+                private String assistantCode;
+                @JsonProperty("assistant")
+                private String assistant;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class PolicyCoverage implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("dutyId")
+                private String dutyId;
+                @JsonProperty("fullYearPremium")
+                private String fullYearPremium;
+                @JsonProperty("dutyCode")
+                private String dutyCode;
+                @JsonProperty("dutyChineseName")
+                private String dutyChineseName;
+                @JsonProperty("seats")
+                private Integer seats;
+                @JsonProperty("premiumRate")
+                private Integer premiumRate;
+                @JsonProperty("deductionAmount")
+                private Integer deductionAmount;
+                @JsonProperty("deductible")
+                private Integer deductible;
+                @JsonProperty("medicalAmount")
+                private Integer medicalAmount;
+                @JsonProperty("dieAmount")
+                private Integer dieAmount;
+                @JsonProperty("propertyAmount")
+                private Integer propertyAmount;
+                @JsonProperty("noFaultMedicalAmount")
+                private Integer noFaultMedicalAmount;
+                @JsonProperty("noFaultDieAmount")
+                private Integer noFaultDieAmount;
+                @JsonProperty("noFaultPropertyAmount")
+                private Integer noFaultPropertyAmount;
+                @JsonProperty("allAmount")
+                private Integer allAmount;
+                @JsonProperty("insuredAmount")
+                private Double insuredAmount;
+                @JsonProperty("totalStandardPremium")
+                private Double totalStandardPremium;
+                @JsonProperty("totalAgreePremium")
+                private Double totalAgreePremium;
+                @JsonProperty("totalActualPremium")
+                private Double totalActualPremium;
+                @JsonProperty("totalNetPremium")
+                private Double totalNetPremium;
+                @JsonProperty("addedValueTax")
+                private Double addedValueTax;
+                @JsonProperty("mainCoverage")
+                private String mainCoverage;
+                @JsonProperty("insuredAmountDescList")
+                private List<InsuredAmountDesc> insuredAmountDescList;
+                @JsonProperty("equipmentInsureAmount")
+                private Double equipmentInsureAmount;
+                @JsonProperty("allAmountDef")
+                private Double allAmountDef;
+                @JsonProperty("newFlag")
+                private Boolean newFlag;
+                @JsonProperty("modifyFlag")
+                private Boolean modifyFlag;
+                @JsonProperty("calculateEndorsePremium")
+                private Integer calculateEndorsePremium;
+                @JsonProperty("checkEndorsePremium")
+                private Double checkEndorsePremium;
+                @JsonProperty("dutyVer")
+                private String dutyVer;
+                @JsonProperty("applyPolicyNo")
+                private String applyPolicyNo;
+                @JsonProperty("insuredAmountDef")
+                private Double insuredAmountDef;
+                @JsonProperty("dutyTargetType")
+                private String dutyTargetType;
+                @JsonProperty("checkTotalNetPremium")
+                private Integer checkTotalNetPremium;
+                @JsonProperty("checkAddedValueTax")
+                private Integer checkAddedValueTax;
+                @JsonProperty("checked")
+                private Boolean checked;
+                @JsonProperty("deductionRate")
+                private Integer deductionRate;
+                @JsonProperty("serviceNum")
+                private String serviceNum;
+                @JsonProperty("mileage")
+                private String mileage;
+                @JsonProperty("setMeal")
+                private String setMeal;
+                @JsonProperty("isTelpeson")
+                private String isTelpeson;
+                @JsonProperty("telPhone")
+                private String telPhone;
+                @JsonProperty("initShow")
+                private String initShow;
+                @JsonProperty("insuranceBeginTime")
+                private String insuranceBeginTime;
+                @JsonProperty("insuranceEndTime")
+                private String insuranceEndTime;
+                @JsonProperty("refundFlag")
+                private String refundFlag;
+                @JsonProperty("coverageNum")
+                private Integer coverageNum;
+                @JsonProperty("isShareSumDutyFlag")
+                private String isShareSumDutyFlag;
+                @JsonProperty("priority")
+                private String priority;
+                @JsonProperty("coverageCancelOrReturn")
+                private Boolean coverageCancelOrReturn;
+                @JsonProperty("coverageReturn")
+                private Boolean coverageReturn;
+                @JsonProperty("coverageCancel")
+                private Boolean coverageCancel;
+                @JsonProperty("claimCoverageReturn")
+                private Boolean claimCoverageReturn;
+                @JsonProperty("ariExpense")
+                private Integer ariExpense;
+
+                @Data
+                @JsonIgnoreProperties(ignoreUnknown = true)
+                public static class InsuredAmountDesc implements Serializable {
+                    private static final long serialVersionUID = 1L;
+
+                    @JsonProperty("createdBy")
+                    private String createdBy;
+                    @JsonProperty("updatedBy")
+                    private String updatedBy;
+                    @JsonProperty("page")
+                    private Integer page;
+                    @JsonProperty("pageSize")
+                    private Integer pageSize;
+                    @JsonProperty("factorCode")
+                    private String factorCode;
+                    @JsonProperty("factorName")
+                    private String factorName;
+                    @JsonProperty("startContent")
+                    private String startContent;
+                    @JsonProperty("unit")
+                    private String unit;
+                    @JsonProperty("orderId")
+                    private String orderId;
+                    @JsonProperty("tagType")
+                    private String tagType;
+                    @JsonProperty("insuredAmount")
+                    private String insuredAmount;
+                    @JsonProperty("classValue")
+                    private String classValue;
+                    @JsonProperty("optionList")
+                    private List<Option> optionList;
+                    @JsonProperty("seats")
+                    private String seats;
+                    @JsonProperty("serviceNum")
+                    private String serviceNum;
+                    @JsonProperty("isTelpeson")
+                    private String isTelpeson;
+                    @JsonProperty("deductionRate")
+                    private String deductionRate;
+                    @JsonProperty("setMeal")
+                    private String setMeal;
+                    @JsonProperty("mileage")
+                    private String mileage;
+
+                    @Data
+                    @JsonIgnoreProperties(ignoreUnknown = true)
+                    public static class Option implements Serializable {
+                        private static final long serialVersionUID = 1L;
+
+                        @JsonProperty("value")
+                        private String value;
+                        @JsonProperty("label")
+                        private String label;
+                    }
+                }
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class ProductDuty implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("displayNo")
+                private Integer displayNo;
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("productCode")
+                private String productCode;
+                @JsonProperty("dutyCode")
+                private String dutyCode;
+                @JsonProperty("dutyChineseName")
+                private String dutyChineseName;
+                @JsonProperty("mainCoverage")
+                private String mainCoverage;
+                @JsonProperty("insuredAmountDescList")
+                private List<ProductDutyInsuredAmountDesc> insuredAmountDescList;
+                @JsonProperty("dutyDetailList")
+                private List<DutyDetail> dutyDetailList;
+                @JsonProperty("dutyVersionAge")
+                private List<Object> dutyVersionAge;
+
+                @Data
+                @JsonIgnoreProperties(ignoreUnknown = true)
+                public static class ProductDutyInsuredAmountDesc implements Serializable {
+                    private static final long serialVersionUID = 1L;
+
+                    @JsonProperty("createdBy")
+                    private String createdBy;
+                    @JsonProperty("updatedBy")
+                    private String updatedBy;
+                    @JsonProperty("page")
+                    private Integer page;
+                    @JsonProperty("pageSize")
+                    private Integer pageSize;
+                    @JsonProperty("factorCode")
+                    private String factorCode;
+                    @JsonProperty("factorName")
+                    private String factorName;
+                    @JsonProperty("startContent")
+                    private String startContent;
+                    @JsonProperty("unit")
+                    private String unit;
+                    @JsonProperty("orderId")
+                    private String orderId;
+                    @JsonProperty("tagType")
+                    private String tagType;
+                    @JsonProperty("insuredAmount")
+                    private String insuredAmount;
+                    @JsonProperty("classValue")
+                    private String classValue;
+                    @JsonProperty("optionList")
+                    private List<ProductDutyOption> optionList;
+                    @JsonProperty("seats")
+                    private String seats;
+                    @JsonProperty("serviceNum")
+                    private String serviceNum;
+                    @JsonProperty("isTelpeson")
+                    private String isTelpeson;
+                    @JsonProperty("deductionRate")
+                    private String deductionRate;
+                    @JsonProperty("setMeal")
+                    private String setMeal;
+                    @JsonProperty("mileage")
+                    private String mileage;
+
+                    @Data
+                    @JsonIgnoreProperties(ignoreUnknown = true)
+                    public static class ProductDutyOption implements Serializable {
+                        private static final long serialVersionUID = 1L;
+
+                        @JsonProperty("value")
+                        private String value;
+                        @JsonProperty("label")
+                        private String label;
+                    }
+                }
+
+                @Data
+                @JsonIgnoreProperties(ignoreUnknown = true)
+                public static class DutyDetail implements Serializable {
+                    private static final long serialVersionUID = 1L;
+
+                    @JsonProperty("displayNo")
+                    private Integer displayNo;
+                    @JsonProperty("page")
+                    private Integer page;
+                    @JsonProperty("pageSize")
+                    private Integer pageSize;
+                    @JsonProperty("detailCode")
+                    private String detailCode;
+                    @JsonProperty("detailName")
+                    private String detailName;
+                    @JsonProperty("versionNo")
+                    private String versionNo;
+                    @JsonProperty("dutyCode")
+                    private String dutyCode;
+                    @JsonProperty("orderBy")
+                    private Integer orderBy;
+                    @JsonProperty("dutyVersionAge")
+                    private List<Object> dutyVersionAge;
+                }
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class ContractPolicyRatio implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("dutyCode")
+                private String dutyCode;
+                @JsonProperty("factorCode")
+                private String factorCode;
+                @JsonProperty("factorName")
+                private String factorName;
+                @JsonProperty("factorValue")
+                private String factorValue;
+                @JsonProperty("ratioOd")
+                private Double ratioOd;
+                @JsonProperty("ratioTp")
+                private Double ratioTp;
+                @JsonProperty("ratioTheft")
+                private Double ratioTheft;
+                @JsonProperty("ratioOther")
+                private Double ratioOther;
+                @JsonProperty("ratiototal")
+                private Double ratiototal;
+                @JsonProperty("collectionCode")
+                private String collectionCode;
+                @JsonProperty("viewFlag")
+                private Boolean viewFlag;
+                @JsonProperty("ratioMap")
+                private Map<String, Object> ratioMap;
+                @JsonProperty("labelName")
+                private String labelName;
+                @JsonProperty("averageRatio")
+                private Double averageRatio;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class UnderwriteInfo implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("createdDate")
+                private String createdDate;
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("emergencyCode")
+                private String emergencyCode;
+                @JsonProperty("handlerCode")
+                private String handlerCode;
+                @JsonProperty("sendLevelCode")
+                private String sendLevelCode;
+                @JsonProperty("underwriteOpinions")
+                private List<UnderwriteOpinion> underwriteOpinions;
+                @JsonProperty("underwriteMark")
+                private String underwriteMark;
+                @JsonProperty("standarded")
+                private String standarded;
+                @JsonProperty("destinationLevelCodeName")
+                private String destinationLevelCodeName;
+                @JsonProperty("documentNo")
+                private String documentNo;
+                @JsonProperty("taskNo")
+                private Integer taskNo;
+                @JsonProperty("handleTime")
+                private String handleTime;
+                @JsonProperty("departmentCode")
+                private String departmentCode;
+
+                @Data
+                @JsonIgnoreProperties(ignoreUnknown = true)
+                public static class UnderwriteOpinion implements Serializable {
+                    private static final long serialVersionUID = 1L;
+
+                    @JsonProperty("page")
+                    private Integer page;
+                    @JsonProperty("pageSize")
+                    private Integer pageSize;
+                    @JsonProperty("underwriteOpinionNo")
+                    private String underwriteOpinionNo;
+                    @JsonProperty("underwriteOpinionDesc")
+                    private String underwriteOpinionDesc;
+                    @JsonProperty("opinionSubscriber")
+                    private String opinionSubscriber;
+                }
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class BillInfoDetail implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("billPersonType")
+                private String billPersonType;
+                @JsonProperty("billType")
+                private String billType;
+                @JsonProperty("billEmail")
+                private String billEmail;
+                @JsonProperty("billPersonName")
+                private String billPersonName;
+                @JsonProperty("billApplantPhoneNo")
+                private String billApplantPhoneNo;
+                @JsonProperty("isBusinessBill")
+                private String isBusinessBill;
+                @JsonProperty("billTaxPayerType")
+                private String billTaxPayerType;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class EndorseApplyInfo implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("calculateEndorsePremium")
+                private Integer calculateEndorsePremium;
+                @JsonProperty("checkTotalEndorsePremium")
+                private Integer checkTotalEndorsePremium;
+                @JsonProperty("checkTotalNetPremium")
+                private Integer checkTotalNetPremium;
+                @JsonProperty("checkAddedValueTax")
+                private Integer checkAddedValueTax;
+                @JsonProperty("endorsementTimes")
+                private Integer endorsementTimes;
+                @JsonProperty("endorseCompensationAmount")
+                private Integer endorseCompensationAmount;
+                @JsonProperty("endorseInsuredAmount")
+                private Integer endorseInsuredAmount;
+                @JsonProperty("stopDay")
+                private Integer stopDay;
+                @JsonProperty("deductCommissionCharge")
+                private Integer deductCommissionCharge;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class PolicyExtend implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("usageAttributeCode")
+                private String usageAttributeCode;
+                @JsonProperty("totalPremiumMan")
+                private Integer totalPremiumMan;
+                @JsonProperty("totalPremiumChild")
+                private Integer totalPremiumChild;
+                @JsonProperty("manCount")
+                private Integer manCount;
+                @JsonProperty("childCount")
+                private Integer childCount;
+                @JsonProperty("country")
+                private String country;
+                @JsonProperty("noautoSmallVehicleModel")
+                private String noautoSmallVehicleModel;
+                @JsonProperty("brand")
+                private String brand;
+                @JsonProperty("rentalCompany")
+                private String rentalCompany;
+                @JsonProperty("chineseNavigation")
+                private String chineseNavigation;
+                @JsonProperty("startAmount")
+                private String startAmount;
+                @JsonProperty("isTransnationalVehicle")
+                private String isTransnationalVehicle;
+                @JsonProperty("contacts")
+                private String contacts;
+                @JsonProperty("contactInformation")
+                private String contactInformation;
+                @JsonProperty("deliveryProvinceCode")
+                private String deliveryProvinceCode;
+                @JsonProperty("deliveryCityCode")
+                private String deliveryCityCode;
+                @JsonProperty("deliveryCountyCode")
+                private String deliveryCountyCode;
+                @JsonProperty("newProcessSwitch")
+                private String newProcessSwitch;
+                @JsonProperty("insuranceVehicleRelationship")
+                private String insuranceVehicleRelationship;
+                @JsonProperty("commerialFlag")
+                private String commerialFlag;
+                @JsonProperty("systemPlat")
+                private String systemPlat;
+                @JsonProperty("cheatResult")
+                private String cheatResult;
+                @JsonProperty("cheatQueryNo")
+                private String cheatQueryNo;
+                @JsonProperty("drivingMileageYear")
+                private String drivingMileageYear;
+                @JsonProperty("driverServiceCardNumber")
+                private String driverServiceCardNumber;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class FullReductionInfo implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("customerIntegral")
+                private Integer customerIntegral;
+                @JsonProperty("customerIntegralChange")
+                private Integer customerIntegralChange;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class PremiumParameter implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("basicRiskScoreLevel")
+                private String basicRiskScoreLevel;
+                @JsonProperty("basicHighPriTranche")
+                private String basicHighPriTranche;
+                @JsonProperty("basicRiskScoreLevelValue")
+                private String basicRiskScoreLevelValue;
+                @JsonProperty("basicStatusQG")
+                private String basicStatusQG;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class PolicyRelation implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("id")
+                private String id;
+                @JsonProperty("relationId")
+                private String relationId;
+                @JsonProperty("applyPolicyNo")
+                private String applyPolicyNo;
+                @JsonProperty("policyPlatformId")
+                private String policyPlatformId;
+                @JsonProperty("planCode")
+                private String planCode;
+                @JsonProperty("planChineseName")
+                private String planChineseName;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class PolicyRelInfo implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class OneCarOnePriceInfo implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("vehiclePriceDiscount")
+                private Integer vehiclePriceDiscount;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class CheatQueryResult implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("ruleCode")
+                private String ruleCode;
+                @JsonProperty("result")
+                private String result;
+                @JsonProperty("roleType")
+                private String roleType;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class VinVehcile implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("createdBy")
+                private String createdBy;
+                @JsonProperty("updatedBy")
+                private String updatedBy;
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("vinCode")
+                private String vinCode;
+                @JsonProperty("autoModelCode")
+                private String autoModelCode;
+                @JsonProperty("autoModelChnName")
+                private String autoModelChnName;
+                @JsonProperty("displacement")
+                private String displacement;
+                @JsonProperty("seat")
+                private String seat;
+                @JsonProperty("marketDate")
+                private String marketDate;
+                @JsonProperty("fullWeight")
+                private String fullWeight;
+                @JsonProperty("vehicleAlias")
+                private String vehicleAlias;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class LastUnderwriteInfo implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("createdDate")
+                private String createdDate;
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("emergencyCode")
+                private String emergencyCode;
+                @JsonProperty("handlerCode")
+                private String handlerCode;
+                @JsonProperty("sendLevelCode")
+                private String sendLevelCode;
+                @JsonProperty("underwriteOpinions")
+                private List<LastUnderwriteOpinion> underwriteOpinions;
+                @JsonProperty("underwriteMark")
+                private String underwriteMark;
+                @JsonProperty("standarded")
+                private String standarded;
+                @JsonProperty("destinationLevelCodeName")
+                private String destinationLevelCodeName;
+                @JsonProperty("documentNo")
+                private String documentNo;
+                @JsonProperty("taskNo")
+                private Integer taskNo;
+                @JsonProperty("handleTime")
+                private String handleTime;
+                @JsonProperty("departmentCode")
+                private String departmentCode;
+
+                @Data
+                @JsonIgnoreProperties(ignoreUnknown = true)
+                public static class LastUnderwriteOpinion implements Serializable {
+                    private static final long serialVersionUID = 1L;
+
+                    @JsonProperty("page")
+                    private Integer page;
+                    @JsonProperty("pageSize")
+                    private Integer pageSize;
+                    @JsonProperty("underwriteOpinionNo")
+                    private String underwriteOpinionNo;
+                    @JsonProperty("underwriteOpinionDesc")
+                    private String underwriteOpinionDesc;
+                    @JsonProperty("opinionSubscriber")
+                    private String opinionSubscriber;
+                }
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class Applicant implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("personnelCode")
+                private String personnelCode;
+                @JsonProperty("personnelAttribute")
+                private String personnelAttribute;
+                @JsonProperty("relationshipWithInsured")
+                private String relationshipWithInsured;
+                @JsonProperty("personnelInfoBase")
+                private PersonnelInfoBase personnelInfoBase;
+                @JsonProperty("sameInsuranerPersonnel")
+                private String sameInsuranerPersonnel;
+                @JsonProperty("person")
+                private Boolean person;
+                @JsonProperty("group")
+                private Boolean group;
+                @JsonProperty("owner")
+                private Boolean owner;
+                @JsonProperty("applicant")
+                private Boolean applicant;
+                @JsonProperty("insuraner")
+                private Boolean insuraner;
+
+                @Data
+                @JsonIgnoreProperties(ignoreUnknown = true)
+                public static class PersonnelInfoBase implements Serializable {
+                    private static final long serialVersionUID = 1L;
+
+                    @JsonProperty("page")
+                    private Integer page;
+                    @JsonProperty("pageSize")
+                    private Integer pageSize;
+                    @JsonProperty("personnelCode")
+                    private String personnelCode;
+                    @JsonProperty("vipMark")
+                    private String vipMark;
+                    @JsonProperty("personTypeDetailCode")
+                    private String personTypeDetailCode;
+                    @JsonProperty("person")
+                    private Person person;
+                    @JsonProperty("personTypeOverseas")
+                    private String personTypeOverseas;
+                    @JsonProperty("certificateType")
+                    private String certificateType;
+                    @JsonProperty("certificateNo")
+                    private String certificateNo;
+                    @JsonProperty("personnelName")
+                    private String personnelName;
+                    @JsonProperty("mobileTelephone")
+                    private String mobileTelephone;
+                    @JsonProperty("address")
+                    private String address;
+
+                    @Data
+                    @JsonIgnoreProperties(ignoreUnknown = true)
+                    public static class Person implements Serializable {
+                        private static final long serialVersionUID = 1L;
+
+                        @JsonProperty("page")
+                        private Integer page;
+                        @JsonProperty("pageSize")
+                        private Integer pageSize;
+                        @JsonProperty("personnelCode")
+                        private String personnelCode;
+                        @JsonProperty("personnelName")
+                        private String personnelName;
+                        @JsonProperty("certificateType")
+                        private String certificateType;
+                        @JsonProperty("certificateNo")
+                        private String certificateNo;
+                        @JsonProperty("mobileTelephone")
+                        private String mobileTelephone;
+                        @JsonProperty("homeAreaCode")
+                        private String homeAreaCode;
+                        @JsonProperty("homeTelephone")
+                        private String homeTelephone;
+                        @JsonProperty("officeAreaCode")
+                        private String officeAreaCode;
+                        @JsonProperty("officeTelephone")
+                        private String officeTelephone;
+                        @JsonProperty("postcode")
+                        private String postcode;
+                        @JsonProperty("email")
+                        private String email;
+                        @JsonProperty("address")
+                        private String address;
+                        @JsonProperty("birthday")
+                        private String birthday;
+                        @JsonProperty("homeAddress")
+                        private String homeAddress;
+                        @JsonProperty("homeAddressAfter")
+                        private String homeAddressAfter;
+                        @JsonProperty("homeAreaCountyCode")
+                        private String homeAreaCountyCode;
+                        @JsonProperty("homeCityCode")
+                        private String homeCityCode;
+                        @JsonProperty("homeProvinceCode")
+                        private String homeProvinceCode;
+                        @JsonProperty("invalidateFlag")
+                        private String invalidateFlag;
+                        @JsonProperty("isRuralOrUrban")
+                        private String isRuralOrUrban;
+                        @JsonProperty("personnelAge")
+                        private String personnelAge;
+                        @JsonProperty("professionCode")
+                        private String professionCode;
+                        @JsonProperty("sexCode")
+                        private String sexCode;
+                        @JsonProperty("effectedDate")
+                        private String effectedDate;
+                        @JsonProperty("expiredDate")
+                        private String expiredDate;
+                        @JsonProperty("certType")
+                        private String certType;
+                        @JsonProperty("nationalityType")
+                        private String nationalityType;
+                        @JsonProperty("longExpiredDate")
+                        private String longExpiredDate;
+                        @JsonProperty("idCardAccess")
+                        private String idCardAccess;
+                        @JsonProperty("idCardAccessDate")
+                        private String idCardAccessDate;
+                        @JsonProperty("homeAddrShow")
+                        private String homeAddrShow;
+                        @JsonProperty("certiAddrShow")
+                        private String certiAddrShow;
+                        @JsonProperty("other1AddrShow")
+                        private String other1AddrShow;
+                        @JsonProperty("other2AddrShow")
+                        private String other2AddrShow;
+                    }
+                }
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class Vehicle implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("targetType")
+                private String targetType;
+                @JsonProperty("targetId")
+                private String targetId;
+                @JsonProperty("vehicleVer")
+                private String vehicleVer;
+                @JsonProperty("targetCoverages")
+                private List<Target.TargetCoverage> targetCoverages;
+                @JsonProperty("targetRatios")
+                private List<Object> targetRatios;
+                @JsonProperty("beneficiaryList")
+                private List<Object> beneficiaryList;
+                @JsonProperty("policyPricing")
+                private Target.PolicyPricing policyPricing;
+                @JsonProperty("vehicleLicenceCode")
+                private String vehicleLicenceCode;
+                @JsonProperty("vehicleFrameNo")
+                private String vehicleFrameNo;
+                @JsonProperty("engineNo")
+                private String engineNo;
+                @JsonProperty("firstRegisterDate")
+                private String firstRegisterDate;
+                @JsonProperty("importFlag")
+                private String importFlag;
+                @JsonProperty("vehicleType")
+                private String vehicleType;
+                @JsonProperty("vehicleStyle")
+                private String vehicleStyle;
+                @JsonProperty("autoModelCode")
+                private String autoModelCode;
+                @JsonProperty("vehicleSeats")
+                private Integer vehicleSeats;
+                @JsonProperty("originalVehicleSeats")
+                private Integer originalVehicleSeats;
+                @JsonProperty("fuelType")
+                private String fuelType;
+                @JsonProperty("autoModelChnName")
+                private String autoModelChnName;
+                @JsonProperty("licenceTypeCode")
+                private String licenceTypeCode;
+                @JsonProperty("ecdemicVehicleFlag")
+                private String ecdemicVehicleFlag;
+                @JsonProperty("exhaustCapability")
+                private Double exhaustCapability;
+                @JsonProperty("originalExhaustCapability")
+                private Double originalExhaustCapability;
+                @JsonProperty("vehicleTonnages")
+                private Integer vehicleTonnages;
+                @JsonProperty("originalVehicleTonnages")
+                private Integer originalVehicleTonnages;
+                @JsonProperty("power")
+                private Integer power;
+                @JsonProperty("maxDesignSpeed")
+                private String maxDesignSpeed;
+                @JsonProperty("customerNegotiatePrice")
+                private Double customerNegotiatePrice;
+                @JsonProperty("originalCustomerNegotiatePrice")
+                private Double originalCustomerNegotiatePrice;
+                @JsonProperty("vehicleTax")
+                private Target.VehicleTax vehicleTax;
+                @JsonProperty("vehicleStyleDesc")
+                private String vehicleStyleDesc;
+                @JsonProperty("modelCode")
+                private String modelCode;
+                @JsonProperty("weigth")
+                private Double weigth;
+                @JsonProperty("originalVehicleWeigth")
+                private Double originalVehicleWeigth;
+                @JsonProperty("maker")
+                private String maker;
+                @JsonProperty("brandChnName")
+                private String brandChnName;
+                @JsonProperty("averageMile")
+                private Integer averageMile;
+                @JsonProperty("carName")
+                private String carName;
+                @JsonProperty("categoryCode")
+                private String categoryCode;
+                @JsonProperty("categoryName")
+                private String categoryName;
+                @JsonProperty("configType")
+                private String configType;
+                @JsonProperty("deptCode")
+                private String deptCode;
+                @JsonProperty("deptName")
+                private String deptName;
+                @JsonProperty("modelIdCode")
+                private String modelIdCode;
+                @JsonProperty("noticeType")
+                private String noticeType;
+                @JsonProperty("partInfo")
+                private String partInfo;
+                @JsonProperty("powerType")
+                private String powerType;
+                @JsonProperty("series")
+                private String series;
+                @JsonProperty("seriesCode")
+                private String seriesCode;
+                @JsonProperty("tradeCode")
+                private String tradeCode;
+                @JsonProperty("tradeName")
+                private String tradeName;
+                @JsonProperty("vehicleLossInsuredValue")
+                private Integer vehicleLossInsuredValue;
+                @JsonProperty("vehicleTypeName")
+                private String vehicleTypeName;
+                @JsonProperty("makeDate")
+                private String makeDate;
+                @JsonProperty("stopFlag")
+                private String stopFlag;
+                @JsonProperty("detailDesc")
+                private String detailDesc;
+                @JsonProperty("dbVehicleType")
+                private String dbVehicleType;
+                @JsonProperty("brand")
+                private String brand;
+                @JsonProperty("vehicleColor")
+                private String vehicleColor;
+                @JsonProperty("salePrice")
+                private String salePrice;
+                @JsonProperty("brandCode")
+                private String brandCode;
+                @JsonProperty("noDamageYears")
+                private Integer noDamageYears;
+                @JsonProperty("madeDate")
+                private String madeDate;
+                @JsonProperty("licenceTypeName")
+                private String licenceTypeName;
+                @JsonProperty("modelsListedYear")
+                private String modelsListedYear;
+                @JsonProperty("vehiclePurchasePrice")
+                private String vehiclePurchasePrice;
+                @JsonProperty("thirdResultClaimRecordBiz")
+                private List<Object> thirdResultClaimRecordBiz;
+                @JsonProperty("thirdResultPeccancyRecord")
+                private List<Object> thirdResultPeccancyRecord;
+                @JsonProperty("riskWarnings")
+                private List<Object> riskWarnings;
+                @JsonProperty("duplicatedList")
+                private List<Object> duplicatedList;
+                @JsonProperty("precisionScores")
+                private List<Object> precisionScores;
+                @JsonProperty("checkVehicleInfo")
+                private Target.CheckVehicleInfo checkVehicleInfo;
+                @JsonProperty("theftproofEquipmentCode")
+                private String theftproofEquipmentCode;
+                @JsonProperty("standardName")
+                private String standardName;
+                @JsonProperty("vehicleDBFlag")
+                private String vehicleDBFlag;
+                @JsonProperty("diffVehicleAgeYearMoth")
+                private String diffVehicleAgeYearMoth;
+                @JsonProperty("macauVehicleFlag")
+                private String macauVehicleFlag;
+                @JsonProperty("ratio")
+                private String ratio;
+                @JsonProperty("vehicleRegisterDate")
+                private String vehicleRegisterDate;
+                @JsonProperty("commissionAgent")
+                private Map<String, Object> commissionAgent;
+                @JsonProperty("totalMass")
+                private Double totalMass;
+                @JsonProperty("local")
+                private Boolean local;
+                @JsonProperty("targetTotalActualPremium")
+                private Double targetTotalActualPremium;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class Insuraner implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("personnelCode")
+                private String personnelCode;
+                @JsonProperty("personnelAttribute")
+                private String personnelAttribute;
+                @JsonProperty("relationshipWithInsured")
+                private String relationshipWithInsured;
+                @JsonProperty("personnelInfoBase")
+                private Applicant.PersonnelInfoBase personnelInfoBase;
+                @JsonProperty("sameInsuranerPersonnel")
+                private String sameInsuranerPersonnel;
+                @JsonProperty("person")
+                private Boolean person;
+                @JsonProperty("group")
+                private Boolean group;
+                @JsonProperty("owner")
+                private Boolean owner;
+                @JsonProperty("applicant")
+                private Boolean applicant;
+                @JsonProperty("insuraner")
+                private Boolean insuraner;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class VehicleOwner implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("personnelCode")
+                private String personnelCode;
+                @JsonProperty("personnelAttribute")
+                private String personnelAttribute;
+                @JsonProperty("relationshipWithInsured")
+                private String relationshipWithInsured;
+                @JsonProperty("personnelInfoBase")
+                private Applicant.PersonnelInfoBase personnelInfoBase;
+                @JsonProperty("sameInsuranerPersonnel")
+                private String sameInsuranerPersonnel;
+                @JsonProperty("person")
+                private Boolean person;
+                @JsonProperty("group")
+                private Boolean group;
+                @JsonProperty("owner")
+                private Boolean owner;
+                @JsonProperty("applicant")
+                private Boolean applicant;
+                @JsonProperty("insuraner")
+                private Boolean insuraner;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class InsuredPerson implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("personnelCode")
+                private String personnelCode;
+                @JsonProperty("personnelName")
+                private String personnelName;
+                @JsonProperty("certificateType")
+                private String certificateType;
+                @JsonProperty("certificateNo")
+                private String certificateNo;
+                @JsonProperty("mobileTelephone")
+                private String mobileTelephone;
+                @JsonProperty("homeAreaCode")
+                private String homeAreaCode;
+                @JsonProperty("homeTelephone")
+                private String homeTelephone;
+                @JsonProperty("officeAreaCode")
+                private String officeAreaCode;
+                @JsonProperty("officeTelephone")
+                private String officeTelephone;
+                @JsonProperty("postcode")
+                private String postcode;
+                @JsonProperty("email")
+                private String email;
+                @JsonProperty("address")
+                private String address;
+                @JsonProperty("birthday")
+                private String birthday;
+                @JsonProperty("homeAddress")
+                private String homeAddress;
+                @JsonProperty("homeAddressAfter")
+                private String homeAddressAfter;
+                @JsonProperty("homeAreaCountyCode")
+                private String homeAreaCountyCode;
+                @JsonProperty("homeCityCode")
+                private String homeCityCode;
+                @JsonProperty("homeProvinceCode")
+                private String homeProvinceCode;
+                @JsonProperty("invalidateFlag")
+                private String invalidateFlag;
+                @JsonProperty("isRuralOrUrban")
+                private String isRuralOrUrban;
+                @JsonProperty("personnelAge")
+                private String personnelAge;
+                @JsonProperty("professionCode")
+                private String professionCode;
+                @JsonProperty("sexCode")
+                private String sexCode;
+                @JsonProperty("effectedDate")
+                private String effectedDate;
+                @JsonProperty("expiredDate")
+                private String expiredDate;
+                @JsonProperty("certType")
+                private String certType;
+                @JsonProperty("nationalityType")
+                private String nationalityType;
+                @JsonProperty("longExpiredDate")
+                private String longExpiredDate;
+                @JsonProperty("idCardAccess")
+                private String idCardAccess;
+                @JsonProperty("idCardAccessDate")
+                private String idCardAccessDate;
+                @JsonProperty("homeAddrShow")
+                private String homeAddrShow;
+                @JsonProperty("certiAddrShow")
+                private String certiAddrShow;
+                @JsonProperty("other1AddrShow")
+                private String other1AddrShow;
+                @JsonProperty("other2AddrShow")
+                private String other2AddrShow;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class ApplicantPerson implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("personnelCode")
+                private String personnelCode;
+                @JsonProperty("personnelName")
+                private String personnelName;
+                @JsonProperty("certificateType")
+                private String certificateType;
+                @JsonProperty("certificateNo")
+                private String certificateNo;
+                @JsonProperty("mobileTelephone")
+                private String mobileTelephone;
+                @JsonProperty("homeAreaCode")
+                private String homeAreaCode;
+                @JsonProperty("homeTelephone")
+                private String homeTelephone;
+                @JsonProperty("officeAreaCode")
+                private String officeAreaCode;
+                @JsonProperty("officeTelephone")
+                private String officeTelephone;
+                @JsonProperty("postcode")
+                private String postcode;
+                @JsonProperty("email")
+                private String email;
+                @JsonProperty("address")
+                private String address;
+                @JsonProperty("birthday")
+                private String birthday;
+                @JsonProperty("homeAddress")
+                private String homeAddress;
+                @JsonProperty("homeAddressAfter")
+                private String homeAddressAfter;
+                @JsonProperty("homeAreaCountyCode")
+                private String homeAreaCountyCode;
+                @JsonProperty("homeCityCode")
+                private String homeCityCode;
+                @JsonProperty("homeProvinceCode")
+                private String homeProvinceCode;
+                @JsonProperty("invalidateFlag")
+                private String invalidateFlag;
+                @JsonProperty("isRuralOrUrban")
+                private String isRuralOrUrban;
+                @JsonProperty("personnelAge")
+                private String personnelAge;
+                @JsonProperty("professionCode")
+                private String professionCode;
+                @JsonProperty("sexCode")
+                private String sexCode;
+                @JsonProperty("effectedDate")
+                private String effectedDate;
+                @JsonProperty("expiredDate")
+                private String expiredDate;
+                @JsonProperty("certType")
+                private String certType;
+                @JsonProperty("nationalityType")
+                private String nationalityType;
+                @JsonProperty("longExpiredDate")
+                private String longExpiredDate;
+                @JsonProperty("idCardAccess")
+                private String idCardAccess;
+                @JsonProperty("idCardAccessDate")
+                private String idCardAccessDate;
+                @JsonProperty("homeAddrShow")
+                private String homeAddrShow;
+                @JsonProperty("certiAddrShow")
+                private String certiAddrShow;
+                @JsonProperty("other1AddrShow")
+                private String other1AddrShow;
+                @JsonProperty("other2AddrShow")
+                private String other2AddrShow;
+            }
+
+            @Data
+            @JsonIgnoreProperties(ignoreUnknown = true)
+            public static class OwnerPerson implements Serializable {
+                private static final long serialVersionUID = 1L;
+
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("personnelCode")
+                private String personnelCode;
+                @JsonProperty("personnelName")
+                private String personnelName;
+                @JsonProperty("certificateType")
+                private String certificateType;
+                @JsonProperty("certificateNo")
+                private String certificateNo;
+                @JsonProperty("mobileTelephone")
+                private String mobileTelephone;
+                @JsonProperty("homeAreaCode")
+                private String homeAreaCode;
+                @JsonProperty("homeTelephone")
+                private String homeTelephone;
+                @JsonProperty("officeAreaCode")
+                private String officeAreaCode;
+                @JsonProperty("officeTelephone")
+                private String officeTelephone;
+                @JsonProperty("postcode")
+                private String postcode;
+                @JsonProperty("email")
+                private String email;
+                @JsonProperty("address")
+                private String address;
+                @JsonProperty("birthday")
+                private String birthday;
+                @JsonProperty("homeAddress")
+                private String homeAddress;
+                @JsonProperty("homeAddressAfter")
+                private String homeAddressAfter;
+                @JsonProperty("homeAreaCountyCode")
+                private String homeAreaCountyCode;
+                @JsonProperty("homeCityCode")
+                private String homeCityCode;
+                @JsonProperty("homeProvinceCode")
+                private String homeProvinceCode;
+                @JsonProperty("invalidateFlag")
+                private String invalidateFlag;
+                @JsonProperty("isRuralOrUrban")
+                private String isRuralOrUrban;
+                @JsonProperty("personnelAge")
+                private String personnelAge;
+                @JsonProperty("professionCode")
+                private String professionCode;
+                @JsonProperty("sexCode")
+                private String sexCode;
+                @JsonProperty("effectedDate")
+                private String effectedDate;
+                @JsonProperty("expiredDate")
+                private String expiredDate;
+                @JsonProperty("certType")
+                private String certType;
+                @JsonProperty("nationalityType")
+                private String nationalityType;
+                @JsonProperty("longExpiredDate")
+                private String longExpiredDate;
+                @JsonProperty("idCardAccess")
+                private String idCardAccess;
+                @JsonProperty("idCardAccessDate")
+                private String idCardAccessDate;
+                @JsonProperty("homeAddrShow")
+                private String homeAddrShow;
+                @JsonProperty("certiAddrShow")
+                private String certiAddrShow;
+                @JsonProperty("other1AddrShow")
+                private String other1AddrShow;
+                @JsonProperty("other2AddrShow")
+                private String other2AddrShow;
+            }
+        }
+    }
+}

+ 50 - 0
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/response/AnShengCrawlerQuoteResultResponse.java

@@ -0,0 +1,50 @@
+package com.jzg.quotation.ansheng.crawler.entity.response;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AnShengCrawlerQuoteResultResponse {
+
+    /** 响应码 200=成功 */
+    private Integer code;
+    /** 简短提示信息 */
+    private String simpleMessage;
+    /** 完整提示信息 */
+    private String message;
+    /** 业务数据体 */
+    private QuoteData data;
+
+
+    /**
+     * 报价返回data内部数据实体
+     */
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class QuoteData {
+        /** 单据号 */
+        private String documentNo;
+        /** 报价任务返回详情文本(含html标签) */
+        private String quoteTaskNo;
+        /** 是否首次初审任务 */
+        private Boolean firstTrialTask;
+        /** 任务编号 */
+        private String taskNo;
+        /** 首次是否全部通过 0=不通过 */
+        private String firstAllPassed;
+        /** 是否报价任务 */
+        private Boolean quoteTask;
+        /** 首次初审任务详情文本(含html标签) */
+        private String firstTrialTaskNo;
+        /** 报价整体是否全部通过 0=不通过 */
+        private String quoteAllPassed;
+        /** 首次新增附件信息 */
+        private String firstnewAttachment;
+    }
+
+
+}

+ 72 - 31
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/impl/AnShengCrawlerRequestImpl.java

@@ -32,6 +32,7 @@ import com.jzg.quotation.commons.filter.CarModelsFilterUtils;
 import com.jzg.quotation.commons.utils.TimeProcessing;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.http.HttpHeaders;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
@@ -237,8 +238,7 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
         UnderwritingResultsVo underwritingResultsVo = new UnderwritingResultsVo();
         AnShengCrawlerOrder anShengCrawlerOrder = anShengCrawlerOrderService.getById(ordersNo);
         PaymentLinkResultsVo paymentLinkResultsVo;
-        Integer code = applyApplicationResponse.getCode();
-        if (!code.equals(200)) {
+        if (!applyApplicationResponse.getCode().equals(200)) {
             underwritingResultsVo.setUnderwritingResult(applyApplicationResponse.getMessage());
             underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
             return underwritingResultsVo;
@@ -353,8 +353,8 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
         AnShengCrawlerOrder anShengCrawlerOrder = anShengCrawlerOrderService.getById(paymentLinkVo.getOrder().getOrdersNo());
         // 获取支付链接
         AnShengCrawlerPaymentRequest anShengCrawlerPaymentRequest = new AnShengCrawlerPaymentRequest(anShengCrawlerOrder, userDetailResponse.getDepartmentCode(), anShengCrawlerOrder.getTotalPremium());
-        String paymentUrl = anShengCrawlerRequestComponent.payment(anShengCrawlerPaymentRequest, httpHeaders);
-        return new PaymentLinkResultsVo(true, paymentUrl, "");
+        AnShengCrawlerPaymentResponse payment = anShengCrawlerRequestComponent.payment(anShengCrawlerPaymentRequest, httpHeaders);
+        return new PaymentLinkResultsVo(true,Objects.isNull(payment.getData()) ? "" : payment.getData().getFxQRCode(), payment.getMessage());
     }
 
     @Override
@@ -475,15 +475,13 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
             HttpHeaders httpHeaders = anShengCrawlerQuoteProcessService.getHttpHeaders(orderStatusVo.getOrder().getAttributionInformationVo());
             AnShengCrawlerGetUserDetailResponse.DataDTO.AgentDefineDTO userDetail = anShengCrawlerQuoteProcessService.getUserDetailResponse(orderStatusVo.getOrder().getAgreementId(), httpHeaders);
             // 2. 查询订单状态
-            AnShengCrawlerComprehensiveQueryInsurenetRequest request = new AnShengCrawlerComprehensiveQueryInsurenetRequest(userDetail.getAgentCode(), userDetail.getDepartmentCode(), crawlerOrder.getOrderNo(), crawlerOrder.getRecordingTime());
+            AnShengCrawlerComprehensiveQueryInsurenetRequest request = new AnShengCrawlerComprehensiveQueryInsurenetRequest(userDetail.getAgentCode(), userDetail.getDepartmentCode(), crawlerOrder.getOrderNo(), crawlerOrder.getRecordingTime(),orderStatusVo.getCarInfo().getLicenseNo());
             AnShengCrawlerComprehensiveQueryInsurenetResponse response = anShengCrawlerRequestComponent.comprehensiveQueryInsurenet(request, httpHeaders);
 
             if (response == null || response.getData() == null || response.getData().getList() == null) {
                 return resultVo;
             }
-            Set<String> targetPolicyNos = Stream.of(crawlerOrder.getCiPolicyNo(), crawlerOrder.getBiPolicyNo())
-                    .filter(StringUtils::isNotEmpty)
-                    .collect(Collectors.toSet());
+            Set<String> targetPolicyNos = Stream.of(crawlerOrder.getCiPolicyNo(), crawlerOrder.getBiPolicyNo()).filter(StringUtils::isNotEmpty).collect(Collectors.toSet());
             List<AnShengCrawlerComprehensiveQueryInsurenetResponse.DataDTO.ListDTO.PolicyConciseDetailsDTO> matchedDetails =
                     response.getData().getList().stream()
                             .map(AnShengCrawlerComprehensiveQueryInsurenetResponse.DataDTO.ListDTO::getPolicyConciseDetails)
@@ -504,33 +502,42 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
             boolean allMarksSame = underwriteMarks.stream().allMatch(mark -> Objects.equals(baseMark, mark));
             if (!allMarksSame) {
                 if (underwriteMarks.contains("0")){
-                    resultVo.setErrorMsg("核保失败");
+                    String reason = queryFailure(targetPolicyNos, httpHeaders);
+                    resultVo.setErrorMsg(reason);
                     resultVo.setOrderStatus(InsOrderStatusEnum.AUDIT_FAIL);
+                } else if (underwriteMarks.contains("1")) {
+                    log.info("核保中请稍等...");
                 }
                 return resultVo;
-            }
-            if ("9".equals(baseMark) || "2".equals(baseMark)) {
-                boolean isPayPending = "9".equals(baseMark);
-                // 获取支付链接
-                PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
-                paymentLinkVo.setOrder(orderStatusVo.getOrder());
-                PaymentLinkResultsVo paymentLinkResultsVo = loopAcquisitionPaymentLink(paymentLinkVo);
-                resultVo.setOrderStatus(isPayPending ? InsOrderStatusEnum.PAY_PENDING : InsOrderStatusEnum.UNDERWRITED);
-                resultVo.setOrderStatusStr(isPayPending ? "4" : "5");
-                resultVo.setPaymentLink(paymentLinkResultsVo.getPaymentLink());
-                resultVo.setErrorMsg("");
-                for (AnShengCrawlerComprehensiveQueryInsurenetResponse.DataDTO.ListDTO.PolicyConciseDetailsDTO detail : matchedDetails) {
-                    String planCode = detail.getPlanCode();
-                    if ("105".equals(planCode)) {
-                        resultVo.setJqPolicyno(detail.getPolicyNo());
-                        resultVo.setJqApplyNo(detail.getApplyPolicyNo());
-                    } else if ("109".equals(planCode)) {
-                        resultVo.setSyPolicyno(detail.getPolicyNo());
-                        resultVo.setSyApplyNo(detail.getApplyPolicyNo());
-                    } else if ("P13".equals(planCode)) {
-                        resultVo.setJyPolicyno(detail.getPolicyNo());
-                        resultVo.setJyApplyNo(detail.getApplyPolicyNo());
+            }else {
+                if ("9".equals(baseMark) || "2".equals(baseMark)) {
+                    boolean isPayPending = "9".equals(baseMark);
+                    // 获取支付链接
+                    PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
+                    paymentLinkVo.setOrder(orderStatusVo.getOrder());
+                    PaymentLinkResultsVo paymentLinkResultsVo = loopAcquisitionPaymentLink(paymentLinkVo);
+                    resultVo.setOrderStatus(isPayPending ? InsOrderStatusEnum.PAY_PENDING : InsOrderStatusEnum.UNDERWRITED);
+                    resultVo.setOrderStatusStr(isPayPending ? "4" : "5");
+                    resultVo.setPaymentLink(paymentLinkResultsVo.getPaymentLink());
+                    resultVo.setErrorMsg("");
+                    for (AnShengCrawlerComprehensiveQueryInsurenetResponse.DataDTO.ListDTO.PolicyConciseDetailsDTO detail : matchedDetails) {
+                        String planCode = detail.getPlanCode();
+                        if ("105".equals(planCode)) {
+                            resultVo.setJqPolicyno(detail.getPolicyNo());
+                            resultVo.setJqApplyNo(detail.getApplyPolicyNo());
+                        } else if ("109".equals(planCode)) {
+                            resultVo.setSyPolicyno(detail.getPolicyNo());
+                            resultVo.setSyApplyNo(detail.getApplyPolicyNo());
+                        } else if ("P13".equals(planCode)) {
+                            resultVo.setJyPolicyno(detail.getPolicyNo());
+                            resultVo.setJyApplyNo(detail.getApplyPolicyNo());
+                        }
                     }
+                } else if ("0".equals(baseMark)) {
+                    String reason = queryFailure(targetPolicyNos, httpHeaders);
+                    resultVo.setErrorMsg(reason);
+                } else if ("1".equals(baseMark)) {
+                    log.info("人工处理中,请稍等...");
                 }
             }
         } catch (Exception e) {
@@ -539,4 +546,38 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
         return resultVo;
     }
 
+
+
+    public String queryFailure(Set<String> targetPolicyNos, HttpHeaders httpHeaders) {
+        if (CollectionUtils.isEmpty(targetPolicyNos)) {
+            return "";
+        }
+        StringBuilder reasonBuilder = new StringBuilder();
+        Set<String> addedReasons = new HashSet<>();
+        for (String policyNo : targetPolicyNos) {
+            AnShengCrawlerSaleSlipRequest request = new AnShengCrawlerSaleSlipRequest(policyNo);
+            AnShengCrawlerPolicyResponse response = anShengCrawlerRequestComponent.getSaleSlip(request, httpHeaders);
+            if (response == null || response.getData() == null || response.getData().getContract() == null || CollectionUtils.isEmpty(response.getData().getContract().getUnderwriteInfos())) {
+                continue;
+            }
+            List<AnShengCrawlerPolicyResponse.DataVo.Contract.UnderwriteInfo> underwriteInfos = response.getData().getContract().getUnderwriteInfos();
+            for (AnShengCrawlerPolicyResponse.DataVo.Contract.UnderwriteInfo underwriteInfo : underwriteInfos) {
+                if (!StringUtils.equals("0", underwriteInfo.getUnderwriteMark())) {
+                    continue;
+                }
+                List<AnShengCrawlerPolicyResponse.DataVo.Contract.UnderwriteInfo.UnderwriteOpinion> opinions = underwriteInfo.getUnderwriteOpinions();
+                if (CollectionUtils.isEmpty(opinions)) {
+                    continue;
+                }
+                for (AnShengCrawlerPolicyResponse.DataVo.Contract.UnderwriteInfo.UnderwriteOpinion opinion : opinions) {
+                    String desc = opinion.getUnderwriteOpinionDesc();
+                    if (StringUtils.isNotBlank(desc) && addedReasons.add(desc)) {
+                        reasonBuilder.append(desc);
+                    }
+                }
+            }
+        }
+        return reasonBuilder.toString();
+    }
+
 }

+ 14 - 6
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/component/HengBangCrawlerRequestComponent.java

@@ -334,8 +334,10 @@ public class HengBangCrawlerRequestComponent {
                         if (time != null) {
                             calculationRequest.setBegintimeCi(DateUtil.toUtcDateTime(time));
                             calculationRequest.setBegintimeBi(DateUtil.toUtcDateTime(time));
+                            return getCalculationResult(calculationRequest, headers);
+                        } else {
+                            return StrUtil.isNotBlank(detail) ? detail : responseBody;
                         }
-                        return getCalculationResult(calculationRequest, headers);
                     }
                     return StrUtil.isNotBlank(detail) ? detail : responseBody;
                 } else if (status == 400) {
@@ -363,20 +365,26 @@ public class HengBangCrawlerRequestComponent {
     }
 
 
-    // 重复投保提取时间
-    private static final Pattern DUPLICATE_END_TIME_PATTERN = Pattern.compile("终保日期 (\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2})");
+    // 重复投保提取时间(兼容两种格式:终保日期 2025-12-14 16:00 / 终保日期:2026-07-23)
+    private static final Pattern DUPLICATE_END_TIME_PATTERN = Pattern.compile("终保日期[:: ]\\s*(\\d{4}-\\d{2}-\\d{2}(?:\\s+\\d{2}:\\d{2})?)");
 
     /**
      * 提取系统自动分配的起保时间
      *
      * @param calculationResult 核心提示
-     * @return 提取到的时间字符串,未提取到返回 null
+     * @return 提取到的时间字符串(yyyy-MM-dd HH:mm:ss),未提取到返回 null
      */
     public String extractDuplicateEndTime(String calculationResult) {
         Matcher matcher = DUPLICATE_END_TIME_PATTERN.matcher(calculationResult);
         if (matcher.find()) {
-            String shortEndTime = matcher.group(1); // 提取到 2025-12-14 16:00
-            return shortEndTime + ":00"; // 补全秒数为 2025-12-14 16:00:00
+            String time = matcher.group(1);
+            if (time.length() <= 10) {
+                return time + " 00:00:00";
+            }
+            if (time.length() == 16) {
+                return time + ":00";
+            }
+            return time;
         }
         return null;
     }

+ 90 - 32
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/service/Impl/HengBangCrawlerRequestImpl.java

@@ -154,41 +154,45 @@ public class HengBangCrawlerRequestImpl implements HengBangCrawlerRequest {
         HbCrawlerCalculationRequest calculationRequest = new HbCrawlerCalculationRequest(quoteVo, plyappno, depreciationPrice);
         // 非车信息匹配核心
         matchingAccident(quoteVo, headers, plyappno, calculationRequest);
-        String resJson = hbCrawlerRequestComponent.getCalculationResult(calculationRequest, headers);
-        JSONObject resJsonObj = JSONObject.parseObject(resJson);
+
+        return executeCalculationWithRetry(calculationRequest, headers, quoteVo, plyappno);
+    }
+
+    /**
+     * 执行报价计算并处理重试逻辑(脱保、重复投保、转保车验证码)
+     */
+    private QuoteResultsVo executeCalculationWithRetry(HbCrawlerCalculationRequest calculationRequest, HttpHeaders headers, QuoteVo quoteVo, String plyappno) {
+        JSONObject resJsonObj = callCalculation(calculationRequest, headers);
         if (resJsonObj == null) {
-            return HbCrawlerQuoteResultVoBuild.build(quoteVo, null, "恒邦calculation接口返回异常");
+            return buildErrorResult(quoteVo);
         }
         String errorMsg = resJsonObj.getString("message");
-        String status = resJsonObj.getString("status");
 
         HbCrawlerProposalResponse proposalResponse = null;
         // 脱保情况 重新赋值核心建议起保时间 二次报价
         if (errorMsg.contains("脱保")) {
             calculationRequest.setOutofwarrantytype("N");
-            resJson = hbCrawlerRequestComponent.getCalculationResult(calculationRequest, headers);
-            resJsonObj = JSONObject.parseObject(resJson);
-            if (resJsonObj == null) {
-                return HbCrawlerQuoteResultVoBuild.build(quoteVo, null, "恒邦calculation接口返回异常");
+            errorMsg = retryCalculation(calculationRequest, headers);
+            if (errorMsg == null) {
+                return buildErrorResult(quoteVo);
             }
-            errorMsg = resJsonObj.getString("message");
-            status = resJsonObj.getString("status");
         }
 
-        if (errorMsg.contains("重复投保")) {
-            String time = hbCrawlerRequestComponent.extractDuplicateEndTime(errorMsg);
-            if (time != null) {
-                calculationRequest.setBegintimeCi(DateUtil.toUtcDateTime(time));
-                calculationRequest.setBegintimeBi(DateUtil.toUtcDateTime(time));
+        // 重复投保:循环重试,优先从responseBody.begintimeBi获取建议起保时间
+        int maxRetry = 3;
+        while (errorMsg.contains("重复投保") && maxRetry-- > 0) {
+            String time = getDuplicateBegintime(resJsonObj, errorMsg);
+            log.info("重复投保,重试次数:{}, 建议起保时间:{}", 3 - maxRetry, time);
+            if (time == null) {
+                break;
             }
-
-            resJson = hbCrawlerRequestComponent.getCalculationResult(calculationRequest, headers);
-            resJsonObj = JSONObject.parseObject(resJson);
+            calculationRequest.setBegintimeCi(DateUtil.toUtcDateTime(time));
+            calculationRequest.setBegintimeBi(DateUtil.toUtcDateTime(time));
+            resJsonObj = callCalculation(calculationRequest, headers);
             if (resJsonObj == null) {
-                return HbCrawlerQuoteResultVoBuild.build(quoteVo, null, "恒邦calculation接口返回异常");
+                return buildErrorResult(quoteVo);
             }
             errorMsg = resJsonObj.getString("message");
-            status = resJsonObj.getString("status");
         }
 
         if (errorMsg.contains("该车是转保车,请输入对应的转保验证码")) {
@@ -196,27 +200,23 @@ public class HengBangCrawlerRequestImpl implements HengBangCrawlerRequest {
             HbCrawlerRecordResponse recordResponse = JSONObject.parseObject(responseBody, HbCrawlerRecordResponse.class);
             // 识别验证码
             String systemJqCode = exteriorUtilsRequest.captchaIdentify(recordResponse.getCheckcodeJqImg());
-            log.info( "系统识别的交强验证码为:" + systemJqCode);
+            log.info("系统识别的交强验证码为:{}", systemJqCode);
             recordResponse.setCheckcodeJq(systemJqCode);
             // 识别验证码
             String systemSyCode = exteriorUtilsRequest.captchaIdentify(recordResponse.getCheckcodeSyImg());
-            log.info( "系统识别的商业验证码为:" + systemSyCode);
+            log.info("系统识别的商业验证码为:{}", systemSyCode);
             recordResponse.setCheckcodeSy(systemSyCode);
-            recordResponse.getCheckcodeJq().replace("0","o");
-            recordResponse.getCheckcodeSy().replace("0","o");
+            recordResponse.setCheckcodeJq(recordResponse.getCheckcodeJq().replace("0", "o"));
+            recordResponse.setCheckcodeSy(recordResponse.getCheckcodeSy().replace("0", "o"));
             calculationRequest.setTransferVehicle(recordResponse);
 
-            resJson = hbCrawlerRequestComponent.getCalculationResult(calculationRequest, headers);
-            resJsonObj = JSONObject.parseObject(resJson);
-            if (resJsonObj == null) {
-                return HbCrawlerQuoteResultVoBuild.build(quoteVo, null, "恒邦calculation接口返回异常");
+            errorMsg = retryCalculation(calculationRequest, headers);
+            if (errorMsg == null) {
+                return buildErrorResult(quoteVo);
             }
-            errorMsg = resJsonObj.getString("message");
-            status = resJsonObj.getString("status");
         }
 
-        if (errorMsg.equals("成功")) {
-            errorMsg = "成功";
+        if ("成功".equals(errorMsg)) {
             // 5.2 报价第三步,获取报价数据
             proposalResponse = hbCrawlerRequestComponent.carInsureItem(plyappno, headers);
             HbCrawlerOrder hbCrawlerOrder = new HbCrawlerOrder();
@@ -227,6 +227,64 @@ public class HengBangCrawlerRequestImpl implements HengBangCrawlerRequest {
         return HbCrawlerQuoteResultVoBuild.build(quoteVo, proposalResponse, errorMsg);
     }
 
+    /**
+     * 调用报价接口并返回解析结果
+     */
+    private JSONObject callCalculation(HbCrawlerCalculationRequest calculationRequest, HttpHeaders headers) {
+        String resJson = hbCrawlerRequestComponent.getCalculationResult(calculationRequest, headers);
+        return JSONObject.parseObject(resJson);
+    }
+
+    /**
+     * 重试报价并返回错误消息,null表示接口异常
+     */
+    private String retryCalculation(HbCrawlerCalculationRequest calculationRequest, HttpHeaders headers) {
+        JSONObject resJsonObj = callCalculation(calculationRequest, headers);
+        return resJsonObj != null ? resJsonObj.getString("message") : null;
+    }
+
+    /**
+     * 构建异常返回结果
+     */
+    private QuoteResultsVo buildErrorResult(QuoteVo quoteVo) {
+        return HbCrawlerQuoteResultVoBuild.build(quoteVo, null, "恒邦calculation接口返回异常");
+    }
+
+    /**
+     * 获取重复投保场景的建议起保时间(yyyy-MM-dd HH:mm:ss 格式)
+     * 优先从 responseBody.begintimeBi 获取,兜底从 message 正则提取
+     */
+    private String getDuplicateBegintime(JSONObject resJsonObj, String errorMsg) {
+        // 优先从 responseBody.begintimeBi 获取
+        JSONObject responseBody = resJsonObj.getJSONObject("responseBody");
+        if (responseBody != null) {
+            String begintimeBi = responseBody.getString("begintimeBi");
+            if (begintimeBi != null) {
+                return normalizeTimeFormat(begintimeBi);
+            }
+        }
+        // 兼容:从 message 正则提取终保日期
+        return hbCrawlerRequestComponent.extractDuplicateEndTime(errorMsg);
+    }
+
+    /**
+     * 统一时间格式为 yyyy-MM-dd HH:mm:ss
+     */
+    private String normalizeTimeFormat(String time) {
+        if (time == null) {
+            return null;
+        }
+        // "2026-07-23" → "2026-07-23 00:00:00"
+        if (time.length() <= 10) {
+            return time + " 00:00:00";
+        }
+        // "2025-12-14 16:00" → "2025-12-14 16:00:00"
+        if (time.length() == 16) {
+            return time + ":00";
+        }
+        return time;
+    }
+
     /**
      * 注释
      *

+ 8 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/aspect/QuoteVerificationAspect.java

@@ -12,10 +12,12 @@ import com.jzg.commons.entity.agreement.dispatch.vo.PtlAgreementDispatchVo;
 import com.jzg.commons.entity.dto.CostAgreementParam;
 import com.jzg.commons.entity.orders.po.*;
 import com.jzg.commons.entity.po.*;
+import com.jzg.commons.entity.quote.vo.KindInfoVo;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteResultsVo;
 import com.jzg.commons.entity.vo.*;
 import com.jzg.commons.util.BigDecimalUtil;
+import com.jzg.commons.util.StringUtils;
 import com.jzg.quotation.commons.client.OrgClient;
 import com.jzg.quotation.summary.aop.FactorMatch;
 import com.jzg.quotation.summary.client.PtlNewAgreementClient;
@@ -35,6 +37,7 @@ import java.math.RoundingMode;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.function.BiConsumer;
+import java.util.stream.Collectors;
 
 /**
  * @author quchen
@@ -804,6 +807,11 @@ public class QuoteVerificationAspect {
             if (arg instanceof QuoteVo) {
                 // 1.根据参数判断是否存在调度信息
                 QuoteVo quoteVo = (QuoteVo)arg;
+                // 过滤险种 前端如果选择不投保的时候 直接过滤掉别让他进报价的逻辑里。
+                if (!quoteVo.getKindInfoVo().isEmpty()) {
+                    quoteVo.setKindInfoVo(quoteVo.getKindInfoVo().stream().filter(kindInfoVo ->
+                            StringUtils.isNotBlank(kindInfoVo.getAmount()) && !kindInfoVo.getAmount().equals("0")).collect(Collectors.toList()));
+                }
                 // 判断是否匹配到调度
                 if(quoteVo.getOrder().getIsDispatch() != null && quoteVo.getOrder().getIsDispatch().equals("1")){
                     // 获取调度动作

+ 1 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeOrdersServiceImpl.java

@@ -202,7 +202,7 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
         // 加投直接乘
         BigDecimal addThrow = premium.multiply(addThrowRatio).setScale(scale, RoundingMode.HALF_EVEN);
         // 出口直接乘
-        BigDecimal export = premium.multiply(exportRatio).setScale(scale, RoundingMode.DOWN);
+        BigDecimal export = premium.multiply(exportRatio).setScale(2, RoundingMode.DOWN);
         BigDecimal exportKeepPoint = premium.multiply(exportKeepPointRatio).setScale(scale, RoundingMode.DOWN);
         // 留点比例直接乘, modify by lipf ,留点比例在infFeeOrder中计算得到。这里直接使用 2026年6月16日17:32:09, 为了保持金额一致,留点比例不适用百分比乘积,而是使用金额相减
         // BigDecimal keepPoint = premium.multiply(keepPointRatio).setScale(scale, RoundingMode.HALF_EVEN);

+ 5 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/state/config/OrderStateConfig.java

@@ -55,6 +55,11 @@ public class OrderStateConfig extends StateMachineConfigurerAdapter<OrderState.O
                 .withExternal()
                 // 人工处理 -> 待缴费
                 .source(OrderState.OrderStateEnum.STAFF_PROCESS).target(OrderState.OrderStateEnum.PAY_PENDING).event(OrderState.OrderStateEvent.RENG_PAY_PENDING_EVENT)
+                .and()
+                .withExternal()
+                // 人工处理 -> 核保失败
+                .source(OrderState.OrderStateEnum.STAFF_PROCESS).target(OrderState.OrderStateEnum.AUDIT_FAIL).event(OrderState.OrderStateEvent.AUDIT_FAILED_EVENT)
+
         ;
 
         return builder.build();

+ 1 - 0
tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml

@@ -836,6 +836,7 @@
         io.order_status,
         io.create_time,
         io.create_by,
+        io.error_message,
         ioci.license_no,
         ioci.vin_no,
         owner_u.name as owner_name,

+ 60 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/InsFeeFollowOrderReconciliationController.java

@@ -0,0 +1,60 @@
+package com.jzg.organization.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.jzg.commons.aop.OperatorTrajectory;
+import com.jzg.commons.constants.OperationTypeEnum;
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.dto.AgreementAddParam;
+import com.jzg.commons.entity.finance.dto.InsFeeFollowOrderReconciliationSaveDTO;
+import com.jzg.commons.entity.finance.po.InsFeeFollowOrderReconciliation;
+import com.jzg.organization.mapper.PtlAgreementMapper;
+import com.jzg.organization.service.InsFeeFollowOrderReconciliationService;
+import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * 手续费跟单费对账 前端控制器
+ */
+@RestController
+@RequestMapping("/followReconciliation")
+public class InsFeeFollowOrderReconciliationController {
+
+    @Autowired
+    private InsFeeFollowOrderReconciliationService reconciliationService;
+    @Autowired
+    private BaseController baseController;
+
+
+    /**
+     * 跟单对账金额修改
+     * @param saveDTO
+     * @return
+     */
+    @PostMapping("/saveOrUpdate")
+    public HttpResult<String> saveOrUpdate(@RequestBody InsFeeFollowOrderReconciliationSaveDTO saveDTO) {
+        QueryWrapper<InsFeeFollowOrderReconciliation> insFeeFollowOrderReconciliationQueryWrapper = new QueryWrapper<>();
+        insFeeFollowOrderReconciliationQueryWrapper.eq("year", saveDTO.getYear())
+                .eq("month", saveDTO.getMonth())
+                .eq("partner_company_id", saveDTO.getPartnerCompanyId())
+                .eq("system_code", baseController.getSystemCode())
+                .last("LIMIT 1"); // 取一条即可,或者根据业务取最新的
+        InsFeeFollowOrderReconciliation insFeeFollowOrderReconciliation = reconciliationService.getOne(insFeeFollowOrderReconciliationQueryWrapper);
+
+        if (null != insFeeFollowOrderReconciliation){
+            insFeeFollowOrderReconciliation.setReconciliationAmount(saveDTO.getReconciliationAmount());
+            insFeeFollowOrderReconciliation.setFalselyIncreasedDifference(saveDTO.getFalselyIncreasedDifference());
+            insFeeFollowOrderReconciliation.setFalselyIncreasedReason(saveDTO.getFalselyIncreasedReason());
+            reconciliationService.updateById(insFeeFollowOrderReconciliation);
+        }else{
+            reconciliationService.saveReconciliation(saveDTO);
+        }
+        return HttpResult.ok("修改成功");
+    }
+
+}

+ 13 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/InsFeeFollowOrderReconciliationMapper.java

@@ -0,0 +1,13 @@
+package com.jzg.organization.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.commons.entity.finance.po.InsFeeFollowOrderReconciliation;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 对账表 Mapper接口
+ */
+@Mapper
+public interface InsFeeFollowOrderReconciliationMapper extends BaseMapper<InsFeeFollowOrderReconciliation> {
+
+}

+ 5 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/InsPlyIncomeInvoiceSettlementMapper.java

@@ -5,6 +5,7 @@ import com.jzg.commons.entity.finance.po.InsPlyIncomeInvoiceSettlement;
 import com.jzg.commons.entity.finance.vo.SettlementVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.List;
 
@@ -18,4 +19,8 @@ public interface InsPlyIncomeInvoiceSettlementMapper extends BaseMapper<InsPlyIn
      * @date 2026/6/30 15:39
      */
     SettlementVo querySettlementAndDiff(@Param("settlementIds") List<String> settlementIds);
+
+    @Select("select * from ins_ply_income_invoice_settlement ipiis where ipiis.invoice_id = #{invoiceId,jdbcType=VARCHAR} order by ipiis.create_time desc ")
+    List<InsPlyIncomeInvoiceSettlement> querySettlementRecent(@Param("invoiceId") String invoiceId);
+
 }

+ 28 - 0
tenant/organization/src/main/java/com/jzg/organization/service/InsFeeFollowOrderReconciliationService.java

@@ -0,0 +1,28 @@
+package com.jzg.organization.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.finance.dto.InsFeeFollowOrderReconciliationSaveDTO;
+import com.jzg.commons.entity.finance.po.InsFeeFollowOrderReconciliation;
+import com.jzg.commons.entity.finance.vo.InsFeeFollowOrderReconciliationVO;
+
+/**
+ * 对账记录 业务接口
+ */
+public interface InsFeeFollowOrderReconciliationService extends IService<InsFeeFollowOrderReconciliation> {
+
+    /**
+     * 新增对账记录
+     */
+    boolean saveReconciliation(InsFeeFollowOrderReconciliationSaveDTO saveDTO);
+
+    /**
+     * 修改对账记录
+     */
+    boolean updateReconciliation(InsFeeFollowOrderReconciliationSaveDTO saveDTO);
+
+    /**
+     * 根据ID查询详情
+     */
+    InsFeeFollowOrderReconciliationVO getDetailById(Long id);
+}

+ 53 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/InsFeeFollowOrderReconciliationServiceImpl.java

@@ -0,0 +1,53 @@
+package com.jzg.organization.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.entity.finance.dto.InsFeeFollowOrderReconciliationSaveDTO;
+import com.jzg.commons.entity.finance.po.InsFeeFollowOrderReconciliation;
+import com.jzg.commons.entity.finance.vo.InsFeeFollowOrderReconciliationVO;
+import com.jzg.organization.mapper.InsFeeFollowOrderReconciliationMapper;
+import com.jzg.organization.service.InsFeeFollowOrderReconciliationService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 对账记录 业务实现类
+ */
+@Service
+public class InsFeeFollowOrderReconciliationServiceImpl
+        extends ServiceImpl<InsFeeFollowOrderReconciliationMapper, InsFeeFollowOrderReconciliation>
+        implements InsFeeFollowOrderReconciliationService {
+
+    @Autowired
+    private BaseController baseController;
+
+    @Override
+    public boolean saveReconciliation(InsFeeFollowOrderReconciliationSaveDTO saveDTO) {
+        InsFeeFollowOrderReconciliation entity = new InsFeeFollowOrderReconciliation();
+        entity.setSystemCode(baseController.getSystemCode());
+        BeanUtils.copyProperties(saveDTO, entity);
+        return this.save(entity);
+    }
+
+    @Override
+    public boolean updateReconciliation(InsFeeFollowOrderReconciliationSaveDTO saveDTO) {
+        if (saveDTO.getId() == null) {
+            throw new IllegalArgumentException("修改操作ID不能为空");
+        }
+        InsFeeFollowOrderReconciliation entity = new InsFeeFollowOrderReconciliation();
+        BeanUtils.copyProperties(saveDTO, entity);
+        return this.updateById(entity);
+    }
+
+    @Override
+    public InsFeeFollowOrderReconciliationVO getDetailById(Long id) {
+        InsFeeFollowOrderReconciliation entity = this.getById(id);
+        if (entity == null) {
+            return null;
+        }
+        InsFeeFollowOrderReconciliationVO vo = new InsFeeFollowOrderReconciliationVO();
+        BeanUtils.copyProperties(entity, vo);
+        return vo;
+    }
+}

+ 61 - 18
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -6,6 +6,7 @@ import cn.hutool.core.date.DateTime;
 import cn.hutool.core.lang.tree.Tree;
 import cn.hutool.core.lang.tree.TreeNodeConfig;
 import cn.hutool.core.lang.tree.TreeUtil;
+import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.excel.EasyExcel;
@@ -96,6 +97,9 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Autowired
     private InsFeeFollowOrderMapper insFeeFollowOrderMapper;
 
+    @Autowired
+    private InsFeeFollowOrderReconciliationMapper insFeeFollowOrderReconciliationMapper;
+
     @Autowired
     private InsPlyFollowInvoiceLinkMapper insPlyFollowInvoiceLinkMapper;
 
@@ -324,7 +328,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         List<InsPlyIncomeOrder> res = page.getRecords().stream()
                 .map(action -> new InsPlyIncomeOrder(action.getId(), action.getOrderNo())).toList();
         BigDecimal totalAmount = page.getRecords().stream()
-                .map(action -> new BigDecimal(Objects.toString(action.getJyReceivablePremium(), "0"))).reduce(BigDecimal.ZERO, BigDecimal::add);
+                .map(action -> new BigDecimal(Objects.toString(action.getReceivableAmount(), "0"))).reduce(BigDecimal.ZERO, BigDecimal::add);
 
         InsPlyIncomeVO vo = new InsPlyIncomeVO(null, res,Objects.toString(totalAmount,"0"));
         log.info("获取私有/平台协议手续费应收列表的id集合。receivableQueryVo=[{}]. ids.size=[{}]", JSONUtil.toJsonStr(receivableQueryVo), CollUtil.size(res));
@@ -1478,7 +1482,8 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             default -> null;
         };
         // 四舍五入
-        return result.setScale(2, BigDecimal.ROUND_HALF_UP);
+//        return result.setScale(2, BigDecimal.ROUND_HALF_UP);
+        return result;
     }
 
     /**
@@ -3762,6 +3767,9 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Transactional(rollbackFor = Exception.class)
     public InvoiceingResult followInvoicing(FollowInvoiceVo vo) {
         log.info("跟单费开票业务开始:参数=[{}]", JSONUtil.toJsonStr(vo));
+        if (!NumberUtil.isNumber(vo.getTaxPoint())){
+            throw new SystemException("请输入正确的税点");
+        }
 
         // 校验明细列表
         List<InsFeeFollowOrderVo> details = vo.getDetails();
@@ -3918,10 +3926,10 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             return CollUtil.newArrayList();
         }
         if (StrUtil.isBlank(followInvoicePageListVo.getSearchList().stream().filter(search -> "signYear".equals(search.getName())).findAny().get().getSearch())){
-            return CollUtil.newArrayList();
+            throw new SystemException("请选择年份!");
         }
         if (!StrUtil.contains(followInvoicePageListVo.getSearchList().stream().filter(search -> "signYear".equals(search.getName())).findAny().get().getSearch(), ",")){
-            return CollUtil.newArrayList();
+            throw new SystemException("请选择年份!");
         }
         FollowInvoicePageListVo.SearchVO searchYear = followInvoicePageListVo.getSearchList().stream().filter(search -> "signYear".equals(search.getName())).findFirst().orElse(new FollowInvoicePageListVo.SearchVO());
         Integer startYear = Integer.parseInt(searchYear.getSearch().split(",")[0]);
@@ -3949,8 +3957,8 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                         .collect(Collectors.toMap(FollowInvoicePageListVo.SearchVO::getName, Function.identity(), (oldItem, newItem) -> oldItem));
                 Set<String> names = searchVOMap.keySet();
 
-                // 保险公司
-                Predicate<InsPlyIncomeDto> companyIdPredicate = insPlyIncome -> {
+                // 分支保险公司
+                Predicate<InsPlyIncomeDto> partnerCompanyIdPredicate = insPlyIncome -> {
                     if (!names.contains(FollowInvoicePageListVo.SearchVO.companyId)) {
                         return true;
                     }
@@ -3965,21 +3973,21 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                     }
                     if ("等于".equalsIgnoreCase(type) || "包含".equalsIgnoreCase(type)) {
                         List<String> companyIds = Arrays.asList(search.split(","));
-                        return companyIds.contains(insPlyIncome.getCompanyId());
+                        return companyIds.contains(insPlyIncome.getPartnerCompanyId());
                     }
                     if ("不等于".equalsIgnoreCase(type) || "不包含".equalsIgnoreCase(type)) {
                         List<String> companyIds = Arrays.asList(search.split(","));
-                        return !companyIds.contains(insPlyIncome.getCompanyId());
+                        return !companyIds.contains(insPlyIncome.getPartnerCompanyId());
                     }
                     return true;
                 };
 
                 // AND / OR 组合逻辑(和代码A完全一致)
                 if ("and".equalsIgnoreCase(followInvoicePageListVo.getLogicJudge())) {
-                    Predicate<InsPlyIncomeDto> and = companyIdPredicate;
+                    Predicate<InsPlyIncomeDto> and = partnerCompanyIdPredicate;
                     filterIncomes = incomes.stream().filter(and).toList();
                 } else if ("or".equalsIgnoreCase(followInvoicePageListVo.getLogicJudge())) {
-                    Predicate<InsPlyIncomeDto> or = companyIdPredicate;
+                    Predicate<InsPlyIncomeDto> or = partnerCompanyIdPredicate;
                     filterIncomes = incomes.stream().filter(or).toList();
                 }
             }
@@ -4163,6 +4171,8 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                                                    String partnerCompanyId,
                                                    Map<Integer, BigDecimal> monthReceivableMap,
                                                    Map<String, BigDecimal> invoicedMap) {
+
+        String systemCode = baseController.getSystemCode();
         // 获取当月应收保费,默认为0
         BigDecimal receivable = monthReceivableMap.getOrDefault(month, BigDecimal.ZERO);
         // 获取当月已开票金额,默认为0
@@ -4185,6 +4195,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         queryWrapper.eq("year", year)
                 .eq("month", month)
                 .eq("partner_company_id", partnerCompanyId)
+                .eq("system_code", systemCode)
                 .last("LIMIT 1"); // 取一条即可,或者根据业务取最新的
         InsFeeFollowOrder dbOrder = insFeeFollowOrderMapper.selectOne(queryWrapper);
         if (dbOrder != null) {
@@ -4196,10 +4207,23 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             // 现在按wwq的要求改成:未开票金额 = 对账金额 - 已开票金额
             vo.setUninvoiced(dbOrder.getReconciliationAmount().subtract(invoiced));
         } else {
-            // 数据库无记录,使用默认值或DTO里的值
-            vo.setReconciliationAmount(null);
-            vo.setFalselyIncreasedDifference(null);
-            vo.setFalselyIncreasedReason(null);
+            QueryWrapper<InsFeeFollowOrderReconciliation> insFeeFollowOrderReconciliationQueryWrapper = new QueryWrapper<>();
+            insFeeFollowOrderReconciliationQueryWrapper.eq("year", year)
+                    .eq("month", month)
+                    .eq("partner_company_id", partnerCompanyId)
+                    .eq("system_code", systemCode)
+                    .last("LIMIT 1"); // 取一条即可,或者根据业务取最新的
+            InsFeeFollowOrderReconciliation insFeeFollowOrderReconciliation = insFeeFollowOrderReconciliationMapper.selectOne(insFeeFollowOrderReconciliationQueryWrapper);
+            if (null != insFeeFollowOrderReconciliation){
+                vo.setReconciliationAmount(insFeeFollowOrderReconciliation.getReconciliationAmount());
+                vo.setFalselyIncreasedDifference(insFeeFollowOrderReconciliation.getFalselyIncreasedDifference());
+                vo.setFalselyIncreasedReason(insFeeFollowOrderReconciliation.getFalselyIncreasedReason());
+            }else{
+                // 数据库无记录,使用默认值或DTO里的值
+                vo.setReconciliationAmount(null);
+                vo.setFalselyIncreasedDifference(null);
+                vo.setFalselyIncreasedReason(null);
+            }
         }
         return vo;
     }
@@ -4422,7 +4446,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                 BigDecimal receivableSupervisePremium = action.getReceivableSupervisePremium()  != null ? action.getReceivableSupervisePremium(): BigDecimal.ZERO;
 //                BigDecimal overinflatedAmount = action.getOverinflatedAmount() != null? action.getOverinflatedAmount(): BigDecimal.ZERO;
                 // 待结算金额 = 开票金额 - 已收金额
-                BigDecimal remainSettlementAmount = receivableSupervisePremium.subtract(settlementAmount);
+                BigDecimal remainSettlementAmount = receivableSupervisePremium.subtract(BigDecimalUtil.add(settlementAmount, settlementPaymentDifference));
                 // 设置已结算的金额
                 action.setSettlementAmount(settlementAmount);
                 // 设置待结算金额
@@ -5366,7 +5390,11 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         List<CalRes> sxfList = baseMapper.querySettledAmount(systemCode, queryVo.getInvoiceStartTime(), queryVo.getInvoiceEndTime(), queryVo.getAgreementType(), CollUtil.newArrayList("1", "3"));
         List<CalRes> gdfList = baseMapper.querySettledAmount(systemCode, queryVo.getInvoiceStartTime(), queryVo.getInvoiceEndTime(), queryVo.getAgreementType(), CollUtil.newArrayList("2", "4"));
         Map<String, BigDecimal> sxfSettledAmountMap = CollUtil.isNotEmpty(sxfList) ? sxfList.stream().collect(Collectors.toMap(CalRes::getCompanyId, CalRes::getSettlement, (o1,o2)->o1)) : new HashMap<>();
+        // 手续费的回款差额汇总
+        Map<String, BigDecimal> sxfSettledDiffAmountMap = CollUtil.isNotEmpty(sxfList) ? sxfList.stream().collect(Collectors.toMap(CalRes::getCompanyId, CalRes::getOverinflatedAmount, (o1,o2)->o1)) : new HashMap<>();
         Map<String, BigDecimal> gdfSettledAmountMap = CollUtil.isNotEmpty(gdfList) ? gdfList.stream().collect(Collectors.toMap(CalRes::getCompanyId, CalRes::getSettlement, (o1,o2)->o1)) : new HashMap<>();
+        // 跟单费的回款差额汇总
+        Map<String, BigDecimal> gdfSettledDiffAmountMap = CollUtil.isNotEmpty(gdfList) ? gdfList.stream().collect(Collectors.toMap(CalRes::getCompanyId, CalRes::getOverinflatedAmount, (o1,o2)->o1)) : new HashMap<>();
 
         // 计算已开票和未开票
         for (String companyId : companyMap.keySet()) {
@@ -5383,16 +5411,17 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
 
             CompanySuperviseSettlementReportDto dto;
             dto = companyMap.get(companyId);
-            companySuperviseSettlementReportDto.setSxfUnInvoicedAmount(BigDecimalUtil.subtract(new BigDecimal(dto.getSuperviseFee()),sxf).toString());
-            companySuperviseSettlementReportDto.setGdfUnInvoicedAmount(BigDecimalUtil.subtract(new BigDecimal(dto.getFollowFee()),gdf).toString());
+            companySuperviseSettlementReportDto.setSxfUnInvoicedAmount(BigDecimalUtil.subtract(new BigDecimal(dto.getSuperviseFee()),BigDecimalUtil.subtract(sxf, new BigDecimal(dto.getTotalOverinflatedAmount()))).toString());
+            companySuperviseSettlementReportDto.setGdfUnInvoicedAmount(BigDecimalUtil.subtract(new BigDecimal(dto.getFollowFee()),BigDecimalUtil.subtract(gdf,new BigDecimal(dto.getTotalOverinflatedAmount()))).toString());
             companySuperviseSettlementReportDto.setPtUnInvoicedAmount(BigDecimal.ZERO.toString());
 
             BigDecimal sxfS = sxfSettledAmountMap.getOrDefault(companyId, BigDecimal.ZERO);
             BigDecimal gdfS = gdfSettledAmountMap.getOrDefault(companyId, BigDecimal.ZERO);
             BigDecimal overinflatedAmount = sxfOverinflatedAmountMap.getOrDefault(companyId, BigDecimal.ZERO);
             companySuperviseSettlementReportDto.setSxfSettledAmount(Objects.toString(sxfS, BigDecimal.ZERO+""));
-            companySuperviseSettlementReportDto.setSxfUnSettledAmount(BigDecimalUtil.subtract(sxf,sxfS).toString());
+            companySuperviseSettlementReportDto.setSxfUnSettledAmount(BigDecimalUtil.subtract(sxf,BigDecimalUtil.add(sxfS,sxfSettledDiffAmountMap.getOrDefault(companyId, BigDecimal.ZERO))).toString());
             companySuperviseSettlementReportDto.setTotalOverinflatedAmount(Objects.toString(overinflatedAmount, BigDecimal.ZERO+""));
+            companySuperviseSettlementReportDto.setSettlementPaymentDifference(Objects.toString(sxfSettledDiffAmountMap.getOrDefault(companyId, BigDecimal.ZERO)) );
 
             companySuperviseSettlementReportDto.setGdfSettledAmount(Objects.toString(gdfS, BigDecimal.ZERO+""));
             companySuperviseSettlementReportDto.setGdfUnSettledAmount(BigDecimalUtil.subtract(gdf,gdfS).toString());
@@ -5551,6 +5580,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             tree.putExtra("gdfSettledAmount",dto.getGdfSettledAmount());
             tree.putExtra("gdfUnSettledAmount",dto.getGdfUnSettledAmount());
             tree.putExtra("totalOverinflatedAmount",dto.getTotalOverinflatedAmount());
+            tree.putExtra("settlementPaymentDifference",dto.getSettlementPaymentDifference());
         });
         log.info("树形结构构建:一级数据[{}]个", CollUtil.size(build));
         return build;
@@ -5948,6 +5978,19 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         String userName = baseController.getUserName();
         String systemCode = baseController.getSystemCode();
         log.info("租户[{}]下的用户[{}]标识发票[{}]为结算完成", systemCode, userName, invoiceId);
+
+        List<InsPlyIncomeInvoiceSettlement> insPlyIncomeInvoiceSettlements =  insPlyIncomeInvoiceSettlementMapper.querySettlementRecent(invoiceId);
+        InsPlyIncomeInvoice insPlyIncomeInvoice = insPlyIncomeInvoiceMapper.selectById(invoiceId);
+
+        // 标记结算完成的时候,将未结算金额汇总 到最后一次结算的回款差额里面  lipf 2026年7月7日10:53:47
+        BigDecimal settlementAmount =  insPlyIncomeInvoiceSettlements.stream().map(action-> BigDecimalUtil.add(action.getSettlementPaymentDifference(), action.getActualReceivedAmount()))
+                .reduce(BigDecimal.ZERO,BigDecimal::add);
+        BigDecimal subtract = BigDecimalUtil.subtract(insPlyIncomeInvoice.getReceivableSupervisePremium(), settlementAmount);
+        if(subtract.compareTo(BigDecimal.ZERO) != 0){
+            InsPlyIncomeInvoiceSettlement insPlyIncomeInvoiceSettlement = insPlyIncomeInvoiceSettlements.get(0);
+            insPlyIncomeInvoiceSettlement.setSettlementPaymentDifference(BigDecimalUtil.add(subtract,insPlyIncomeInvoiceSettlement.getSettlementPaymentDifference()));
+            insPlyIncomeInvoiceSettlementMapper.updateById(insPlyIncomeInvoiceSettlement);
+        }
         return insPlyIncomeInvoiceMapper.update(null, new LambdaUpdateWrapper<InsPlyIncomeInvoice>()
                 .set(InsPlyIncomeInvoice::getStatus,"1")
                 .set(InsPlyIncomeInvoice::getUpdateBy,userName)

+ 3 - 2
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -2002,12 +2002,13 @@
     <select id="querySettledAmount" resultType="com.jzg.organization.entity.dto.CalRes">
         select
         a.company_id ,
-        sum(COALESCE(a.actual_received_amount, 0)) as settlement
+        sum(COALESCE(a.actual_received_amount, 0)) as settlement,sum(a.overinflatedAmount) overinflatedAmount
         from
         (
         select distinct ins.id,
         ipi.company_id ,
-        COALESCE(ins.actual_received_amount, 0) as actual_received_amount
+        COALESCE(ins.actual_received_amount, 0) as actual_received_amount,
+        COALESCE(ins.settlement_payment_difference,0) as overinflatedAmount
         from ins_ply_income_invoice_settlement ins
         inner join ins_ply_income_invoice inc
         on ins.invoice_id = inc.id