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

Merge remote-tracking branch 'origin/master'

lixiaolong 2 недель назад
Родитель
Сommit
cba2bee4e9
25 измененных файлов с 10092 добавлено и 943 удалено
  1. 0 152
      commons/src/main/java/com/jzg/commons/entity/finance/dto/ReceivableExportExcelDto.java
  2. 6 2
      commons/src/main/java/com/jzg/commons/entity/finance/vo/BatchModifyVo.java
  3. 6 0
      commons/src/main/java/com/jzg/commons/entity/finance/vo/FollowCompanyFeeVO.java
  4. 0 304
      commons/src/main/java/com/jzg/commons/entity/finance/vo/InsPlyIncomeExportVo.java
  5. 7 0
      commons/src/main/java/com/jzg/commons/entity/finance/vo/InvoiceRecordQueryVo.java
  6. 10 0
      commons/src/main/java/com/jzg/commons/entity/finance/vo/SettlementQueryVo.java
  7. 32 0
      commons/src/main/java/com/jzg/commons/entity/finance/vo/importbatchmodify/InsPlyIncomeBatch.java
  8. 57 0
      commons/src/main/java/com/jzg/commons/entity/finance/vo/importbatchmodify/InsPlyIncomeExportVo.java
  9. 2 0
      commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfoFile.java
  10. 1 0
      commons/src/main/java/com/jzg/commons/entity/vo/InsFeeOrdersVo.java
  11. 11 1
      tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/component/TaiPingCrawlerRequestComponent.java
  12. 1 0
      tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/constant/RequestUrl.java
  13. 1875 0
      tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/entity/request/TaiPingCrawlerGetGuCarShipTaxListRequest.java
  14. 67 90
      tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/entity/request/TaiPingCrawlerPremiumCalculateRequest.java
  15. 4588 29
      tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/entity/request/TaiPingCrawlerSubmitValidateRequest.java
  16. 1 1
      tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/entity/request/TaiPingCrawlerVehicleForPRPQueryRequest.java
  17. 1 1
      tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/entity/response/TaiPingCrawlerFindSolutionCodeData.java
  18. 3007 0
      tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/entity/response/TaiPingCrawlerGetGuCarShipTaxListData.java
  19. 10 10
      tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/entity/response/TaiPingCrawlerPremiumCalculateData.java
  20. 11 1
      tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/service/impl/TaipingCrawlerRequestImpl.java
  21. 11 15
      tenant/organization/src/main/java/com/jzg/organization/controller/ReceivableController.java
  22. 10 5
      tenant/organization/src/main/java/com/jzg/organization/excel/listener/ReceivbleExcelListener.java
  23. 3 7
      tenant/organization/src/main/java/com/jzg/organization/service/ReceivableService.java
  24. 355 319
      tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java
  25. 20 6
      tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

+ 0 - 152
commons/src/main/java/com/jzg/commons/entity/finance/dto/ReceivableExportExcelDto.java

@@ -1,152 +0,0 @@
-package com.jzg.commons.entity.finance.dto;
-
-import com.alibaba.excel.annotation.ExcelIgnore;
-import com.alibaba.excel.annotation.ExcelProperty;
-import com.jzg.commons.core.base.PageRequest;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author tz
- * @description 应收查询VO
- * @createDate 2024-06-26 10:49:31
- */
-@Data
-public class ReceivableExportExcelDto extends PageRequest {
-
-    @Schema(description = "选中类型")
-    @ExcelIgnore
-    // 1 全部数据选中  2 选中部分数据
-    private String selectedType;
-
-    @Schema(description = "选中id")
-    @ExcelIgnore
-    private List<String> selectedIds;
-
-    @Schema(description = "协议类型")
-    @ExcelProperty(value = "协议类型", index = 13)
-    private String agreementType;
-
-    @Schema(description = "id")
-    @ExcelIgnore
-    private String id;
-
-    @Schema(description = "ids")
-    @ExcelIgnore
-    private List<String> ids;
-
-    @Schema(description = "查询类型")
-    @ExcelProperty(value = "查询类型", index = 14)
-    private String queryType;
-
-    @Schema(description = "车牌号")
-    @ExcelProperty(value = "车牌号", index = 0)
-    private String licenseNo;
-
-    @Schema(description = "险种信息")
-    @ExcelProperty(value = "险种信息", index = 15)
-    private String productId;
-
-    @Schema(description = "保险公司")
-    @ExcelIgnore
-    private String companyId;
-
-    @Schema(description = "签单时间开始时间")
-    @ExcelProperty(value = "签单时间开始时间", index = 11)
-    private String signingTimeStart;
-
-    @Schema(description = "签单时间结束时间")
-    @ExcelProperty(value = "签单时间结束时间", index = 12)
-    private String signingTimeEnd;
-
-    @Schema(description = "订单号")
-    @ExcelProperty(value = "订单号", index = 16)
-    private String orderNo;
-
-    @Schema(description = "订单号集合")
-    @ExcelIgnore
-    private List<String> orderNos;
-
-    @Schema(description = "协议id")
-    @ExcelIgnore
-    private String agreementId;
-
-    @Schema(description = "出单机构")
-    @ExcelIgnore
-    private String deptId;
-
-    @Schema(description = "险种")
-    @ExcelProperty(value = "险种", index = 17)
-    private String riskCode;
-
-    @Schema(description = "订单类型")
-    @ExcelProperty(value = "订单类型", index = 18)
-    private String orderType;
-
-    @Schema(description = "被保人")
-    @ExcelProperty(value = "被保人", index = 19)
-    private String insuredName;
-
-    @Schema(description = "交强险保单号")
-    @ExcelProperty(value = "交强险保单号", index = 1)
-    private String jqPolicyNo;
-
-    @Schema(description = "交强险手续费比例")
-    @ExcelProperty(value = "交强险手续费比例(%)", index = 2)
-    private String jqSuperviseCostsProportion;
-
-    @Schema(description = "交强险跟单费比例")
-    @ExcelProperty(value = "交强险跟单费比例(%)", index = 3)
-    private String jqOtherCostsProportion;
-
-    @Schema(description = "商业险保单号")
-    @ExcelProperty(value = "商业险保单号", index = 4)
-    private String syPolicyNo;
-
-    @Schema(description = "商业险手续费比例")
-    @ExcelProperty(value = "商业险手续费比例(%)", index = 5)
-    private String sySuperviseCostsProportion;
-
-    @Schema(description = "商业险跟单费比例")
-    @ExcelProperty(value = "商业险跟单费比例(%)", index = 6)
-    private String syOtherCostsProportion;
-
-    @Schema(description = "驾意险保单号")
-    @ExcelProperty(value = "驾意险保单号", index = 7)
-    private String jyPolicyNo;
-
-    @Schema(description = "驾意险手续费比例")
-    @ExcelProperty(value = "驾意险手续费比例(%)", index = 8)
-    private String jySuperviseCostsProportion;
-
-    @Schema(description = "驾意险跟单费比例")
-    @ExcelProperty(value = "驾意险跟单费比例(%)", index = 9)
-    private String jyOtherCostsProportion;
-
-    @Schema(description = "对接人")
-    @ExcelProperty(value = "对接人", index = 10)
-    private String dockingPerson;
-
-    @Schema(description = "交强起保时间")
-    @ExcelProperty(value = "交强起保时间", index = 20)
-    private String jqStartDate;
-
-    @Schema(description = "交强到期时间")
-    @ExcelProperty(value = "交强到期时间", index = 21)
-    private String jqEndDate;
-
-    @Schema(description = "商业起保时间")
-    @ExcelProperty(value = "商业起保时间", index = 22)
-    private String syStartDate;
-
-    @Schema(description = "商业到期时间")
-    @ExcelProperty(value = "商业到期时间", index = 23)
-    private String syEndDate;
-
-    @Schema(description = "产品名称")
-    @ExcelProperty(value = "产品名称", index = 24)
-    private String productName;
-
-}

+ 6 - 2
commons/src/main/java/com/jzg/commons/entity/finance/vo/BatchModifyVo.java

@@ -7,6 +7,7 @@ import lombok.Data;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -18,10 +19,13 @@ import java.util.List;
 public class BatchModifyVo {
 
     @Schema(description = "应收订单id")
-    private List<String> incomeIds;
+    private List<String> incomeIds = new ArrayList<>();
 
     @Schema(description = "车险订单的id")
-    private List<String> orderNos;
+    private List<String> orderNos = new ArrayList<>();
+
+    @Schema(description = "车牌号")
+    private String licenseNo;
 
     @Schema(description = "交强手续费比例")
     private BigDecimal jqSuperviseCostsProportion;

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/FollowCompanyFeeVO.java

@@ -80,4 +80,10 @@ public class FollowCompanyFeeVO {
     @Schema(description = "是否结算完成 0:未结算 1:已结算")
     private String settlementIdentification;
 
+    /**
+     * 年月,格式:YYYY-MM
+     */
+    @Schema(description = "年月")
+    private String signMonth;
+
 }

+ 0 - 304
commons/src/main/java/com/jzg/commons/entity/finance/vo/InsPlyIncomeExportVo.java

@@ -1,304 +0,0 @@
-package com.jzg.commons.entity.finance.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnore;
-import com.alibaba.excel.annotation.ExcelProperty;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.jzg.commons.core.base.BaseModel;
-import com.jzg.commons.entity.po.InsFeeOrders;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.io.Serial;
-
-@EqualsAndHashCode(callSuper = true)
-@Data
-@Schema(description = "财务应收表")
-public class InsPlyIncomeExportVo extends BaseModel {
-    @Serial
-    private static final long serialVersionUID = 6161862008963938376L;
-
-    @ExcelIgnore
-    private String id;
-
-    @Schema(description = "订单号")
-    @ExcelProperty("订单号")
-    private String orderNo;
-
-    @Schema(description = "协议类型")
-    @ExcelProperty("协议类型")
-    private String agreementType;
-
-    @Schema(description = "机构")
-    @ExcelProperty("机构id")
-    private String deptId;
-
-    @Schema(description = "机构名称")
-    @ExcelProperty("机构名称")
-    private String deptName;
-
-    @Schema(description = "产品id")
-    @ExcelProperty("产品id")
-    private String productId;
-
-    @Schema(description = "产品名称")
-    @ExcelProperty("产品名称")
-    private String productName;
-
-    @Schema(description = "险种")
-    @ExcelProperty("险种")
-    private String riskCode;
-
-    @Schema(description = "签单时间")
-    @TableField(exist = false)
-    @ExcelProperty("签单时间")
-    private String signingTime;
-
-    @Schema(description = "签单年份")
-    @TableField(exist = false)
-    private String signYear;
-
-    @Schema(description = "签单日期 yyyy-mm-dd 格式")
-    @TableField(exist = false)
-    private String signDate;
-
-    @Schema(description = "保司ID")
-    @ExcelProperty("保司ID")
-    private String companyId;
-
-    @Schema(description = "保司名称")
-    @TableField(exist = false)
-    @ExcelProperty("保司名称")
-    private String companyName;
-
-    @Schema(description = "协议Id")
-    @ExcelProperty("协议Id")
-    private String agreementId;
-
-    @Schema(description = "协议名称")
-    @ExcelProperty("协议名称")
-    private String agreementName;
-
-    @Schema(description = "被保人")
-    @ExcelProperty("被保人")
-    private String insuredPerson;
-
-    @Schema(description = "车牌号")
-    @ExcelProperty("车牌号")
-    private String licenseNo;
-
-    @Schema(description = "车船税")
-    @ExcelProperty("车船税")
-    private String taxPremium;
-
-    @Schema(description = "交强保单号")
-    @ExcelProperty("交强保单号")
-    private String jqPolicyNo;
-
-    @Schema(description = "商业保单号")
-    @ExcelProperty("商业保单号")
-    private String syPolicyNo;
-
-    @Schema(description = "驾意保单号")
-    @ExcelProperty("驾意保单号")
-    private String jyPolicyNo;
-
-    @Schema(description = "交强保费")
-    @ExcelProperty("交强保费")
-    private String jqPremium;
-
-    @Schema(description = "商业保费")
-    @ExcelProperty("商业保费")
-    private String syPremium;
-
-    @Schema(description = "驾意保费")
-    @ExcelProperty("驾意保费")
-    private String jyPremium;
-
-    @Schema(description = "交强手续费")
-    @ExcelProperty("交强手续费")
-    private String jqSuperviseCostsPremiums;
-
-    @Schema(description = "交强手续费比例")
-    @ExcelProperty("交强手续费比例")
-    private String jqSuperviseCostsProportion;
-
-    @Schema(description = "商业手续费")
-    @ExcelProperty("商业手续费")
-    private String sySuperviseCostsPremiums;
-
-    @Schema(description = "商业手续费比例")
-    @ExcelProperty("商业手续费比例")
-    private String sySuperviseCostsProportion;
-
-    @Schema(description = "驾意手续费")
-    @ExcelProperty("驾意手续费")
-    private String jySuperviseCostsPremiums;
-
-    @Schema(description = "驾意手续费比例")
-    @ExcelProperty("驾意手续费比例")
-    private String jySuperviseCostsProportion;
-
-    @TableField(exist = false)
-    @Schema(description = "应收手续费")
-    @ExcelProperty("应收手续费")
-    private String superviseCostsPremiums;
-
-    @TableField(exist = false)
-    @Schema(description = "应收跟单费")
-    @ExcelProperty("应收跟单费")
-    private String otherCostsPremiums;
-
-    @Schema(description = "交强跟单费比例")
-    @ExcelProperty("交强跟单费比例")
-    private String jqOtherCostsProportion;
-
-    @Schema(description = "交强跟单费")
-    @ExcelProperty("交强跟单费")
-    private String jqOtherCostsPremiums;
-
-    @Schema(description = "商业跟单费比例")
-    @ExcelProperty("商业跟单费比例")
-    private String syOtherCostsProportion;
-
-    @Schema(description = "商业跟单费")
-    @ExcelProperty("商业跟单费")
-    private String syOtherCostsPremiums;
-
-    @Schema(description = "驾意跟单费比例")
-    @ExcelProperty("驾意跟单费比例")
-    private String jyOtherCostsProportion;
-
-    @Schema(description = "驾意跟单费")
-    @ExcelProperty("驾意跟单费")
-    private String jyOtherCostsPremiums;
-
-    @Schema(description = "交强应收费用")
-    @ExcelProperty("交强应收费用")
-    private String jqReceivablePremium;
-
-    @Schema(description = "商业应收费用")
-    @ExcelProperty("商业应收费用")
-    private String syReceivablePremium;
-
-    @Schema(description = "驾意应收费用")
-    @ExcelProperty("驾意应收费用")
-    private String jyReceivablePremium;
-
-    @TableField(exist = false)
-    @Schema(description = "总应收金额")
-    @ExcelProperty("总应收金额")
-    private String receivableAmount;
-
-    @Schema(description = "手续费是否已经结算")
-    @ExcelProperty("手续费是否已经结算")
-    private String superviseSettlement;
-
-    @Schema(description = "跟单费是否已经结算")
-    @ExcelProperty("跟单费是否已经结算")
-    private String otherSettlement;
-
-    @Schema(description = "驾意险手续费是否已经结算")
-    @ExcelProperty("驾意险手续费是否已经结算")
-    private String jySuperviseSettlement;
-
-    @Schema(description = "驾意跟单位是否已经结算")
-    @ExcelProperty("驾意跟单位是否已经结算")
-    private String jyOtherSettlement;
-
-    @Schema(description = "平台协议车险应收是否已经结算  0 未结算  1 结算")
-    @ExcelProperty("平台协议车险应收是否已经结算")
-    private String platformSuperviseSettlement;
-
-    @Schema(description = "平台协议非车险应收是否已经结算  0 未结算  1 结算")
-    @ExcelProperty("平台协议非车险应收是否已经结算")
-    private String platformOtherSettlement;
-
-    @Schema(description = "维护人工号")
-    @ExcelProperty("维护人工号")
-    private String leaderId;
-
-    @Schema(description = "维护人名称")
-    @ExcelProperty("维护人名称")
-    private String leaderName;
-
-    @Schema(description = "对接人")
-    @ExcelProperty("对接人")
-    private String contactPerson;
-
-    @Schema(description = "对接人手机号")
-    private String contactPersonPhone;
-
-    @Schema(description = "系统code")
-    @ExcelProperty("系统code")
-    private String systemCode;
-
-    @Schema(description = "业务来源")
-    @ExcelProperty("业务来源")
-    private String businessSource;
-
-    // 设置初始值为0, 未结算
-    @Schema(description = "结算状态(编码)")
-    @ExcelProperty("结算状态(编码)")
-    private String settlementStatus="0";
-
-    @Schema(description = "结算状态(转义后)")
-    @ExcelProperty("结算状态(转义后)")
-    private String settlementStatusName;
-
-    @Schema(description = "增加类型")
-    @ExcelProperty("增加类型")
-    private String addType;
-
-    @TableField(exist = false)
-    @Schema(description = "交强起保日期")
-    @ExcelProperty("交强起保日期")
-    private String jqStartDate;
-
-    @TableField(exist = false)
-    @Schema(description = "商业起保日期")
-    @ExcelProperty("商业起保日期")
-    private String syStartDate;
-
-    @TableField(exist = false)
-    @Schema(description = "订单类型")
-    @ExcelProperty("订单类型")
-    private String orderType;
-
-    @TableField(exist = false)
-    @Schema(description = "订单类型(code)")
-    private String entryStatus;
-
-    @TableField(exist = false)
-    @Schema(description = "业务员类型 团队/渠道/电销/个代 5:团队 6:个代 7:渠道 8 :电销")
-    private String typeAttr;
-
-    @TableField(exist = false)
-    @Schema(description = "业务员类型 团队/渠道/电销/个代 5:团队 6:个代 7:渠道 8 :电销")
-    private String typeAttrName;
-
-    @TableField(exist = false)
-    @Schema(description = "实际签单用户手机号2")
-    private String realQuoteUserId;
-
-    @TableField(exist = false)
-    @Schema(description = "实际签单用户手机号")
-    private String realQuoteUserName;
-
-    @TableField(exist = false)
-    @Schema(description = "订单费用表")
-    private InsFeeOrders insFeeOrders;
-
-    @TableField(exist = false)
-    @Schema(description = "是否已经开票")
-    private String invoiceStatusName;
-
-    @TableField(exist = false)
-    @Schema(description = "订单关联的发票信息")
-    private String invoiceId;
-
-    @TableField(exist = false)
-    @Schema(description = "地区归属")
-    private String companyNameSimple;
-
-}

+ 7 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/InvoiceRecordQueryVo.java

@@ -1,6 +1,7 @@
 package com.jzg.commons.entity.finance.vo;
 
 import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.util.List;
@@ -81,4 +82,10 @@ public class InvoiceRecordQueryVo extends PageRequest {
      * 租户代码
      */
     private String systemCode;
+
+    /**
+     * 签署月份,格式:2026-07
+     */
+    @Schema(description = "签署月份")
+    private String signMonth;
 }

+ 10 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/SettlementQueryVo.java

@@ -77,9 +77,19 @@ public class SettlementQueryVo extends PageRequest {
     @Schema(description = "开票类型集合")
     private List<String> invoiceTypes;
 
+    @Schema(description = "公司id集合")
+    private List<String> companyIdList;
+
     @Schema(description = "协议类型 1-平台协议 2-私有协议")
     private String agreementType;
 
     @Schema(description = "租户代码")
     private String systemCode;
+
+
+    /**
+     * 签署月份,格式:2026-07
+     */
+    @Schema(description = "签署月份")
+    private String signMonth;
 }

+ 32 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/importbatchmodify/InsPlyIncomeBatch.java

@@ -0,0 +1,32 @@
+package com.jzg.commons.entity.finance.vo.importbatchmodify;
+
+import com.jzg.commons.entity.finance.po.InsPlyIncome;
+import com.jzg.commons.entity.orders.po.InsOrdersPolicy;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+
+/**
+ *
+ * @author lipf
+ * @date 2026/8/26 10:42
+ */
+@Data
+public class InsPlyIncomeBatch extends InsPlyIncomeExportVo{
+    @Serial
+    private static final long serialVersionUID = -4231629832376455207L;
+
+    @Schema(description = "订单号")
+    private String orderNo;
+
+
+    @Schema(description = "应收记录的序号")
+    private String incomeId;
+
+    @Schema(description = "应收记录")
+    private InsPlyIncome insPlyIncome;
+
+    @Schema(description = "保单信息")
+    private InsOrdersPolicy insOrdersPolicy;
+}

+ 57 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/importbatchmodify/InsPlyIncomeExportVo.java

@@ -0,0 +1,57 @@
+package com.jzg.commons.entity.finance.vo.importbatchmodify;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+@Schema(description = "财务应收表")
+public class InsPlyIncomeExportVo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 6161862008963938376L;
+
+
+    @Schema(description = "车牌号")
+    @ExcelProperty(value = "车牌号", index = 0)
+    private String licenseNo;
+
+    @Schema(description = "交强险保单号")
+    @ExcelProperty(value = "交强险保单号", index = 1)
+    private String jqPolicyNo;
+
+    @Schema(description = "商业险保单号")
+    @ExcelProperty(value = "商业险保单号", index = 2)
+    private String syPolicyNo;
+
+    @Schema(description = "非车险保单号")
+    @ExcelProperty(value = "非车险保单号", index = 3)
+    private String jyPolicyNo;
+
+    @Schema(description = "交强手续费比例")
+    @ExcelProperty(value ="交强手续费比例", index = 4)
+    private String jqSuperviseCostsProportion;
+
+    @Schema(description = "交强跟单费比例")
+    @ExcelProperty(value = "交强跟单费比例", index = 5)
+    private String jqOtherCostsProportion;
+
+    @Schema(description = "商业手续费比例")
+    @ExcelProperty(value = "商业手续费比例", index = 6)
+    private String sySuperviseCostsProportion;
+
+    @Schema(description = "商业跟单费比例")
+    @ExcelProperty(value = "商业跟单费比例", index = 7)
+    private String syOtherCostsProportion;
+
+    @Schema(description = "驾意手续费比例")
+    @ExcelProperty(value = "驾意手续费比例", index = 8)
+    private String jySuperviseCostsProportion;
+
+    @Schema(description = "驾意跟单费比例")
+    @ExcelProperty(value = "驾意跟单费比例", index = 9)
+    private String jyOtherCostsProportion;
+
+}

+ 2 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfoFile.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.jzg.commons.util.idgen.IdGenerate;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -17,6 +18,7 @@ import java.io.Serializable;
  * @date 2025/1/20 16:06
  */
 
+@NoArgsConstructor
 @Data
 @TableName("sys_user_jzg_info_file")
 public class SysUserJzgInfoFile implements Serializable {

+ 1 - 0
commons/src/main/java/com/jzg/commons/entity/vo/InsFeeOrdersVo.java

@@ -321,6 +321,7 @@ public class InsFeeOrdersVo {
         this.availableAmount = insFeeOrders.getAvailableAmount() != null ? insFeeOrders.getAvailableAmount() : BigDecimal.ZERO;
         this.remainingAmount = insFeeOrders.getRemainingAmount() != null ? insFeeOrders.getRemainingAmount() : BigDecimal.ZERO;
         this.usedAmount = insFeeOrders.getUsedAmount() != null ? insFeeOrders.getUsedAmount() : BigDecimal.ZERO;
+        this.totalExportDiffAmount = insFeeOrders.getTotalExportDiffAmount() != null ? insFeeOrders.getTotalExportDiffAmount() : BigDecimal.ZERO;
 
         //出口总费用
         this.totalExportPremium = BigDecimalUtil.add(BigDecimalUtil.add(insFeeOrders.getJqExportPremium(),insFeeOrders.getSyExportPremium()),insFeeOrders.getJyExportPremium());

+ 11 - 1
tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/component/TaiPingCrawlerRequestComponent.java

@@ -369,6 +369,16 @@ public class TaiPingCrawlerRequestComponent {
         }, httpHeaders,parameters);
     }
 
+    /**
+     * 获取车船税信息
+     */
+    public TaiPingCrawlerBaseResponse<TaiPingCrawlerGetGuCarShipTaxListData> getGuCarShipTaxList(TaiPingCrawlerGetGuCarShipTaxListRequest request,HttpHeaders httpHeaders,TaipingCrawlerConfigureParameters parameters) {
+        InsuranceLog.infoLog(InsuranceEnum.TPIC.getPinyin(), "\n\t---------> {} \n\t---------> URl: {} \n\t---------> 请求参数:{}",
+                "获取车船税信息", RequestUrl.GET_GU_CAR_SHIP_TAX_LIST.getRequestUrl(taiPingCrawlerProperties.getUrl()),JSON.toJSONString(request));
+        return requestPostStrDecrypt(RequestUrl.GET_GU_CAR_SHIP_TAX_LIST, request, new TypeReference<>() {
+        }, httpHeaders,parameters);
+    }
+
     /**
      * 刷新非车险列表
      */
@@ -442,7 +452,7 @@ public class TaiPingCrawlerRequestComponent {
      * @param httpHeaders 请求头
      * @return 验证响应
      */
-    public TaiPingCrawlerBaseResponse<TaiPingCrawlerSubmitValidateData> submitValidate(TaiPingCrawlerSubmitValidateRequest request, HttpHeaders httpHeaders,TaipingCrawlerConfigureParameters parameters) {
+    public TaiPingCrawlerBaseResponse<TaiPingCrawlerSubmitValidateData> submitValidate(TaiPingCrawlerPremiumCalculateRequest request, HttpHeaders httpHeaders,TaipingCrawlerConfigureParameters parameters) {
         InsuranceLog.infoLog(InsuranceEnum.TPIC.getPinyin(), "\n\t---------> {} \n\t---------> URl: {} \n\t---------> 请求参数:{}",
                 "核保提交验证", RequestUrl.SUBMIT_VALIDATE.getRequestUrl(taiPingCrawlerProperties.getUrl()),JSON.toJSONString(request));
         return requestPostStrDecrypt(RequestUrl.SUBMIT_VALIDATE, request, new TypeReference<>() {

+ 1 - 0
tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/constant/RequestUrl.java

@@ -24,6 +24,7 @@ public enum RequestUrl implements CrawlerRequestUrlStandard {
     GET_CAR_DEPRE_RATE("/proposalform/proposalDefaultData/getCarDepreRate", "车辆折旧率查询"),
     QUERY_RENEWAL("/proposalform/intelligentRetrieval/process2/QueryRenewal", "历史保单查询"),
     VEHICLE_FOR_PRP_QUERY("/proposalform/vehicleForPRPQuery", "精准查车查询"),
+    GET_GU_CAR_SHIP_TAX_LIST("/proposalform/vehicleInformation/getGuCarShipTaxList","获取车船税信息"),
 
     REFRESH_FC_PRODUCT_PAGE("/proposalform/fcProposal/refreshFcProductPage","刷新非车险列表"),
     GET_NO_CAR_PRODUCT_LIST("/nocar/api/v1/nocar/pc/getNoCarProductList","获取选择非车详情"),

+ 1875 - 0
tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/entity/request/TaiPingCrawlerGetGuCarShipTaxListRequest.java

@@ -0,0 +1,1875 @@
+package com.jzg.quotation.taiping.crawler.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.commons.entity.quote.vo.CarInfoVo;
+import com.jzg.commons.entity.quote.vo.CustomerInfoVo;
+import com.jzg.commons.entity.quote.vo.QuoteVo;
+import com.jzg.commons.entity.quote.vo.VehicleAndVesselTaxVo;
+import com.jzg.quotation.taiping.crawler.entity.TaipingCrawlerConfigureParameters;
+import com.jzg.quotation.taiping.crawler.entity.response.TaiPingCrawlerBrandNameQueryData;
+import com.jzg.quotation.taiping.crawler.entity.response.TaiPingCrawlerFindApplyNoResponse;
+import com.jzg.quotation.taiping.crawler.entity.response.TaiPingCrawlerFindByProductCodeResponse;
+import com.jzg.quotation.taiping.crawler.entity.response.TaiPingCrawlerFindSolutionCodeData;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.util.StringUtils;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @author quchen
+ * @date 2026/8/26 10:41
+ */
+
+@Data
+@NoArgsConstructor
+@JsonInclude(JsonInclude.Include.ALWAYS)
+public class TaiPingCrawlerGetGuCarShipTaxListRequest {
+    @JsonProperty("riskCodeType")
+    private String riskCodeType;
+
+    @JsonProperty("pfItemMotorDeviceDtoList")
+    private List<Object> pfItemMotorDeviceDtoList;
+
+    @JsonProperty("pfItemKind0801DtoList")
+    private List<PfItemKind0801Dto> pfItemKind0801DtoList;
+
+    @JsonProperty("pfItemKind0802DtoList")
+    private List<PfItemKind0802Dto> pfItemKind0802DtoList;
+
+    @JsonProperty("clauseList0801")
+    private List<Object> clauseList0801;
+
+    @JsonProperty("clauseList0802")
+    private List<Object> clauseList0802;
+
+    @JsonProperty("orderNo")
+    private String orderNo;
+
+    @JsonProperty("pfMainDto")
+    private PfMainDto pfMainDto;
+
+    @JsonProperty("pfVehicleOwner")
+    private PfVehicleOwner pfVehicleOwner;
+
+    @JsonProperty("pfRelatedPartyDto")
+    private PfRelatedPartyDto pfRelatedPartyDto;
+
+    @JsonProperty("pfItemMotorDto")
+    private PfItemMotorDto pfItemMotorDto;
+
+    @JsonProperty("pfRiskRelatedPartyDto")
+    private PfRiskRelatedPartyDto pfRiskRelatedPartyDto;
+
+    @JsonProperty("pfProposalCarShipTaxDto")
+    private PfProposalCarShipTaxDto pfProposalCarShipTaxDto;
+
+    @JsonProperty("pfPolicyInfoDto")
+    private PfPolicyInfoDto pfPolicyInfoDto;
+
+    @JsonProperty("incrementServiceMatchFlag")
+    private Boolean incrementServiceMatchFlag;
+
+    @JsonProperty("demandNoForce")
+    private String demandNoForce;
+
+    @JsonProperty("demandNoBusi")
+    private String demandNoBusi;
+
+    @JsonProperty("fcProductList")
+    private List<Object> fcProductList;
+
+    @JsonProperty("cjcSaleInfoDto")
+    private Object cjcSaleInfoDto;
+
+    @JsonProperty("fCsaleinfoDto")
+    private Object fCsaleinfoDto;
+
+    @JsonProperty("businessType")
+    private String businessType;
+
+    @JsonProperty("optType")
+    private String optType;
+
+    @JsonProperty("personInd")
+    private String personInd;
+
+    @JsonProperty("productType")
+    private String productType;
+
+    public TaiPingCrawlerGetGuCarShipTaxListRequest(QuoteVo quoteVo, TaipingCrawlerConfigureParameters parameters, String orderNo,
+                                                    TaiPingCrawlerBrandNameQueryData.ItemMotorDtoListDTO motor, String carActualValue,
+                                                    TaiPingCrawlerFindByProductCodeResponse.Record record, TaiPingCrawlerFindSolutionCodeData.RecordsDTO taiPingCrawlerFindSolutionCodeData,
+                                                    TaiPingCrawlerFindApplyNoResponse.GsApplyInfoMainDto gsApplyInfoMainDto) {
+        this.businessType = "1";
+        this.pfItemMotorDeviceDtoList = new ArrayList<>();
+        this.pfItemKind0801DtoList = List.of(new PfItemKind0801Dto(true));
+        this.clauseList0801 = new ArrayList<>();
+        this.pfMainDto = new PfMainDto(record,parameters,taiPingCrawlerFindSolutionCodeData,gsApplyInfoMainDto,quoteVo);
+        this.pfVehicleOwner = new PfVehicleOwner(quoteVo.getOwnersInfo(),quoteVo.getCarInfoVo());
+        this.pfRelatedPartyDto = new PfRelatedPartyDto(quoteVo.getPolicyHolderInfo());
+        this.pfItemMotorDto = new PfItemMotorDto(quoteVo.getCarInfoVo(), motor, orderNo, carActualValue);
+        this.pfRiskRelatedPartyDto = new PfRiskRelatedPartyDto(quoteVo.getInsuredPersonInfo());
+        this.pfPolicyInfoDto = new PfPolicyInfoDto(quoteVo);
+        this.incrementServiceMatchFlag = true;
+        this.demandNoForce = "";
+        this.demandNoBusi = "";
+        this.fcProductList = new ArrayList<>();
+        this.cjcSaleInfoDto = null;
+        this.fCsaleinfoDto = null;
+        this.businessType = "Proposal";
+        this.optType = "N";
+        this.personInd = "C";
+        this.productType = "1";
+    }
+
+    @Data
+    @NoArgsConstructor
+    @JsonInclude(JsonInclude.Include.ALWAYS)
+    public static class PfItemKind0801Dto{
+        @JsonProperty("kindCode_kindName")
+        private String kindCode_kindName;
+
+        @JsonProperty("basePremium")
+        private String basePremium;
+
+        @JsonProperty("shortRate")
+        private String shortRate;
+
+        @JsonProperty("discount")
+        private String discount;
+
+        @JsonProperty("grossPremium")
+        private String grossPremium;
+
+        @JsonProperty("priceTaxTotal")
+        private String priceTaxTotal;
+
+        @JsonProperty("relieveFund")
+        private String relieveFund;
+
+        public PfItemKind0801Dto(Boolean isCi) {
+            this.kindCode_kindName = "BZ-机动车交通事故责任强制险";
+            this.basePremium = "0.00";
+            this.shortRate = "100.00";
+            this.discount = "100.00";
+            this.grossPremium = "";
+            this.priceTaxTotal = "";
+            this.relieveFund = "0.00";
+        }
+    }
+
+    @Data
+    @NoArgsConstructor
+    @JsonInclude(JsonInclude.Include.ALWAYS)
+    public static class PfItemKind0802Dto {
+
+    }
+
+    @Data
+    @NoArgsConstructor
+    @JsonInclude(JsonInclude.Include.ALWAYS)
+    public static class PfMainDto{
+        @JsonProperty("agreementCode")
+        private String agreementCode;
+        @JsonProperty("agreementNo")
+        private String agreementNo;
+        @JsonProperty("agreementTypeName")
+        private String agreementTypeName;
+        @JsonProperty("appId")
+        private String appId;
+        @JsonProperty("applyName")
+        private String applyName;
+        @JsonProperty("applyNo")
+        private String applyNo;
+        @JsonProperty("applySerialNo")
+        private Integer applySerialNo;
+        @JsonProperty("arbitoryName")
+        private Object arbitoryName;
+        @JsonProperty("argueSolution")
+        private String argueSolution;
+        @JsonProperty("bankBranchCode")
+        private String bankBranchCode;
+        @JsonProperty("bankBranchName")
+        private String bankBranchName;
+        @JsonProperty("bankCustomerManagerCode")
+        private String bankCustomerManagerCode;
+        @JsonProperty("businessMode")
+        private String businessMode;
+        @JsonProperty("businessSource")
+        private String businessSource;
+        @JsonProperty("carIdRenewalFlag")
+        private String carIdRenewalFlag;
+        @JsonProperty("carIdSplitFlag")
+        private String carIdSplitFlag;
+        @JsonProperty("channelDetailCode")
+        private String channelDetailCode;
+        @JsonProperty("channelDetailName")
+        private String channelDetailName;
+        @JsonProperty("channelSort")
+        private String channelSort;
+        @JsonProperty("channelSortName")
+        private String channelSortName;
+        @JsonProperty("channelTip")
+        private String channelTip;
+        @JsonProperty("channelTipName")
+        private String channelTipName;
+        @JsonProperty("compLevel")
+        private String compLevel;
+        @JsonProperty("companyCode")
+        private String companyCode;
+        @JsonProperty("companyName")
+        private String companyName;
+        @JsonProperty("cooperateSiteCode")
+        private String cooperateSiteCode;
+        @JsonProperty("cooperateSiteName")
+        private String cooperateSiteName;
+        @JsonProperty("creditPeriod")
+        private String creditPeriod;
+        @JsonProperty("decisionMakingUnit")
+        private String decisionMakingUnit;
+        @JsonProperty("departmentCode")
+        private String departmentCode;
+        @JsonProperty("departmentName")
+        private String departmentName;
+        @JsonProperty("disabled")
+        private boolean disabled;
+        @JsonProperty("differentProtectFlag")
+        private String differentProtectFlag;
+        @JsonProperty("doubleProtectFlag")
+        private String doubleProtectFlag;
+        @JsonProperty("dsMakingTypeDetail")
+        private String dsMakingTypeDetail;
+        @JsonProperty("feeServiceLinkage")
+        private String feeServiceLinkage;
+        @JsonProperty("forceLinkCIFlag")
+        private boolean forceLinkCIFlag;
+        @JsonProperty("frontingCompany")
+        private String frontingCompany;
+        @JsonProperty("frontingCompanyName")
+        private String frontingCompanyName;
+        @JsonProperty("governmentCity")
+        private String governmentCity;
+        @JsonProperty("governmentCityName")
+        private String governmentCityName;
+        @JsonProperty("governmentCounty")
+        private String governmentCounty;
+        @JsonProperty("governmentCountyName")
+        private String governmentCountyName;
+        @JsonProperty("governmentProvince")
+        private String governmentProvince;
+        @JsonProperty("governmentProvinceName")
+        private String governmentProvinceName;
+        @JsonProperty("governmentServiceType")
+        private String governmentServiceType;
+        @JsonProperty("governmentType")
+        private String governmentType;
+        @JsonProperty("hengSangInd")
+        private String hengSangInd;
+        @JsonProperty("interSalesmanCode")
+        private String interSalesmanCode;
+        @JsonProperty("interSalesmanName")
+        private String interSalesmanName;
+        @JsonProperty("interSalesmanRegisterNo")
+        private String interSalesmanRegisterNo;
+        @JsonProperty("intermediaryCName")
+        private String intermediaryCName;
+        @JsonProperty("intermediaryCNName")
+        private String intermediaryCNName;
+        @JsonProperty("intermediaryCode")
+        private String intermediaryCode;
+        @JsonProperty("isDangerBz")
+        private String isDangerBz;
+        @JsonProperty("isSpecialCarFlag")
+        private String isSpecialCarFlag;
+        @JsonProperty("itemAddress")
+        private List<String> itemAddress;
+        @JsonProperty("label")
+        private String label;
+        @JsonProperty("lables")
+        private String lables;
+        @JsonProperty("modelNo")
+        private String modelNo;
+        @JsonProperty("newCarFlag")
+        private String newCarFlag;
+        @JsonProperty("oano")
+        private String oano;
+        @JsonProperty("optBtn")
+        private String optBtn;
+        @JsonProperty("outOrderNo")
+        private String outOrderNo;
+        @JsonProperty("outerCompanyCode")
+        private String outerCompanyCode;
+        @JsonProperty("outerCompanyName")
+        private String outerCompanyName;
+        @JsonProperty("outerSubCompanyCode")
+        private String outerSubCompanyCode;
+        @JsonProperty("outerSubCompanyName")
+        private String outerSubCompanyName;
+        @JsonProperty("outerUserCName")
+        private String outerUserCName;
+        @JsonProperty("outerUserCode")
+        private String outerUserCode;
+        @JsonProperty("pioneerCode")
+        private String pioneerCode;
+        @JsonProperty("pioneerName")
+        private String pioneerName;
+        @JsonProperty("poaSerialNo")
+        private String poaSerialNo;
+        @JsonProperty("policySort")
+        private String policySort;
+        @JsonProperty("priInd")
+        private String priInd;
+        @JsonProperty("premiumTrialFlag")
+        private String premiumTrialFlag;
+        @JsonProperty("producerName")
+        private String producerName;
+        @JsonProperty("query")
+        private String query;
+        @JsonProperty("queryApplyNo")
+        private String queryApplyNo;
+        @JsonProperty("quotationPlanFlag")
+        private String quotationPlanFlag;
+        @JsonProperty("registerNo")
+        private String registerNo;
+        @JsonProperty("renewalNo")
+        private String renewalNo;
+        @JsonProperty("salesmanCode")
+        private String salesmanCode;
+        @JsonProperty("salesmanName")
+        private String salesmanName;
+        @JsonProperty("salesmanRegisterNo")
+        private String salesmanRegisterNo;
+        @JsonProperty("serialNo")
+        private String serialNo;
+        @JsonProperty("solutionCode")
+        private String solutionCode;
+        @JsonProperty("source")
+        private String source;
+        @JsonProperty("sourceId")
+        private String sourceId;
+        @JsonProperty("taxRegistryNumber")
+        private String taxRegistryNumber;
+        @JsonProperty("teamManager")
+        private String teamManager;
+        @JsonProperty("teamManagerName")
+        private String teamManagerName;
+        @JsonProperty("teamName")
+        private String teamName;
+        @JsonProperty("telKetConfSwitch")
+        private String telKetConfSwitch;
+        @JsonProperty("touchId")
+        private String touchId;
+        @JsonProperty("tpFeeFlag")
+        private String tpFeeFlag;
+        @JsonProperty("value")
+        private String value;
+        @JsonProperty("zlbWindowNo")
+        private String zlbWindowNo;
+        public PfMainDto(TaiPingCrawlerFindByProductCodeResponse.Record record, TaipingCrawlerConfigureParameters parameters,
+                            TaiPingCrawlerFindSolutionCodeData.RecordsDTO taiPingCrawlerFindSolutionCodeData,
+                            TaiPingCrawlerFindApplyNoResponse.GsApplyInfoMainDto gsApplyInfoMainDto, QuoteVo quoteVo) {
+            this.renewalNo = "";
+            this.carIdRenewalFlag = "";
+            this.intermediaryCode = record.getIntermediaryCode();
+            this.businessSource = record.getBusinessSource();
+            this.channelTip = record.getChannelTip();
+            this.solutionCode = parameters.getSolutionCode();
+            this.channelDetailCode = record.getChannelSort();
+            this.teamManager = parameters.getSalesmanCode();
+            this.teamManagerName = "";
+            this.businessMode = "2";
+            this.agreementNo = parameters.getAgreementNo();
+            this.companyCode = parameters.getCompanyCode();
+            this.companyName = record.getCompanyName();
+            this.salesmanCode = parameters.getSalesmanCode();
+            this.salesmanName = taiPingCrawlerFindSolutionCodeData.getSalesmanName();
+            this.outerUserCode = "";
+            this.outerUserCName = "";
+            this.interSalesmanCode = parameters.getInterSalesmanCode();
+            this.interSalesmanName = parameters.getInterSalesmanRegisterNo();
+            this.salesmanRegisterNo = parameters.getSalesmanRegisterNo();
+            this.interSalesmanRegisterNo = parameters.getInterSalesmanRegisterNo();
+            this.cooperateSiteCode = taiPingCrawlerFindSolutionCodeData.getCooperateSiteCode();
+            this.cooperateSiteName = taiPingCrawlerFindSolutionCodeData.getCooperateSiteName();
+            this.priInd = "3";
+            this.outerCompanyCode = null;
+            this.outerCompanyName = null;
+            this.pioneerCode = "";
+            this.pioneerName = "";
+            this.outerSubCompanyCode = "";
+            this.outerSubCompanyName = "";
+            this.departmentCode = "";
+            this.departmentName = "";
+            this.governmentType = "";
+            this.itemAddress = new ArrayList<>();
+            this.governmentServiceType = "";
+            this.agreementTypeName = record.getAgreementTypeName();
+            this.lables = record.getLables();
+            this.agreementCode = record.getAgreementCode();
+            this.source = record.getSource();
+            this.producerName = record.getProducerName();
+            this.intermediaryCNName = record.getIntermediaryCNName();
+            this.frontingCompany = null;
+            this.frontingCompanyName = null;
+            this.hengSangInd = record.getHengSangInd();
+            this.channelSortName = record.getChannelSortName();
+            this.channelTipName = record.getChannelTipName();
+            this.sourceId = record.getSourceId();
+            this.channelSort = record.getChannelSort();
+            this.disabled = false;
+            this.governmentProvince = "";
+            this.governmentCity = "";
+            this.governmentCounty = "";
+            this.governmentProvinceName = "";
+            this.governmentCityName = "";
+            this.governmentCountyName = "";
+            this.creditPeriod = taiPingCrawlerFindSolutionCodeData.getCreditPeriod();
+            this.teamName = taiPingCrawlerFindSolutionCodeData.getTeamName();
+            this.registerNo = taiPingCrawlerFindSolutionCodeData.getRegisterNo();
+            this.taxRegistryNumber = taiPingCrawlerFindSolutionCodeData.getTaxRegistryNumber();
+            this.value = taiPingCrawlerFindSolutionCodeData.getSolutionCode();
+            this.label = taiPingCrawlerFindSolutionCodeData.getSolutionCode() +"-" +taiPingCrawlerFindSolutionCodeData.getSalesmanName() + "-" + taiPingCrawlerFindSolutionCodeData.getCooperateSiteName();
+            this.modelNo = gsApplyInfoMainDto.getModelNo();
+            this.query = "";
+            this.applySerialNo = gsApplyInfoMainDto.getSerialNo();
+            this.bankBranchName = "";
+            this.applyNo = gsApplyInfoMainDto.getApplyNo();
+            this.queryApplyNo = "";
+            this.zlbWindowNo =  "";
+            this.optBtn = "";
+            this.applyName = "";
+            this.decisionMakingUnit = "";
+            this.dsMakingTypeDetail = "";
+            this.compLevel = "0";
+            this.serialNo = "";
+            this.outOrderNo = "";
+            this.bankCustomerManagerCode = "";
+            this.bankBranchCode = "";
+            this.newCarFlag = "1";
+            if (quoteVo.getCiRiskInfoVo()!= null && quoteVo.getBiRiskInfoVo() != null) {
+                this.differentProtectFlag = "1";
+                this.doubleProtectFlag = "1";
+            } else {
+                this.doubleProtectFlag = "0";
+                this.differentProtectFlag = "0";
+            }
+            this.oano = "";
+            this.poaSerialNo = "";
+            this.isDangerBz = null;
+            this.tpFeeFlag = "0";
+            this.feeServiceLinkage = "0";
+            this.policySort = "NSP";
+            this.argueSolution = "1";
+            this.arbitoryName = null;
+            this.quotationPlanFlag = "0";
+            this.isSpecialCarFlag = "0";
+            this.carIdSplitFlag = "";
+            this.appId = "";
+            this.touchId = "";
+            this.telKetConfSwitch = "0";
+            this.premiumTrialFlag = "0";
+        }
+    }
+
+    @Data
+    @NoArgsConstructor
+    @JsonInclude(JsonInclude.Include.ALWAYS)
+    public static class PfVehicleOwner {
+        @JsonProperty("name")
+        private String name;
+        @JsonProperty("ownerNature")
+        private String ownerNature;
+        @JsonProperty("identifyType")
+        private String identifyType;
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+        @JsonProperty("birthDate")
+        private String birthDate;
+        @JsonProperty("sex")
+        private String sex;
+        @JsonProperty("profession")
+        private String profession;
+        @JsonProperty("mobilePhone")
+        private String mobilePhone;
+        @JsonProperty("isApplicantOperator")
+        private String isApplicantOperator;
+        @JsonProperty("lifeInd")
+        private String lifeInd;
+        @JsonProperty("customerGradeLabel")
+        private String customerGradeLabel;
+        @JsonProperty("carDriveAddress")
+        private String carDriveAddress;
+        @JsonProperty("customerGroup")
+        private String customerGroup;
+        @JsonProperty("licenseNo")
+        private String licenseNo;
+        @JsonProperty("driveUseAttribute")
+        private String driveUseAttribute;
+        @JsonProperty("printBrandName")
+        private String printBrandName;
+        @JsonProperty("frameNo")
+        private String frameNo;
+        @JsonProperty("engineNo")
+        private String engineNo;
+        @JsonProperty("singeinDate")
+        private String singeinDate;
+        @JsonProperty("certificateDate")
+        private String certificateDate;
+        @JsonProperty("address")
+        private String address;
+        @JsonProperty("enrollDate")
+        private String enrollDate;
+        @JsonProperty("nationality")
+        private String nationality;
+        @JsonProperty("identifyStartDate")
+        private String identifyStartDate;
+        @JsonProperty("identifyEndDate")
+        private String identifyEndDate;
+
+
+        public PfVehicleOwner(CustomerInfoVo ownersInfo, CarInfoVo carInfoVo) {
+            this.name = ownersInfo.getName();
+            this.ownerNature = "01";
+            this.identifyType = "01";
+            this.identifyNumber = ownersInfo.getIdentifyNumber();
+            this.birthDate = ownersInfo.getBirthday();
+            this.sex = ownersInfo.getGender();
+            this.profession = "";
+            this.mobilePhone = "";
+            this.isApplicantOperator = "1";
+            this.lifeInd = "";
+            this.customerGradeLabel = "";
+            this.carDriveAddress = "";
+            this.customerGroup = "";
+            this.licenseNo = carInfoVo.getLicenseNo();
+            if (carInfoVo.getCarNatureCode().equals("02")) {
+                this.driveUseAttribute = "A";
+            } else {
+                this.driveUseAttribute = "F";
+            }
+            this.printBrandName = carInfoVo.getBrandName();
+            this.frameNo = carInfoVo.getVinNo();
+            this.engineNo = carInfoVo.getEngineNo();
+            this.singeinDate = carInfoVo.getRegisterDate();
+            this.certificateDate = carInfoVo.getIssueDate();
+            this.address = ownersInfo.getAddr();
+            this.enrollDate = carInfoVo.getRegisterDate();
+            this.nationality = "汉";
+            this.identifyStartDate = ownersInfo.getIdentifyValidDate();
+            this.identifyEndDate = ownersInfo.getIdentifyValidEndDate();
+        }
+    }
+
+    @Data
+    @NoArgsConstructor
+    @JsonInclude(JsonInclude.Include.ALWAYS)
+    public static class PfRelatedPartyDto {
+
+        @JsonProperty("actController")
+        private String actController;
+        @JsonProperty("actControllerEDate")
+        private String actControllerEDate;
+        @JsonProperty("actControllerIdNo")
+        private String actControllerIdNo;
+        @JsonProperty("actControllerIdType")
+        private String actControllerIdType;
+        @JsonProperty("actControllerSDate")
+        private String actControllerSDate;
+        @JsonProperty("actControllerType")
+        private String actControllerType;
+        @JsonProperty("addressCName")
+        private String addressCName;
+        @JsonProperty("appliAddress")
+        private String appliAddress;
+        @JsonProperty("appliAge")
+        private Integer appliAge;
+        @JsonProperty("appliCompanyAddress")
+        private String appliCompanyAddress;
+        @JsonProperty("appliName")
+        private String appliName;
+        @JsonProperty("appliPhoneHolderCertNumber")
+        private String appliPhoneHolderCertNumber;
+        @JsonProperty("appliPhoneHolderCertiType")
+        private String appliPhoneHolderCertiType;
+        @JsonProperty("appliPhoneHolderName")
+        private String appliPhoneHolderName;
+        @JsonProperty("birthDate")
+        private String birthDate;
+        @JsonProperty("businessDealerIdNumber")
+        private String businessDealerIdNumber;
+        @JsonProperty("businessDealerIdType")
+        private String businessDealerIdType;
+        @JsonProperty("businessDealerName")
+        private String businessDealerName;
+        @JsonProperty("businessScope")
+        private String businessScope;
+        @JsonProperty("cifCode")
+        private String cifCode;
+        @JsonProperty("companyCode")
+        private String companyCode;
+        @JsonProperty("companyType")
+        private String companyType;
+        @JsonProperty("contactDealType")
+        private String contactDealType;
+        @JsonProperty("contactIdEndDate")
+        private String contactIdEndDate;
+        @JsonProperty("contactIdStartDate")
+        private String contactIdStartDate;
+        @JsonProperty("contactIdentifyNumber")
+        private String contactIdentifyNumber;
+        @JsonProperty("contactIdentifyType")
+        private String contactIdentifyType;
+        @JsonProperty("contactLongTermIdCard")
+        private String contactLongTermIdCard;
+        @JsonProperty("contactMobile")
+        private String contactMobile;
+        @JsonProperty("contactName")
+        private String contactName;
+        @JsonProperty("contactSex")
+        private String contactSex;
+        @JsonProperty("contactType")
+        private String contactType;
+        @JsonProperty("countryCode")
+        private String countryCode;
+        @JsonProperty("countryName")
+        private String countryName;
+        @JsonProperty("countyCName")
+        private String countyCName;
+        @JsonProperty("countyCode")
+        private String countyCode;
+        @JsonProperty("clientCode")
+        private String clientCode;
+        @JsonProperty("clientCName")
+        private String clientCName;
+        @JsonProperty("clientType")
+        private String clientType;
+        @JsonProperty("detailAddress")
+        private List<String> detailAddress;
+        @JsonProperty("department")
+        private String department;
+        @JsonProperty("departmentName")
+        private String departmentName;
+        @JsonProperty("email")
+        private String email;
+        @JsonProperty("fileType")
+        private String fileType;
+        @JsonProperty("grade")
+        private String grade;
+        @JsonProperty("gradeFlag")
+        private String gradeFlag;
+        @JsonProperty("groupNature")
+        private String groupNature;
+        @JsonProperty("identifyEndDate")
+        private String identifyEndDate;
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+        @JsonProperty("identifyStartDate")
+        private String identifyStartDate;
+        @JsonProperty("identifyType")
+        private String identifyType;
+        @JsonProperty("identifyTypeName")
+        private String identifyTypeName;
+        @JsonProperty("industryCode")
+        private String industryCode;
+        @JsonProperty("insuredCode")
+        private String insuredCode;
+        @JsonProperty("insuredType")
+        private String insuredType;
+        @JsonProperty("isApplicantOperator")
+        private String isApplicantOperator;
+        @JsonProperty("isIntercept")
+        private String isIntercept;
+        @JsonProperty("issuer")
+        private String issuer;
+        @JsonProperty("itemAddress")
+        private List<String> itemAddress;
+        @JsonProperty("itemCityCName")
+        private String itemCityCName;
+        @JsonProperty("itemCityCode")
+        private String itemCityCode;
+        @JsonProperty("itemProvinceCName")
+        private String itemProvinceCName;
+        @JsonProperty("itemProvinceCode")
+        private String itemProvinceCode;
+        @JsonProperty("leaderAddress")
+        private String leaderAddress;
+        @JsonProperty("leaderContact")
+        private String leaderContact;
+        @JsonProperty("leaderIdEDate")
+        private String leaderIdEDate;
+        @JsonProperty("leaderIdNo")
+        private String leaderIdNo;
+        @JsonProperty("leaderIdSDate")
+        private String leaderIdSDate;
+        @JsonProperty("leaderIdType")
+        private String leaderIdType;
+        @JsonProperty("leaderName")
+        private String leaderName;
+        @JsonProperty("leaderPCD")
+        private String leaderPCD;
+        @JsonProperty("leaderType")
+        private String leaderType;
+        @JsonProperty("longTermIdentifyCard")
+        private String longTermIdentifyCard;
+        @JsonProperty("mobile")
+        private String mobile;
+        @JsonProperty("mobilePhone")
+        private String mobilePhone;
+        @JsonProperty("name")
+        private String name;
+        @JsonProperty("nation")
+        private String nation;
+        @JsonProperty("newCustomSystemOperatorType")
+        private String newCustomSystemOperatorType;
+        @JsonProperty("occupationCode")
+        private String occupationCode;
+        @JsonProperty("operatorType")
+        private String operatorType;
+        @JsonProperty("ownerNature")
+        private String ownerNature;
+        @JsonProperty("relationWithBrach")
+        private String relationWithBrach;
+        @JsonProperty("relationWithBrachName")
+        private String relationWithBrachName;
+        @JsonProperty("riskCode")
+        private String riskCode;
+        @JsonProperty("sex")
+        private String sex;
+        @JsonProperty("shareHolder")
+        private String shareHolder;
+        @JsonProperty("shareHolderIdEDate")
+        private String shareHolderIdEDate;
+        @JsonProperty("shareHolderIdNo")
+        private String shareHolderIdNo;
+        @JsonProperty("shareHolderIdSDate")
+        private String shareHolderIdSDate;
+        @JsonProperty("shareHolderIdType")
+        private String shareHolderIdType;
+        @JsonProperty("showClientAddress")
+        private String showClientAddress;
+
+        public PfRelatedPartyDto(CustomerInfoVo policyHolderInfo) {
+            this.appliName = policyHolderInfo.getName();
+            this.insuredCode = "";
+            this.insuredType = "1";
+            this.identifyType = "01";
+            this.identifyNumber = policyHolderInfo.getIdentifyNumber();
+            if (policyHolderInfo.getIdentifyValidEndDate().equals("9999-12-31")) {
+                this.longTermIdentifyCard = "1";
+            } else {
+                this.longTermIdentifyCard = "0";
+            }
+            this.identifyStartDate = policyHolderInfo.getIdentifyValidDate();
+            this.identifyEndDate = policyHolderInfo.getIdentifyValidEndDate();
+            this.itemAddress = List.of(
+                    policyHolderInfo.getProvince(),
+                    policyHolderInfo.getCity(),
+                    policyHolderInfo.getCounty()
+            );
+            this.itemProvinceCode = policyHolderInfo.getProvinceCode();
+            this.itemProvinceCName = policyHolderInfo.getProvince();
+            this.itemCityCode = policyHolderInfo.getCityCode();
+            this.itemCityCName = policyHolderInfo.getCity();
+            this.countyCode = policyHolderInfo.getCountyCode();
+            this.countyCName = policyHolderInfo.getCounty();
+            this.appliAddress = policyHolderInfo.getAddr();
+            this.mobilePhone = policyHolderInfo.getMobile();
+            this.email = "1137201468@qq.com";
+            this.industryCode = "";
+            this.contactName = "";
+            this.contactMobile = "";
+            this.contactType = "1";
+            this.occupationCode = "30110";
+            this.countryCode = "CN";
+            this.contactIdentifyType = "01";
+            this.contactIdentifyNumber = "";
+            this.contactSex = "";
+            this.contactDealType = "1";
+            this.appliPhoneHolderName = "";
+            this.appliPhoneHolderCertiType = "";
+            this.appliPhoneHolderCertNumber = "";
+            this.leaderType = "1";
+            this.leaderName = "";
+            this.leaderIdType = "01";
+            this.leaderIdNo = "";
+            this.leaderIdSDate = "";
+            this.leaderIdEDate = "";
+            this.leaderContact = "";
+            this.leaderPCD = "";
+            this.leaderAddress = "";
+            this.businessScope = "";
+            this.businessDealerName = "";
+            this.businessDealerIdType = "";
+            this.businessDealerIdNumber = "";
+            this.sex = policyHolderInfo.getGender();
+            this.birthDate = policyHolderInfo.getBirthday();
+            this.appliAge = policyHolderInfo.getAge();
+            this.appliCompanyAddress = "";
+            this.shareHolder = "";
+            this.shareHolderIdType = "";
+            this.shareHolderIdNo = "";
+            this.shareHolderIdSDate = "";
+            this.shareHolderIdEDate = "";
+            this.actControllerType = "";
+            this.actController = "";
+            this.actControllerIdType = "";
+            this.actControllerIdNo = "";
+            this.actControllerSDate = "";
+            this.actControllerEDate = "";
+            this.companyType = "";
+            this.nation = "汉";
+            this.name = "";
+            this.ownerNature = "";
+            this.isApplicantOperator = "";
+            this.clientCode = "";
+            this.clientCName = "";
+            this.clientType = "";
+            this.cifCode = "";
+            this.department = "";
+            this.relationWithBrach = "";
+            this.showClientAddress = "";
+            this.addressCName = "";
+            this.mobile = "";
+            this.identifyTypeName = "";
+            this.companyCode = "";
+            this.departmentName = "";
+            this.relationWithBrachName = "";
+            this.riskCode = "";
+            this.countryName = "";
+            this.isIntercept = "";
+            this.issuer = "";
+            this.newCustomSystemOperatorType = "";
+            this.operatorType = "1";
+            this.detailAddress = Collections.emptyList();
+        }
+    }
+
+    @Data
+    @NoArgsConstructor
+    @JsonInclude(JsonInclude.Include.ALWAYS)
+    public static class PfItemMotorDto {
+        @JsonProperty("actualValue")
+        private String actualValue;
+        @JsonProperty("attachNature")
+        private String attachNature;
+        @JsonProperty("brandId")
+        private String brandId;
+        @JsonProperty("brandName")
+        private String brandName;
+        @JsonProperty("carBrand")
+        private String carBrand;
+        @JsonProperty("carCheckValidTime")
+        private String carCheckValidTime;
+        @JsonProperty("carFamilyTypeI")
+        private String carFamilyTypeI;
+        @JsonProperty("carFamilyTypeII")
+        private String carFamilyTypeII;
+        @JsonProperty("carGroupName")
+        private String carGroupName;
+        @JsonProperty("carID")
+        private String carID;
+        @JsonProperty("carId")
+        private String carId;
+        @JsonProperty("carIdRenewalFlag")
+        private String carIdRenewalFlag;
+        @JsonProperty("carKindCode")
+        private String carKindCode;
+        @JsonProperty("carKindCodeShow")
+        private String carKindCodeShow;
+        @JsonProperty("carKindCodeShowName")
+        private String carKindCodeShowName;
+        @JsonProperty("carName")
+        private String carName;
+        @JsonProperty("carNewOldFlag")
+        private String carNewOldFlag;
+        @JsonProperty("carUseType")
+        private String carUseType;
+        @JsonProperty("certificateDate")
+        private String certificateDate;
+        @JsonProperty("certificateNo")
+        private String certificateNo;
+        @JsonProperty("certificateReportDate")
+        private String certificateReportDate;
+        @JsonProperty("certificateType")
+        private String certificateType;
+        @JsonProperty("chdTeamGrade")
+        private String chdTeamGrade;
+        @JsonProperty("chdVehicleGrade")
+        private String chdVehicleGrade;
+        @JsonProperty("chgOwnerFlag")
+        private String chgOwnerFlag;
+        @JsonProperty("ciModelCode")
+        private String ciModelCode;
+        @JsonProperty("classificationOfCDW")
+        private String classificationOfCDW;
+        @JsonProperty("clauseType")
+        private String clauseType;
+        @JsonProperty("colorCode")
+        private String colorCode;
+        @JsonProperty("colorName")
+        private String colorName;
+        @JsonProperty("commercialCarGrade")
+        private String commercialCarGrade;
+        @JsonProperty("commercialCarGradeSource")
+        private String commercialCarGradeSource;
+        @JsonProperty("completeKerbMass")
+        private Double completeKerbMass;
+        @JsonProperty("configModel")
+        private String configModel;
+        @JsonProperty("coreValueType")
+        private String coreValueType;
+        @JsonProperty("countryNature")
+        private String countryNature;
+        @JsonProperty("cvFlag")
+        private Boolean cvFlag;
+        @JsonProperty("doubleProtectFlag")
+        private String doubleProtectFlag;
+        @JsonProperty("driveUseAttribute")
+        private String driveUseAttribute;
+        @JsonProperty("energyType")
+        private String energyType;
+        @JsonProperty("energyTypeDescribe")
+        private String energyTypeDescribe;
+        @JsonProperty("engineModel")
+        private String engineModel;
+        @JsonProperty("engineNo")
+        private String engineNo;
+        @JsonProperty("enrollDate")
+        private String enrollDate;
+        @JsonProperty("exhaustScale")
+        private Integer exhaustScale;
+        @JsonProperty("factory")
+        private String factory;
+        @JsonProperty("factoryId")
+        private String factoryId;
+        @JsonProperty("familyCode")
+        private String familyCode;
+        @JsonProperty("familyName")
+        private String familyName;
+        @JsonProperty("frameNo")
+        private String frameNo;
+        @JsonProperty("frameNoHeteroType")
+        private String frameNoHeteroType;
+        @JsonProperty("fuelType")
+        private String fuelType;
+        @JsonProperty("fuelTypeName")
+        private String fuelTypeName;
+        @JsonProperty("glassType")
+        private String glassType;
+        @JsonProperty("glassTypeName")
+        private String glassTypeName;
+        @JsonProperty("groupCode")
+        private String groupCode;
+        @JsonProperty("hazardType")
+        private String hazardType;
+        @JsonProperty("hfCode")
+        private String hfCode;
+        @JsonProperty("hfName")
+        private String hfName;
+        @JsonProperty("hkFlag")
+        private String hkFlag;
+        @JsonProperty("isJy")
+        private Boolean isJy;
+        @JsonProperty("isSpecialCarFlag")
+        private String isSpecialCarFlag;
+        @JsonProperty("jgVehicleCheckCode")
+        private String jgVehicleCheckCode;
+        @JsonProperty("licenseColorCode")
+        private String licenseColorCode;
+        @JsonProperty("licenseColorName")
+        private String licenseColorName;
+        @JsonProperty("licenseNo")
+        private String licenseNo;
+        @JsonProperty("licenseTypeCode")
+        private String licenseTypeCode;
+        @JsonProperty("licenseTypeName")
+        private String licenseTypeName;
+        @JsonProperty("loanVehicleFlag")
+        private String loanVehicleFlag;
+        @JsonProperty("localVehicleInd")
+        private String localVehicleInd;
+        @JsonProperty("longLoadPermit")
+        private String longLoadPermit;
+        @JsonProperty("makeDate")
+        private String makeDate;
+        @JsonProperty("modelCode")
+        private String modelCode;
+        @JsonProperty("motorTypeName")
+        private String motorTypeName;
+        @JsonProperty("negotiatedActualValue")
+        private String negotiatedActualValue;
+        @JsonProperty("negotiatedActualValueType")
+        private String negotiatedActualValueType;
+        @JsonProperty("nerveCentre")
+        private String nerveCentre;
+        @JsonProperty("newEnergyClauseFlag")
+        private String newEnergyClauseFlag;
+        @JsonProperty("newEnergyFlag")
+        private String newEnergyFlag;
+        @JsonProperty("newVehicleClassCode")
+        private String newVehicleClassCode;
+        @JsonProperty("newVehicleClassName")
+        private String newVehicleClassName;
+        @JsonProperty("noLicenseNo")
+        private Boolean noLicenseNo;
+        @JsonProperty("noticeType")
+        private String noticeType;
+        @JsonProperty("orderNo")
+        private String orderNo;
+        @JsonProperty("power")
+        private Integer power;
+        @JsonProperty("powerType")
+        private String powerType;
+        @JsonProperty("powerTypeCode")
+        private String powerTypeCode;
+        @JsonProperty("principalCHDTeamGrade")
+        private String principalCHDTeamGrade;
+        @JsonProperty("principalCHDVehicleGrade")
+        private String principalCHDVehicleGrade;
+        @JsonProperty("principalLicenseNo")
+        private String principalLicenseNo;
+        @JsonProperty("principalQuotationDiscount")
+        private String principalQuotationDiscount;
+        @JsonProperty("principalValidPolicyCount")
+        private String principalValidPolicyCount;
+        @JsonProperty("printBrandName")
+        private String printBrandName;
+        @JsonProperty("provinceEcdemicVehicleFlag")
+        private String provinceEcdemicVehicleFlag;
+        @JsonProperty("purchasePrice")
+        private String purchasePrice;
+        @JsonProperty("quoteName")
+        private String quoteName;
+        @JsonProperty("range")
+        private String range;
+        @JsonProperty("runAreaCode")
+        private String runAreaCode;
+        @JsonProperty("runAreaName")
+        private String runAreaName;
+        @JsonProperty("sale4SFlag")
+        private Object sale4SFlag;
+        @JsonProperty("saleAreaCode")
+        private String saleAreaCode;
+        @JsonProperty("saleAreaName")
+        private String saleAreaName;
+        @JsonProperty("saleCompany")
+        private String saleCompany;
+        @JsonProperty("seatCount")
+        private Integer seatCount;
+        @JsonProperty("shVehicleCode")
+        private String shVehicleCode;
+        @JsonProperty("singeinDate")
+        private String singeinDate;
+        @JsonProperty("specialCarFlag")
+        private String specialCarFlag;
+        @JsonProperty("taxVehicleCategory")
+        private String taxVehicleCategory;
+        @JsonProperty("thirdRunRoute")
+        private String thirdRunRoute;
+        @JsonProperty("tonCount")
+        private Integer tonCount;
+        @JsonProperty("totalTractionMass")
+        private String totalTractionMass;
+        @JsonProperty("transferDate")
+        private String transferDate;
+        @JsonProperty("useNatureShow")
+        private String useNatureShow;
+        @JsonProperty("useYears")
+        private Integer useYears;
+        @JsonProperty("val2")
+        private Boolean val2;
+        @JsonProperty("vehicleCategory")
+        private String vehicleCategory;
+        @JsonProperty("vehicleCategoryName")
+        private String vehicleCategoryName;
+        @JsonProperty("vehicleFatteryFlag")
+        private String vehicleFatteryFlag;
+        @JsonProperty("vehicleModelKind")
+        private String vehicleModelKind;
+        @JsonProperty("vehiclePubCode")
+        private String vehiclePubCode;
+        @JsonProperty("vehicleQueryType")
+        private String vehicleQueryType;
+        @JsonProperty("vehicleStyleUniqueId")
+        private String vehicleStyleUniqueId;
+        @JsonProperty("whiteListElecContactNo")
+        private String whiteListElecContactNo;
+        @JsonProperty("whiteListFlag")
+        private String whiteListFlag;
+        @JsonProperty("zjxlGrade")
+        private String zjxlGrade;
+
+        public PfItemMotorDto(CarInfoVo carInfoVo, TaiPingCrawlerBrandNameQueryData.ItemMotorDtoListDTO motor, String orderNo, String actualValue) {
+            this.isJy = false;
+            this.val2 = false;
+            this.brandName = motor.getBrandName();
+            this.printBrandName = motor.getPrintBrandName();
+            this.certificateDate = carInfoVo.getIssueDate();
+            this.carKindCode = motor.getCarKindCode();
+            if (Integer.parseInt(carInfoVo.getSeatCount()) < 6) {
+                this.carKindCodeShow = "11";
+            } else {
+                this.carKindCodeShow = "12";
+            }
+            this.carKindCodeShowName = motor.getCiModelClass();
+            this.vehicleCategory = carInfoVo.getCarTypeCode();
+            this.seatCount = Integer.valueOf(carInfoVo.getSeatCount());
+            if (carInfoVo.getTonCount() != null && !carInfoVo.getTonCount().isEmpty()) {
+                this.tonCount = (int) Double.parseDouble(carInfoVo.getTonCount());
+            } else {
+                this.tonCount = 0;
+            }
+            this.negotiatedActualValue = actualValue;
+            this.useNatureShow = carInfoVo.getCarNatureCode();
+            this.attachNature = "01";
+            if (carInfoVo.getCarNatureCode().equals("02")) {
+                this.driveUseAttribute = "A";
+            } else {
+                this.driveUseAttribute = "F";
+            }
+            this.carUseType = carInfoVo.getPropertyCode();
+            this.carID = motor.getCarID();
+            this.familyName = motor.getFamilyName();
+            this.colorCode = motor.getColorCode();
+            this.ciModelCode = motor.getCiModelCode();
+            this.licenseColorCode = motor.getLicenseColorCode();
+            this.purchasePrice = motor.getPurchasePrice();
+            this.carBrand = motor.getCarBrand();
+            this.actualValue = actualValue;
+            this.localVehicleInd = motor.getLocalVehicleInd();
+            this.completeKerbMass = motor.getCompleteKerbMass();
+            this.fuelType = motor.getFuelType();
+            this.factory = motor.getFactory();
+            this.engineModel = motor.getEngineModel();
+            this.factoryId = motor.getFactoryId();
+            this.clauseType = motor.getClauseType();
+            this.vehicleModelKind = motor.getVehicleModelKind();
+            this.hazardType = motor.getHazardType();
+            this.glassType = motor.getGlassType();
+            this.carName = motor.getCarName();
+            this.runAreaCode = motor.getRunAreaCode();
+            this.noticeType = motor.getNoticeType();
+            this.carCheckValidTime = "";
+            this.configModel = "";
+            this.shVehicleCode = "";
+            this.licenseTypeCode = motor.getLicenseTypeCode();
+            this.powerTypeCode = "";
+            this.powerType = "";
+            this.doubleProtectFlag = "";
+            this.taxVehicleCategory = motor.getTaxVehicleCategory();
+            this.countryNature = motor.getCountryNature();
+            this.makeDate = motor.getMakeDate();
+            this.jgVehicleCheckCode = motor.getJgVehicleCheckCode();
+            this.carId = motor.getCarID();
+            this.noLicenseNo = Boolean.FALSE;
+            this.vehicleQueryType = motor.getVehicleQueryType();
+            this.runAreaName = motor.getRunAreaName();
+            this.sale4SFlag = motor.getSale4SFlag();
+            this.saleCompany = motor.getSaleCompany();
+            this.saleAreaCode = motor.getSaleAreaCode();
+            this.provinceEcdemicVehicleFlag = motor.getProvinceEcdemicVehicleFlag();
+            this.vehicleFatteryFlag = motor.getVehicleFatteryFlag();
+            this.nerveCentre = motor.getNerveCentre();
+            this.thirdRunRoute = motor.getThirdRunRoute();
+            this.licenseNo = carInfoVo.getLicenseNo();
+            this.frameNo = carInfoVo.getVinNo();
+            this.engineNo = carInfoVo.getEngineNo();
+            this.modelCode = motor.getModelCode();
+            this.singeinDate = carInfoVo.getRegisterDate();
+            if (StringUtils.hasLength(carInfoVo.getLicenseNo())) {
+                this.carNewOldFlag = "1";
+            } else {
+                this.carNewOldFlag = "0";
+            }
+            this.enrollDate = carInfoVo.getRegisterDate();
+            this.useYears = getUseYears(carInfoVo.getRegisterDate());
+            this.exhaustScale = motor.getExhaustScale();
+            this.power = motor.getPower();
+            this.negotiatedActualValueType = motor.getNegotiatedActualValueType();
+            this.principalLicenseNo = motor.getPrincipalLicenseNo();
+            this.principalValidPolicyCount = motor.getPrincipalValidPolicyCount();
+            // 商业险过户标识
+            this.chgOwnerFlag = carInfoVo.isTransferBi() ? "1" : "0";
+            // 交强险过户车辆标识
+            this.specialCarFlag = carInfoVo.isTransfer() ? "1" : "";
+            // 过户日期
+            this.transferDate = carInfoVo.isTransferBi() || carInfoVo.isTransfer() ? carInfoVo.getTransferDate() : "";
+            this.loanVehicleFlag = carInfoVo.isLoanStatus() ? "1" : "0";
+            this.familyCode = motor.getFamilyCode();
+            this.hkFlag = motor.getHkFlag();
+            this.fuelTypeName = motor.getFuelTypeName();
+            this.whiteListFlag = motor.getWhiteListFlag();
+            this.whiteListElecContactNo = motor.getWhiteListElecContactNo();
+            this.groupCode = motor.getGroupCode();
+            this.commercialCarGradeSource = motor.getCommercialCarGradeSource();
+            this.commercialCarGrade = motor.getCommercialCarGrade();
+            this.saleAreaName = motor.getSaleAreaName();
+            this.totalTractionMass = motor.getTotalTractionMass();
+            this.quoteName = "";
+            this.classificationOfCDW = motor.getClassificationOfCDW();
+            this.isSpecialCarFlag = motor.getIsSpecialCarFlag();
+            this.cvFlag = Boolean.valueOf(motor.getCvFlag());
+            this.frameNoHeteroType = motor.getFrameNoHeteroType();
+            this.principalCHDVehicleGrade = motor.getPrincipalCHDVehicleGrade();
+            this.principalCHDTeamGrade = motor.getPrincipalCHDTeamGrade();
+            this.principalQuotationDiscount = motor.getPrincipalQuotationDiscount();
+            this.chdVehicleGrade = motor.getChdVehicleGrade();
+            this.chdTeamGrade = motor.getChdTeamGrade();
+            this.zjxlGrade = motor.getZjxlGrade();
+            if (carInfoVo.getEnergyTypeCode().equals("0")) {
+                this.newEnergyFlag = "0";
+                this.energyType = "0";
+            } else {
+                this.newEnergyFlag = "1";
+                this.energyType = "1";
+            }
+            this.energyTypeDescribe = motor.getEnergyTypeDescribe();
+            this.range = motor.getRange();
+            this.vehicleStyleUniqueId = motor.getVehicleStyleUniqueId();
+            this.certificateType = motor.getCertificateType();
+            this.certificateNo = motor.getCertificateNo();
+            this.certificateReportDate = motor.getCertificateReportDate();
+            this.longLoadPermit = motor.getLongLoadPermit();
+            this.brandId = motor.getBrandId();
+            this.colorName = motor.getColorName();
+            this.newVehicleClassCode = motor.getNewVehicleClassCode();
+            this.newVehicleClassName = motor.getNewVehicleClassName();
+            this.hfCode = motor.getHfCode();
+            this.hfName = motor.getHfName();
+            this.carGroupName = motor.getCarGroupName();
+            this.vehicleCategoryName = motor.getVehicleCategoryName();
+            this.glassTypeName = motor.getGlassTypeName();
+            this.orderNo = orderNo;
+            this.licenseColorName = motor.getLicenseColorName();
+            this.licenseTypeName = motor.getLicenseTypeName();
+            this.motorTypeName = motor.getMotorTypeName();
+            this.newEnergyClauseFlag = motor.getNewEnergyClauseFlag();
+            this.carIdRenewalFlag = "";
+        }
+
+        public int getUseYears(String registerDate) {
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            LocalDate startDate = LocalDate.parse(registerDate, formatter);
+            LocalDate endDate = LocalDate.now().plusDays(1);
+            // 总天数
+            long days = java.time.temporal.ChronoUnit.DAYS.between(startDate, endDate);
+            // 除以365 取整
+            return (int) (days / 365);
+        }
+    }
+
+    @Data
+    @NoArgsConstructor
+    @JsonInclude(JsonInclude.Include.ALWAYS)
+    public static class PfRiskRelatedPartyDto {
+        @JsonProperty("actController")
+        private String actController;
+        @JsonProperty("actControllerEDate")
+        private String actControllerEDate;
+        @JsonProperty("actControllerIdNo")
+        private String actControllerIdNo;
+        @JsonProperty("actControllerIdType")
+        private String actControllerIdType;
+        @JsonProperty("actControllerSDate")
+        private String actControllerSDate;
+        @JsonProperty("actControllerType")
+        private String actControllerType;
+        @JsonProperty("appliAddress")
+        private String appliAddress;
+        @JsonProperty("appliAge")
+        private Integer appliAge;
+        @JsonProperty("appliCompanyAddress")
+        private String appliCompanyAddress;
+        @JsonProperty("appliName")
+        private String appliName;
+        @JsonProperty("appliPhoneHolderCertNumber")
+        private String appliPhoneHolderCertNumber;
+        @JsonProperty("appliPhoneHolderCertiType")
+        private String appliPhoneHolderCertiType;
+        @JsonProperty("appliPhoneHolderName")
+        private String appliPhoneHolderName;
+        @JsonProperty("birthDate")
+        private String birthDate;
+        @JsonProperty("businessDealerIdNumber")
+        private String businessDealerIdNumber;
+        @JsonProperty("businessDealerIdType")
+        private String businessDealerIdType;
+        @JsonProperty("businessDealerName")
+        private String businessDealerName;
+        @JsonProperty("businessScope")
+        private String businessScope;
+        @JsonProperty("companyEstablishDate")
+        private String companyEstablishDate;
+        @JsonProperty("contactDealType")
+        private String contactDealType;
+        @JsonProperty("contactIdEndDate")
+        private String contactIdEndDate;
+        @JsonProperty("contactIdStartDate")
+        private String contactIdStartDate;
+        @JsonProperty("contactIdentifyNumber")
+        private String contactIdentifyNumber;
+        @JsonProperty("contactIdentifyType")
+        private String contactIdentifyType;
+        @JsonProperty("contactLongTermIdCard")
+        private String contactLongTermIdCard;
+        @JsonProperty("contactMobile")
+        private String contactMobile;
+        @JsonProperty("contactName")
+        private String contactName;
+        @JsonProperty("contactSex")
+        private String contactSex;
+        @JsonProperty("contactType")
+        private String contactType;
+        @JsonProperty("countryCode")
+        private String countryCode;
+        @JsonProperty("countyCName")
+        private String countyCName;
+        @JsonProperty("countyCode")
+        private String countyCode;
+        @JsonProperty("detailAddress")
+        private List<Object> detailAddress;
+        @JsonProperty("email")
+        private String email;
+        @JsonProperty("fileType")
+        private String fileType;
+        @JsonProperty("insuredName")
+        private String insuredName;
+        @JsonProperty("insuredCode")
+        private String insuredCode;
+        @JsonProperty("insuredType")
+        private String insuredType;
+        @JsonProperty("identifyType")
+        private String identifyType;
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+        @JsonProperty("longTermIdentifyCard")
+        private String longTermIdentifyCard;
+        @JsonProperty("identifyStartDate")
+        private String identifyStartDate;
+        @JsonProperty("identifyEndDate")
+        private String identifyEndDate;
+        @JsonProperty("itemAddress")
+        private List<String> itemAddress;
+        @JsonProperty("itemProvinceCode")
+        private String itemProvinceCode;
+        @JsonProperty("itemProvinceCName")
+        private String itemProvinceCName;
+        @JsonProperty("itemCityCode")
+        private String itemCityCode;
+        @JsonProperty("itemCityCName")
+        private String itemCityCName;
+        @JsonProperty("insuredAddress")
+        private String insuredAddress;
+        @JsonProperty("insuredMobilePhone")
+        private String insuredMobilePhone;
+        @JsonProperty("occupationCode")
+        private String occupationCode;
+        @JsonProperty("insuredPhoneHolderName")
+        private String insuredPhoneHolderName;
+        @JsonProperty("insuredPhoneHolderCertiType")
+        private String insuredPhoneHolderCertiType;
+        @JsonProperty("insuredPhoneHolderCertNumber")
+        private String insuredPhoneHolderCertNumber;
+        @JsonProperty("leaderType")
+        private String leaderType;
+        @JsonProperty("subLeaderName")
+        private String subLeaderName;
+        @JsonProperty("leaderIdType")
+        private String leaderIdType;
+        @JsonProperty("leaderIdNo")
+        private String leaderIdNo;
+        @JsonProperty("leaderIdSDate")
+        private String leaderIdSDate;
+        @JsonProperty("leaderIdEDate")
+        private String leaderIdEDate;
+        @JsonProperty("subLeaderConactMobile")
+        private String subLeaderConactMobile;
+        @JsonProperty("leaderPCD")
+        private String leaderPCD;
+        @JsonProperty("subLeaderAddress")
+        private String subLeaderAddress;
+        @JsonProperty("insuredSex")
+        private String insuredSex;
+        @JsonProperty("insuredBirthDate")
+        private String insuredBirthDate;
+        @JsonProperty("insuredAge")
+        private Integer insuredAge;
+        @JsonProperty("insuredCompanyAddress")
+        private String insuredCompanyAddress;
+        @JsonProperty("companyType")
+        private String companyType;
+        @JsonProperty("nation")
+        private String nation;
+        @JsonProperty("issuer")
+        private String issuer;
+        @JsonProperty("shareHolder")
+        private String shareHolder;
+        @JsonProperty("shareHolderIdType")
+        private String shareHolderIdType;
+        @JsonProperty("shareHolderIdNo")
+        private String shareHolderIdNo;
+        @JsonProperty("shareHolderIdSDate")
+        private String shareHolderIdSDate;
+        @JsonProperty("shareHolderIdEDate")
+        private String shareHolderIdEDate;
+        @JsonProperty("mobilePhone")
+        private String mobilePhone;
+        @JsonProperty("industryCode")
+        private String industryCode;
+        @JsonProperty("leaderName")
+        private String leaderName;
+        @JsonProperty("leaderContact")
+        private String leaderContact;
+        @JsonProperty("leaderAddress")
+        private String leaderAddress;
+        @JsonProperty("sex")
+        private String sex;
+        @JsonProperty("ownerNature")
+        private String ownerNature;
+        @JsonProperty("isApplicantOperator")
+        private String isApplicantOperator;
+        @JsonProperty("clientCode")
+        private String clientCode;
+        @JsonProperty("clientCName")
+        private String clientCName;
+        @JsonProperty("clientType")
+        private String clientType;
+        @JsonProperty("cifCode")
+        private String cifCode;
+        @JsonProperty("department")
+        private String department;
+        @JsonProperty("relationWithBrach")
+        private String relationWithBrach;
+        @JsonProperty("showClientAddress")
+        private String showClientAddress;
+        @JsonProperty("addressCName")
+        private String addressCName;
+        @JsonProperty("mobile")
+        private String mobile;
+        @JsonProperty("identifyTypeName")
+        private String identifyTypeName;
+        @JsonProperty("companyCode")
+        private String companyCode;
+        @JsonProperty("departmentName")
+        private String departmentName;
+        @JsonProperty("relationWithBrachName")
+        private String relationWithBrachName;
+        @JsonProperty("riskCode")
+        private String riskCode;
+        @JsonProperty("countryName")
+        private String countryName;
+        @JsonProperty("isIntercept")
+        private String isIntercept;
+        @JsonProperty("newCustomSystemOperatorType")
+        private String newCustomSystemOperatorType;
+
+
+        public PfRiskRelatedPartyDto(CustomerInfoVo insuredPersonInfo) {
+            this.insuredName = insuredPersonInfo.getName();
+            this.insuredCode = "";
+            this.insuredType = "1";
+            this.identifyType = "01";
+            this.identifyNumber = insuredPersonInfo.getIdentifyNumber();
+            if (insuredPersonInfo.getIdentifyValidEndDate().equals("9999-12-31")) {
+                this.longTermIdentifyCard = "1";
+            } else {
+                this.longTermIdentifyCard = "0";
+            }
+            this.identifyStartDate = insuredPersonInfo.getIdentifyValidDate();
+            this.identifyEndDate = insuredPersonInfo.getIdentifyValidEndDate();
+            this.itemAddress = List.of(
+                    insuredPersonInfo.getProvince(),
+                    insuredPersonInfo.getCity(),
+                    insuredPersonInfo.getCounty()
+            );
+            this.itemProvinceCode = insuredPersonInfo.getProvinceCode();
+            this.itemProvinceCName = insuredPersonInfo.getProvince();
+            this.itemCityCode = insuredPersonInfo.getCityCode();
+            this.itemCityCName = insuredPersonInfo.getCity();
+            this.countyCode = insuredPersonInfo.getCountyCode();
+            this.countyCName = insuredPersonInfo.getCounty();
+            this.insuredAddress = insuredPersonInfo.getAddr();
+            this.insuredMobilePhone = insuredPersonInfo.getMobile();
+            this.email = "1137201468@qq.com";
+            this.contactName = "";
+            this.contactMobile = "";
+            this.contactType = "1";
+            this.occupationCode = "30110";
+            this.contactIdentifyType = "01";
+            this.contactIdentifyNumber = "";
+            this.insuredPhoneHolderName = "";
+            this.insuredPhoneHolderCertiType = "";
+            this.insuredPhoneHolderCertNumber = "";
+            this.leaderType = "1";
+            this.subLeaderName = "";
+            this.leaderIdType = "01";
+            this.leaderIdNo = "";
+            this.leaderIdSDate = "";
+            this.leaderIdEDate = "";
+            this.subLeaderConactMobile = "";
+            this.businessScope = "";
+            this.leaderPCD = "";
+            this.subLeaderAddress = "";
+            this.insuredSex = "";
+            this.insuredBirthDate = insuredPersonInfo.getBirthday();
+            this.insuredAge = insuredPersonInfo.getAge();
+            this.insuredCompanyAddress = "";
+            this.countryCode = "CN";
+            this.companyType = "";
+            this.companyEstablishDate = "";
+            this.nation = "汉";
+            this.issuer = "";
+            this.businessDealerName = "";
+            this.businessDealerIdType = "";
+            this.businessDealerIdNumber = "";
+            this.shareHolder = "";
+            this.shareHolderIdType = "";
+            this.shareHolderIdNo = "";
+            this.shareHolderIdSDate = "";
+            this.shareHolderIdEDate = "";
+            this.actControllerType = "1";
+            this.actController = "";
+            this.actControllerIdType = "";
+            this.actControllerIdNo = "";
+            this.actControllerSDate = "";
+            this.actControllerEDate = "";
+            this.appliName = insuredPersonInfo.getName();
+            this.appliAddress = insuredPersonInfo.getAddr();
+            this.mobilePhone = insuredPersonInfo.getMobile();
+            this.industryCode = "";
+            this.contactSex = "";
+            this.contactDealType = "1";
+            this.appliPhoneHolderName = "";
+            this.appliPhoneHolderCertiType = "";
+            this.appliPhoneHolderCertNumber = "";
+            this.leaderName = "";
+            this.leaderContact = "";
+            this.leaderAddress = "";
+            this.sex = insuredPersonInfo.getGender();
+            this.birthDate = insuredPersonInfo.getBirthday();
+            this.appliAge = insuredPersonInfo.getAge();
+            this.appliCompanyAddress = "";
+            this.ownerNature = "";
+            this.isApplicantOperator = "";
+            this.clientCode = "";
+            this.clientCName = "";
+            this.clientType = "";
+            this.cifCode = "";
+            this.department = "";
+            this.relationWithBrach = "";
+            this.showClientAddress = "";
+            this.addressCName = addressCName;
+            this.mobile = insuredPersonInfo.getMobile();
+            this.identifyTypeName = "";
+            this.companyCode = "";
+            this.departmentName = "";
+            this.relationWithBrachName = "";
+            this.riskCode = "";
+            this.countryName = "";
+            this.isIntercept = "";
+            this.newCustomSystemOperatorType = "";
+            this.detailAddress = Collections.emptyList();
+        }
+    }
+
+    @Data
+    @NoArgsConstructor
+    @JsonInclude(JsonInclude.Include.ALWAYS)
+    public static class PfProposalCarShipTaxDto {
+        @JsonProperty("taxpayerIdentifier")
+        private String taxpayerIdentifier;
+        @JsonProperty("taxRelifFlag")
+        private String taxRelifFlag;
+        @JsonProperty("fuelType")
+        private String fuelType;
+        @JsonProperty("taxItemDetailCode")
+        private String taxItemDetailCode;
+        @JsonProperty("taxItemDetailName")
+        private String taxItemDetailName;
+        @JsonProperty("calculateMode")
+        private String calculateMode;
+        @JsonProperty("taxDueActual")
+        private Integer taxDueActual;
+        @JsonProperty("refundTaxDue")
+        private String refundTaxDue;
+        @JsonProperty("sumRefundTax")
+        private String sumRefundTax;
+        @JsonProperty("calcTaxFlag")
+        private String calcTaxFlag;
+        @JsonProperty("taxPaymentMark")
+        private String taxPaymentMark;
+        @JsonProperty("previousPay")
+        private Integer previousPay;
+        @JsonProperty("lateFee")
+        private Integer lateFee;
+        @JsonProperty("taxPayerName")
+        private String taxPayerName;
+        @JsonProperty("identifyType")
+        private String identifyType;
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+        @JsonProperty("paidFreeCertificate")
+        private String paidFreeCertificate;
+        @JsonProperty("taxDocumentDate")
+        private String taxDocumentDate;
+        @JsonProperty("taxPaidAreaCode")
+        private String taxPaidAreaCode;
+        @JsonProperty("relifReason")
+        private String relifReason;
+        @JsonProperty("freeRate")
+        private Integer freeRate;
+        @JsonProperty("deductionDueType")
+        private String deductionDueType;
+        @JsonProperty("taxRegistryNumber")
+        private String taxRegistryNumber;
+        @JsonProperty("taxCompancyCode")
+        private String taxCompancyCode;
+        @JsonProperty("taxCompancyName")
+        private String taxCompancyName;
+        @JsonProperty("carFindDate")
+        private String carFindDate;
+        @JsonProperty("previousPayYears")
+        private String previousPayYears;
+        @JsonProperty("itemAddress")
+        private String itemAddress;
+        @JsonProperty("provinceCode")
+        private String provinceCode;
+        @JsonProperty("provinceName")
+        private String provinceName;
+        @JsonProperty("cityCode")
+        private String cityCode;
+        @JsonProperty("cityName")
+        private String cityName;
+        @JsonProperty("countyCode")
+        private String countyCode;
+        @JsonProperty("countyName")
+        private String countyName;
+        @JsonProperty("detailedAddress")
+        private String detailedAddress;
+        @JsonProperty("fuelTypeCST")
+        private String fuelTypeCST;
+        @JsonProperty("useNatureCode")
+        private String useNatureCode;
+        @JsonProperty("taxPayerPhoneNumber")
+        private String taxPayerPhoneNumber;
+        @JsonProperty("taxStartDate")
+        private String taxStartDate;
+        @JsonProperty("taxEndDate")
+        private String taxEndDate;
+        @JsonProperty("newLicenseFlag")
+        private String newLicenseFlag;
+        @JsonProperty("payLastYear")
+        private String payLastYear;
+        @JsonProperty("payLastEndDate")
+        private String payLastEndDate;
+        @JsonProperty("sumPayTax")
+        private Integer sumPayTax;
+        @JsonProperty("taxRelief")
+        private Integer taxRelief;
+        @JsonProperty("vehicleCategory")
+        private String vehicleCategory;
+        @JsonProperty("certiType")
+        private String certiType;
+
+        public PfProposalCarShipTaxDto(VehicleAndVesselTaxVo vehicleAndVesselTax, CarInfoVo carInfoVo) {
+            this.taxpayerIdentifier = vehicleAndVesselTax.getIdentifyNumber();
+            this.taxRelifFlag = "02";
+            this.fuelType = carInfoVo.getEnergyTypeCode();
+            if (!carInfoVo.getEnergyTypeCode().equals("0")) {
+                this.taxItemDetailCode = "";
+                this.taxItemDetailName = "";
+                this.calculateMode = "1";
+            } else {
+                this.taxItemDetailCode = "02";
+                this.taxItemDetailName = "1.6至2.0升(含)客车";
+                this.calculateMode = "3";
+            }
+            this.taxDueActual = 0;
+            this.refundTaxDue = "";
+            this.sumRefundTax = "";
+            this.calcTaxFlag = "";
+            this.taxPaymentMark = "";
+            this.previousPay = 0;
+            this.lateFee = 0;
+            this.taxPayerName = vehicleAndVesselTax.getTaxpayerName();
+            this.identifyType = "01";
+            this.identifyNumber = vehicleAndVesselTax.getIdentifyNumber();
+            this.paidFreeCertificate = "";
+            this.taxDocumentDate = "";
+            this.taxPaidAreaCode = "";
+            this.relifReason = vehicleAndVesselTax.getRelifReason();
+            this.freeRate = 0;
+            this.deductionDueType = "";
+            this.taxRegistryNumber = "";
+            this.taxCompancyCode = vehicleAndVesselTax.getTaxComCode();
+            this.taxCompancyName = vehicleAndVesselTax.getTaxComName();
+            this.carFindDate = "";
+            this.previousPayYears = "";
+            this.itemAddress = "";
+            this.provinceCode = "";
+            this.provinceName = "";
+            this.cityCode = "";
+            this.cityName = "";
+            this.countyCode = "";
+            this.countyName = "";
+            this.detailedAddress = "";
+            this.fuelTypeCST = "A";
+            this.useNatureCode = "200";
+            this.taxPayerPhoneNumber = "";
+            this.taxStartDate = "";
+            this.taxEndDate = "";
+            this.newLicenseFlag = "1";
+            this.payLastYear = "";
+            this.payLastEndDate = "";
+            this.sumPayTax = 0;
+            this.taxRelief = 0;
+            this.vehicleCategory = "K33";
+            this.certiType = "01";
+        }
+    }
+
+    @Data
+    @NoArgsConstructor
+    @JsonInclude(JsonInclude.Include.ALWAYS)
+    public static class PfPolicyInfoDto {
+        @JsonProperty("arbitoryName")
+        private String arbitoryName;
+        @JsonProperty("argueSolution")
+        private String argueSolution;
+        @JsonProperty("chgOwnerFlag")
+        private String chgOwnerFlag;
+        @JsonProperty("demandNoBusi")
+        private String demandNoBusi;
+        @JsonProperty("demandNoForce")
+        private String demandNoForce;
+        @JsonProperty("effectFlag0801")
+        private Boolean effectFlag0801;
+        @JsonProperty("effectFlag0802")
+        private Boolean effectFlag0802;
+        @JsonProperty("endDate")
+        private String endDate;
+        @JsonProperty("endDate0801")
+        private String endDate0801;
+        @JsonProperty("endTime0801")
+        private String endTime0801;
+        @JsonProperty("endDate0802")
+        private String endDate0802;
+        @JsonProperty("endTime0802")
+        private String endTime0802;
+        @JsonProperty("forwardAgentUserCode")
+        private String forwardAgentUserCode;
+        @JsonProperty("immEffectStartDate0801")
+        private String immEffectStartDate0801;
+        @JsonProperty("immEffectStartDate0802")
+        private String immEffectStartDate0802;
+        @JsonProperty("immEffectType0801")
+        private Object immEffectType0801;
+        @JsonProperty("immEffectType0802")
+        private Object immEffectType0802;
+        @JsonProperty("isElectronicPolicyBS")
+        private String isElectronicPolicyBS;
+        @JsonProperty("isElectronicPolicyBZ")
+        private String isElectronicPolicyBZ;
+        @JsonProperty("isElectronicProposalBS")
+        private String isElectronicProposalBS;
+        @JsonProperty("isElectronicProposalBZ")
+        private String isElectronicProposalBZ;
+        @JsonProperty("loanVehicleFlag")
+        private Boolean loanVehicleFlag;
+        @JsonProperty("noDamageYears")
+        private Integer noDamageYears;
+        @JsonProperty("operateDate")
+        private String operateDate;
+        @JsonProperty("poaSerialNo")
+        private String poaSerialNo;
+        @JsonProperty("policyNo0801")
+        private String policyNo0801;
+        @JsonProperty("policyNo0802")
+        private String policyNo0802;
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        @JsonProperty("proposalNo0801")
+        private String proposalNo0801;
+        @JsonProperty("proposalNo0802")
+        private String proposalNo0802;
+        @JsonProperty("remark")
+        private String remark;
+        @JsonProperty("renewalNo0801")
+        private String renewalNo0801;
+        @JsonProperty("renewalNo0802")
+        private String renewalNo0802;
+        @JsonProperty("specialCarFlag")
+        private String specialCarFlag;
+        @JsonProperty("startDate0801")
+        private String startDate0801;
+        @JsonProperty("startTime0801")
+        private String startTime0801;
+        @JsonProperty("startDate0802")
+        private String startDate0802;
+        @JsonProperty("startTime0802")
+        private String startTime0802;
+        @JsonProperty("tradingRelevanceNo")
+        private Boolean tradingRelevanceNo;
+        @JsonProperty("transferDate")
+        private String transferDate;
+        public PfPolicyInfoDto(QuoteVo quoteVo) {
+            if (quoteVo.getCiRiskInfoVo() != null) {
+                String startDate = quoteVo.getCiRiskInfoVo().getStartDate();
+                String endDate = quoteVo.getCiRiskInfoVo().getEndDate();
+                this.startDate0801 = startDate.substring(0, 10);
+                this.startTime0801 = startDate.substring(11);
+                this.endDate0801 = endDate.substring(0, 10);
+                this.endTime0801 = endDate.substring(11);
+            }
+            if (quoteVo.getBiRiskInfoVo() != null) {
+                String startDate = quoteVo.getBiRiskInfoVo().getStartDate();
+                String endDate = quoteVo.getBiRiskInfoVo().getEndDate();
+                this.startDate0802 = startDate.substring(0, 10);
+                this.startTime0802 = startDate.substring(11);
+                this.endDate0802 = endDate.substring(0, 10);
+                this.endTime0802 = endDate.substring(11);
+            }
+            this.proposalNo = "";
+            this.renewalNo0801 = "";
+            this.renewalNo0802 = "";
+            this.proposalNo0801 = "";
+            this.demandNoForce = "";
+            this.immEffectStartDate0801 = null;
+            this.immEffectStartDate0802 = null;
+            this.immEffectType0801 = null;
+            this.immEffectType0802 = null;
+            this.demandNoBusi = "";
+            this.poaSerialNo = "";
+            this.effectFlag0801 = false;
+            this.effectFlag0802 = false;
+            this.proposalNo0802 = "";
+            CarInfoVo carInfoVo = quoteVo.getCarInfoVo();
+            // 商业险过户标识
+            this.chgOwnerFlag = carInfoVo.isTransferBi() ? "1" : "0";
+            // 交强险过户车辆标识
+            this.specialCarFlag = carInfoVo.isTransfer() ? "1" : "";
+            // 过户日期
+            this.transferDate = carInfoVo.isTransferBi() || carInfoVo.isTransfer() ? carInfoVo.getTransferDate() : "";
+            this.loanVehicleFlag = carInfoVo.isLoanStatus();
+            this.noDamageYears = 0;
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            this.operateDate = LocalDate.now().format(formatter);
+            this.tradingRelevanceNo = false;
+            this.argueSolution = "1";
+            this.forwardAgentUserCode = "";
+            this.arbitoryName = null;
+            this.isElectronicPolicyBZ = "0";
+            this.isElectronicProposalBZ = "0";
+            this.isElectronicPolicyBS = "0";
+            this.isElectronicProposalBS = "0";
+        }
+    }
+
+
+}

+ 67 - 90
tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/entity/request/TaiPingCrawlerPremiumCalculateRequest.java

@@ -103,7 +103,8 @@ public class TaiPingCrawlerPremiumCalculateRequest {
     public TaiPingCrawlerPremiumCalculateRequest(QuoteVo quoteVo, TaipingCrawlerConfigureParameters parameters, String orderNo,
                                                  TaiPingCrawlerBrandNameQueryData.ItemMotorDtoListDTO motor, String carActualValue,
                                                  TaiPingCrawlerFindByProductCodeResponse.Record record, TaiPingCrawlerFindSolutionCodeData.RecordsDTO taiPingCrawlerFindSolutionCodeData,
-                                                 TaiPingCrawlerFindApplyNoResponse.GsApplyInfoMainDto gsApplyInfoMainDto) {
+                                                 TaiPingCrawlerFindApplyNoResponse.GsApplyInfoMainDto gsApplyInfoMainDto,
+                                                 TaiPingCrawlerGetGuCarShipTaxListData taiPingCrawlerGetGuCarShipTaxListData) {
         boolean hasCi = quoteVo.getCiRiskInfoVo() != null;
         boolean hasBi = quoteVo.getBiRiskInfoVo() != null;
         if (hasCi && hasBi) {
@@ -131,14 +132,14 @@ public class TaiPingCrawlerPremiumCalculateRequest {
         this.pfItemMotorDto = new PfItemMotorDtoDTO(quoteVo.getCarInfoVo(), motor, orderNo, carActualValue);
         // 被保险人
         this.pfRiskRelatedPartyDto = new PfRiskRelatedPartyDtoDTO(quoteVo.getInsuredPersonInfo());
-        this.pfProposalCarShipTaxDto = new PfProposalCarShipTaxDtoDTO(quoteVo.getVehicleAndVesselTaxVo(),quoteVo.getCarInfoVo());
+        if (taiPingCrawlerGetGuCarShipTaxListData != null) {
+            this.pfProposalCarShipTaxDto = new PfProposalCarShipTaxDtoDTO(quoteVo.getVehicleAndVesselTaxVo(),quoteVo.getCarInfoVo(),taiPingCrawlerGetGuCarShipTaxListData.getPfProposalCarShipTaxDto());
+        }
         this.pfPolicyInfoDto = new PfPolicyInfoDtoDTO(quoteVo);
         if (quoteVo.getAccidentalDrivings() != null && quoteVo.getAccidentalDrivings().size() > 0) {
             this.incrementServiceMatchFlag = true;
-            this.isStandardProduct = "Y";
         } else {
             this.incrementServiceMatchFlag = false;
-            this.isStandardProduct = "N";
         }
         this.demandNoForce = "";
         this.demandNoBusi = "";
@@ -211,7 +212,7 @@ public class TaiPingCrawlerPremiumCalculateRequest {
         @JsonProperty("cooperateSiteName")
         private String cooperateSiteName;
         @JsonProperty("creditPeriod")
-        private Integer creditPeriod;
+        private String creditPeriod;
         @JsonProperty("decisionMakingUnit")
         private String decisionMakingUnit;
         @JsonProperty("departmentCode")
@@ -265,7 +266,7 @@ public class TaiPingCrawlerPremiumCalculateRequest {
         @JsonProperty("intermediaryCode")
         private String intermediaryCode;
         @JsonProperty("isDangerBz")
-        private Object isDangerBz;
+        private String isDangerBz;
         @JsonProperty("isSpecialCarFlag")
         private String isSpecialCarFlag;
         @JsonProperty("itemAddress")
@@ -352,6 +353,12 @@ public class TaiPingCrawlerPremiumCalculateRequest {
         private String value;
         @JsonProperty("zlbWindowNo")
         private String zlbWindowNo;
+        @JsonProperty("underwriteName")
+        private String underwriteName;
+        @JsonProperty("underWriteInd")
+        private String underWriteInd;
+        @JsonProperty("underwriteCode")
+        private String underwriteCode;
         public PfMainDtoDTO(TaiPingCrawlerFindByProductCodeResponse.Record record, TaipingCrawlerConfigureParameters parameters,
                             TaiPingCrawlerFindSolutionCodeData.RecordsDTO taiPingCrawlerFindSolutionCodeData,
                             TaiPingCrawlerFindApplyNoResponse.GsApplyInfoMainDto gsApplyInfoMainDto, QuoteVo quoteVo) {
@@ -629,7 +636,7 @@ public class TaiPingCrawlerPremiumCalculateRequest {
         @JsonProperty("clientType")
         private String clientType;
         @JsonProperty("detailAddress")
-        private List<Object> detailAddress;
+        private List<String> detailAddress;
         @JsonProperty("department")
         private String department;
         @JsonProperty("departmentName")
@@ -747,9 +754,9 @@ public class TaiPingCrawlerPremiumCalculateRequest {
             this.identifyStartDate = policyHolderInfo.getIdentifyValidDate();
             this.identifyEndDate = policyHolderInfo.getIdentifyValidEndDate();
             this.itemAddress = List.of(
-                    policyHolderInfo.getProvince(),
-                    policyHolderInfo.getCity(),
-                    policyHolderInfo.getCounty()
+                    policyHolderInfo.getProvinceCode(),
+                    policyHolderInfo.getCityCode(),
+                    policyHolderInfo.getCountyCode()
             );
             this.itemProvinceCode = policyHolderInfo.getProvinceCode();
             this.itemProvinceCName = policyHolderInfo.getProvince();
@@ -906,7 +913,7 @@ public class TaiPingCrawlerPremiumCalculateRequest {
         @JsonProperty("countryNature")
         private String countryNature;
         @JsonProperty("cvFlag")
-        private String cvFlag;
+        private Boolean cvFlag;
         @JsonProperty("doubleProtectFlag")
         private String doubleProtectFlag;
         @JsonProperty("driveUseAttribute")
@@ -1052,7 +1059,7 @@ public class TaiPingCrawlerPremiumCalculateRequest {
         @JsonProperty("thirdRunRoute")
         private String thirdRunRoute;
         @JsonProperty("tonCount")
-        private Double tonCount;
+        private Integer tonCount;
         @JsonProperty("totalTractionMass")
         private String totalTractionMass;
         @JsonProperty("transferDate")
@@ -1098,10 +1105,10 @@ public class TaiPingCrawlerPremiumCalculateRequest {
             this.carKindCodeShowName = motor.getCiModelClass();
             this.vehicleCategory = carInfoVo.getCarTypeCode();
             this.seatCount = Integer.valueOf(carInfoVo.getSeatCount());
-            if (carInfoVo.getTonCount() != null) {
-                this.tonCount = Double.valueOf(carInfoVo.getTonCount());
+            if (carInfoVo.getTonCount() != null && !carInfoVo.getTonCount().isEmpty()) {
+                this.tonCount = (int) Double.parseDouble(carInfoVo.getTonCount());
             } else {
-                this.tonCount = 0.00;
+                this.tonCount = 0;
             }
             this.negotiatedActualValue = actualValue;
             this.useNatureShow = carInfoVo.getCarNatureCode();
@@ -1192,7 +1199,7 @@ public class TaiPingCrawlerPremiumCalculateRequest {
             this.quoteName = "";
             this.classificationOfCDW = motor.getClassificationOfCDW();
             this.isSpecialCarFlag = motor.getIsSpecialCarFlag();
-            this.cvFlag = motor.getCvFlag();
+            this.cvFlag = Boolean.valueOf(motor.getCvFlag());
             this.frameNoHeteroType = motor.getFrameNoHeteroType();
             this.principalCHDVehicleGrade = motor.getPrincipalCHDVehicleGrade();
             this.principalCHDTeamGrade = motor.getPrincipalCHDTeamGrade();
@@ -1342,19 +1349,12 @@ public class TaiPingCrawlerPremiumCalculateRequest {
         private String itemCityCode;
         @JsonProperty("itemCityCName")
         private String itemCityCName;
-
-
         @JsonProperty("insuredAddress")
         private String insuredAddress;
         @JsonProperty("insuredMobilePhone")
         private String insuredMobilePhone;
-
-
-
         @JsonProperty("occupationCode")
         private String occupationCode;
-
-
         @JsonProperty("insuredPhoneHolderName")
         private String insuredPhoneHolderName;
         @JsonProperty("insuredPhoneHolderCertiType")
@@ -1375,7 +1375,6 @@ public class TaiPingCrawlerPremiumCalculateRequest {
         private String leaderIdEDate;
         @JsonProperty("subLeaderConactMobile")
         private String subLeaderConactMobile;
-
         @JsonProperty("leaderPCD")
         private String leaderPCD;
         @JsonProperty("subLeaderAddress")
@@ -1388,17 +1387,12 @@ public class TaiPingCrawlerPremiumCalculateRequest {
         private Integer insuredAge;
         @JsonProperty("insuredCompanyAddress")
         private String insuredCompanyAddress;
-
         @JsonProperty("companyType")
         private String companyType;
-
         @JsonProperty("nation")
         private String nation;
         @JsonProperty("issuer")
         private String issuer;
-
-
-
         @JsonProperty("shareHolder")
         private String shareHolder;
         @JsonProperty("shareHolderIdType")
@@ -1409,18 +1403,10 @@ public class TaiPingCrawlerPremiumCalculateRequest {
         private String shareHolderIdSDate;
         @JsonProperty("shareHolderIdEDate")
         private String shareHolderIdEDate;
-
-
-
         @JsonProperty("mobilePhone")
         private String mobilePhone;
         @JsonProperty("industryCode")
         private String industryCode;
-
-
-
-
-
         @JsonProperty("leaderName")
         private String leaderName;
         @JsonProperty("leaderContact")
@@ -1429,9 +1415,6 @@ public class TaiPingCrawlerPremiumCalculateRequest {
         private String leaderAddress;
         @JsonProperty("sex")
         private String sex;
-
-
-
         @JsonProperty("ownerNature")
         private String ownerNature;
         @JsonProperty("isApplicantOperator")
@@ -1486,9 +1469,9 @@ public class TaiPingCrawlerPremiumCalculateRequest {
             this.identifyStartDate = insuredPersonInfo.getIdentifyValidDate();
             this.identifyEndDate = insuredPersonInfo.getIdentifyValidEndDate();
             this.itemAddress = List.of(
-                    insuredPersonInfo.getProvince(),
-                    insuredPersonInfo.getCity(),
-                    insuredPersonInfo.getCounty()
+                    insuredPersonInfo.getProvinceCode(),
+                    insuredPersonInfo.getCityCode(),
+                    insuredPersonInfo.getCountyCode()
             );
             this.itemProvinceCode = insuredPersonInfo.getProvinceCode();
             this.itemProvinceCName = insuredPersonInfo.getProvince();
@@ -1626,7 +1609,7 @@ public class TaiPingCrawlerPremiumCalculateRequest {
         @JsonProperty("relifReason")
         private String relifReason;
         @JsonProperty("freeRate")
-        private Integer freeRate;
+        private double freeRate;
         @JsonProperty("deductionDueType")
         private String deductionDueType;
         @JsonProperty("taxRegistryNumber")
@@ -1680,68 +1663,62 @@ public class TaiPingCrawlerPremiumCalculateRequest {
         @JsonProperty("certiType")
         private String certiType;
 
-        public PfProposalCarShipTaxDtoDTO(VehicleAndVesselTaxVo vehicleAndVesselTax,CarInfoVo carInfoVo) {
+        public PfProposalCarShipTaxDtoDTO(VehicleAndVesselTaxVo vehicleAndVesselTax,CarInfoVo carInfoVo,TaiPingCrawlerGetGuCarShipTaxListData.PfProposalCarShipTaxDTO pfProposalCarShipTaxDto) {
             this.taxpayerIdentifier = vehicleAndVesselTax.getIdentifyNumber();
-            this.taxRelifFlag = "02";
-            this.fuelType = carInfoVo.getEnergyTypeCode();
-            if (!carInfoVo.getEnergyTypeCode().equals("0")) {
-                this.taxItemDetailCode = "";
-                this.taxItemDetailName = "";
-                this.calculateMode = "1";
-            } else {
-                this.taxItemDetailCode = "02";
-                this.taxItemDetailName = "1.6至2.0升(含)客车";
-                this.calculateMode = "3";
-            }
-            this.taxDueActual = 0;
-            this.refundTaxDue = "";
-            this.sumRefundTax = "";
-            this.calcTaxFlag = "";
-            this.taxPaymentMark = "";
-            this.previousPay = 0;
-            this.lateFee = 0;
-            this.taxPayerName = vehicleAndVesselTax.getTaxpayerName();
+            this.taxRelifFlag = pfProposalCarShipTaxDto.getTaxRelifFlag();
+            this.fuelType = pfProposalCarShipTaxDto.getFuelType();
+            this.taxItemDetailCode = pfProposalCarShipTaxDto.getTaxItemDetailCode();
+            this.taxItemDetailName = pfProposalCarShipTaxDto.getTaxItemDetailName();
+            this.calculateMode = pfProposalCarShipTaxDto.getCalculateMode();
+            this.taxDueActual = (pfProposalCarShipTaxDto.getTaxDueActual() != null && pfProposalCarShipTaxDto.getTaxDueActual() == 0.0) ? 0 : pfProposalCarShipTaxDto.getTaxDueActual().intValue();
+            this.refundTaxDue = pfProposalCarShipTaxDto.getRefundTaxDue();
+            this.sumRefundTax = pfProposalCarShipTaxDto.getSumRefundTax();
+            this.calcTaxFlag = pfProposalCarShipTaxDto.getCalcTaxFlag();
+            this.taxPaymentMark = pfProposalCarShipTaxDto.getTaxPaymentMark();
+            this.previousPay = (pfProposalCarShipTaxDto.getPreviousPay() != null && pfProposalCarShipTaxDto.getPreviousPay() == 0.0) ? 0 : pfProposalCarShipTaxDto.getPreviousPay().intValue();
+            this.lateFee = (pfProposalCarShipTaxDto.getLateFee() != null && pfProposalCarShipTaxDto.getLateFee() == 0.0) ? 0 : pfProposalCarShipTaxDto.getLateFee().intValue();
+            this.taxPayerName = pfProposalCarShipTaxDto.getTaxPayerName();
             this.identifyType = "01";
             this.identifyNumber = vehicleAndVesselTax.getIdentifyNumber();
             this.paidFreeCertificate = "";
             this.taxDocumentDate = "";
             this.taxPaidAreaCode = "";
             this.relifReason = vehicleAndVesselTax.getRelifReason();
-            this.freeRate = 50;
+            this.freeRate = (pfProposalCarShipTaxDto.getFreeRate() != null && pfProposalCarShipTaxDto.getFreeRate() == 0.0) ? 0.0 : pfProposalCarShipTaxDto.getFreeRate();
             this.deductionDueType = "";
             this.taxRegistryNumber = "";
-            this.taxCompancyCode = vehicleAndVesselTax.getTaxComCode();
-            this.taxCompancyName = vehicleAndVesselTax.getTaxComName();
-            this.carFindDate = "";
-            this.previousPayYears = "";
+            this.taxCompancyCode = pfProposalCarShipTaxDto.getTaxCompancyCode() != null ? pfProposalCarShipTaxDto.getTaxCompancyCode() : "";
+            this.taxCompancyName = pfProposalCarShipTaxDto.getTaxCompancyName() != null ? pfProposalCarShipTaxDto.getTaxCompancyName() : "";
+            this.carFindDate = pfProposalCarShipTaxDto.getCarFindDate() != null ? pfProposalCarShipTaxDto.getCarFindDate() : "";
             this.itemAddress = "";
-            this.provinceCode = "";
-            this.provinceName = "";
-            this.cityCode = "";
-            this.cityName = "";
-            this.countyCode = "";
-            this.countyName = "";
-            this.detailedAddress = "";
-            this.fuelTypeCST = "A";
-            this.useNatureCode = "200";
-            this.taxPayerPhoneNumber = "";
-            this.taxStartDate = "";
-            this.taxEndDate = "";
-            this.newLicenseFlag = "1";
-            this.payLastYear = "";
-            this.payLastEndDate = "";
-            this.sumPayTax = 0;
-            this.taxRelief = 0;
-            this.vehicleCategory = "K33";
-            this.certiType = "01";
-        }
+            this.provinceCode = pfProposalCarShipTaxDto.getProvinceCode() != null ? pfProposalCarShipTaxDto.getProvinceCode() : "";
+            this.provinceName = pfProposalCarShipTaxDto.getProvinceName() != null ? pfProposalCarShipTaxDto.getProvinceName() : "";
+            this.cityCode = pfProposalCarShipTaxDto.getCityCode() != null ? pfProposalCarShipTaxDto.getCityCode() : "";
+            this.cityName = pfProposalCarShipTaxDto.getCityName() != null ? pfProposalCarShipTaxDto.getCityName() : "";
+            this.countyCode = pfProposalCarShipTaxDto.getCountyCode() != null ? pfProposalCarShipTaxDto.getCountyCode() : "";
+            this.countyName = pfProposalCarShipTaxDto.getCountyName() != null ? pfProposalCarShipTaxDto.getCountyName() : "";
+            this.detailedAddress = pfProposalCarShipTaxDto.getDetailedAddress() != null ? pfProposalCarShipTaxDto.getDetailedAddress() : "";
+            this.previousPayYears = pfProposalCarShipTaxDto.getPreviousPayYears() != null ? pfProposalCarShipTaxDto.getPreviousPayYears() : "";
+            this.fuelTypeCST = pfProposalCarShipTaxDto.getFuelTypeCST() != null ? pfProposalCarShipTaxDto.getFuelTypeCST() : "";
+            this.useNatureCode = pfProposalCarShipTaxDto.getUseNatureCode() != null ? pfProposalCarShipTaxDto.getUseNatureCode() : "";
+            this.taxPayerPhoneNumber = pfProposalCarShipTaxDto.getTaxPayerPhoneNumber() != null ? pfProposalCarShipTaxDto.getTaxPayerPhoneNumber() : "";
+            this.taxStartDate = pfProposalCarShipTaxDto.getTaxStartDate() != null ? pfProposalCarShipTaxDto.getTaxStartDate() : "";
+            this.taxEndDate = pfProposalCarShipTaxDto.getTaxEndDate() != null ? pfProposalCarShipTaxDto.getTaxEndDate() : "";
+            this.newLicenseFlag = pfProposalCarShipTaxDto.getNewLicenseFlag() != null ? pfProposalCarShipTaxDto.getNewLicenseFlag() : "";
+            this.payLastYear = pfProposalCarShipTaxDto.getPayLastYear() != null ? pfProposalCarShipTaxDto.getPayLastYear() : "";
+            this.payLastEndDate = pfProposalCarShipTaxDto.getPayLastEndDate() != null ? pfProposalCarShipTaxDto.getPayLastEndDate() : "";
+            this.sumPayTax = pfProposalCarShipTaxDto.getSumPayTax() != null ? pfProposalCarShipTaxDto.getSumPayTax().intValue() : 0;
+            this.taxRelief = pfProposalCarShipTaxDto.getTaxRelief() != null ? pfProposalCarShipTaxDto.getTaxRelief().intValue() : 0;
+            this.vehicleCategory = pfProposalCarShipTaxDto.getVehicleCategory();
+            this.certiType = pfProposalCarShipTaxDto.getCertiType();
+            }
     }
 
     @NoArgsConstructor
     @Data
     public static class PfPolicyInfoDtoDTO {
         @JsonProperty("arbitoryName")
-        private Object arbitoryName;
+        private String arbitoryName;
         @JsonProperty("argueSolution")
         private String argueSolution;
         @JsonProperty("chgOwnerFlag")

Разница между файлами не показана из-за своего большого размера
+ 4588 - 29
tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/entity/request/TaiPingCrawlerSubmitValidateRequest.java


+ 1 - 1
tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/entity/request/TaiPingCrawlerVehicleForPRPQueryRequest.java

@@ -402,7 +402,7 @@ public class TaiPingCrawlerVehicleForPRPQueryRequest {
             this.governmentProvinceName = "";
             this.governmentCityName = "";
             this.governmentCountyName = "";
-            this.creditPeriod = taiPingCrawlerFindSolutionCodeData.getCreditPeriod();
+            this.creditPeriod = Integer.valueOf(taiPingCrawlerFindSolutionCodeData.getCreditPeriod());
             this.teamName = taiPingCrawlerFindSolutionCodeData.getTeamName();
             this.registerNo = taiPingCrawlerFindSolutionCodeData.getRegisterNo();
             this.taxRegistryNumber = taiPingCrawlerFindSolutionCodeData.getTaxRegistryNumber();

+ 1 - 1
tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/entity/response/TaiPingCrawlerFindSolutionCodeData.java

@@ -17,7 +17,7 @@ public class TaiPingCrawlerFindSolutionCodeData {
         private String solutionCode;
 
         @JsonProperty("creditPeriod")
-        private Integer creditPeriod;
+        private String creditPeriod;
 
         @JsonProperty("companyCode")
         private String companyCode;

+ 3007 - 0
tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/entity/response/TaiPingCrawlerGetGuCarShipTaxListData.java

@@ -0,0 +1,3007 @@
+package com.jzg.quotation.taiping.crawler.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author quchen
+ * @date 2026/8/26 11:34
+ */
+
+@Data
+@NoArgsConstructor
+public class TaiPingCrawlerGetGuCarShipTaxListData {
+    @JsonProperty("salesDto")
+    private SalesDTO salesDto;
+
+    @JsonProperty("itemMotorDto")
+    private ItemMotorDTO itemMotorDto;
+
+    @JsonProperty("vehicleOwnerDto")
+    private VehicleOwnerDTO vehicleOwnerDto;
+
+    @JsonProperty("policyHolderDto")
+    private PolicyHolderDTO policyHolderDto;
+
+    @JsonProperty("insuredDto")
+    private InsuredDTO insuredDto;
+
+    @JsonProperty("itemKindBzDto")
+    private ItemKindBzDTO itemKindBzDto;
+
+    @JsonProperty("carshipTaxDto")
+    private CarShipTaxDTO carshipTaxDto;
+
+    @JsonProperty("itemKindBsDTO")
+    private ItemKindBsDTO itemKindBsDTO;
+
+    @JsonProperty("passengersDriversAcciDto")
+    private PassengersDriversAcciDTO passengersDriversAcciDto;
+
+    @JsonProperty("acciInfoDto")
+    private AcciInfoDTO acciInfoDto;
+
+    @JsonProperty("pfPolicyInfoDto")
+    private PfPolicyInfoDTO pfPolicyInfoDto;
+
+    @JsonProperty("insurancePremiumDto")
+    private InsurancePremiumDTO insurancePremiumDto;
+
+    @JsonProperty("bankInfoVisible")
+    private Boolean bankInfoVisible;
+
+    @JsonProperty("guCIInsureAgentDataListBz")
+    private Object guCIInsureAgentDataListBz;
+
+    @JsonProperty("guCIInsureReferenceVehicleListBz")
+    private Object guCIInsureReferenceVehicleListBz;
+
+    @JsonProperty("guCIInsureAgentDataListBs")
+    private Object guCIInsureAgentDataListBs;
+
+    @JsonProperty("guCIInsureReferenceVehicleListBs")
+    private Object guCIInsureReferenceVehicleListBs;
+
+    @JsonProperty("guCIReInsureItemList")
+    private Object guCIReInsureItemList;
+
+    @JsonProperty("policyno0801")
+    private String policyno0801;
+
+    @JsonProperty("policyno0802")
+    private String policyno0802;
+
+    @JsonProperty("productType")
+    private String productType;
+
+    @JsonProperty("orderNo")
+    private String orderNo;
+
+    @JsonProperty("unmodifyInd")
+    private String unmodifyInd;
+
+    @JsonProperty("appId")
+    private String appId;
+
+    @JsonProperty("businessNo")
+    private String businessNo;
+
+    @JsonProperty("optType")
+    private String optType;
+
+    @JsonProperty("userCode")
+    private String userCode;
+
+    @JsonProperty("personInd")
+    private String personInd;
+
+    @JsonProperty("businessType")
+    private String businessType;
+
+    @JsonProperty("riskCodeType")
+    private String riskCodeType;
+
+    @JsonProperty("calculateRiskCodeBZ")
+    private String calculateRiskCodeBZ;
+
+    @JsonProperty("calculateRiskCodeBS")
+    private String calculateRiskCodeBS;
+
+    @JsonProperty("calculateSuccCodeBZ")
+    private String calculateSuccCodeBZ;
+
+    @JsonProperty("calculateSuccCodeBS")
+    private String calculateSuccCodeBS;
+
+    @JsonProperty("calculateErrorMsgBZ")
+    private String calculateErrorMsgBZ;
+
+    @JsonProperty("calculateErrorMsgBS")
+    private String calculateErrorMsgBS;
+
+    @JsonProperty("reCalculateFlag")
+    private String reCalculateFlag;
+
+    @JsonProperty("calculateTimeBetween")
+    private String calculateTimeBetween;
+
+    @JsonProperty("quotationDateBetween")
+    private String quotationDateBetween;
+
+    @JsonProperty("sumPremiumAndTax")
+    private Double sumPremiumAndTax;
+
+    @JsonProperty("sumPremiumTaxBusi")
+    private Double sumPremiumTaxBusi;
+
+    @JsonProperty("sumGrossPremiumBusi")
+    private Double sumGrossPremiumBusi;
+
+    @JsonProperty("sumGrossPremiumForce")
+    private Double sumGrossPremiumForce;
+
+    @JsonProperty("sumPremiumTaxForce")
+    private Double sumPremiumTaxForce;
+
+    @JsonProperty("proposalNo0801")
+    private String proposalNo0801;
+
+    @JsonProperty("proposalNo0802")
+    private String proposalNo0802;
+
+    @JsonProperty("riskCodeForce")
+    private String riskCodeForce;
+
+    @JsonProperty("riskCodeBusi")
+    private String riskCodeBusi;
+
+    @JsonProperty("bzReinsureFlag")
+    private String bzReinsureFlag;
+
+    @JsonProperty("bzReinsureNewStartDate")
+    private String bzReinsureNewStartDate;
+
+    @JsonProperty("bsReinsureFlag")
+    private String bsReinsureFlag;
+
+    @JsonProperty("bsReinsureNewStartDate")
+    private String bsReinsureNewStartDate;
+
+    @JsonProperty("reinsureFlag")
+    private String reinsureFlag;
+
+    @JsonProperty("benchmarkPremiumBusi")
+    private Double benchmarkPremiumBusi;
+
+    @JsonProperty("renewalNo")
+    private String renewalNo;
+
+    @JsonProperty("renewalNo0801")
+    private String renewalNo0801;
+
+    @JsonProperty("renewalNo0802")
+    private String renewalNo0802;
+
+    @JsonProperty("demandNoForce")
+    private String demandNoForce;
+
+    @JsonProperty("demandNoBusi")
+    private String demandNoBusi;
+
+    @JsonProperty("modifyFlag")
+    private String modifyFlag;
+
+    @JsonProperty("modifiedInfo")
+    private String modifiedInfo;
+
+    @JsonProperty("acciDtoList")
+    private Object acciDtoList;
+
+    @JsonProperty("datRiskScoreInfoDto")
+    private Object datRiskScoreInfoDto;
+
+    @JsonProperty("lyRiskScoreInfoDto")
+    private Object lyRiskScoreInfoDto;
+
+    @JsonProperty("jmRiskInfoDto")
+    private Object jmRiskInfoDto;
+
+    @JsonProperty("onlineCarHailingDto")
+    private Object onlineCarHailingDto;
+
+    @JsonProperty("decisionUnitList")
+    private Object decisionUnitList;
+
+    @JsonProperty("gsApplyInfoMainDtos")
+    private Object gsApplyInfoMainDtos;
+
+    @JsonProperty("kindModel")
+    private Object kindModel;
+
+    @JsonProperty("orderProductList")
+    private Object orderProductList;
+
+    @JsonProperty("pfMainDtoList")
+    private Object pfMainDtoList;
+
+    @JsonProperty("fcProductList")
+    private List<Object> fcProductList;
+
+    @JsonProperty("fcProductPolicyList")
+    private Object fcProductPolicyList;
+
+    @JsonProperty("sno")
+    private String sno;
+
+    @JsonProperty("telKetConfSwitch")
+    private String telKetConfSwitch;
+
+    @JsonProperty("kindList")
+    private Object kindList;
+
+    @JsonProperty("demandList")
+    private List<Object> demandList;
+
+    @JsonProperty("pfMainDto")
+    private PfMainDTO pfMainDto;
+
+    @JsonProperty("pfVehicleOwner")
+    private PfVehicleOwner pfVehicleOwner;
+
+    @JsonProperty("pfOtherVehicleOwners")
+    private Object pfOtherVehicleOwners;
+
+    @JsonProperty("pfRelatedPartyDto")
+    private PfRelatedPartyDTO pfRelatedPartyDto;
+
+    @JsonProperty("pfRiskRelatedPartyDto")
+    private PfRiskRelatedPartyDTO pfRiskRelatedPartyDto;
+
+    @JsonProperty("pfItemMotorDto")
+    private PfItemMotorDTO pfItemMotorDto;
+
+    @JsonProperty("pfRiskDtoList")
+    private Object pfRiskDtoList;
+
+    @JsonProperty("pfProposalCarShipTaxDto")
+    private PfProposalCarShipTaxDTO pfProposalCarShipTaxDto;
+
+    @JsonProperty("pfProposalCarShipTaxSubDtoList")
+    private Object pfProposalCarShipTaxSubDtoList;
+
+    @JsonProperty("pfProposalRiskProfitDtoList")
+    private Object pfProposalRiskProfitDtoList;
+
+    @JsonProperty("pfActuaryRiskDtoBusi")
+    private Object pfActuaryRiskDtoBusi;
+
+    @JsonProperty("coreRelatedAcciList")
+    private Object coreRelatedAcciList;
+
+    @JsonProperty("relatedAcciList")
+    private Object relatedAcciList;
+
+    @JsonProperty("relatedAcciPriceTaxTotalShow")
+    private Object relatedAcciPriceTaxTotalShow;
+
+    @JsonProperty("relatedAcci")
+    private Object relatedAcci;
+
+    @JsonProperty("guCloudFCPremiumDtoList")
+    private Object guCloudFCPremiumDtoList;
+
+    @JsonProperty("orderInfo")
+    private Object orderInfo;
+
+    @JsonProperty("fCacciProductDtoList")
+    private Object fCacciProductDtoList;
+
+    @JsonProperty("fCsaleinfoDto")
+    private Object fCsaleinfoDto;
+
+    @JsonProperty("fCproductConfigDto")
+    private Object fCproductConfigDto;
+
+    @JsonProperty("fcPrice")
+    private Object fcPrice;
+
+    @JsonProperty("pfItemKind0801Dto")
+    private Object pfItemKind0801Dto;
+
+    @JsonProperty("preResultJson")
+    private Object preResultJson;
+
+    @JsonProperty("hisFlag")
+    private String hisFlag;
+
+    @JsonProperty("twoLevelInsCode")
+    private String twoLevelInsCode;
+
+    @JsonProperty("threeLevelInsCode")
+    private String threeLevelInsCode;
+
+    @JsonProperty("type")
+    private String type;
+
+    @JsonProperty("isMatchClause")
+    private String isMatchClause;
+
+    @JsonProperty("originScList0801")
+    private List<Object> originScList0801;
+
+    @JsonProperty("originScList0802")
+    private List<Object> originScList0802;
+
+    @JsonProperty("policyNo1Suffix")
+    private String policyNo1Suffix;
+
+    @JsonProperty("policyNo2Suffix")
+    private String policyNo2Suffix;
+
+    @JsonProperty("remark")
+    private String remark;
+
+    @JsonProperty("guNcBlacklistDtos")
+    private Object guNcBlacklistDtos;
+
+    @JsonProperty("returnCode")
+    private String returnCode;
+
+    @JsonProperty("twoVerifyResult")
+    private String twoVerifyResult;
+
+    @JsonProperty("threeVerifyResult")
+    private String threeVerifyResult;
+
+    @JsonProperty("newCustCerifySwitch")
+    private String newCustCerifySwitch;
+
+    @JsonProperty("priceInvalidFlag")
+    private String priceInvalidFlag;
+
+    @JsonProperty("isAutocheckOrganFalg")
+    private String isAutocheckOrganFalg;
+
+    @JsonProperty("rideSharingMsg")
+    private Object rideSharingMsg;
+
+    @JsonProperty("guDecisionServiceKindInfo")
+    private Object guDecisionServiceKindInfo;
+
+    @JsonProperty("pfForceCIInsureDemandDto")
+    private Object pfForceCIInsureDemandDto;
+
+    @JsonProperty("pfBusiCIInsureDemandDto")
+    private Object pfBusiCIInsureDemandDto;
+
+    @JsonProperty("pfCIInsureDemandOldDtoForce")
+    private Object pfCIInsureDemandOldDtoForce;
+
+    @JsonProperty("pfCIInsureDemandOldDtoBusi")
+    private Object pfCIInsureDemandOldDtoBusi;
+
+    @JsonProperty("pfItemKind0801DtoList")
+    private List<PfItemKindDTO> pfItemKind0801DtoList;
+
+    @JsonProperty("pfItemKind0802DtoList")
+    private Object pfItemKind0802DtoList;
+
+    @JsonProperty("pfCILastPolicyInfoDto")
+    private Object pfCILastPolicyInfoDto;
+
+    @JsonProperty("pfActuaryCalculateDtoBS")
+    private Object pfActuaryCalculateDtoBS;
+
+    @JsonProperty("pfActuaryCalculateDtoBZ")
+    private Object pfActuaryCalculateDtoBZ;
+
+    @JsonProperty("pfCIInsureRiskItemDtoListBZ")
+    private Object pfCIInsureRiskItemDtoListBZ;
+
+    @JsonProperty("pfCIInsureRiskItemDtoListBS")
+    private Object pfCIInsureRiskItemDtoListBS;
+
+    @JsonProperty("pfCIVehiclePriceDtoForceList")
+    private Object pfCIVehiclePriceDtoForceList;
+
+    @JsonProperty("pfCIVehiclePriceDtoBusiList")
+    private Object pfCIVehiclePriceDtoBusiList;
+
+    @JsonProperty("guCIPrecisionScoreDtoList")
+    private Object guCIPrecisionScoreDtoList;
+
+    @JsonProperty("pfItemMotorDeviceDtoList")
+    private Object pfItemMotorDeviceDtoList;
+
+    @JsonProperty("pfNewEnergyDeviceDtoList")
+    private Object pfNewEnergyDeviceDtoList;
+
+    @JsonProperty("pfIntelligentDriveDtoList")
+    private Object pfIntelligentDriveDtoList;
+
+    @JsonProperty("pfProposalItemKindLoadingDtoList")
+    private Object pfProposalItemKindLoadingDtoList;
+
+    @JsonProperty("pfCIPureRiskPremiumDto0801List")
+    private Object pfCIPureRiskPremiumDto0801List;
+
+    @JsonProperty("pfCIInsureAgentDto0801List")
+    private Object pfCIInsureAgentDto0801List;
+
+    @JsonProperty("pfCIInsureDemandPayDto0801List")
+    private Object pfCIInsureDemandPayDto0801List;
+
+    @JsonProperty("pfCIInsureDemandPeccancyDto0801List")
+    private Object pfCIInsureDemandPeccancyDto0801List;
+
+    @JsonProperty("pfCIInsureRiskWarningDto0801List")
+    private Object pfCIInsureRiskWarningDto0801List;
+
+    @JsonProperty("pfCIPureRiskPremiumDto0802List")
+    private Object pfCIPureRiskPremiumDto0802List;
+
+    @JsonProperty("pfCIInsureAgentDto0802List")
+    private Object pfCIInsureAgentDto0802List;
+
+    @JsonProperty("pfCIInsureDemandPayDto0802List")
+    private Object pfCIInsureDemandPayDto0802List;
+
+    @JsonProperty("pfCIInsureDemandPeccancyDto0802List")
+    private Object pfCIInsureDemandPeccancyDto0802List;
+
+    @JsonProperty("pfCIInsureRiskWarningDto0802List")
+    private Object pfCIInsureRiskWarningDto0802List;
+
+    @JsonProperty("guJGViolationInfoDtoList")
+    private Object guJGViolationInfoDtoList;
+
+    @JsonProperty("guItemMotorExtPo")
+    private Object guItemMotorExtPo;
+
+    @JsonProperty("guTrafficDetailPo")
+    private Object guTrafficDetailPo;
+
+    @JsonProperty("guTrafficDetailDrinkList")
+    private Object guTrafficDetailDrinkList;
+
+    @JsonProperty("guTrafficDetailPeccancyPo")
+    private Object guTrafficDetailPeccancyPo;
+
+    @JsonProperty("bzInformationDetailDto")
+    private Object bzInformationDetailDto;
+
+    @JsonProperty("pfCommonDTO")
+    private Object pfCommonDTO;
+
+    @JsonProperty("personDTO")
+    private Object personDTO;
+
+    @JsonProperty("personSaliDTO")
+    private Object personSaliDTO;
+
+    @JsonProperty("commercialDTO")
+    private Object commercialDTO;
+
+    @JsonProperty("pfILogUnderwriteResultDTO")
+    private Object pfILogUnderwriteResultDTO;
+
+    @JsonProperty("clauseList0801")
+    private List<Object> clauseList0801;
+
+    @JsonProperty("clauseList0802")
+    private List<Object> clauseList0802;
+
+    @JsonProperty("pfProposalCJQueryDto")
+    private Object pfProposalCJQueryDto;
+
+    @JsonProperty("forceDamageTimes")
+    private String forceDamageTimes;
+
+    @JsonProperty("manualForceDamageTimes")
+    private String manualForceDamageTimes;
+
+    @JsonProperty("busiDamageTimes")
+    private String busiDamageTimes;
+
+    @JsonProperty("insureYears")
+    private String insureYears;
+
+    @JsonProperty("claimTimes")
+    private String claimTimes;
+
+    @JsonProperty("manualInsureYears")
+    private String manualInsureYears;
+
+    @JsonProperty("manualClaimTimes")
+    private String manualClaimTimes;
+
+    @JsonProperty("relieveFund")
+    private Object relieveFund;
+
+    @JsonProperty("policySort")
+    private String policySort;
+
+    @JsonProperty("ciplatformConnectionInfoDto")
+    private Object ciplatformConnectionInfoDto;
+
+    @JsonProperty("adjustableRangeOfTPYW")
+    private Object adjustableRangeOfTPYW;
+
+    @JsonProperty("adjustablePremiumRangeOfTPYW")
+    private Object adjustablePremiumRangeOfTPYW;
+
+    @JsonProperty("handlerCompany")
+    private String handlerCompany;
+
+    @JsonProperty("incrementServiceMatchFlag")
+    private Boolean incrementServiceMatchFlag;
+
+    @JsonProperty("callC04")
+    private String callC04;
+
+    @JsonProperty("callC04Result")
+    private String callC04Result;
+
+    @JsonProperty("pfProposalOrderFCProductInfoDto")
+    private Object pfProposalOrderFCProductInfoDto;
+
+    @JsonProperty("gubatchNoBaseInfoPo")
+    private Object gubatchNoBaseInfoPo;
+
+    @JsonProperty("orderParamDto")
+    private Object orderParamDto;
+
+    @JsonProperty("kjcOrderNo")
+    private Object kjcOrderNo;
+
+    @JsonProperty("guLastPolicyPremiumInfoDto")
+    private Object guLastPolicyPremiumInfoDto;
+
+    @JsonProperty("clauseType")
+    private String clauseType;
+
+    @JsonProperty("policyNoBZInput")
+    private String policyNoBZInput;
+
+    @JsonProperty("policyNoBSInput")
+    private String policyNoBSInput;
+
+    @JsonProperty("relieveFundRate")
+    private Object relieveFundRate;
+
+    @JsonProperty("riskFactorShow")
+    private Object riskFactorShow;
+
+    @JsonProperty("entryPoint")
+    private Object entryPoint;
+
+    @JsonProperty("quotationDate")
+    private Object quotationDate;
+
+    @JsonProperty("cjySumPremium")
+    private Object cjySumPremium;
+
+    @JsonProperty("carPremium")
+    private Object carPremium;
+
+    @JsonProperty("trafficPremium")
+    private Object trafficPremium;
+
+    @JsonProperty("commercialPremium")
+    private Object commercialPremium;
+
+    @JsonProperty("isStandardProduct")
+    private Object isStandardProduct;
+
+    @JsonProperty("fcFailMessage")
+    private Object fcFailMessage;
+
+    @JsonProperty("acGuActuarySmartPricingPreFactorDtoList")
+    private Object acGuActuarySmartPricingPreFactorDtoList;
+
+    @JsonProperty("antiFraudInformations")
+    private Object antiFraudInformations;
+
+    @JsonProperty("fcIsStandardNewFlag")
+    private Object fcIsStandardNewFlag;
+
+    @JsonProperty("futureYhb")
+    private Object futureYhb;
+
+    @JsonProperty("sysUserDto")
+    private Object sysUserDto;
+
+    @JsonProperty("changeRelatedPartyInfoTips")
+    private Object changeRelatedPartyInfoTips;
+
+    @JsonProperty("fcNewProductList")
+    private Object fcNewProductList;
+
+    @JsonProperty("zcrkRiskInfoDto")
+    private Object zcrkRiskInfoDto;
+
+    @JsonProperty("matchClause")
+    private Object matchClause;
+
+    @JsonProperty("guTrafficDetailDtoList")
+    private Object guTrafficDetailDtoList;
+
+    @JsonProperty("recalculate")
+    private Boolean recalculate;
+
+    @JsonProperty("cjcSaleInfoDto")
+    private Object cjcSaleInfoDto;
+
+    @JsonProperty("cilastPolicyFlag")
+    private Object cilastPolicyFlag;
+
+    @Data
+    public static class SalesDTO {
+        @JsonProperty("isBzBs")
+        private String isBzBs;
+    }
+
+    @Data
+    public static class ItemMotorDTO {
+        @JsonProperty("isBzBs")
+        private String isBzBs;
+        @JsonProperty("classificationOfCDW")
+        private String classificationOfCDW;
+        @JsonProperty("coreValueType")
+        private String coreValueType;
+    }
+
+    @Data
+    public static class VehicleOwnerDTO {
+        @JsonProperty("lifeInd")
+        private String lifeInd;
+    }
+
+    @Data
+    public static class PolicyHolderDTO {
+        @JsonProperty("isBzBs")
+        private String isBzBs;
+    }
+
+    @Data
+    public static class InsuredDTO {
+        @JsonProperty("isBzBs")
+        private String isBzBs;
+    }
+
+    @Data
+    public static class ItemKindBzDTO {
+        @JsonProperty("isBzBs")
+        private String isBzBs;
+    }
+
+    @Data
+    public static class CarShipTaxDTO {
+        @JsonProperty("isBzBs")
+        private String isBzBs;
+    }
+
+    @Data
+    public static class ItemKindBsDTO {
+        @JsonProperty("isBzBs")
+        private String isBzBs;
+    }
+
+    @Data
+    public static class PassengersDriversAcciDTO {
+        @JsonProperty("isBzBs")
+        private String isBzBs;
+    }
+
+    @Data
+    public static class AcciInfoDTO {
+        @JsonProperty("isBzBs")
+        private String isBzBs;
+    }
+
+    @Data
+    public static class InsurancePremiumDTO {
+        @JsonProperty("isBzBs")
+        private String isBzBs;
+        @JsonProperty("quoteName")
+        private String quoteName;
+    }
+
+    @Data
+    public static class PfPolicyInfoDTO {
+        @JsonProperty("isBzBs")
+        private String isBzBs;
+        @JsonProperty("operateDate")
+        private String operateDate;
+        @JsonProperty("argueSolution")
+        private String argueSolution;
+        @JsonProperty("arbitoryName")
+        private String arbitoryName;
+        @JsonProperty("proposalNo0801")
+        private String proposalNo0801;
+        @JsonProperty("proposalNo0802")
+        private Object proposalNo0802;
+        @JsonProperty("startDate0801")
+        private String startDate0801;
+        @JsonProperty("endDate0801")
+        private String endDate0801;
+        @JsonProperty("startDate0802")
+        private Object startDate0802;
+        @JsonProperty("endDate0802")
+        private Object endDate0802;
+        @JsonProperty("effectFlag0801")
+        private Boolean effectFlag0801;
+        @JsonProperty("effectFlag0802")
+        private Boolean effectFlag0802;
+        @JsonProperty("immEffectType0801")
+        private Object immEffectType0801;
+        @JsonProperty("immEffectType0802")
+        private Object immEffectType0802;
+        @JsonProperty("immEffectStartDate0801")
+        private Object immEffectStartDate0801;
+        @JsonProperty("immEffectStartDate0802")
+        private Object immEffectStartDate0802;
+        @JsonProperty("startTime0801")
+        private String startTime0801;
+        @JsonProperty("endTime0801")
+        private String endTime0801;
+        @JsonProperty("endTime0802")
+        private Object endTime0802;
+        @JsonProperty("showStartDate0802")
+        private Object showStartDate0802;
+        @JsonProperty("showEndDate0802")
+        private Object showEndDate0802;
+        @JsonProperty("transferDate")
+        private String transferDate;
+        @JsonProperty("tradingRelevanceNo")
+        private String tradingRelevanceNo;
+        @JsonProperty("specialCarFlag")
+        private String specialCarFlag;
+        @JsonProperty("chgOwnerFlag")
+        private String chgOwnerFlag;
+        @JsonProperty("loanVehicleFlag")
+        private String loanVehicleFlag;
+        @JsonProperty("noDamageYears")
+        private String noDamageYears;
+        @JsonProperty("remark")
+        private String remark;
+        @JsonProperty("outerRemark")
+        private String outerRemark;
+        @JsonProperty("innerRemark")
+        private String innerRemark;
+        @JsonProperty("uwYearDays")
+        private Integer uwYearDays;
+        @JsonProperty("isElectronicProposalBZ")
+        private String isElectronicProposalBZ;
+        @JsonProperty("isElectronicProposalBS")
+        private String isElectronicProposalBS;
+        @JsonProperty("isElectronicPolicyBZ")
+        private String isElectronicPolicyBZ;
+        @JsonProperty("isElectronicPolicyBS")
+        private String isElectronicPolicyBS;
+        @JsonProperty("effectFlag_Off0801")
+        private Object effectFlag_Off0801;
+        @JsonProperty("effectFlag_Off0802")
+        private Object effectFlag_Off0802;
+        @JsonProperty("riskCodeBS")
+        private Object riskCodeBS;
+        @JsonProperty("hkStartTime")
+        private Object hkStartTime;
+        @JsonProperty("hkEndTime")
+        private Object hkEndTime;
+        @JsonProperty("policyNoBZ")
+        private String policyNoBZ;
+        @JsonProperty("policyNoBS2")
+        private String policyNoBS2;
+        @JsonProperty("policyNoBS")
+        private String policyNoBS;
+        @JsonProperty("policyNoBZ2")
+        private String policyNoBZ2;
+        @JsonProperty("geographicalArea")
+        private Object geographicalArea;
+        @JsonProperty("geographicalAreaDesc")
+        private Object geographicalAreaDesc;
+        @JsonProperty("judicalCode")
+        private Object judicalCode;
+        @JsonProperty("riskApplyType")
+        private Object riskApplyType;
+        @JsonProperty("startTime0802")
+        private Object startTime0802;
+        @JsonProperty("bjflag")
+        private Object bjflag;
+    }
+
+    @Data
+    public static class PfMainDTO {
+        @JsonProperty("businessCode")
+        private String businessCode;
+        @JsonProperty("tradeNo")
+        private String tradeNo;
+        @JsonProperty("paymentInd")
+        private String paymentInd;
+        @JsonProperty("digest")
+        private String digest;
+        @JsonProperty("sendInd")
+        private String sendInd;
+        @JsonProperty("errorCount")
+        private String errorCount;
+        @JsonProperty("acceptTime")
+        private String acceptTime;
+        @JsonProperty("insConfirmDate")
+        private String insConfirmDate;
+        @JsonProperty("logContext")
+        private String logContext;
+        @JsonProperty("nicheId")
+        private String nicheId;
+        @JsonProperty("customerId")
+        private String customerId;
+        @JsonProperty("dxCooperateSiteCodeWriteFlag")
+        private String dxCooperateSiteCodeWriteFlag;
+        @JsonProperty("dxQuotationType")
+        private String dxQuotationType;
+        @JsonProperty("drdvingcode")
+        private String drdvingcode;
+        @JsonProperty("suitflow")
+        private String suitflow;
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        @JsonProperty("copyOrderNoSource")
+        private String copyOrderNoSource;
+        @JsonProperty("businessChannel")
+        private String businessChannel;
+        @JsonProperty("businessSource")
+        private String businessSource;
+        @JsonProperty("businessType")
+        private String businessType;
+        @JsonProperty("policySort")
+        private String policySort;
+        @JsonProperty("language")
+        private String language;
+        @JsonProperty("groupInd")
+        private String groupInd;
+        @JsonProperty("intermediaryCode")
+        private String intermediaryCode;
+        @JsonProperty("agreementNo")
+        private String agreementNo;
+        @JsonProperty("antScore")
+        private String antScore;
+        @JsonProperty("antScoreStatus")
+        private String antScoreStatus;
+        @JsonProperty("antScoreBusinessNo")
+        private String antScoreBusinessNo;
+        @JsonProperty("solutionCode")
+        private String solutionCode;
+        @JsonProperty("creditPeriod")
+        private Integer creditPeriod;
+        @JsonProperty("policyNo")
+        private String policyNo;
+        @JsonProperty("indicationNo")
+        private String indicationNo;
+        @JsonProperty("indicationSeqNo")
+        private String indicationSeqNo;
+        @JsonProperty("holdCoverNo")
+        private String holdCoverNo;
+        @JsonProperty("doubleProtectFlag")
+        private String doubleProtectFlag;
+        @JsonProperty("differentProtectFlag")
+        private String differentProtectFlag;
+        @JsonProperty("holdCoverSeqNo")
+        private String holdCoverSeqNo;
+        @JsonProperty("quotationNo")
+        private String quotationNo;
+        @JsonProperty("quotationSeqNo")
+        private String quotationSeqNo;
+        @JsonProperty("coverNoteNo")
+        private String coverNoteNo;
+        @JsonProperty("coverNoteSeqNo")
+        private String coverNoteSeqNo;
+        @JsonProperty("agentReferenceNo")
+        private String agentReferenceNo;
+        @JsonProperty("renewalNo")
+        private String renewalNo;
+        @JsonProperty("replacedPolicyNo")
+        private String replacedPolicyNo;
+        @JsonProperty("printNo")
+        private String printNo;
+        @JsonProperty("promotionCode")
+        private String promotionCode;
+        @JsonProperty("appliCode")
+        private String appliCode;
+        @JsonProperty("appliName")
+        private String appliName;
+        @JsonProperty("appliAddress")
+        private String appliAddress;
+        @JsonProperty("appliAddrType")
+        private String appliAddrType;
+        @JsonProperty("insuredCode")
+        private String insuredCode;
+        @JsonProperty("insuredName")
+        private String insuredName;
+        @JsonProperty("insuredAddress")
+        private String insuredAddress;
+        @JsonProperty("insuredAddrType")
+        private String insuredAddrType;
+        @JsonProperty("operateDate")
+        private String operateDate;
+        @JsonProperty("receivedDate")
+        private String receivedDate;
+        @JsonProperty("issueDate")
+        private String issueDate;
+        @JsonProperty("currency")
+        private String currency;
+        @JsonProperty("sumInsured")
+        private String sumInsured;
+        @JsonProperty("sumGrossPremium")
+        private String sumGrossPremium;
+        @JsonProperty("sumNetPremium")
+        private String sumNetPremium;
+        @JsonProperty("argueSolution")
+        private String argueSolution;
+        @JsonProperty("mainPort")
+        private String mainPort;
+        @JsonProperty("subPort")
+        private String subPort;
+        @JsonProperty("othPolicyNo")
+        private String othPolicyNo;
+        @JsonProperty("theirCompanyCode")
+        private String theirCompanyCode;
+        @JsonProperty("companyName")
+        private String companyName;
+        @JsonProperty("theirCompanyName")
+        private String theirCompanyName;
+        @JsonProperty("theirReference")
+        private String theirReference;
+        @JsonProperty("arbitoryName")
+        private String arbitoryName;
+        @JsonProperty("installmentNo")
+        private String installmentNo;
+        @JsonProperty("issueCompany")
+        private String issueCompany;
+        @JsonProperty("issuePlace")
+        private String issuePlace;
+        @JsonProperty("companyCode")
+        private String companyCode;
+        @JsonProperty("salesmanCode")
+        private String salesmanCode;
+        @JsonProperty("approverCode")
+        private String approverCode;
+        @JsonProperty("operatorCode")
+        private String operatorCode;
+        @JsonProperty("inputDate")
+        private String inputDate;
+        @JsonProperty("uwYear")
+        private String uwYear;
+        @JsonProperty("imageInd")
+        private String imageInd;
+        @JsonProperty("underwriteName")
+        private String underwriteName;
+        @JsonProperty("underwriteCode")
+        private String underwriteCode;
+        @JsonProperty("underwriteEndDate")
+        private String underwriteEndDate;
+        @JsonProperty("underWriteInd")
+        private String underWriteInd;
+        @JsonProperty("infoConfirmStatus")
+        private String infoConfirmStatus;
+        @JsonProperty("autoRenewInd")
+        private String autoRenewInd;
+        @JsonProperty("multiRiskInd")
+        private String multiRiskInd;
+        @JsonProperty("lastModifierCode")
+        private String lastModifierCode;
+        @JsonProperty("lastModifyDate")
+        private String lastModifyDate;
+        @JsonProperty("frontingRIPercent")
+        private String frontingRIPercent;
+        @JsonProperty("frontingRICommissionPercent")
+        private String frontingRICommissionPercent;
+        @JsonProperty("frontingRIAdminFeePercent")
+        private String frontingRIAdminFeePercent;
+        @JsonProperty("frontingRITaxPercent")
+        private String frontingRITaxPercent;
+        @JsonProperty("renewInd")
+        private String renewInd;
+        @JsonProperty("renewedInd")
+        private String renewedInd;
+        @JsonProperty("yearPremium")
+        private String yearPremium;
+        @JsonProperty("surrenderInd")
+        private String surrenderInd;
+        @JsonProperty("cancelInd")
+        private String cancelInd;
+        @JsonProperty("lostInd")
+        private String lostInd;
+        @JsonProperty("debtorInd")
+        private String debtorInd;
+        @JsonProperty("statInd")
+        private String statInd;
+        @JsonProperty("sourceId")
+        private String sourceId;
+        @JsonProperty("remark")
+        private String remark;
+        @JsonProperty("validInd")
+        private String validInd;
+        @JsonProperty("flag")
+        private String flag;
+        @JsonProperty("sumUWPremium")
+        private String sumUWPremium;
+        @JsonProperty("visaType")
+        private String visaType;
+        @JsonProperty("proposalPolicyInd")
+        private String proposalPolicyInd;
+        @JsonProperty("inwardReference")
+        private String inwardReference;
+        @JsonProperty("hengSangInd")
+        private String hengSangInd;
+        @JsonProperty("domesticInd")
+        private String domesticInd;
+        @JsonProperty("historyInd")
+        private String historyInd;
+        @JsonProperty("replaceProposerInd")
+        private String replaceProposerInd;
+        @JsonProperty("handleStatus")
+        private String handleStatus;
+        @JsonProperty("approveEndDate")
+        private String approveEndDate;
+        @JsonProperty("dealerCode")
+        private String dealerCode;
+        @JsonProperty("codInd")
+        private String codInd;
+        @JsonProperty("acceptDate")
+        private String acceptDate;
+        @JsonProperty("specialAcceptance")
+        private String specialAcceptance;
+        @JsonProperty("relatedRiskCode")
+        private String relatedRiskCode;
+        @JsonProperty("contactRemark")
+        private String contactRemark;
+        @JsonProperty("agrValidInd")
+        private String agrValidInd;
+        @JsonProperty("bizModel")
+        private String bizModel;
+        @JsonProperty("outerUserCode")
+        private String outerUserCode;
+        @JsonProperty("serviceProjectCode")
+        private String serviceProjectCode;
+        @JsonProperty("outerCompanyCode")
+        private String outerCompanyCode;
+        @JsonProperty("channelDetailCode")
+        private String channelDetailCode;
+        @JsonProperty("productCode")
+        private String productCode;
+        @JsonProperty("problemInd")
+        private String problemInd;
+        @JsonProperty("cancelTime")
+        private String cancelTime;
+        @JsonProperty("channelFlag")
+        private String channelFlag;
+        @JsonProperty("agricultureFlag")
+        private String agricultureFlag;
+        @JsonProperty("historyFlag")
+        private String historyFlag;
+        @JsonProperty("calculateType")
+        private String calculateType;
+        @JsonProperty("businessInd")
+        private String businessInd;
+        @JsonProperty("salesCommissionerCode")
+        private String salesCommissionerCode;
+        @JsonProperty("cmbPrintIvcInd")
+        private String cmbPrintIvcInd;
+        @JsonProperty("businessMode")
+        private String businessMode;
+        @JsonProperty("applyNo")
+        private String applyNo;
+        @JsonProperty("oldCarPrintFlag")
+        private String oldCarPrintFlag;
+        @JsonProperty("channelTip")
+        private String channelTip;
+        @JsonProperty("cooperateSiteCode")
+        private String cooperateSiteCode;
+        @JsonProperty("applySerialNo")
+        private Integer applySerialNo;
+        @JsonProperty("comInsureInd")
+        private String comInsureInd;
+        @JsonProperty("teamManager")
+        private String teamManager;
+        @JsonProperty("pioneerCode")
+        private String pioneerCode;
+        @JsonProperty("comPolicyInfo")
+        private String comPolicyInfo;
+        @JsonProperty("preFeeFlag")
+        private String preFeeFlag;
+        @JsonProperty("poaSerialNo")
+        private String poaSerialNo;
+        @JsonProperty("surveyInd")
+        private String surveyInd;
+        @JsonProperty("priInd")
+        private String priInd;
+        @JsonProperty("printDate")
+        private String printDate;
+        @JsonProperty("printTimes")
+        private String printTimes;
+        @JsonProperty("outerSubCompanyCode")
+        private String outerSubCompanyCode;
+        @JsonProperty("departmentCode")
+        private String departmentCode;
+        @JsonProperty("basketInd")
+        private String basketInd;
+        @JsonProperty("oano")
+        private String oano;
+        @JsonProperty("materialcheckflag")
+        private String materialcheckflag;
+        @JsonProperty("salesmanRegisterNo")
+        private String salesmanRegisterNo;
+        @JsonProperty("interSalesmanCode")
+        private String interSalesmanCode;
+        @JsonProperty("interSalesmanName")
+        private String interSalesmanName;
+        @JsonProperty("interSalesmanRegisterNo")
+        private String interSalesmanRegisterNo;
+        @JsonProperty("paymentPrintInd")
+        private String paymentPrintInd;
+        @JsonProperty("imageAttachInd")
+        private String imageAttachInd;
+        @JsonProperty("introducerCode")
+        private String introducerCode;
+        @JsonProperty("introduceCompanyCode")
+        private String introduceCompanyCode;
+        @JsonProperty("nonAutoCheckInd")
+        private String nonAutoCheckInd;
+        @JsonProperty("endDateEarlier")
+        private String endDateEarlier;
+        @JsonProperty("endDateLater")
+        private String endDateLater;
+        @JsonProperty("isOnLineno")
+        private String isOnLineno;
+        @JsonProperty("coopBusinessType")
+        private String coopBusinessType;
+        @JsonProperty("sumAddTax")
+        private String sumAddTax;
+        @JsonProperty("sumAddTaxRate")
+        private String sumAddTaxRate;
+        @JsonProperty("sumPriceTaxTotal")
+        private String sumPriceTaxTotal;
+        @JsonProperty("clientNo")
+        private String clientNo;
+        @JsonProperty("carIdRenewalFlag")
+        private String carIdRenewalFlag;
+        @JsonProperty("carIdSplitFlag")
+        private String carIdSplitFlag;
+        @JsonProperty("producerCode")
+        private String producerCode;
+        @JsonProperty("producerName")
+        private String producerName;
+        @JsonProperty("carProposalStatus")
+        private String carProposalStatus;
+        @JsonProperty("isSubmitToAudit")
+        private String isSubmitToAudit;
+        @JsonProperty("recalculateFlag")
+        private String recalculateFlag;
+        @JsonProperty("premiumTrialFlag")
+        private String premiumTrialFlag;
+        @JsonProperty("orderNo")
+        private String orderNo;
+        @JsonProperty("channelDetailName")
+        private String channelDetailName;
+        @JsonProperty("channelTipName")
+        private String channelTipName;
+        @JsonProperty("cooperateSiteCName")
+        private String cooperateSiteCName;
+        @JsonProperty("salesmanName")
+        private String salesmanName;
+        @JsonProperty("envSource")
+        private String envSource;
+        @JsonProperty("appId")
+        private String appId;
+        @JsonProperty("touchId")
+        private String touchId;
+        @JsonProperty("insureSalesman")
+        private String insureSalesman;
+        @JsonProperty("cityCode")
+        private String cityCode;
+        @JsonProperty("countyCode")
+        private String countyCode;
+        @JsonProperty("xzxId")
+        private String xzxId;
+        @JsonProperty("isDangerBz")
+        private String isDangerBz;
+        @JsonProperty("approvState")
+        private String approvState;
+        @JsonProperty("approvFlag")
+        private String approvFlag;
+        @JsonProperty("tpFeeFlag")
+        private String tpFeeFlag;
+        @JsonProperty("policysort2")
+        private String policysort2;
+        @JsonProperty("forwardAgentUserCode")
+        private String forwardAgentUserCode;
+        @JsonProperty("grade")
+        private String grade;
+        @JsonProperty("gradeFlag")
+        private String gradeFlag;
+        @JsonProperty("lastDecisionUnitDetail")
+        private String lastDecisionUnitDetail;
+        @JsonProperty("h5Lock")
+        private String h5Lock;
+        @JsonProperty("isCarX")
+        private String isCarX;
+        @JsonProperty("policySort3")
+        private String policySort3;
+        @JsonProperty("thisYearInsured")
+        private String thisYearInsured;
+        @JsonProperty("batchFlag")
+        private String batchFlag;
+        @JsonProperty("certificateNo")
+        private String certificateNo;
+        @JsonProperty("renewalType")
+        private String renewalType;
+        @JsonProperty("selfhRuleFlag")
+        private String selfhRuleFlag;
+        @JsonProperty("vcManulCheck")
+        private String vcManulCheck;
+        @JsonProperty("isConsult")
+        private String isConsult;
+        @JsonProperty("vcStatus")
+        private String vcStatus;
+        @JsonProperty("vcCheckUser")
+        private String vcCheckUser;
+        @JsonProperty("groupNo")
+        private String groupNo;
+        @JsonProperty("saicMode")
+        private String saicMode;
+        @JsonProperty("renewalYears")
+        private String renewalYears;
+        @JsonProperty("scUpdateTime")
+        private String scUpdateTime;
+        @JsonProperty("quotationPlanNo")
+        private String quotationPlanNo;
+        @JsonProperty("quotationPlanFlag")
+        private String quotationPlanFlag;
+        @JsonProperty("clauseType")
+        private String clauseType;
+        @JsonProperty("creditPeriodCar")
+        private String creditPeriodCar;
+        @JsonProperty("thisYearInsuredAll")
+        private String thisYearInsuredAll;
+        @JsonProperty("notRunFlowUWFlag")
+        private String notRunFlowUWFlag;
+        @JsonProperty("radarChartFlag")
+        private String radarChartFlag;
+        @JsonProperty("feeServiceLinkage")
+        private String feeServiceLinkage;
+        @JsonProperty("outOrderNo")
+        private String outOrderNo;
+        @JsonProperty("workTableMsg")
+        private String workTableMsg;
+        @JsonProperty("registrationNumber")
+        private String registrationNumber;
+        @JsonProperty("zlbWindowNo")
+        private String zlbWindowNo;
+        @JsonProperty("isInternet")
+        private String isInternet;
+        @JsonProperty("openid")
+        private String openid;
+        @JsonProperty("fcPolicyNo")
+        private String fcPolicyNo;
+        @JsonProperty("updateDate")
+        private String updateDate;
+        @JsonProperty("fgFlag")
+        private String fgFlag;
+        @JsonProperty("bankCustomerManagerCode")
+        private String bankCustomerManagerCode;
+        @JsonProperty("bankBranchCode")
+        private String bankBranchCode;
+        @JsonProperty("bankBranchName")
+        private String bankBranchName;
+        @JsonProperty("userIpAddr")
+        private String userIpAddr;
+        @JsonProperty("newCarFlag")
+        private String newCarFlag;
+        @JsonProperty("applyTypeDetail")
+        private String applyTypeDetail;
+        @JsonProperty("decisionMakingUnit")
+        private String decisionMakingUnit;
+        @JsonProperty("decsionCode")
+        private String decsionCode;
+        @JsonProperty("riskCodeType")
+        private String riskCodeType;
+        @JsonProperty("telKetConfSwitch")
+        private String telKetConfSwitch;
+        @JsonProperty("policyNo0801Prefix")
+        private String policyNo0801Prefix;
+        @JsonProperty("policyNo0805Prefix")
+        private String policyNo0805Prefix;
+        @JsonProperty("dsMakingTypeDetail")
+        private String dsMakingTypeDetail;
+        @JsonProperty("renewIndFlag")
+        private String renewIndFlag;
+        @JsonProperty("datCompositeScore")
+        private String datCompositeScore;
+        @JsonProperty("isFeeDeductionValueAdded")
+        private String isFeeDeductionValueAdded;
+        @JsonProperty("agreementTypeName")
+        private String agreementTypeName;
+        @JsonProperty("intermediaryCNName")
+        private String intermediaryCNName;
+        @JsonProperty("cooperateSiteName")
+        private String cooperateSiteName;
+        @JsonProperty("outerUserCName")
+        private String outerUserCName;
+        @JsonProperty("outerCompanyName")
+        private String outerCompanyName;
+        @JsonProperty("pioneerName")
+        private String pioneerName;
+        @JsonProperty("applyName")
+        private String applyName;
+        @JsonProperty("userCName")
+        private String userCName;
+        @JsonProperty("outerSubCompanyName")
+        private String outerSubCompanyName;
+        @JsonProperty("loginSort")
+        private String loginSort;
+        @JsonProperty("personInd")
+        private String personInd;
+        @JsonProperty("intermediaryCName")
+        private String intermediaryCName;
+        @JsonProperty("productType")
+        private String productType;
+        @JsonProperty("endorType")
+        private String endorType;
+        @JsonProperty("forceLinkCIFlag")
+        private Boolean forceLinkCIFlag;
+        @JsonProperty("governmentind")
+        private String governmentind;
+        @JsonProperty("governmentType")
+        private String governmentType;
+        @JsonProperty("governmentProvince")
+        private String governmentProvince;
+        @JsonProperty("governmentCity")
+        private String governmentCity;
+        @JsonProperty("governmentCounty")
+        private String governmentCounty;
+        @JsonProperty("governmentServiceType")
+        private String governmentServiceType;
+        @JsonProperty("isSufficientFlag")
+        private String isSufficientFlag;
+    }
+
+    @Data
+    public static class PfVehicleOwner {
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        @JsonProperty("name")
+        private String name;
+        @JsonProperty("customerGroup")
+        private String customerGroup;
+        @JsonProperty("identifyType")
+        private String identifyType;
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+        @JsonProperty("ownerNature")
+        private String ownerNature;
+        @JsonProperty("mobilePhone")
+        private String mobilePhone;
+        @JsonProperty("customerGradeLabel")
+        private String customerGradeLabel;
+        @JsonProperty("phoneNumber")
+        private String phoneNumber;
+        @JsonProperty("insuredType")
+        private String insuredType;
+        @JsonProperty("isLifeInd")
+        private String isLifeInd;
+        @JsonProperty("ownBlacklistInd")
+        private String ownBlacklistInd;
+        @JsonProperty("ownBlacklistType")
+        private String ownBlacklistType;
+        @JsonProperty("sex")
+        private String sex;
+        @JsonProperty("email")
+        private String email;
+        @JsonProperty("birthDate")
+        private String birthDate;
+        @JsonProperty("profession")
+        private String profession;
+        @JsonProperty("provinceCode")
+        private String provinceCode;
+        @JsonProperty("provinceName")
+        private String provinceName;
+        @JsonProperty("cityCode")
+        private String cityCode;
+        @JsonProperty("cityName")
+        private String cityName;
+        @JsonProperty("countyCode")
+        private String countyCode;
+        @JsonProperty("countyName")
+        private String countyName;
+        @JsonProperty("detailedAddress")
+        private String detailedAddress;
+        @JsonProperty("specialPersonFlagCode")
+        private String specialPersonFlagCode;
+        @JsonProperty("specialPersonFlagMean")
+        private String specialPersonFlagMean;
+        @JsonProperty("carDriveAddress")
+        private String carDriveAddress;
+        @JsonProperty("ownBlacklistFiveType")
+        private String ownBlacklistFiveType;
+        @JsonProperty("specialPhoneFlagCode")
+        private String specialPhoneFlagCode;
+        @JsonProperty("twzVerifyResult")
+        private String twzVerifyResult;
+        @JsonProperty("gatVerifyResult")
+        private String gatVerifyResult;
+        @JsonProperty("ownerAge")
+        private String ownerAge;
+        @JsonProperty("isNiceOwner")
+        private String isNiceOwner;
+        @JsonProperty("updateDate")
+        private String updateDate;
+        @JsonProperty("isApplicantOperator")
+        private String isApplicantOperator;
+        @JsonProperty("idTypeUsedGc")
+        private String idTypeUsedGc;
+        @JsonProperty("professonTypeUsedGc")
+        private String professonTypeUsedGc;
+        @JsonProperty("address")
+        private String address;
+        @JsonProperty("contactMobile")
+        private String contactMobile;
+    }
+
+    @Data
+    public class PfRelatedPartyDTO {
+        @JsonProperty("appliPhoneHolderName")
+        private String appliPhoneHolderName;
+        @JsonProperty("appliPhoneHolderCertiType")
+        private String appliPhoneHolderCertiType;
+        @JsonProperty("appliPhoneHolderCertNumber")
+        private String appliPhoneHolderCertNumber;
+        @JsonProperty("appliPhoneHolderType")
+        private String appliPhoneHolderType;
+        @JsonProperty("contactPhoneHolderCertiType")
+        private String contactPhoneHolderCertiType;
+        @JsonProperty("contactPhoneHolderName")
+        private String contactPhoneHolderName;
+        @JsonProperty("contactPhoneHolderCertNumber")
+        private String contactPhoneHolderCertNumber;
+        @JsonProperty("contactPhoneHolderType")
+        private String contactPhoneHolderType;
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        @JsonProperty("serialNo")
+        private String serialNo;
+        @JsonProperty("insuredType")
+        private String insuredType;
+        @JsonProperty("insuredCode")
+        private String insuredCode;
+        @JsonProperty("appliName")
+        private String appliName;
+        @JsonProperty("appliAddress")
+        private String appliAddress;
+        @JsonProperty("holderPropertyFlag")
+        private String holderPropertyFlag;
+        @JsonProperty("holderLifeFlag")
+        private String holderLifeFlag;
+        @JsonProperty("relatedCaiXianFlag")
+        private String relatedCaiXianFlag;
+        @JsonProperty("relatedShouXianFlag")
+        private String relatedShouXianFlag;
+        @JsonProperty("relatedContactCaiXianFlag")
+        private String relatedContactCaiXianFlag;
+        @JsonProperty("relatedContactShouXianFlag")
+        private String relatedContactShouXianFlag;
+        @JsonProperty("enterpriseName")
+        private String enterpriseName;
+        @JsonProperty("uscc")
+        private String uscc;
+        @JsonProperty("insuredBusinessSource")
+        private String insuredBusinessSource;
+        @JsonProperty("insuredFlag")
+        private String insuredFlag;
+        @JsonProperty("insuredRole")
+        private String insuredRole;
+        @JsonProperty("identifyType")
+        private String identifyType;
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+        @JsonProperty("insuredRelation")
+        private String insuredRelation;
+        @JsonProperty("relateSerialNo")
+        private String relateSerialNo;
+        @JsonProperty("insuredInd")
+        private String insuredInd;
+        @JsonProperty("remark")
+        private String remark;
+        @JsonProperty("flag")
+        private String flag;
+        @JsonProperty("sex")
+        private String sex;
+        @JsonProperty("birthDate")
+        private String birthDate;
+        @JsonProperty("postCode")
+        private String postCode;
+        @JsonProperty("officePhone")
+        private String officePhone;
+        @JsonProperty("mobilePhone")
+        private String mobilePhone;
+        @JsonProperty("homePhone")
+        private String homePhone;
+        @JsonProperty("contactName")
+        private String contactName;
+        @JsonProperty("contactPhone")
+        private String contactPhone;
+        @JsonProperty("marriageStatus")
+        private String marriageStatus;
+        @JsonProperty("educationBackground")
+        private String educationBackground;
+        @JsonProperty("email")
+        private String email;
+        @JsonProperty("nation")
+        private String nation;
+        @JsonProperty("issuer")
+        private String issuer;
+        @JsonProperty("relationWithHolder")
+        private String relationWithHolder;
+        @JsonProperty("contactSex")
+        private String contactSex;
+        @JsonProperty("contactType")
+        private String contactType;
+        @JsonProperty("contactDepartment")
+        private String contactDepartment;
+        @JsonProperty("contactPosition")
+        private String contactPosition;
+        @JsonProperty("contactOfficeNumber")
+        private String contactOfficeNumber;
+        @JsonProperty("contactMobile")
+        private String contactMobile;
+        @JsonProperty("surname")
+        private String surname;
+        @JsonProperty("moniker")
+        private String moniker;
+        @JsonProperty("firstName")
+        private String firstName;
+        @JsonProperty("lastName")
+        private String lastName;
+        @JsonProperty("itemProvinceCode")
+        private String itemProvinceCode;
+        @JsonProperty("itemCityCode")
+        private String itemCityCode;
+        @JsonProperty("itemProvinceCName")
+        private String itemProvinceCName;
+        @JsonProperty("itemCityCName")
+        private String itemCityCName;
+        @JsonProperty("moneyLaunderingInd")
+        private String moneyLaunderingInd;
+        @JsonProperty("countyCode")
+        private String countyCode;
+        @JsonProperty("countyCName")
+        private String countyCName;
+        @JsonProperty("socialSecurityNo")
+        private String socialSecurityNo;
+        @JsonProperty("companyNature")
+        private String companyNature;
+        @JsonProperty("numberOfUnits")
+        private String numberOfUnits;
+        @JsonProperty("countryCode")
+        private String countryCode;
+        @JsonProperty("countryName")
+        private String countryName;
+        @JsonProperty("specialPersonFlagCode")
+        private String specialPersonFlagCode;
+        @JsonProperty("specialPersonFlagMean")
+        private String specialPersonFlagMean;
+        @JsonProperty("identifyStartDate")
+        private String identifyStartDate;
+        @JsonProperty("identifyEndDate")
+        private String identifyEndDate;
+        @JsonProperty("occupationCode")
+        private String occupationCode;
+        @JsonProperty("compliState")
+        private String compliState;
+        @JsonProperty("department")
+        private String department;
+        @JsonProperty("bankName")
+        private String bankName;
+        @JsonProperty("bankAccount")
+        private String bankAccount;
+        @JsonProperty("accountHolderName")
+        private String accountHolderName;
+        @JsonProperty("reservePhoneNum")
+        private String reservePhoneNum;
+        @JsonProperty("relationWithBrach")
+        private String relationWithBrach;
+        @JsonProperty("insOrganizer")
+        private String insOrganizer;
+        @JsonProperty("insuranceMode")
+        private String insuranceMode;
+        @JsonProperty("insuranceCount")
+        private String insuranceCount;
+        @JsonProperty("longTermIdentifyCard")
+        private String longTermIdentifyCard;
+        @JsonProperty("longTermIdentifyEndDate")
+        private String longTermIdentifyEndDate;
+        @JsonProperty("appBlacklistInd")
+        private String appBlacklistInd;
+        @JsonProperty("appBlacklistType")
+        private String appBlacklistType;
+        @JsonProperty("grade")
+        private String grade;
+        @JsonProperty("gradeFlag")
+        private String gradeFlag;
+        @JsonProperty("contactIdentifyType")
+        private String contactIdentifyType;
+        @JsonProperty("contactIdentifyNumber")
+        private String contactIdentifyNumber;
+        @JsonProperty("leaderProvinceCode")
+        private String leaderProvinceCode;
+        @JsonProperty("leaderProvinceName")
+        private String leaderProvinceName;
+        @JsonProperty("leaderCityCode")
+        private String leaderCityCode;
+        @JsonProperty("leaderCityName")
+        private String leaderCityName;
+        @JsonProperty("leaderCountyCode")
+        private String leaderCountyCode;
+        @JsonProperty("leaderCountyName")
+        private String leaderCountyName;
+        @JsonProperty("leaderAddress")
+        private String leaderAddress;
+        @JsonProperty("leaderContact")
+        private String leaderContact;
+        @JsonProperty("leaderIdNo")
+        private String leaderIdNo;
+        @JsonProperty("leaderName")
+        private String leaderName;
+        @JsonProperty("appliAge")
+        private String appliAge;
+        @JsonProperty("appliCompanyAddress")
+        private String appliCompanyAddress;
+        @JsonProperty("businessDealerName")
+        private String businessDealerName;
+        @JsonProperty("businessDealerIdType")
+        private String businessDealerIdType;
+        @JsonProperty("businessDealerIdNumber")
+        private String businessDealerIdNumber;
+        @JsonProperty("businessScope")
+        private String businessScope;
+        @JsonProperty("operatorType")
+        private String operatorType;
+        @JsonProperty("leaderIdSDate")
+        private String leaderIdSDate;
+        @JsonProperty("leaderIdEDate")
+        private String leaderIdEDate;
+        @JsonProperty("shareHolder")
+        private String shareHolder;
+        @JsonProperty("shareHolderIdType")
+        private String shareHolderIdType;
+        @JsonProperty("shareHolderIdNo")
+        private String shareHolderIdNo;
+        @JsonProperty("shareHolderIdSDate")
+        private String shareHolderIdSDate;
+        @JsonProperty("shareHolderIdEDate")
+        private String shareHolderIdEDate;
+        @JsonProperty("actController")
+        private String actController;
+        @JsonProperty("actControllerIdType")
+        private String actControllerIdType;
+        @JsonProperty("actControllerIdNo")
+        private String actControllerIdNo;
+        @JsonProperty("actControllerSDate")
+        private String actControllerSDate;
+        @JsonProperty("actControllerEDate")
+        private String actControllerEDate;
+        @JsonProperty("industryCode")
+        private String industryCode;
+        @JsonProperty("companyType")
+        private String companyType;
+        @JsonProperty("frBlacklistFiveType")
+        private String frBlacklistFiveType;
+        @JsonProperty("sqrBlacklistFiveType")
+        private String sqrBlacklistFiveType;
+        @JsonProperty("gdBlacklistFiveType")
+        private String gdBlacklistFiveType;
+        @JsonProperty("syrBlacklistFiveType")
+        private String syrBlacklistFiveType;
+        @JsonProperty("appBlacklistFiveType")
+        private String appBlacklistFiveType;
+        @JsonProperty("lxrBlacklistFiveType")
+        private String lxrBlacklistFiveType;
+        @JsonProperty("specialPhoneFlagCode")
+        private String specialPhoneFlagCode;
+        @JsonProperty("twoVerifyResult")
+        private String twoVerifyResult;
+        @JsonProperty("threeVerifyResult")
+        private String threeVerifyResult;
+        @JsonProperty("scUpdateTime")
+        private String scUpdateTime;
+        @JsonProperty("contactDealType")
+        private String contactDealType;
+        @JsonProperty("actControllerType")
+        private String actControllerType;
+        @JsonProperty("leaderType")
+        private String leaderType;
+        @JsonProperty("leaderIdType")
+        private String leaderIdType;
+        @JsonProperty("gwPhone")
+        private String gwPhone;
+        @JsonProperty("groupNature")
+        private String groupNature;
+        @JsonProperty("twzVerifyResult")
+        private String twzVerifyResult;
+        @JsonProperty("twzContactResult")
+        private String twzContactResult;
+        @JsonProperty("gatVerifyResult")
+        private String gatVerifyResult;
+        @JsonProperty("gatContactResult")
+        private String gatContactResult;
+        @JsonProperty("updateDate")
+        private String updateDate;
+        @JsonProperty("idTypeUsedGc")
+        private String idTypeUsedGc;
+        @JsonProperty("countryCodeUsedGc")
+        private String countryCodeUsedGc;
+        @JsonProperty("industryCodeUsedGc")
+        private String industryCodeUsedGc;
+        @JsonProperty("contactLongTermIdCard")
+        private String contactLongTermIdCard;
+        @JsonProperty("contactIdStartDate")
+        private String contactIdStartDate;
+        @JsonProperty("contactIdEndDate")
+        private String contactIdEndDate;
+        @JsonProperty("antiMoneyType")
+        private String antiMoneyType;
+        @JsonProperty("mode")
+        private String mode;
+        @JsonProperty("insuredName")
+        private String insuredName;
+        @JsonProperty("orderNo")
+        private String orderNo;
+        @JsonProperty("detailAddress")
+        private List<Object> detailAddress;
+    }
+
+    @Data
+    public class PfRiskRelatedPartyDTO {
+        @JsonProperty("insuredPhoneHolderName")
+        private String insuredPhoneHolderName;
+        @JsonProperty("insuredPhoneHolderCertiType")
+        private String insuredPhoneHolderCertiType;
+        @JsonProperty("insuredPhoneHolderCertNumber")
+        private String insuredPhoneHolderCertNumber;
+        @JsonProperty("insuredPhoneHolderType")
+        private String insuredPhoneHolderType;
+        @JsonProperty("contactPhoneHolderCertiType")
+        private String contactPhoneHolderCertiType;
+        @JsonProperty("contactPhoneHolderName")
+        private String contactPhoneHolderName;
+        @JsonProperty("contactPhoneHolderCertNumber")
+        private String contactPhoneHolderCertNumber;
+        @JsonProperty("contactPhoneHolderType")
+        private String contactPhoneHolderType;
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        @JsonProperty("planCode")
+        private String planCode;
+        @JsonProperty("riskCode")
+        private String riskCode;
+        @JsonProperty("subProposalNo")
+        private String subProposalNo;
+        @JsonProperty("serialNo")
+        private String serialNo;
+        @JsonProperty("nation")
+        private String nation;
+        @JsonProperty("issuer")
+        private String issuer;
+        @JsonProperty("insuredType")
+        private String insuredType;
+        @JsonProperty("insuredCode")
+        private String insuredCode;
+        @JsonProperty("insuredName")
+        private String insuredName;
+        @JsonProperty("insuredAddress")
+        private String insuredAddress;
+        @JsonProperty("insuredBusinessSource")
+        private String insuredBusinessSource;
+        @JsonProperty("insuredFlag")
+        private String insuredFlag;
+        @JsonProperty("insuredRole")
+        private String insuredRole;
+        @JsonProperty("identifyType")
+        private String identifyType;
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+        @JsonProperty("insuredRelation")
+        private String insuredRelation;
+        @JsonProperty("relateSerialNo")
+        private String relateSerialNo;
+        @JsonProperty("insuredInd")
+        private String insuredInd;
+        @JsonProperty("remark")
+        private String remark;
+        @JsonProperty("flag")
+        private String flag;
+        @JsonProperty("insuredSex")
+        private String insuredSex;
+        @JsonProperty("insuredBirthDate")
+        private String insuredBirthDate;
+        @JsonProperty("insuredPostCode")
+        private String insuredPostCode;
+        @JsonProperty("insuredOfficePhone")
+        private String insuredOfficePhone;
+        @JsonProperty("insuredMobilePhone")
+        private String insuredMobilePhone;
+        @JsonProperty("insdPropertyFlag")
+        private String insdPropertyFlag;
+        @JsonProperty("insdLifeFlag")
+        private String insdLifeFlag;
+        @JsonProperty("riskRelatedCaiXianFlag")
+        private String riskRelatedCaiXianFlag;
+        @JsonProperty("riskRelatedShouXianFlag")
+        private String riskRelatedShouXianFlag;
+        @JsonProperty("relatedContactCaiXianFlag")
+        private String relatedContactCaiXianFlag;
+        @JsonProperty("relatedContactShouXianFlag")
+        private String relatedContactShouXianFlag;
+        @JsonProperty("insuredHomePhone")
+        private String insuredHomePhone;
+        @JsonProperty("contactName")
+        private String contactName;
+        @JsonProperty("contactPhone")
+        private String contactPhone;
+        @JsonProperty("marriageStatus")
+        private String marriageStatus;
+        @JsonProperty("educationBackground")
+        private String educationBackground;
+        @JsonProperty("relationWithHolder")
+        private String relationWithHolder;
+        @JsonProperty("contactSex")
+        private String contactSex;
+        @JsonProperty("contactType")
+        private String contactType;
+        @JsonProperty("contactDepartment")
+        private String contactDepartment;
+        @JsonProperty("contactPosition")
+        private String contactPosition;
+        @JsonProperty("contactOfficeNumber")
+        private String contactOfficeNumber;
+        @JsonProperty("contactMobile")
+        private String contactMobile;
+        @JsonProperty("contactIdentifyType")
+        private String contactIdentifyType;
+        @JsonProperty("contactIdentifyNumber")
+        private String contactIdentifyNumber;
+        @JsonProperty("relatedType")
+        private String relatedType;
+        @JsonProperty("itemProvinceCode")
+        private String itemProvinceCode;
+        @JsonProperty("itemCityCode")
+        private String itemCityCode;
+        @JsonProperty("itemProvinceCName")
+        private String itemProvinceCName;
+        @JsonProperty("itemCityCName")
+        private String itemCityCName;
+        @JsonProperty("moneyLaunderingInd")
+        private String moneyLaunderingInd;
+        @JsonProperty("countyCode")
+        private String countyCode;
+        @JsonProperty("countyCName")
+        private String countyCName;
+        @JsonProperty("vipInd")
+        private String vipInd;
+        @JsonProperty("countryCode")
+        private String countryCode;
+        @JsonProperty("countryName")
+        private String countryName;
+        @JsonProperty("identifyStartDate")
+        private String identifyStartDate;
+        @JsonProperty("identifyEndDate")
+        private String identifyEndDate;
+        @JsonProperty("occupationCode")
+        private String occupationCode;
+        @JsonProperty("countryCName")
+        private String countryCName;
+        @JsonProperty("benefitType")
+        private String benefitType;
+        @JsonProperty("compliState")
+        private String compliState;
+        @JsonProperty("department")
+        private String department;
+        @JsonProperty("relationWithBrach")
+        private String relationWithBrach;
+        @JsonProperty("qianHCompanyInd")
+        private String qianHCompanyInd;
+        @JsonProperty("email")
+        private String email;
+        @JsonProperty("subLeaderName")
+        private String subLeaderName;
+        @JsonProperty("leaderIdNo")
+        private String leaderIdNo;
+        @JsonProperty("leaderIdType")
+        private String leaderIdType;
+        @JsonProperty("leaderIdSDate")
+        private String leaderIdSDate;
+        @JsonProperty("leaderIdEDate")
+        private String leaderIdEDate;
+        @JsonProperty("longTermIdentifyCard")
+        private String longTermIdentifyCard;
+        @JsonProperty("longTermIdentifyEndDate")
+        private String longTermIdentifyEndDate;
+        @JsonProperty("operatorType")
+        private String operatorType;
+        @JsonProperty("specialPersonFlagCode")
+        private String specialPersonFlagCode;
+        @JsonProperty("specialPersonFlagMean")
+        private String specialPersonFlagMean;
+        @JsonProperty("businessDealerName")
+        private String businessDealerName;
+        @JsonProperty("businessDealerIdType")
+        private String businessDealerIdType;
+        @JsonProperty("businessDealerIdNumber")
+        private String businessDealerIdNumber;
+        @JsonProperty("shareHolder")
+        private String shareHolder;
+        @JsonProperty("shareHolderIdType")
+        private String shareHolderIdType;
+        @JsonProperty("shareHolderIdNo")
+        private String shareHolderIdNo;
+        @JsonProperty("shareHolderIdSDate")
+        private String shareHolderIdSDate;
+        @JsonProperty("shareHolderIdEDate")
+        private String shareHolderIdEDate;
+        @JsonProperty("actController")
+        private String actController;
+        @JsonProperty("actControllerIdType")
+        private String actControllerIdType;
+        @JsonProperty("actControllerIdNo")
+        private String actControllerIdNo;
+        @JsonProperty("actControllerSDate")
+        private String actControllerSDate;
+        @JsonProperty("actControllerEDate")
+        private String actControllerEDate;
+        @JsonProperty("subLeaderAddress")
+        private String subLeaderAddress;
+        @JsonProperty("subLeaderConactMobile")
+        private String subLeaderConactMobile;
+        @JsonProperty("leaderProvinceCode")
+        private String leaderProvinceCode;
+        @JsonProperty("leaderProvinceName")
+        private String leaderProvinceName;
+        @JsonProperty("leaderCityCode")
+        private String leaderCityCode;
+        @JsonProperty("leaderCityName")
+        private String leaderCityName;
+        @JsonProperty("leaderCountyCode")
+        private String leaderCountyCode;
+        @JsonProperty("leaderCountyName")
+        private String leaderCountyName;
+        @JsonProperty("groupNature")
+        private String groupNature;
+        @JsonProperty("insuredAge")
+        private String insuredAge;
+        @JsonProperty("insuredCompanyAddress")
+        private String insuredCompanyAddress;
+        @JsonProperty("companyType")
+        private String companyType;
+        @JsonProperty("companyEstablishDate")
+        private String companyEstablishDate;
+        @JsonProperty("relationWithAppli")
+        private String relationWithAppli;
+        @JsonProperty("businessScope")
+        private String businessScope;
+        @JsonProperty("insBlacklistInd")
+        private String insBlacklistInd;
+        @JsonProperty("insBlacklistType")
+        private String insBlacklistType;
+        @JsonProperty("grade")
+        private String grade;
+        @JsonProperty("gradeFlag")
+        private String gradeFlag;
+        @JsonProperty("twzVerifyResult")
+        private String twzVerifyResult;
+        @JsonProperty("twzContactResult")
+        private String twzContactResult;
+        @JsonProperty("gatVerifyResult")
+        private String gatVerifyResult;
+        @JsonProperty("gatContactResult")
+        private String gatContactResult;
+        @JsonProperty("insBlacklistFiveType")
+        private String insBlacklistFiveType;
+        @JsonProperty("specialPhoneFlagCode")
+        private String specialPhoneFlagCode;
+        @JsonProperty("scUpdateTime")
+        private String scUpdateTime;
+        @JsonProperty("leaderType")
+        private String leaderType;
+        @JsonProperty("updateDate")
+        private String updateDate;
+        @JsonProperty("idTypeUsedGc")
+        private String idTypeUsedGc;
+        @JsonProperty("countryCodeUsedGc")
+        private String countryCodeUsedGc;
+        @JsonProperty("industryCodeUsedGc")
+        private String industryCodeUsedGc;
+        @JsonProperty("industryCode")
+        private String industryCode;
+        @JsonProperty("contactLongTermIdCard")
+        private String contactLongTermIdCard;
+        @JsonProperty("contactIdStartDate")
+        private String contactIdStartDate;
+        @JsonProperty("contactIdEndDate")
+        private String contactIdEndDate;
+        @JsonProperty("birthDate")
+        private String birthDate;
+        @JsonProperty("detailAddress")
+        private List<Object> detailAddress;
+    }
+
+    @Data
+    public class PfItemMotorDTO {
+        @JsonProperty("loancarCompany")
+        private String loancarCompany;
+        @JsonProperty("whiteListFlag")
+        private String whiteListFlag;
+        @JsonProperty("whiteListElecContactNo")
+        private String whiteListElecContactNo;
+        @JsonProperty("cxtPrice")
+        private String cxtPrice;
+        @JsonProperty("tonCountJy")
+        private String tonCountJy;
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        @JsonProperty("itemNo")
+        private String itemNo;
+        @JsonProperty("insuredTypeCode")
+        private String insuredTypeCode;
+        @JsonProperty("carInsuredRelation")
+        private String carInsuredRelation;
+        @JsonProperty("carOwner")
+        private String carOwner;
+        @JsonProperty("fleetName")
+        private String fleetName;
+        @JsonProperty("classificationOfCDW")
+        private String classificationOfCDW;
+        @JsonProperty("clauseType")
+        private String clauseType;
+        @JsonProperty("agreeDriverInd")
+        private String agreeDriverInd;
+        @JsonProperty("newDeviceInd")
+        private String newDeviceInd;
+        @JsonProperty("modifiedInd")
+        private String modifiedInd;
+        @JsonProperty("taxiInd")
+        private String taxiInd;
+        @JsonProperty("licenseNo")
+        private String licenseNo;
+        @JsonProperty("licenseNoA")
+        private String licenseNoA;
+        @JsonProperty("licenseColorCode")
+        private String licenseColorCode;
+        @JsonProperty("carKindCode")
+        private String carKindCode;
+        @JsonProperty("hkFlag")
+        private String hkFlag;
+        @JsonProperty("hkLicenseNo")
+        private String hkLicenseNo;
+        @JsonProperty("engineNo")
+        private String engineNo;
+        @JsonProperty("engineNo2")
+        private String engineNo2;
+        @JsonProperty("engineNo3")
+        private String engineNo3;
+        @JsonProperty("engineNo4")
+        private String engineNo4;
+        @JsonProperty("vinNo")
+        private String vinNo;
+        @JsonProperty("frameNo")
+        private String frameNo;
+        @JsonProperty("withinChinaInd")
+        private String withinChinaInd;
+        @JsonProperty("runAreaCode")
+        private String runAreaCode;
+        @JsonProperty("runAreaName")
+        private String runAreaName;
+        @JsonProperty("runMiles")
+        private String runMiles;
+        @JsonProperty("enrollDate")
+        private String enrollDate;
+        @JsonProperty("useYears")
+        private Integer useYears;
+        @JsonProperty("useYearsQuotation")
+        private String useYearsQuotation;
+        @JsonProperty("modelCode")
+        private String modelCode;
+        @JsonProperty("make")
+        private String make;
+        @JsonProperty("brandName")
+        private String brandName;
+        @JsonProperty("countryNature")
+        private String countryNature;
+        @JsonProperty("countryCode")
+        private String countryCode;
+        @JsonProperty("useNatureCode")
+        private String useNatureCode;
+        @JsonProperty("businessClassCode")
+        private String businessClassCode;
+        @JsonProperty("longLoadPermit")
+        private String longLoadPermit;
+        @JsonProperty("wideLoadPermit")
+        private String wideLoadPermit;
+        @JsonProperty("seatCount")
+        private Integer seatCount;
+        @JsonProperty("addSeatCount")
+        private String addSeatCount;
+        @JsonProperty("tonCount")
+        private Double tonCount;
+        @JsonProperty("exhaustScale")
+        private Double exhaustScale;
+        @JsonProperty("power")
+        private Double power;
+        @JsonProperty("maxDesignSpeed")
+        private String maxDesignSpeed;
+        @JsonProperty("doorCount")
+        private String doorCount;
+        @JsonProperty("colorCode")
+        private String colorCode;
+        @JsonProperty("safeDevice")
+        private String safeDevice;
+        @JsonProperty("parkSite")
+        private String parkSite;
+        @JsonProperty("vehicleStatuse")
+        private String vehicleStatuse;
+        @JsonProperty("driveMode")
+        private String driveMode;
+        @JsonProperty("ownerAddress")
+        private String ownerAddress;
+        @JsonProperty("district")
+        private String district;
+        @JsonProperty("largeDistrict")
+        private String largeDistrict;
+        @JsonProperty("addressType")
+        private String addressType;
+        @JsonProperty("otherNature")
+        private String otherNature;
+        @JsonProperty("rateCode")
+        private String rateCode;
+        @JsonProperty("makeDate")
+        private String makeDate;
+        @JsonProperty("carUsage")
+        private String carUsage;
+        @JsonProperty("currency")
+        private String currency;
+        @JsonProperty("estimateValue")
+        private String estimateValue;
+        @JsonProperty("purchasePrice")
+        private Double purchasePrice;
+        @JsonProperty("actualValue")
+        private Double actualValue;
+        @JsonProperty("invoiceNo")
+        private String invoiceNo;
+        @JsonProperty("useLimitations")
+        private String useLimitations;
+        @JsonProperty("lastInsurer")
+        private String lastInsurer;
+        @JsonProperty("previousPolicyNo")
+        private String previousPolicyNo;
+        @JsonProperty("previousExpiryDate")
+        private String previousExpiryDate;
+        @JsonProperty("carCheckStatus")
+        private String carCheckStatus;
+        @JsonProperty("carCheckReason")
+        private String carCheckReason;
+        @JsonProperty("carChecker")
+        private String carChecker;
+        @JsonProperty("carCheckTime")
+        private String carCheckTime;
+        @JsonProperty("relievingAreaCode")
+        private String relievingAreaCode;
+        @JsonProperty("hirePurchase")
+        private String hirePurchase;
+        @JsonProperty("localVehicleInd")
+        private String localVehicleInd;
+        @JsonProperty("glassType")
+        private String glassType;
+        @JsonProperty("peccancyRecord")
+        private String peccancyRecord;
+        @JsonProperty("damagedFactorGrade")
+        private String damagedFactorGrade;
+        @JsonProperty("loadType")
+        private String loadType;
+        @JsonProperty("repairFactoryType")
+        private String repairFactoryType;
+        @JsonProperty("licenseType")
+        private String licenseType;
+        @JsonProperty("licenseTypeCode")
+        private String licenseTypeCode;
+        @JsonProperty("remark")
+        private String remark;
+        @JsonProperty("flag")
+        private String flag;
+        @JsonProperty("printBrandName")
+        private String printBrandName;
+        @JsonProperty("aliasCode")
+        private String aliasCode;
+        @JsonProperty("completeKerbMass")
+        private Double completeKerbMass;
+        @JsonProperty("vehicleClass")
+        private String vehicleClass;
+        @JsonProperty("vehicleType")
+        private String vehicleType;
+        @JsonProperty("vehicleBodyType")
+        private String vehicleBodyType;
+        @JsonProperty("rejectInd")
+        private String rejectInd;
+        @JsonProperty("hirePurchaseCode")
+        private String hirePurchaseCode;
+        @JsonProperty("driverLimitations")
+        private String driverLimitations;
+        @JsonProperty("hkRiskCode")
+        private String hkRiskCode;
+        @JsonProperty("certificateDate")
+        private String certificateDate;
+        @JsonProperty("motorCommission")
+        private String motorCommission;
+        @JsonProperty("motorRebate")
+        private String motorRebate;
+        @JsonProperty("motorCommissionDeductible")
+        private String motorCommissionDeductible;
+        @JsonProperty("fixInd")
+        private String fixInd;
+        @JsonProperty("identifyType")
+        private String identifyType;
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+        @JsonProperty("changeRegionDate")
+        private String changeRegionDate;
+        @JsonProperty("settleAddressCode")
+        private String settleAddressCode;
+        @JsonProperty("useNatureShow")
+        private String useNatureShow;
+        @JsonProperty("attachNature")
+        private String attachNature;
+        @JsonProperty("carUseType")
+        private String carUseType;
+        @JsonProperty("carTypeCode")
+        private String carTypeCode;
+        @JsonProperty("carKindCodeShow")
+        private String carKindCodeShow;
+        @JsonProperty("carNewOldFlag")
+        private String carNewOldFlag;
+        @JsonProperty("subProposalNo")
+        private String subProposalNo;
+        @JsonProperty("motorType")
+        private String motorType;
+        @JsonProperty("previousStartDate")
+        private String previousStartDate;
+        @JsonProperty("noDamageYears")
+        private String noDamageYears;
+        @JsonProperty("pastLicenseNo")
+        private String pastLicenseNo;
+        @JsonProperty("routeStartPoint")
+        private String routeStartPoint;
+        @JsonProperty("routeEndPolint")
+        private String routeEndPolint;
+        @JsonProperty("factory")
+        private String factory;
+        @JsonProperty("factoryId")
+        private String factoryId;
+        @JsonProperty("carBrand")
+        private String carBrand;
+        @JsonProperty("brandId")
+        private String brandId;
+        @JsonProperty("familyName")
+        private String familyName;
+        @JsonProperty("familyCode")
+        private String familyCode;
+        @JsonProperty("frameNoHeteroType")
+        private String frameNoHeteroType;
+        @JsonProperty("updateTime")
+        private String updateTime;
+        @JsonProperty("hazardType")
+        private String hazardType;
+        @JsonProperty("vehicleCategory")
+        private String vehicleCategory;
+        @JsonProperty("colorName")
+        private String colorName;
+        @JsonProperty("previousPrpallCompany")
+        private String previousPrpallCompany;
+        @JsonProperty("planCode")
+        private String planCode;
+        @JsonProperty("riskCode")
+        private String riskCode;
+        @JsonProperty("groupCode")
+        private String groupCode;
+        @JsonProperty("simpleFrameNo")
+        private String simpleFrameNo;
+        @JsonProperty("chgOwnerFlag")
+        private String chgOwnerFlag;
+        @JsonProperty("carKindShowSub")
+        private String carKindShowSub;
+        @JsonProperty("transferDate")
+        private String transferDate;
+        @JsonProperty("loanVehicleFlag")
+        private String loanVehicleFlag;
+        @JsonProperty("singeinDate")
+        private String singeinDate;
+        @JsonProperty("specialCarFlag")
+        private String specialCarFlag;
+        @JsonProperty("vehicleCode")
+        private String vehicleCode;
+        @JsonProperty("ciModelCode")
+        private String ciModelCode;
+        @JsonProperty("basicRateCode")
+        private String basicRateCode;
+        @JsonProperty("noticeType")
+        private String noticeType;
+        @JsonProperty("carName")
+        private String carName;
+        @JsonProperty("negotiatedActualValue")
+        private Double negotiatedActualValue;
+        @JsonProperty("isSpecialCarFlag")
+        private String isSpecialCarFlag;
+        @JsonProperty("carCheckValidTime")
+        private String carCheckValidTime;
+        @JsonProperty("engineModel")
+        private String engineModel;
+        @JsonProperty("configModel")
+        private String configModel;
+        @JsonProperty("carYear")
+        private String carYear;
+        @JsonProperty("vehicleModelKind")
+        private String vehicleModelKind;
+        @JsonProperty("fuelType")
+        private String fuelType;
+        @JsonProperty("fuelTypeName")
+        private String fuelTypeName;
+        @JsonProperty("newVehicleClassCode")
+        private String newVehicleClassCode;
+        @JsonProperty("newVehicleClassName")
+        private String newVehicleClassName;
+        @JsonProperty("hfCode")
+        private String hfCode;
+        @JsonProperty("hfStartTime")
+        private String hfStartTime;
+        @JsonProperty("hfEndTime")
+        private String hfEndTime;
+        @JsonProperty("hfName")
+        private String hfName;
+        @JsonProperty("carID")
+        private String carID;
+        @JsonProperty("carIDCheckInd")
+        private String carIDCheckInd;
+        @JsonProperty("carIDVersionNo")
+        private String carIDVersionNo;
+        @JsonProperty("carIDVerifyEquallyInd")
+        private String carIDVerifyEquallyInd;
+        @JsonProperty("drivingRadius")
+        private String drivingRadius;
+        @JsonProperty("outBoundLand")
+        private String outBoundLand;
+        @JsonProperty("shVehicleCode")
+        private String shVehicleCode;
+        @JsonProperty("jgVehicleCheckCode")
+        private String jgVehicleCheckCode;
+        @JsonProperty("driveUseAttribute")
+        private String driveUseAttribute;
+        @JsonProperty("platformBlacklistNum")
+        private String platformBlacklistNum;
+        @JsonProperty("carBlacklistInd")
+        private String carBlacklistInd;
+        @JsonProperty("commercialCarGrade")
+        private String commercialCarGrade;
+        @JsonProperty("commercialCarGradeSource")
+        private String commercialCarGradeSource;
+        @JsonProperty("sale4SFlag")
+        private String sale4SFlag;
+        @JsonProperty("saleCompany")
+        private String saleCompany;
+        @JsonProperty("saleAreaCode")
+        private String saleAreaCode;
+        @JsonProperty("saleAreaName")
+        private String saleAreaName;
+        @JsonProperty("provinceEcdemicVehicleFlag")
+        private String provinceEcdemicVehicleFlag;
+        @JsonProperty("vehicleInitialRegister")
+        private String vehicleInitialRegister;
+        @JsonProperty("specialVehicleFlagCode")
+        private String specialVehicleFlagCode;
+        @JsonProperty("specialVehicleFlagMean")
+        private String specialVehicleFlagMean;
+        @JsonProperty("vehicleQueryType")
+        private String vehicleQueryType;
+        @JsonProperty("distinguishVanAreaCode")
+        private String distinguishVanAreaCode;
+        @JsonProperty("cvFlag")
+        private String cvFlag;
+        @JsonProperty("principalCHDVehicleGrade")
+        private String principalCHDVehicleGrade;
+        @JsonProperty("principalCHDTeamGrade")
+        private String principalCHDTeamGrade;
+        @JsonProperty("principalZJXLGrade")
+        private String principalZJXLGrade;
+        @JsonProperty("principalLicenseNo")
+        private String principalLicenseNo;
+        @JsonProperty("principalValidPolicyCount")
+        private Integer principalValidPolicyCount;
+        @JsonProperty("chdVehicleGrade")
+        private String chdVehicleGrade;
+        @JsonProperty("chdTeamGrade")
+        private String chdTeamGrade;
+        @JsonProperty("zjxlGrade")
+        private String zjxlGrade;
+        @JsonProperty("principalQuotationDiscount")
+        private String principalQuotationDiscount;
+        @JsonProperty("newEnergyFlag")
+        private String newEnergyFlag;
+        @JsonProperty("energyType")
+        private String energyType;
+        @JsonProperty("range")
+        private String range;
+        @JsonProperty("energyTypeDescribe")
+        private String energyTypeDescribe;
+        @JsonProperty("newEnergyClauseFlag")
+        private String newEnergyClauseFlag;
+        @JsonProperty("callC05")
+        private String callC05;
+        @JsonProperty("callC05Result")
+        private String callC05Result;
+        @JsonProperty("vehicleStyleUniqueId")
+        private String vehicleStyleUniqueId;
+        @JsonProperty("certificateType")
+        private String certificateType;
+        @JsonProperty("certificateNo")
+        private String certificateNo;
+        @JsonProperty("certificateReportDate")
+        private String certificateReportDate;
+        @JsonProperty("carGroupName")
+        private String carGroupName;
+        @JsonProperty("scUpdateTime")
+        private String scUpdateTime;
+        @JsonProperty("chgOwnerLevel")
+        private String chgOwnerLevel;
+        @JsonProperty("carFamilyTypeI")
+        private String carFamilyTypeI;
+        @JsonProperty("carFamilyTypeII")
+        private String carFamilyTypeII;
+        @JsonProperty("pureHkLicenseNo")
+        private String pureHkLicenseNo;
+        @JsonProperty("secondNewCarFlag")
+        private String secondNewCarFlag;
+        @JsonProperty("pureMoLicenseNo")
+        private String pureMoLicenseNo;
+        @JsonProperty("ownerNameOA")
+        private String ownerNameOA;
+        @JsonProperty("rideSharingScore")
+        private String rideSharingScore;
+        @JsonProperty("stdIsOnline")
+        private String stdIsOnline;
+        @JsonProperty("stdActivityLevel")
+        private String stdActivityLevel;
+        @JsonProperty("vehiclePubCode")
+        private String vehiclePubCode;
+        @JsonProperty("transferFlag")
+        private String transferFlag;
+        @JsonProperty("htbVehicleType")
+        private String htbVehicleType;
+        @JsonProperty("htbVehicleUsageType")
+        private String htbVehicleUsageType;
+        @JsonProperty("negotiatedActualValueType")
+        private String negotiatedActualValueType;
+        @JsonProperty("vehicleFatteryFlag")
+        private String vehicleFatteryFlag;
+        @JsonProperty("riskFactorShow")
+        private String riskFactorShow;
+        @JsonProperty("usedCarFlag")
+        private String usedCarFlag;
+        @JsonProperty("driveCityCode")
+        private String driveCityCode;
+        @JsonProperty("bzVehicleCategory")
+        private String bzVehicleCategory;
+        @JsonProperty("bsVehicleCategory")
+        private String bsVehicleCategory;
+        @JsonProperty("claimRiskLevel")
+        private String claimRiskLevel;
+        @JsonProperty("coreValueType")
+        private String coreValueType;
+        @JsonProperty("n05ReuseFlag")
+        private String n05ReuseFlag;
+        @JsonProperty("n05ReuseId")
+        private String n05ReuseId;
+        @JsonProperty("divisionScoreFlag")
+        private String divisionScoreFlag;
+        @JsonProperty("facIndFlag")
+        private String facIndFlag;
+        @JsonProperty("totalTractionMass")
+        private Double totalTractionMass;
+        @JsonProperty("updateDate")
+        private String updateDate;
+        @JsonProperty("roundTripCount")
+        private String roundTripCount;
+        @JsonProperty("vehicleSize")
+        private String vehicleSize;
+        @JsonProperty("yearPattern")
+        private String yearPattern;
+        @JsonProperty("configType")
+        private String configType;
+        @JsonProperty("useNatureShowName")
+        private String useNatureShowName;
+        @JsonProperty("vehicleCategoryName")
+        private String vehicleCategoryName;
+        @JsonProperty("carUseTypeName")
+        private String carUseTypeName;
+        @JsonProperty("companyCode")
+        private String companyCode;
+        @JsonProperty("syxClassName")
+        private String syxClassName;
+        @JsonProperty("ciModelClass")
+        private String ciModelClass;
+        @JsonProperty("glassTypeName")
+        private String glassTypeName;
+        @JsonProperty("renewalNo")
+        private String renewalNo;
+        @JsonProperty("vehicleId")
+        private String vehicleId;
+        @JsonProperty("platVehicleCode")
+        private String platVehicleCode;
+        @JsonProperty("platVehicleName")
+        private String platVehicleName;
+        @JsonProperty("transmissiontType")
+        private String transmissiontType;
+        @JsonProperty("purchasePriceNotTax")
+        private String purchasePriceNotTax;
+        @JsonProperty("platFlag")
+        private String platFlag;
+        @JsonProperty("orderNo")
+        private String orderNo;
+        @JsonProperty("fgSwitch")
+        private String fgSwitch;
+        @JsonProperty("licenseColorName")
+        private String licenseColorName;
+        @JsonProperty("attachNatureName")
+        private String attachNatureName;
+        @JsonProperty("localVehicleIndName")
+        private String localVehicleIndName;
+        @JsonProperty("licenseTypeName")
+        private String licenseTypeName;
+        @JsonProperty("motorTypeName")
+        private String motorTypeName;
+        @JsonProperty("carKindCodeShowName")
+        private String carKindCodeShowName;
+        @JsonProperty("pureRiskPremium")
+        private String pureRiskPremium;
+        @JsonProperty("demandNo")
+        private String demandNo;
+        @JsonProperty("rejectDate")
+        private String rejectDate;
+        @JsonProperty("analogyModelPrice")
+        private String analogyModelPrice;
+        @JsonProperty("classAttribute")
+        private String classAttribute;
+        @JsonProperty("classAttributeName")
+        private String classAttributeName;
+        @JsonProperty("analogyModelPriceNotTax")
+        private String analogyModelPriceNotTax;
+        @JsonProperty("refcode1")
+        private String refcode1;
+        @JsonProperty("refcode2")
+        private String refcode2;
+        @JsonProperty("absFlag")
+        private String absFlag;
+        @JsonProperty("airbagNum")
+        private String airbagNum;
+        @JsonProperty("alarmFlag")
+        private String alarmFlag;
+        @JsonProperty("vehicleBrand")
+        private String vehicleBrand;
+        @JsonProperty("vehicleDescription")
+        private String vehicleDescription;
+        @JsonProperty("tradeCode")
+        private String tradeCode;
+        @JsonProperty("tradeName")
+        private String tradeName;
+        @JsonProperty("vehicleStyle")
+        private String vehicleStyle;
+        @JsonProperty("startDate")
+        private String startDate;
+        @JsonProperty("taxVehicleCategory")
+        private String taxVehicleCategory;
+        @JsonProperty("riskStartDate")
+        private String riskStartDate;
+        @JsonProperty("riskEndDate")
+        private String riskEndDate;
+        @JsonProperty("carValue")
+        private String carValue;
+        @JsonProperty("vehicleDisplacement")
+        private String vehicleDisplacement;
+        @JsonProperty("bzVehicleCategoryName")
+        private String bzVehicleCategoryName;
+        @JsonProperty("fullWeight")
+        private String fullWeight;
+        @JsonProperty("nerveCentre")
+        private String nerveCentre;
+        @JsonProperty("thirdRunRoute")
+        private String thirdRunRoute;
+        @JsonProperty("policyNo")
+        private String policyNo;
+        @JsonProperty("carStyle")
+        private String carStyle;
+        @JsonProperty("stopFlag")
+        private String stopFlag;
+    }
+
+    @Data
+    public class PfProposalCarShipTaxDTO {
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        @JsonProperty("itemNo")
+        private Integer itemNo;
+        @JsonProperty("taxItemCode")
+        private String taxItemCode;
+        @JsonProperty("taxItemName")
+        private String taxItemName;
+        @JsonProperty("taxItemDetailCode")
+        private String taxItemDetailCode;
+        @JsonProperty("taxItemDetailName")
+        private String taxItemDetailName;
+        @JsonProperty("baseTaxation")
+        private String baseTaxation;
+        @JsonProperty("taxPayerCode")
+        private String taxPayerCode;
+        @JsonProperty("taxPayerName")
+        private String taxPayerName;
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+        @JsonProperty("taxpayerIdentifier")
+        private String taxpayerIdentifier;
+        @JsonProperty("taxPayFlag")
+        private String taxPayFlag;
+        @JsonProperty("taxRelifFlag")
+        private String taxRelifFlag;
+        @JsonProperty("taxRelifFlagLogo")
+        private String taxRelifFlagLogo;
+        @JsonProperty("relifReason")
+        private String relifReason;
+        @JsonProperty("freeRate")
+        private Double freeRate;
+        @JsonProperty("taxDocumentDate")
+        private String taxDocumentDate;
+        @JsonProperty("taxPaidAreaCode")
+        private String taxPaidAreaCode;
+        @JsonProperty("freeRateText")
+        private String freeRateText;
+        @JsonProperty("taxCompancyCode")
+        private String taxCompancyCode;
+        @JsonProperty("taxCompancyName")
+        private String taxCompancyName;
+        @JsonProperty("paidFreeCertificate")
+        private String paidFreeCertificate;
+        @JsonProperty("taxUnit")
+        private Double taxUnit;
+        @JsonProperty("taxUnitText")
+        private String taxUnitText;
+        @JsonProperty("calculateMode")
+        private String calculateMode;
+        @JsonProperty("calculateFlag")
+        private String calculateFlag;
+        @JsonProperty("finalFlag")
+        private String finalFlag;
+        @JsonProperty("completeKerbMass")
+        private Double completeKerbMass;
+        @JsonProperty("seatCount")
+        private String seatCount;
+        @JsonProperty("tonCount")
+        private String tonCount;
+        @JsonProperty("exhaustScale")
+        private String exhaustScale;
+        @JsonProperty("payLastYear")
+        private String payLastYear;
+        @JsonProperty("payLastEndDate")
+        private String payLastEndDate;
+        @JsonProperty("taxDue")
+        private Double taxDue;
+        @JsonProperty("taxDueActual")
+        private Double taxDueActual;
+        @JsonProperty("taxRelief")
+        private Double taxRelief;
+        @JsonProperty("previousPay")
+        private Double previousPay;
+        @JsonProperty("payStartDate")
+        private String payStartDate;
+        @JsonProperty("payEndDate")
+        private String payEndDate;
+        @JsonProperty("lateFee")
+        private Double lateFee;
+        @JsonProperty("lateFeeStartDate")
+        private String lateFeeStartDate;
+        @JsonProperty("lateFeeEndDate")
+        private String lateFeeEndDate;
+        @JsonProperty("sumPayTax")
+        private Double sumPayTax;
+        @JsonProperty("currency")
+        private String currency;
+        @JsonProperty("leviedDate")
+        private String leviedDate;
+        @JsonProperty("payTaxTimes")
+        private String payTaxTimes;
+        @JsonProperty("extendChar1")
+        private String extendChar1;
+        @JsonProperty("extendChar2")
+        private String extendChar2;
+        @JsonProperty("extendNum1")
+        private String extendNum1;
+        @JsonProperty("extendNum2")
+        private String extendNum2;
+        @JsonProperty("flag")
+        private String flag;
+        @JsonProperty("certiType")
+        private String certiType;
+        @JsonProperty("vehicleCategory")
+        private String vehicleCategory;
+        @JsonProperty("taxPayerAddress")
+        private String taxPayerAddress;
+        @JsonProperty("taxPayerPhoneNumber")
+        private String taxPayerPhoneNumber;
+        @JsonProperty("totalTonCount")
+        private String totalTonCount;
+        @JsonProperty("tractionTonCount")
+        private String tractionTonCount;
+        @JsonProperty("newLicenseFlag")
+        private String newLicenseFlag;
+        @JsonProperty("newLicenseCheckMon")
+        private String newLicenseCheckMon;
+        @JsonProperty("fine")
+        private String fine;
+        @JsonProperty("offerFlag")
+        private String offerFlag;
+        @JsonProperty("paidFeeCertiRefNo")
+        private String paidFeeCertiRefNo;
+        @JsonProperty("billType")
+        private String billType;
+        @JsonProperty("regionCode")
+        private String regionCode;
+        @JsonProperty("taxBusinessNo")
+        private String taxBusinessNo;
+        @JsonProperty("sourceTaxBusinessNo")
+        private String sourceTaxBusinessNo;
+        @JsonProperty("billNo")
+        private String billNo;
+        @JsonProperty("responseMessageNo")
+        private String responseMessageNo;
+        @JsonProperty("responseCode")
+        private String responseCode;
+        @JsonProperty("subProposalNo")
+        private String subProposalNo;
+        @JsonProperty("taxTermTypeCode")
+        private String taxTermTypeCode;
+        @JsonProperty("taxRegistryNumber")
+        private String taxRegistryNumber;
+        @JsonProperty("taxDescription")
+        private String taxDescription;
+        @JsonProperty("payTaxChange")
+        private String payTaxChange;
+        @JsonProperty("deductionDueType")
+        private String deductionDueType;
+        @JsonProperty("taxStartDate")
+        private String taxStartDate;
+        @JsonProperty("taxEndDate")
+        private String taxEndDate;
+        @JsonProperty("offerSerialNo")
+        private String offerSerialNo;
+        @JsonProperty("microcomputerCode")
+        private String microcomputerCode;
+        @JsonProperty("fuelType")
+        private String fuelType;
+        @JsonProperty("carFindDate")
+        private String carFindDate;
+        @JsonProperty("fuelTypeCST")
+        private String fuelTypeCST;
+        @JsonProperty("useNatureCode")
+        private String useNatureCode;
+        @JsonProperty("provinceCode")
+        private String provinceCode;
+        @JsonProperty("provinceName")
+        private String provinceName;
+        @JsonProperty("cityCode")
+        private String cityCode;
+        @JsonProperty("cityName")
+        private String cityName;
+        @JsonProperty("countyCode")
+        private String countyCode;
+        @JsonProperty("countyName")
+        private String countyName;
+        @JsonProperty("detailedAddress")
+        private String detailedAddress;
+        @JsonProperty("sumRefundTax")
+        private String sumRefundTax;
+        @JsonProperty("reMoreFillMsg")
+        private String reMoreFillMsg;
+        @JsonProperty("refundTaxDue")
+        private String refundTaxDue;
+        @JsonProperty("calcTaxFlag")
+        private String calcTaxFlag;
+        @JsonProperty("taxPaymentMark")
+        private String taxPaymentMark;
+        @JsonProperty("taxStandardType")
+        private String taxStandardType;
+        @JsonProperty("taxPaidAreaName")
+        private String taxPaidAreaName;
+        @JsonProperty("previousPayYears")
+        private String previousPayYears;
+    }
+
+    @Data
+    public class PfItemKindDTO {
+        @JsonProperty("nodeBtGrossPremium")
+        private String nodeBtGrossPremium;
+        @JsonProperty("proposalNo")
+        private String proposalNo;
+        @JsonProperty("riskCode")
+        private String riskCode;
+        @JsonProperty("itemKindNo")
+        private String itemKindNo;
+        @JsonProperty("itemCode")
+        private String itemCode;
+        @JsonProperty("itemDetailCode")
+        private String itemDetailCode;
+        @JsonProperty("itemDetailList")
+        private String itemDetailList;
+        @JsonProperty("liabCode")
+        private String liabCode;
+        @JsonProperty("kindName")
+        private String kindName;
+        @JsonProperty("modeCode")
+        private String modeCode;
+        @JsonProperty("modeName")
+        private String modeName;
+        @JsonProperty("startDate")
+        private String startDate;
+        @JsonProperty("endDate")
+        private String endDate;
+        @JsonProperty("calculateInd")
+        private String calculateInd;
+        @JsonProperty("currency")
+        private String currency;
+        @JsonProperty("unitValue")
+        private String unitValue;
+        @JsonProperty("unitInsured")
+        private String unitInsured;
+        @JsonProperty("unitPremium")
+        private String unitPremium;
+        @JsonProperty("quantity")
+        private String quantity;
+        @JsonProperty("unit")
+        private String unit;
+        @JsonProperty("sumValue")
+        private String sumValue;
+        @JsonProperty("sumInsured")
+        private String sumInsured;
+        @JsonProperty("ratePeriod")
+        private String ratePeriod;
+        @JsonProperty("rate")
+        private String rate;
+        @JsonProperty("shortRateFlag")
+        private String shortRateFlag;
+        @JsonProperty("shortRateNumerator")
+        private String shortRateNumerator;
+        @JsonProperty("shortRateDenominator")
+        private String shortRateDenominator;
+        @JsonProperty("shortRate")
+        private Double shortRate;
+        @JsonProperty("basePremium")
+        private String basePremium;
+        @JsonProperty("pureBenchPremium")
+        private String pureBenchPremium;
+        @JsonProperty("basePureBenchPremium")
+        private String basePureBenchPremium;
+        @JsonProperty("benchmarkPremium")
+        private String benchmarkPremium;
+        @JsonProperty("noDebtPremium")
+        private String noDebtPremium;
+        @JsonProperty("loading")
+        private String loading;
+        @JsonProperty("grossPremium")
+        private String grossPremium;
+        @JsonProperty("discount")
+        private Double discount;
+        @JsonProperty("adjustRate")
+        private String adjustRate;
+        @JsonProperty("netPremium")
+        private String netPremium;
+        @JsonProperty("deductibleRate")
+        private String deductibleRate;
+        @JsonProperty("deductible")
+        private String deductible;
+        @JsonProperty("premiumFormula")
+        private String premiumFormula;
+        @JsonProperty("yearPremium")
+        private String yearPremium;
+        @JsonProperty("surrenderInd")
+        private String surrenderInd;
+        @JsonProperty("firstLossRate")
+        private String firstLossRate;
+        @JsonProperty("kindInd")
+        private String kindInd;
+        @JsonProperty("suitProduct")
+        private String suitProduct;
+        @JsonProperty("assistKindFlag")
+        private String assistKindFlag;
+        @JsonProperty("remark")
+        private String remark;
+        @JsonProperty("flag")
+        private String flag;
+        @JsonProperty("uwCount")
+        private String uwCount;
+        @JsonProperty("uwPremium")
+        private String uwPremium;
+        @JsonProperty("originUWPremium")
+        private String originUWPremium;
+        @JsonProperty("originGrossPremium")
+        private String originGrossPremium;
+        @JsonProperty("relatedInd")
+        private String relatedInd;
+        @JsonProperty("endorAdjustRate")
+        private String endorAdjustRate;
+        @JsonProperty("pubInsuredInd")
+        private String pubInsuredInd;
+        @JsonProperty("specialInd")
+        private String specialInd;
+        @JsonProperty("subProposalNo")
+        private String subProposalNo;
+        @JsonProperty("projectCode")
+        private String projectCode;
+        @JsonProperty("itemDetailNo")
+        private String itemDetailNo;
+        @JsonProperty("kindCode")
+        private String kindCode;
+        @JsonProperty("mustInsureInd")
+        private String mustInsureInd;
+        @JsonProperty("premiumType")
+        private String premiumType;
+        @JsonProperty("valueType")
+        private String valueType;
+        @JsonProperty("franchise")
+        private String franchise;
+        @JsonProperty("reSpecialInd")
+        private String reSpecialInd;
+        @JsonProperty("additionalRate")
+        private String additionalRate;
+        @JsonProperty("allBrokenRate")
+        private String allBrokenRate;
+        @JsonProperty("addTax")
+        private String addTax;
+        @JsonProperty("addTaxRate")
+        private String addTaxRate;
+        @JsonProperty("priceTaxTotal")
+        private String priceTaxTotal;
+        @JsonProperty("orgPriceTaxTotal")
+        private String orgPriceTaxTotal;
+        @JsonProperty("serviceTimes")
+        private String serviceTimes;
+        @JsonProperty("relatedFlagFG2020")
+        private String relatedFlagFG2020;
+        @JsonProperty("scUpdateTime")
+        private String scUpdateTime;
+        @JsonProperty("useFormula")
+        private String useFormula;
+        @JsonProperty("clauseCode")
+        private String clauseCode;
+        @JsonProperty("easyKindName")
+        private String easyKindName;
+        @JsonProperty("shareModel")
+        private String shareModel;
+        @JsonProperty("calcMedicalModel")
+        private String calcMedicalModel;
+        @JsonProperty("isExist")
+        private String isExist;
+        @JsonProperty("riskShareModelSwitch")
+        private String riskShareModelSwitch;
+        @JsonProperty("deductibleList")
+        private String deductibleList;
+        @JsonProperty("shareList")
+        private String shareList;
+        @JsonProperty("endorPolicyNo")
+        private String endorPolicyNo;
+    }
+
+}

+ 10 - 10
tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/entity/response/TaiPingCrawlerPremiumCalculateData.java

@@ -430,7 +430,7 @@ public class TaiPingCrawlerPremiumCalculateData {
         @JsonProperty("calculateMode")
         private String calculateMode;
         @JsonProperty("carFindDate")
-        private Object carFindDate;
+        private String carFindDate;
         @JsonProperty("certiType")
         private String certiType;
         @JsonProperty("cityCode")
@@ -516,7 +516,7 @@ public class TaiPingCrawlerPremiumCalculateData {
         @JsonProperty("previousPay")
         private Double previousPay;
         @JsonProperty("previousPayYears")
-        private Object previousPayYears;
+        private String previousPayYears;
         @JsonProperty("proposalNo")
         private String proposalNo;
         @JsonProperty("provinceCode")
@@ -524,27 +524,27 @@ public class TaiPingCrawlerPremiumCalculateData {
         @JsonProperty("provinceName")
         private String provinceName;
         @JsonProperty("refundTaxDue")
-        private Object refundTaxDue;
+        private String refundTaxDue;
         @JsonProperty("regionCode")
-        private Object regionCode;
+        private String regionCode;
         @JsonProperty("relifReason")
         private String relifReason;
         @JsonProperty("responseMessageNo")
-        private Object responseMessageNo;
+        private String responseMessageNo;
         @JsonProperty("responseCode")
-        private Object responseCode;
+        private String responseCode;
         @JsonProperty("reMoreFillMsg")
-        private Object reMoreFillMsg;
+        private String reMoreFillMsg;
         @JsonProperty("seatCount")
-        private Object seatCount;
+        private String seatCount;
         @JsonProperty("sourceTaxBusinessNo")
-        private Object sourceTaxBusinessNo;
+        private String sourceTaxBusinessNo;
         @JsonProperty("subProposalNo")
         private String subProposalNo;
         @JsonProperty("sumPayTax")
         private Double sumPayTax;
         @JsonProperty("sumRefundTax")
-        private Object sumRefundTax;
+        private String sumRefundTax;
         @JsonProperty("taxBusinessNo")
         private Object taxBusinessNo;
         @JsonProperty("taxCompancyCode")

Разница между файлами не показана из-за своего большого размера
+ 11 - 1
tenant/insurance/quotation-taiping/src/main/java/com/jzg/quotation/taiping/crawler/service/impl/TaipingCrawlerRequestImpl.java


+ 11 - 15
tenant/organization/src/main/java/com/jzg/organization/controller/ReceivableController.java

@@ -135,17 +135,19 @@ public class ReceivableController {
     }
 
     @PostMapping("/exportTemplateReceivableList")
-    @Operation(summary = "导出模板私有协议手续费")
+    @Operation(summary = "导出模板私有协议手续费/跟单费/平台协议批量修改的模板")
     public HttpResult<String> exportTemplateReceivableList(){
+        log.info("导出模板私有协议手续费/跟单费/平台协议批量修改的模板");
         String receivablePageIds = receivableService.exportTemplateReceivableList();
         return HttpResult.ok(receivablePageIds);
     }
 
     @PostMapping("/importReceivableListUpdate")
-    @Operation(summary = "导入私有协议手续费修改")
+    @Operation(summary = "导入私有协议/平台协议比例修改")
     public HttpResult<ImportUpdateExcelResultVo> importReceivableListUpdate(@RequestParam("file") MultipartFile file){
+        log.info("导入私有协议/平台协议比例修改");
         ImportUpdateExcelResultVo importExcelResultVo = receivableService.importReceivableListUpdate(file);
-        return HttpResult.ok(importExcelResultVo);
+        return HttpResult.ok(importExcelResultVo.getErrMsg(),importExcelResultVo);
     }
 
     /**
@@ -538,12 +540,6 @@ public class ReceivableController {
         return HttpResult.ok(reduce);
     }
 
-    @PostMapping("/exportTemplatePlatFormReceivable")
-    @Operation(summary = "导出平台协议模板")
-    public HttpResult exportTemplatePlatFormReceivable() throws IOException {
-        return HttpResult.ok(receivableService.exportTemplatePlatFormReceivable());
-    }
-
     @PostMapping("/exportPlatFormReceivable")
     @Operation(summary = "导出平台协议数据")
     public HttpResult exportPlatFormReceivable(@RequestBody ReceivableQueryVo receivableQueryVo) throws IOException {
@@ -558,12 +554,12 @@ public class ReceivableController {
     }
 
 
-    @PostMapping("/importPlatFormReceivable")
-    @Operation(summary = "导入平台协议")
-    public HttpResult importPlatFormReceivable(@RequestParam("file") MultipartFile file){
-        ImportUpdateExcelResultVo importExcelResultVo = receivableService.importPlatFormReceivable(file);
-        return HttpResult.ok(importExcelResultVo);
-    }
+//    @PostMapping("/importPlatFormReceivable")
+//    @Operation(summary = "导入平台协议")
+//    public HttpResult importPlatFormReceivable(@RequestParam("file") MultipartFile file){
+//        ImportUpdateExcelResultVo importExcelResultVo = receivableService.importPlatFormReceivable(file);
+//        return HttpResult.ok(importExcelResultVo);
+//    }
 
     @PostMapping("/invoiceRecord")
     @Operation(summary = "获取开票记录")

+ 10 - 5
tenant/organization/src/main/java/com/jzg/organization/excel/listener/ReceivbleExcelListener.java

@@ -2,16 +2,21 @@ package com.jzg.organization.excel.listener;
 
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.event.AnalysisEventListener;
-import com.jzg.commons.entity.finance.vo.ReceivableExportExcelVo;
+import com.jzg.commons.entity.finance.vo.importbatchmodify.InsPlyIncomeExportVo;
 
 import java.util.ArrayList;
 import java.util.List;
 
-public class ReceivbleExcelListener extends AnalysisEventListener<ReceivableExportExcelVo> {
-    private final List<ReceivableExportExcelVo> dataList = new ArrayList<>();
+/**
+ *
+ * @author lipf
+ * @date 2026/8/26 10:33
+ */
+public class ReceivbleExcelListener extends AnalysisEventListener<InsPlyIncomeExportVo> {
+    private final List<InsPlyIncomeExportVo> dataList = new ArrayList<>();
 
     @Override
-    public void invoke(ReceivableExportExcelVo data, AnalysisContext context) {
+    public void invoke(InsPlyIncomeExportVo data, AnalysisContext context) {
         dataList.add(data);
     }
 
@@ -20,7 +25,7 @@ public class ReceivbleExcelListener extends AnalysisEventListener<ReceivableExpo
         System.out.println("Total rows: " + dataList.size());
     }
 
-    public List<ReceivableExportExcelVo> getDataList() {
+    public List<InsPlyIncomeExportVo> getDataList() {
         return dataList;
     }
 }

+ 3 - 7
tenant/organization/src/main/java/com/jzg/organization/service/ReceivableService.java

@@ -7,6 +7,7 @@ import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.finance.dto.*;
 import com.jzg.commons.entity.finance.po.*;
 import com.jzg.commons.entity.finance.vo.*;
+import com.jzg.commons.entity.finance.vo.importbatchmodify.InsPlyIncomeExportVo;
 import com.jzg.commons.entity.finance.vo.importimcome.ImportUpdateExcelResultVo;
 import com.jzg.commons.entity.finance.vo.importimcome.JyExcelVo;
 import com.jzg.commons.entity.finance.vo.importimcome.OtherExcelVo;
@@ -146,7 +147,7 @@ public interface ReceivableService extends IService<InsPlyIncome> {
      * @param file
      * @return
      */
-    List<ReceivableExportExcelVo> importReceivableExcel(MultipartFile file);
+    List<InsPlyIncomeExportVo> importReceivableExcel(MultipartFile file);
 
     /**
      * 导入手续费excel  并处理数据
@@ -174,7 +175,7 @@ public interface ReceivableService extends IService<InsPlyIncome> {
      * @param file
      * @return
      */
-    ImportUpdateExcelResultVo importPlatFormReceivable(MultipartFile file);
+//    ImportUpdateExcelResultVo importPlatFormReceivable(MultipartFile file);
 
     /**
      * 批量修改
@@ -242,11 +243,6 @@ public interface ReceivableService extends IService<InsPlyIncome> {
      */
     void exportPlatformSettlementExcel(Page page,SettlementQueryVo settlementQueryVo) throws IOException;
 
-    /**
-     * 导出平台协议Excel模板
-     */
-    String exportTemplatePlatFormReceivable() throws IOException;
-
     /**
      * 导出平台协议Excel
      */

+ 355 - 319
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -29,6 +29,8 @@ import com.jzg.commons.entity.Constant;
 import com.jzg.commons.entity.finance.dto.*;
 import com.jzg.commons.entity.finance.po.*;
 import com.jzg.commons.entity.finance.vo.*;
+import com.jzg.commons.entity.finance.vo.importbatchmodify.InsPlyIncomeBatch;
+import com.jzg.commons.entity.finance.vo.importbatchmodify.InsPlyIncomeExportVo;
 import com.jzg.commons.entity.finance.vo.importimcome.*;
 import com.jzg.commons.entity.orders.po.InsOrderAdjust;
 import com.jzg.commons.entity.orders.po.InsOrdersPolicy;
@@ -138,7 +140,8 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     private PtlAgreementMapper ptlAgreementMapper;
     @Autowired
     private SysUploadFilesMapper sysUploadFilesMapper;
-
+    @Autowired
+    private InsOrdersPolicyMapper insOrdersPolicyMapper;
     @Autowired
     private ExportBaseServiceImpl exportBaseService;
     @Autowired
@@ -939,6 +942,47 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         // 5. 将其他费用收入合并进结果集合
         mergeOtherCostIncomeToResult(filterIncomeList, resultList, companyMap);
 
+        if (CollUtil.isEmpty(resultList)){
+            return resultList;
+        }
+
+        // 按companyName分组,组内year+month升序,最后打平
+        resultList = resultList.stream()
+                // 按公司名称分组
+                .collect(Collectors.groupingBy(FollowCompanyFeeVO::getCompanyName))
+                // 获取分组后的value集合
+                .values()
+                .stream()
+                // 组内排序:先转数字,year升序,month升序
+                .map(group -> group.stream()
+                        .sorted((o1, o2) -> {
+                            // year、month字符串转Integer
+                            int y1 = Integer.parseInt(o1.getYear());
+                            int m1 = Integer.parseInt(o1.getMonth());
+                            int y2 = Integer.parseInt(o2.getYear());
+                            int m2 = Integer.parseInt(o2.getMonth());
+                            if (y1 != y2) {
+                                return Integer.compare(y1, y2);
+                            }
+                            return Integer.compare(m1, m2);
+                        })
+                        .collect(Collectors.toList()))
+                // 将各个公司分组的list打平成一个大list
+                .flatMap(List::stream)
+                .collect(Collectors.toList());
+
+        // ============新增:给signMonth赋值 year+month,月份补两位 2026-7 → "202607"============
+        resultList.stream()
+                .filter(vo -> StrUtil.isNotBlank(vo.getYear()) && StrUtil.isNotBlank(vo.getMonth()))
+                .forEach(vo -> {
+                    String year = vo.getYear();
+                    String month = vo.getMonth();
+                    String monthPad = StrUtil.padPre(month, 2, "0");
+                    // 格式 yyyy‑MM
+                    String signMonth = year + "-" + monthPad;
+                    vo.setSignMonth(signMonth);
+                });
+
         return resultList;
     }
 
@@ -2235,188 +2279,180 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      */
     @Override
     public String exportTemplateReceivableList() {
-        List<InsPlyIncomeExportVo> emptyList = ListUtil.empty();
-
+        List<InsPlyIncomeExportVo> exportVos = new ArrayList<>();
+        InsPlyIncomeExportVo vo = new InsPlyIncomeExportVo();
+        // 这里是参考样例,方便业务进行修改
+        vo.setLicenseNo("样例:晋AK68H2");
+        vo.setJqPolicyNo("jq_2026年8月26日10:00:48");
+        vo.setSyPolicyNo("sy_2026年8月26日10:00:56");
+        vo.setJyPolicyNo("jy_2026年8月26日10:01:04");
+        vo.setJqSuperviseCostsProportion("10");
+        vo.setJqOtherCostsProportion("15");
+        vo.setSySuperviseCostsProportion("12");
+        vo.setSyOtherCostsProportion("11");
+        vo.setJySuperviseCostsProportion("13");
+        vo.setJyOtherCostsProportion("17");
+        exportVos.add(vo);
         // 调用动态导出
         return exportBaseService.upLoadFile(
                 InsPlyIncomeExportVo.class,
-                emptyList,
-                "私有协议应收-批量修改-导出模板-" + Instant.now()
+                exportVos,
+                "批量修改-导出模板-" + Instant.now()
         );
     }
 
     /**
-     * 导入应收列表更新数据
-     * <p>
-     * 该方法用于从Excel文件中导入并更新平台协议的应收订单数据,包括以下处理逻辑:
-     * 1. 解析Excel文件获取应收数据列表
-     * 2. 获取所有保险公司信息
-     * 3. 校验Excel内部订单号是否重复
-     * 4. 遍历每条数据进行以下校验和处理:
-     *    - 检查必填字段是否为空
-     *    - 检查Excel内部订单号是否重复
-     *    - 查询数据库中订单号是否存在(只允许修改,不允许新增)
-     *    - 检查应收数据是否已结算(已结算的数据不允许修改)
-     *    - 查询订单是否存在
-     *    - 验证协议编码和类型是否匹配
-     *    - 构建InsPlyIncome对象并设置需要更新的字段
-     * 5. 批量更新成功的记录到数据库
-     * 6. 如果有失败数据,生成失败数据Excel文件并提供下载链接
-     * 7. 返回导入结果(包含成功数、失败数、失败数据和下载链接)
-     * </p>
-     *
-     * @param file Excel文件,包含平台协议应收数据,文件格式应符合ReceivableExportExcelVo的定义
-     * @return ImportUpdateExcelResultVo 返回导入结果对象,包含:
-     *         - successNumber: 成功更新的记录数
-     *         - failedNumber: 失败的记录数
-     *         - failedData: 失败的数据列表,包含错误原因说明
-     *         - failFileUrl: 失败数据Excel文件的下载链接(如果有失败数据)
+     * 导入应收列表更新数据来更新比例数据
+     * @author jiakai,lipf
      */
     @Override
     public ImportUpdateExcelResultVo importReceivableListUpdate(MultipartFile file) {
         String userName = baseController.getUserName();
-        log.info("用户[{}]导入平台协议文件",userName);
+        log.info("用户[{}]导入平台/私有文件",userName);
         ImportUpdateExcelResultVo importExcelResultVo = new ImportUpdateExcelResultVo();
-        List<ReceivableExportExcelVo> receivableExportExcelVos = importReceivableExcel(file);
-        if (CollUtil.isEmpty(receivableExportExcelVos)){
+        List<InsPlyIncomeExportVo> excelContents = importReceivableExcel(file);
+        log.info("用户[{}]导入平台/私有批量修改文件,一共导入[{}]条记录",userName, CollUtil.size(excelContents));
+        if (CollUtil.isEmpty(excelContents)){
             throw new SystemException("数据不能为空,导入失败");
         }
-        AssertionUtils.isEmpty(receivableExportExcelVos, "数据处理失败,导入失败");
-        // 获取保司名称
-        HttpResult<List<EsmInsCompany>> listHttpResult = esmInsCompanyClient.liveCompanyList();
-        AssertionUtils.isFail(listHttpResult.getCode() != 200, listHttpResult.getMsg());
+        AssertionUtils.isEmpty(excelContents, "数据处理失败,导入失败");
 
-        int failedNumber = 0;
-        List<ReceivableExportExcelVo> failedExcel = new ArrayList<>();
-        // 只存储需要【修改】的数据
-        List<InsPlyIncome> updateExcel = new ArrayList<>();
-
-        // 校验Excel内部保单号重复
-        Set<String> existPolicyNoSet = new HashSet<>();
-        Set<String> repeatPolicyNoSet = new HashSet<>();
-
-        for (ReceivableExportExcelVo vo : receivableExportExcelVos) {
-            String orderNo = vo.getOrderNo();
-            if (existPolicyNoSet.contains(orderNo)) {
-                repeatPolicyNoSet.add(orderNo);
-            } else {
-                existPolicyNoSet.add(orderNo);
-            }
+        List<InsPlyIncomeBatch> datas = this.fillExcelConte(excelContents);
+        HttpResult<String> validateRes = this.validateBatch(datas);
+        if(validateRes.isFail()){
+            log.error("批量导入修改。校验异常。 validateRes=[{}]", JSONUtil.toJsonStr(validateRes));
+            importExcelResultVo.setErrMsg(validateRes.getMsg());
+            return importExcelResultVo;
         }
-
-        // 处理数据
-
-        for (ReceivableExportExcelVo vo : receivableExportExcelVos) {
-            // 1. 空数据校验
-            ImportResultVo resultVo = vo.checkEmpty();
-            if (!resultVo.isSuccess()) {
-                failedNumber++;
-                vo.setErrorMessage(resultVo.getMessage().stream().collect(Collectors.joining(",")));
-                failedExcel.add(vo);
-                continue;
+        List<BatchModifyVo> batchModifyVos = datas.stream().map(action->{
+            BatchModifyVo batchModifyVo = new BatchModifyVo();
+            BeanUtils.copyProperties(action,batchModifyVo);
+            if(StrUtil.isNotEmpty(action.getOrderNo())){
+                batchModifyVo.getOrderNos().add(action.getOrderNo());
             }
-
-            // 2. Excel内部保单号重复
-            if (repeatPolicyNoSet.contains(vo.getOrderNo())) {
-                failedNumber++;
-                vo.setErrorMessage("订单号重复");
-                failedExcel.add(vo);
-                continue;
+            if(StrUtil.isNotEmpty(action.getIncomeId())){
+                batchModifyVo.getIncomeIds().add(action.getIncomeId());
             }
+            return batchModifyVo;
+        }).toList();
+        StringJoiner joiner = new StringJoiner(",","车牌号为","的记录批量修改异常");
+        for (BatchModifyVo batchModifyVo : batchModifyVos) {
+            boolean b = this.batchModify(batchModifyVo);
+            if(!b){
+                joiner.add(batchModifyVo.getLicenseNo());
+            }
+        }
+        if(StrUtil.isNotEmpty(joiner.toString())){
+            String msg = String.format("批量导入修改,全部成功。成功修改[%d]条记录", CollUtil.size(excelContents));
+            log.info(msg);
+            importExcelResultVo.setErrMsg(msg);
+            importExcelResultVo.setSuccessNumber(CollUtil.size(excelContents));
+            return importExcelResultVo;
+        }
+        String errMsg = joiner.toString();
+        log.info("导入excel进行批量修改异常。 errMsg=[{}]",errMsg);
+        importExcelResultVo.setErrMsg(errMsg);
+        return importExcelResultVo;
+    }
 
-            // 3. 查询数据库中是否已存在该订单号
-            InsPlyIncome existIncome = baseMapper.selectOne(new LambdaQueryWrapper<InsPlyIncome>()
-                    .eq(InsPlyIncome::getOrderNo, vo.getOrderNo()));
-
-            // 数据库不存在 → 直接失败
-            if (Objects.isNull(existIncome)) {
-                failedNumber++;
-                vo.setErrorMessage("订单号不存在,不允许新增");
-                failedExcel.add(vo);
+    /**
+     * 校验批量修改导入的数据是否正常,
+     *
+     * @param datas
+     * @author lipf
+     * @date 2026/8/26 10:51
+     */
+    private HttpResult<String> validateBatch(List<InsPlyIncomeBatch> datas) {
+        log.info("导入批量修改。 datas.size=[{}]", JSONUtil.toJsonStr(datas));
+        StringJoiner joiner = new StringJoiner(",","校验未通过: ","");
+        for (InsPlyIncomeBatch data : datas) {
+            if(StrUtil.isEmpty(data.getOrderNo())){
+                joiner.add(String.format("车牌号为[%s]的记录根据保单号没有找到订单信息", data.getLicenseNo()));
                 continue;
             }
-
-            // 数据库已存在 → 继续后续校验
-            // 判断已开票 / 已结算
-            String settlementFlag = "1";
-            if (settlementFlag.equals(existIncome.getSuperviseSettlement()) || settlementFlag.equals(existIncome.getOtherSettlement())
-                    || settlementFlag.equals(existIncome.getJySuperviseSettlement()) || settlementFlag.equals(existIncome.getJyOtherSettlement())
-                    || settlementFlag.equals(existIncome.getPlatformSuperviseSettlement()) || settlementFlag.equals(existIncome.getPlatformOtherSettlement())) {
-                failedNumber++;
-                vo.setErrorMessage("应收数据已结算");
-                failedExcel.add(vo);
+            InsPlyIncome insPlyIncome = data.getInsPlyIncome();
+            if(insPlyIncome == null){
+                joiner.add(String.format("车牌号为[%s]的记录根据订单号[%s]没有找到应收记录", data.getLicenseNo(), data.getOrderNo()));
                 continue;
             }
+        }
+        List<ImportContentExt> exts = datas.stream().map(action->{
+            ImportContentExt ext = new ImportContentExt();
+            BeanUtils.copyProperties(action,ext);
+            return ext;
+        }).toList();
+        String s = this.validatePolicy(exts, "20");
+        if(StrUtil.isNotEmpty(s)){
+            joiner.add(s);
+        }
+        if(StrUtil.isNotEmpty(joiner.toString())){
+            return HttpResult.ok();
+        }
+        return HttpResult.error(joiner.toString());
+    }
 
+    /**
+     * 为Excel中的数据填充其他必要的字段, 为后续的校验提前准备数据
+     *
+     * @param excelContents excel中导入的记录
+     * @author lipf
+     * @date 2026/8/26 10:46
+     */
+    private List<InsPlyIncomeBatch> fillExcelConte(List<InsPlyIncomeExportVo> excelContents) {
+        log.info("为[{}]条导入数据填充必要的字段", CollUtil.size(excelContents));
+        List<InsPlyIncomeBatch> res = new ArrayList<>();
+        for (InsPlyIncomeExportVo excelContent : excelContents) {
+            InsPlyIncomeBatch ext = new InsPlyIncomeBatch();
+            BeanUtils.copyProperties(excelContent,ext);
+            res.add(ext);
             // 查询订单
-            HttpResult<InsOrdersVo> insOrdersVoHttpResult = insOrdersClient.selectById(vo.getOrderNo());
-            InsOrdersVo data = insOrdersVoHttpResult.getData();
-            if (null == data){
-                failedNumber++;
-                vo.setErrorMessage("订单号不存在");
-                failedExcel.add(vo);
+            String orderNO = "";
+            if(StrUtil.isNotEmpty(excelContent.getJqPolicyNo()) && StrUtil.isEmpty(orderNO)){
+                LambdaQueryWrapper<InsOrdersPolicy> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(InsOrdersPolicy::getJqPolicyNo,excelContent.getJqPolicyNo());
+                List<InsOrdersPolicy> insOrdersPolicies = insOrdersPolicyMapper.selectList(queryWrapper);
+                if(CollUtil.isNotEmpty(insOrdersPolicies)){
+                    ext.setInsOrdersPolicy(insOrdersPolicies.get(0));
+                    orderNO  = insOrdersPolicies.get(0).getOrderNo();
+                }
+            }
+            if(StrUtil.isNotEmpty(excelContent.getSyPolicyNo()) && StrUtil.isEmpty(orderNO)){
+                LambdaQueryWrapper<InsOrdersPolicy> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(InsOrdersPolicy::getSyPolicyNo,excelContent.getSyPolicyNo());
+                List<InsOrdersPolicy> insOrdersPolicies = insOrdersPolicyMapper.selectList(queryWrapper);
+                if(CollUtil.isNotEmpty(insOrdersPolicies)){
+                    ext.setInsOrdersPolicy(insOrdersPolicies.get(0));
+                    orderNO  = insOrdersPolicies.get(0).getOrderNo();
+                }
+            }
+            if(StrUtil.isNotEmpty(excelContent.getJyPolicyNo()) && StrUtil.isEmpty(orderNO)){
+                LambdaQueryWrapper<InsOrdersPolicy> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(InsOrdersPolicy::getJyPolicyNo,excelContent.getJyPolicyNo());
+                List<InsOrdersPolicy> insOrdersPolicies = insOrdersPolicyMapper.selectList(queryWrapper);
+                if(CollUtil.isNotEmpty(insOrdersPolicies)){
+                    ext.setInsOrdersPolicy(insOrdersPolicies.get(0));
+                    orderNO  = insOrdersPolicies.get(0).getOrderNo();
+                }
+            }
+            if(StrUtil.isEmpty(orderNO)){
                 continue;
             }
-
-            // 查询数据库中是否已存在该协议
-            PtlAgreement ptlAgreement = ptlAgreementMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>()
-                    .eq(PtlAgreement::getId, data.getAgreementId()));
-
-            // 数据库不存在 → 直接失败
-            if (Objects.isNull(ptlAgreement) || !ptlAgreement.getAgreementType().toString().equals(vo.getAgreementType())) {
-                failedNumber++;
-                vo.setErrorMessage("协议编码在协议中不存在");
-                failedExcel.add(vo);
+            log.info("处理订单号是[{}]的订单",orderNO);
+            ext.setOrderNo(orderNO);
+
+            LambdaQueryWrapper<InsPlyIncome> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(InsPlyIncome::getOrderNo,orderNO);
+            List<InsPlyIncome> insPlyIncomes = insPlyIncomeMapper.selectList(wrapper);
+            if(CollUtil.isEmpty(insPlyIncomes)){
+                log.info("订单号为[{}]的数据没有进入应收",orderNO);
                 continue;
             }
-
-            // 封装修改数据
-            InsPlyIncome insPlyIncome = new InsPlyIncome();
-            insPlyIncome.setId(existIncome.getId());
-            insPlyIncome.setLicenseNo(vo.getLicenseNo());
-            insPlyIncome.setJqPolicyNo(vo.getJqPolicyNo());
-            insPlyIncome.setJqSuperviseCostsProportion(vo.getJqSuperviseCostsProportion());
-            insPlyIncome.setJqOtherCostsProportion(vo.getJqOtherCostsProportion());
-            insPlyIncome.setSyPolicyNo(vo.getSyPolicyNo());
-            insPlyIncome.setSySuperviseCostsProportion(vo.getSySuperviseCostsProportion());
-            insPlyIncome.setSyOtherCostsProportion(vo.getSyOtherCostsProportion());
-            insPlyIncome.setJyPolicyNo(vo.getJyPolicyNo());
-            insPlyIncome.setJySuperviseCostsProportion(vo.getJySuperviseCostsProportion());
-            insPlyIncome.setJyOtherCostsProportion(vo.getJyOtherCostsProportion());
-            insPlyIncome.setContactPerson(vo.getDockingPerson());
-            insPlyIncome.setContactPersonPhone(vo.getDockingPersonPhone());
-            // 协议编号
-            insPlyIncome.setAgreementId(ptlAgreement.getId());
-            insPlyIncome.setAgreementName(ptlAgreement.getAgreementName());
-            insPlyIncome.setAgreementType(ptlAgreement.getAgreementType().toString());
-            insPlyIncome.setSystemCode(ptlAgreement.getSystemCode());
-
-            // 加入修改列表
-            updateExcel.add(insPlyIncome);
-        }
-
-        // 执行批量更新(只更新,不新增)
-        if (CollUtil.isNotEmpty(updateExcel)) {
-            baseMapper.updateById(updateExcel);
+            InsPlyIncome insPlyIncome = insPlyIncomes.get(0);
+            ext.setIncomeId(insPlyIncome.getId());
+            ext.setInsPlyIncome(insPlyIncome);
         }
 
-        // ===================== 生成失败数据下载链接 =====================
-        String failFileUrl = "";
-        if (CollUtil.isNotEmpty(failedExcel)) {
-            failFileUrl = exportBaseService.upLoadFile(
-                    ReceivableExportExcelVo.class,
-                    failedExcel,
-                    "平台协议应收-导入失败-" + Instant.now()
-            );
-        }
-
-        // 返回结果
-        importExcelResultVo.setFailedData(failedExcel);
-        importExcelResultVo.setFailFileUrl(failFileUrl);
-        importExcelResultVo.setSuccessNumber(updateExcel.size());
-        importExcelResultVo.setFailedNumber(failedNumber);
-
-        return importExcelResultVo;
+        return res;
     }
 
     /**
@@ -3134,10 +3170,10 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     }
 
     @Override
-    public List<ReceivableExportExcelVo> importReceivableExcel(MultipartFile file) {
+    public List<InsPlyIncomeExportVo> importReceivableExcel(MultipartFile file) {
         ReceivbleExcelListener listener = new ReceivbleExcelListener();
         try (InputStream inputStream = file.getInputStream()) {
-            EasyExcel.read(inputStream, ReceivableExportExcelVo.class, listener)
+            EasyExcel.read(inputStream, InsPlyIncomeExportVo.class, listener)
                     .sheet()
                     .doRead();
             return listener.getDataList();
@@ -3147,9 +3183,6 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         }
     }
 
-
-
-
     @Override
     public List<JyExcelVo> importJyExcel(MultipartFile file) {
         JyExcelListener listener = new JyExcelListener();
@@ -3462,151 +3495,151 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      *         - failedData: 失败的数据列表,包含错误原因说明
      *         - failFileUrl: 失败数据Excel文件的下载链接(如果有失败数据)
      */
-    @Override
-    public ImportUpdateExcelResultVo importPlatFormReceivable(MultipartFile file) {
-        String userName = baseController.getUserName();
-        log.info("用户[{}]导入平台协议文件",userName);
-        ImportUpdateExcelResultVo importExcelResultVo = new ImportUpdateExcelResultVo();
-        List<ReceivableExportExcelVo> receivableExportExcelVos = importReceivableExcel(file);
-        if (CollUtil.isEmpty(receivableExportExcelVos)){
-            throw new SystemException("数据不能为空,导入失败");
-        }
-        AssertionUtils.isEmpty(receivableExportExcelVos, "数据处理失败,导入失败");
-        // 获取保司名称
-        HttpResult<List<EsmInsCompany>> listHttpResult = esmInsCompanyClient.liveCompanyList();
-        AssertionUtils.isFail(listHttpResult.getCode() != 200, listHttpResult.getMsg());
-
-        int failedNumber = 0;
-        List<ReceivableExportExcelVo> failedExcel = new ArrayList<>();
-        // 只存储需要【修改】的数据
-        List<InsPlyIncome> updateExcel = new ArrayList<>();
-
-        // 校验Excel内部保单号重复
-        Set<String> existPolicyNoSet = new HashSet<>();
-        Set<String> repeatPolicyNoSet = new HashSet<>();
-
-        for (ReceivableExportExcelVo vo : receivableExportExcelVos) {
-            String policyNo = vo.getJqPolicyNo();
-            if (existPolicyNoSet.contains(policyNo)) {
-                repeatPolicyNoSet.add(policyNo);
-            } else {
-                existPolicyNoSet.add(policyNo);
-            }
-        }
-
-        // 处理数据
-        for (ReceivableExportExcelVo vo : receivableExportExcelVos) {
-            // 1. 空数据校验
-            ImportResultVo resultVo = vo.checkEmpty();
-            if (!resultVo.isSuccess()) {
-                failedNumber++;
-                vo.setErrorMessage(resultVo.convert2Str());
-                failedExcel.add(vo);
-                continue;
-            }
-
-            // 2. Excel内部保单号重复
-            if (repeatPolicyNoSet.contains(vo.getJqPolicyNo())) {
-                failedNumber++;
-                vo.setErrorMessage("保单号重复");
-                failedExcel.add(vo);
-                continue;
-            }
-
-            // 查询订单
-            HttpResult<InsOrdersVo> insOrdersVoHttpResult = insOrdersClient.selectById(vo.getOrderNo());
-            InsOrdersVo data = insOrdersVoHttpResult.getData();
-            if (null == data){
-                failedNumber++;
-                vo.setErrorMessage("订单号不存在");
-                failedExcel.add(vo);
-                continue;
-            }
-
-            // 查询数据库中是否已存在该协议
-            PtlAgreement ptlAgreement = ptlAgreementMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>()
-                    .eq(PtlAgreement::getId, data.getAgreementId()));
-
-            // 数据库不存在 → 直接失败
-            if (Objects.isNull(ptlAgreement) || !ptlAgreement.getAgreementType().toString().equals(vo.getAgreementType())) {
-                failedNumber++;
-                vo.setErrorMessage("协议编码在协议中不存在");
-                failedExcel.add(vo);
-                continue;
-            }
-
-            // 3. 查询数据库中是否已存在该保单号
-            InsPlyIncome existIncome = baseMapper.selectOne(new LambdaQueryWrapper<InsPlyIncome>()
-                    .eq(InsPlyIncome::getJqPolicyNo, vo.getJqPolicyNo()));
-
-            // 数据库不存在 → 直接失败
-            if (Objects.isNull(existIncome)) {
-                failedNumber++;
-                vo.setErrorMessage("保单号不存在,不允许新增");
-                failedExcel.add(vo);
-                continue;
-            }
-
-            // 数据库已存在 → 继续后续校验
-            // 判断已开票 / 已结算
-            String settlementFlag = "1";
-            if (settlementFlag.equals(existIncome.getSuperviseSettlement()) || settlementFlag.equals(existIncome.getOtherSettlement())
-                    || settlementFlag.equals(existIncome.getJySuperviseSettlement()) || settlementFlag.equals(existIncome.getJyOtherSettlement())
-                    || settlementFlag.equals(existIncome.getPlatformSuperviseSettlement()) || settlementFlag.equals(existIncome.getPlatformOtherSettlement())) {
-                failedNumber++;
-                vo.setErrorMessage("应收数据已结算");
-                failedExcel.add(vo);
-                continue;
-            }
-
-            // 封装修改数据
-            InsPlyIncome insPlyIncome = new InsPlyIncome();
-            insPlyIncome.setId(existIncome.getId());
-            insPlyIncome.setLicenseNo(vo.getLicenseNo());
-            insPlyIncome.setJqPolicyNo(vo.getJqPolicyNo());
-            insPlyIncome.setJqSuperviseCostsProportion(vo.getJqSuperviseCostsProportion());
-            insPlyIncome.setJqOtherCostsProportion(vo.getJqOtherCostsProportion());
-            insPlyIncome.setSyPolicyNo(vo.getSyPolicyNo());
-            insPlyIncome.setSySuperviseCostsProportion(vo.getSySuperviseCostsProportion());
-            insPlyIncome.setSyOtherCostsProportion(vo.getSyOtherCostsProportion());
-            insPlyIncome.setJyPolicyNo(vo.getJyPolicyNo());
-            insPlyIncome.setJySuperviseCostsProportion(vo.getJySuperviseCostsProportion());
-            insPlyIncome.setJyOtherCostsProportion(vo.getJyOtherCostsProportion());
-            insPlyIncome.setContactPerson(vo.getDockingPerson());
-            insPlyIncome.setContactPersonPhone(vo.getDockingPersonPhone());
-            // 协议编号
-            insPlyIncome.setAgreementId(ptlAgreement.getId());
-            insPlyIncome.setAgreementName(ptlAgreement.getAgreementName());
-            insPlyIncome.setAgreementType(ptlAgreement.getAgreementType().toString());
-            insPlyIncome.setSystemCode(ptlAgreement.getSystemCode());
-
-            // 加入修改列表
-            updateExcel.add(insPlyIncome);
-        }
-
-        // 执行批量更新(只更新,不新增)
-        if (CollUtil.isNotEmpty(updateExcel)) {
-            baseMapper.updateById(updateExcel);
-        }
-
-        // ===================== 生成失败数据下载链接 =====================
-        String failFileUrl = "";
-        if (CollUtil.isNotEmpty(failedExcel)) {
-            failFileUrl = exportBaseService.upLoadFile(
-                    ReceivableExportExcelVo.class,
-                    failedExcel,
-                    "平台协议应收-导入失败-" + Instant.now()
-            );
-        }
-
-        // 返回结果
-        importExcelResultVo.setFailedData(failedExcel);
-        importExcelResultVo.setFailFileUrl(failFileUrl);
-        importExcelResultVo.setSuccessNumber(updateExcel.size());
-        importExcelResultVo.setFailedNumber(failedNumber);
-
-        return importExcelResultVo;
-    }
+//    @Override
+//    public ImportUpdateExcelResultVo importPlatFormReceivable(MultipartFile file) {
+//        String userName = baseController.getUserName();
+//        log.info("用户[{}]导入平台协议文件",userName);
+//        ImportUpdateExcelResultVo importExcelResultVo = new ImportUpdateExcelResultVo();
+//        List<ReceivableExportExcelVo> receivableExportExcelVos = importReceivableExcel(file);
+//        if (CollUtil.isEmpty(receivableExportExcelVos)){
+//            throw new SystemException("数据不能为空,导入失败");
+//        }
+//        AssertionUtils.isEmpty(receivableExportExcelVos, "数据处理失败,导入失败");
+//        // 获取保司名称
+//        HttpResult<List<EsmInsCompany>> listHttpResult = esmInsCompanyClient.liveCompanyList();
+//        AssertionUtils.isFail(listHttpResult.getCode() != 200, listHttpResult.getMsg());
+//
+//        int failedNumber = 0;
+//        List<ReceivableExportExcelVo> failedExcel = new ArrayList<>();
+//        // 只存储需要【修改】的数据
+//        List<InsPlyIncome> updateExcel = new ArrayList<>();
+//
+//        // 校验Excel内部保单号重复
+//        Set<String> existPolicyNoSet = new HashSet<>();
+//        Set<String> repeatPolicyNoSet = new HashSet<>();
+//
+//        for (ReceivableExportExcelVo vo : receivableExportExcelVos) {
+//            String policyNo = vo.getJqPolicyNo();
+//            if (existPolicyNoSet.contains(policyNo)) {
+//                repeatPolicyNoSet.add(policyNo);
+//            } else {
+//                existPolicyNoSet.add(policyNo);
+//            }
+//        }
+//
+//        // 处理数据
+//        for (ReceivableExportExcelVo vo : receivableExportExcelVos) {
+//            // 1. 空数据校验
+//            ImportResultVo resultVo = vo.checkEmpty();
+//            if (!resultVo.isSuccess()) {
+//                failedNumber++;
+//                vo.setErrorMessage(resultVo.convert2Str());
+//                failedExcel.add(vo);
+//                continue;
+//            }
+//
+//            // 2. Excel内部保单号重复
+//            if (repeatPolicyNoSet.contains(vo.getJqPolicyNo())) {
+//                failedNumber++;
+//                vo.setErrorMessage("保单号重复");
+//                failedExcel.add(vo);
+//                continue;
+//            }
+//
+//            // 查询订单
+//            HttpResult<InsOrdersVo> insOrdersVoHttpResult = insOrdersClient.selectById(vo.getOrderNo());
+//            InsOrdersVo data = insOrdersVoHttpResult.getData();
+//            if (null == data){
+//                failedNumber++;
+//                vo.setErrorMessage("订单号不存在");
+//                failedExcel.add(vo);
+//                continue;
+//            }
+//
+//            // 查询数据库中是否已存在该协议
+//            PtlAgreement ptlAgreement = ptlAgreementMapper.selectOne(new LambdaQueryWrapper<PtlAgreement>()
+//                    .eq(PtlAgreement::getId, data.getAgreementId()));
+//
+//            // 数据库不存在 → 直接失败
+//            if (Objects.isNull(ptlAgreement) || !ptlAgreement.getAgreementType().toString().equals(vo.getAgreementType())) {
+//                failedNumber++;
+//                vo.setErrorMessage("协议编码在协议中不存在");
+//                failedExcel.add(vo);
+//                continue;
+//            }
+//
+//            // 3. 查询数据库中是否已存在该保单号
+//            InsPlyIncome existIncome = baseMapper.selectOne(new LambdaQueryWrapper<InsPlyIncome>()
+//                    .eq(InsPlyIncome::getJqPolicyNo, vo.getJqPolicyNo()));
+//
+//            // 数据库不存在 → 直接失败
+//            if (Objects.isNull(existIncome)) {
+//                failedNumber++;
+//                vo.setErrorMessage("保单号不存在,不允许新增");
+//                failedExcel.add(vo);
+//                continue;
+//            }
+//
+//            // 数据库已存在 → 继续后续校验
+//            // 判断已开票 / 已结算
+//            String settlementFlag = "1";
+//            if (settlementFlag.equals(existIncome.getSuperviseSettlement()) || settlementFlag.equals(existIncome.getOtherSettlement())
+//                    || settlementFlag.equals(existIncome.getJySuperviseSettlement()) || settlementFlag.equals(existIncome.getJyOtherSettlement())
+//                    || settlementFlag.equals(existIncome.getPlatformSuperviseSettlement()) || settlementFlag.equals(existIncome.getPlatformOtherSettlement())) {
+//                failedNumber++;
+//                vo.setErrorMessage("应收数据已结算");
+//                failedExcel.add(vo);
+//                continue;
+//            }
+//
+//            // 封装修改数据
+//            InsPlyIncome insPlyIncome = new InsPlyIncome();
+//            insPlyIncome.setId(existIncome.getId());
+//            insPlyIncome.setLicenseNo(vo.getLicenseNo());
+//            insPlyIncome.setJqPolicyNo(vo.getJqPolicyNo());
+//            insPlyIncome.setJqSuperviseCostsProportion(vo.getJqSuperviseCostsProportion());
+//            insPlyIncome.setJqOtherCostsProportion(vo.getJqOtherCostsProportion());
+//            insPlyIncome.setSyPolicyNo(vo.getSyPolicyNo());
+//            insPlyIncome.setSySuperviseCostsProportion(vo.getSySuperviseCostsProportion());
+//            insPlyIncome.setSyOtherCostsProportion(vo.getSyOtherCostsProportion());
+//            insPlyIncome.setJyPolicyNo(vo.getJyPolicyNo());
+//            insPlyIncome.setJySuperviseCostsProportion(vo.getJySuperviseCostsProportion());
+//            insPlyIncome.setJyOtherCostsProportion(vo.getJyOtherCostsProportion());
+//            insPlyIncome.setContactPerson(vo.getDockingPerson());
+//            insPlyIncome.setContactPersonPhone(vo.getDockingPersonPhone());
+//            // 协议编号
+//            insPlyIncome.setAgreementId(ptlAgreement.getId());
+//            insPlyIncome.setAgreementName(ptlAgreement.getAgreementName());
+//            insPlyIncome.setAgreementType(ptlAgreement.getAgreementType().toString());
+//            insPlyIncome.setSystemCode(ptlAgreement.getSystemCode());
+//
+//            // 加入修改列表
+//            updateExcel.add(insPlyIncome);
+//        }
+//
+//        // 执行批量更新(只更新,不新增)
+//        if (CollUtil.isNotEmpty(updateExcel)) {
+//            baseMapper.updateById(updateExcel);
+//        }
+//
+//        // ===================== 生成失败数据下载链接 =====================
+//        String failFileUrl = "";
+//        if (CollUtil.isNotEmpty(failedExcel)) {
+//            failFileUrl = exportBaseService.upLoadFile(
+//                    ReceivableExportExcelVo.class,
+//                    failedExcel,
+//                    "平台协议应收-导入失败-" + Instant.now()
+//            );
+//        }
+//
+//        // 返回结果
+//        importExcelResultVo.setFailedData(failedExcel);
+//        importExcelResultVo.setFailFileUrl(failFileUrl);
+//        importExcelResultVo.setSuccessNumber(updateExcel.size());
+//        importExcelResultVo.setFailedNumber(failedNumber);
+//
+//        return importExcelResultVo;
+//    }
 
     /**
      * 导入驾意险数据
@@ -5107,8 +5140,10 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             invoiceRecordQueryVo.setCompanyIds(companyIds.getData());
         }
         if (invoiceRecordQueryVo.getInvoiceTypes().contains("2") || invoiceRecordQueryVo.getInvoiceTypes().contains("4")){
+            // 跟单费
             invoiceRecordList = baseMapper.getFollowInvoiceRecordList(invoiceRecordQueryVo.getPage(), invoiceRecordQueryVo);
         }else if(invoiceRecordQueryVo.getInvoiceTypes().contains("1") || invoiceRecordQueryVo.getInvoiceTypes().contains("3")){
+            // 手续费
             invoiceRecordList = baseMapper.getInvoiceRecordList(invoiceRecordQueryVo.getPage(), invoiceRecordQueryVo);
         }
         List<InvoiceRecordResult> records = invoiceRecordList.getRecords();
@@ -5481,23 +5516,6 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         EasyExcelUtils.exportForWeb(ServletUtils.getResponse(), ExportSuperviseSettlementExcelDto.class, list, "车险手续费结算明细");
     }
 
-    /**
-     * 导出平台协议Excel
-     *
-     * @return
-     */
-    @Override
-    public String exportTemplatePlatFormReceivable() {
-        List<ReceivableExportExcelDto> emptyList = ListUtil.empty();
-
-        // 调用动态导出
-        return exportBaseService.upLoadFile(
-                ReceivableExportExcelDto.class,
-                emptyList,
-                "平台协议应收-批量导入-导出模板-" + Instant.now()
-        );
-    }
-
     /**
      * 导出平台协议Excel
      *
@@ -5577,6 +5595,24 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         log.info("superviseSettlementDetailExcel:settlementQueryVo=[{}]", JSONUtil.toJsonStr(settlementQueryVo));
         settlementQueryVo.setSystemCode(baseController.getSystemCode());
         Page<ExportSuperviseSettlementDetailExcelDto> exportSuperviseSettlementDetailExcelDtos = null;
+
+        // 1. 一次性获取保险公司全量Map,全局复用
+        Map<String, EsmInsCompany> companyMap = getAllInsCompanyMap();
+        if (CollUtil.isEmpty(companyMap)) {
+            return exportSuperviseSettlementDetailExcelDtos;
+        }
+
+        // 查询当前公司下所有的子公司
+        if (StrUtil.isNotBlank(settlementQueryVo.getCompanyId())){
+            // 将全量数据按照 parentId 进行分组,key 是 parentId,value 是该 parentId 下的所有公司列表
+            Map<String, List<EsmInsCompany>> parentGroupMap = companyMap.values().stream()
+                    .filter(c -> c.getParentId() != null)
+                    .collect(Collectors.groupingBy(EsmInsCompany::getParentId));
+            List<String> allChildIdspOtimized = getAllChildIdsOptimized(settlementQueryVo.getCompanyId(), parentGroupMap);
+            allChildIdspOtimized.add(settlementQueryVo.getCompanyId());
+            settlementQueryVo.setCompanyIdList(allChildIdspOtimized);
+        }
+
         if (settlementQueryVo.getInvoiceTypes().contains("5") && settlementQueryVo.getInvoiceTypes().contains("6")) {
             exportSuperviseSettlementDetailExcelDtos = baseMapper.getPlatFormSettlementDetailExcelDtos(page, settlementQueryVo);
         }else{

+ 20 - 6
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -843,8 +843,12 @@
             <if test="settlementQueryVo.settlementDateStart != null and settlementQueryVo.settlementDateStart != ''">
                 AND ipiis.create_time >= date(#{settlementQueryVo.settlementDateStart})
             </if>
-            <if test="settlementQueryVo.settlementDateEndStr != null and settlementQueryVo.settlementDateEndStr != ''">
-                AND ipiis.create_time &lt;= date(#{settlementQueryVo.settlementDateEndStr})
+            <if test="settlementQueryVo.settlementDateEnd != null and settlementQueryVo.settlementDateEnd != ''">
+                AND ipiis.create_time &lt;= date(#{settlementQueryVo.settlementDateEnd})
+            </if>
+            <if test="settlementQueryVo.signMonth != null and settlementQueryVo.signMonth != ''">
+                AND fo.year = SUBSTRING(#{settlementQueryVo.signMonth},1,4)
+                AND fo.month = SUBSTRING(#{settlementQueryVo.signMonth},6,2)
             </if>
         </where>
         GROUP BY ipiis.id
@@ -978,8 +982,11 @@
             <if test="settlementQueryVo.invoiceId != null and settlementQueryVo.invoiceId != ''">
                 AND ipii.id = #{settlementQueryVo.invoiceId}
             </if>
-            <if test="settlementQueryVo.companyId != null and settlementQueryVo.companyId != ''">
-                AND ipi.partner_company_id = #{settlementQueryVo.companyId}
+            <if test="settlementQueryVo.companyIdList != null and settlementQueryVo.companyIdList.size() > 0" >
+                AND ipi.partner_company_id in
+                <foreach collection="settlementQueryVo.companyIdList" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
             </if>
             <if test="settlementQueryVo.invoiceParty != null and settlementQueryVo.invoiceParty != ''">
                 AND ipii.invoice_party = #{settlementQueryVo.invoiceParty}
@@ -1048,8 +1055,11 @@
             <if test="settlementQueryVo.invoiceId != null and settlementQueryVo.invoiceId != ''">
                 AND ipiis.invoice_id = #{settlementQueryVo.invoiceId}
             </if>
-            <if test="settlementQueryVo.companyId != null and settlementQueryVo.companyId != ''">
-                AND ipi.company_id = #{settlementQueryVo.companyId}
+            <if test="settlementQueryVo.companyIdList != null and settlementQueryVo.companyIdList.size() > 0" >
+                AND ipi.partner_company_id in
+                <foreach collection="settlementQueryVo.companyIdList" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
             </if>
             <if test="settlementQueryVo.contactPerson != null and settlementQueryVo.contactPerson != ''">
                 AND ipii.contact_person = #{settlementQueryVo.contactPerson}
@@ -1672,6 +1682,10 @@
             <if test="invoiceRecordQueryVo.partnerCompanyId != null and invoiceRecordQueryVo.partnerCompanyId != ''">
                 AND iffo.partner_company_id = #{invoiceRecordQueryVo.partnerCompanyId}
             </if>
+            <if test="invoiceRecordQueryVo.signMonth != null and invoiceRecordQueryVo.signMonth != ''">
+                AND iffo.year = SUBSTRING(#{invoiceRecordQueryVo.signMonth},1,4)
+                AND iffo.month = SUBSTRING(#{invoiceRecordQueryVo.signMonth},6,2)
+            </if>
         </where>
         GROUP BY
         ipii.id,

Некоторые файлы не были показаны из-за большого количества измененных файлов