Prechádzať zdrojové kódy

渤海车险实体构建

wks 2 rokov pred
rodič
commit
723385487f
27 zmenil súbory, kde vykonal 1195 pridanie a 210 odobranie
  1. 4 7
      src/main/java/com/ydtech/modules/admin/model/vo/PersonAreaVo.java
  2. 12 0
      src/main/java/com/ydtech/modules/admin/service/SysAreaService.java
  3. 12 9
      src/main/java/com/ydtech/modules/order/components/bohai/BoHaiRequestApiComponent.java
  4. 2 39
      src/main/java/com/ydtech/modules/order/controller/BoHaiOrderApiController.java
  5. 24 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/CertType.java
  6. 46 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/Coverages.java
  7. 27 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/CustomerType.java
  8. 23 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/FormatType.java
  9. 26 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/InvoiceType.java
  10. 7 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/VehicleUsageDetail.java
  11. 4 1
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/ImageUploadRequest.java
  12. 32 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/NonAutomotiveProductsDetailsRequest.java
  13. 70 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/NonAutomotiveProductsRequest.java
  14. 27 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/PaymentRequest.java
  15. 166 14
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/QuotationRequest.java
  16. 17 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/RevocationUnderwritingRequest.java
  17. 32 4
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/UnderwritingRequest.java
  18. 210 27
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/VehicleConfirmationReqeust.java
  19. 54 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/NonAutomotiveProductsDetailsResponse.java
  20. 72 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/NonAutomotiveProductsResponse.java
  21. 48 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/PaymentResponse.java
  22. 77 10
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/QuotationResponse.java
  23. 15 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/RevocationUnderwritingResponse.java
  24. 36 5
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/UnderwritingResponse.java
  25. 4 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/VehicleTypeQueryResponse.java
  26. 5 51
      src/main/java/com/ydtech/modules/order/service/BoHaiOrderApiService.java
  27. 143 43
      src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java

+ 4 - 7
src/main/java/com/ydtech/modules/admin/model/vo/PersonAreaVo.java

@@ -1,11 +1,8 @@
 package com.ydtech.modules.admin.model.vo;
 
-import com.ydtech.modules.admin.model.SysArea;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
-import java.util.List;
 
 
 @Data
@@ -19,12 +16,12 @@ public class PersonAreaVo implements Serializable {
 
 
     //市
-    private String CityCode;
-    private String CityName;
+    private String cityCode;
+    private String cityName;
 
     //区
-    private String CountyCode;
-    private String CountyName;
+    private String countyCode;
+    private String countyName;
 
 
 }

+ 12 - 0
src/main/java/com/ydtech/modules/admin/service/SysAreaService.java

@@ -53,5 +53,17 @@ public interface SysAreaService extends IService<SysArea> {
         return queryByAddress(address, idcard);
     }
 
+    /**
+     * 使用永诚提供地省市区 地址身份证号 获取省市区
+     *
+     * @param address 地址
+     * @param idcard  身份证
+     * @return 省市区实体
+     */
+    @DynamicName(tableName = "ins_bohai_area")
+    default PersonAreaVo queryByAddressBoHai(String address, String idcard) {
+        return queryByAddress(address, idcard);
+    }
+
 
 }

+ 12 - 9
src/main/java/com/ydtech/modules/order/components/bohai/BoHaiRequestApiComponent.java

@@ -6,14 +6,8 @@ import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.ydtech.config.properties.BohaiApiConfigurationProperties;
 import com.ydtech.constants.InsuranceEnum;
 import com.ydtech.modules.order.entity.api.bohai.BoHaiEncrypted;
-import com.ydtech.modules.order.entity.api.bohai.request.BoHaiBaseRequest;
-import com.ydtech.modules.order.entity.api.bohai.request.GenerateOrderNoRequest;
-import com.ydtech.modules.order.entity.api.bohai.request.VehicleConfirmationReqeust;
-import com.ydtech.modules.order.entity.api.bohai.request.VehicleTypeQueryRequest;
-import com.ydtech.modules.order.entity.api.bohai.response.BoHaiBaseResponse;
-import com.ydtech.modules.order.entity.api.bohai.response.GenerateOrderNoResponse;
-import com.ydtech.modules.order.entity.api.bohai.response.VehicleConfirmationResponse;
-import com.ydtech.modules.order.entity.api.bohai.response.VehicleTypeQueryResponse;
+import com.ydtech.modules.order.entity.api.bohai.request.*;
+import com.ydtech.modules.order.entity.api.bohai.response.*;
 import com.ydtech.modules.order.utils.InsuranceLog;
 import com.ydtech.modules.order.utils.SignatureUtils;
 import lombok.RequiredArgsConstructor;
@@ -77,7 +71,7 @@ public class BoHaiRequestApiComponent {
         BoHaiEncrypted encrypted = JSON.parseObject(body).toJavaObject(BoHaiEncrypted.class);
         String info = SignatureUtils.decryptByPrivateKey(encrypted.getBizContent(), properties.getSelfPrivateKey());
         InsuranceLog.infoLog(InsuranceEnum.BPIC.getPinyin(), "\n\t---------> 解密后的参数:{}", info);
-        return JSON.parseObject(body).toJavaObject(tClass);
+        return JSON.parseObject(info).toJavaObject(tClass);
     }
 
 
@@ -112,4 +106,13 @@ public class BoHaiRequestApiComponent {
     }
 
 
+    public QuotationResponse quotation(QuotationRequest request) throws Exception {
+        return post(request, properties.getUrl(), QuotationResponse.class);
+    }
+
+    public UnderwritingResponse underwriting(UnderwritingRequest underwritingRequest) throws Exception {
+        return post(underwritingRequest, properties.getUrl(), UnderwritingResponse.class);
+    }
+
+
 }

+ 2 - 39
src/main/java/com/ydtech/modules/order/controller/BoHaiOrderApiController.java

@@ -39,12 +39,6 @@ public class BoHaiOrderApiController {
 
     private final InsOrdersComponents insOrdersComponents;
 
-    @PostMapping("/queryVehicleProducts")
-    @ApiOperation(value = "查询“车+意”中意外险方案信息")
-    public HttpResult<List<QueryVehicProductsResponse.ProductDtoListDTO>> queryVehicleProducts(@RequestBody ZjVehicleProductsQueryVo zjVehicleProductsVo) {
-        return this.boHaiOrderApiService.queryVehicleProducts(zjVehicleProductsVo);
-    }
-
     @QuoteVerification("报价授权")
     @PostMapping("/quote")
     @ApiOperation("报价")
@@ -59,34 +53,10 @@ public class BoHaiOrderApiController {
         return this.boHaiOrderApiService.submitImage(companyId);
     }
 
-    @PostMapping(value = "/queryClauseData")
-    @ApiOperation(value = "特约查询")
-    public HttpResult<List<QueryClauseDataResponse.ClauseInfoDtoListDTO>> queryClauseData(@RequestSingleParam(value = "companyId") String companyId) {
-        return this.boHaiOrderApiService.queryClauseData(companyId);
-    }
-
     @PostMapping(value = "/audit")
     @ApiOperation(value = "提交核保")
-    public HttpResult<Object> audit(@RequestBody SpecialAuditVo<SubmitVerifyRequest.EngageListDTO> specialAudit) {
-        return this.boHaiOrderApiService.audit(specialAudit);
-    }
-
-    @PostMapping(value = "/cancel")
-    @ApiOperation(value = "未缴费保单撤单")
-    public HttpResult<Object> cancel(@RequestSingleParam(value = "companyId") String companyId) {
-        return this.boHaiOrderApiService.cancel(companyId);
-    }
-
-    @PostMapping("/paymentCallbacks")
-    @ApiOperation(value = "支付回调")
-    public HttpResult<Object> paymentCallbacks(PaymentCallbacksRequest paymentCallbacksRequest) {
-        return this.boHaiOrderApiService.paymentCallbacks(paymentCallbacksRequest);
-    }
-
-    @PostMapping("/getOrderDetail")
-    @ApiOperation(value = "订单状态查询")
-    public HttpResult<Object> getOrderDetail(@RequestSingleParam(value = "companyId") String companyId) {
-        return this.boHaiOrderApiService.getOrderDetail(companyId);
+    public HttpResult<Object> audit(@RequestSingleParam(value = "companyId") String companyId) {
+        return this.boHaiOrderApiService.audit(companyId);
     }
 
     @PostMapping("/getPolicyPrint")
@@ -95,11 +65,4 @@ public class BoHaiOrderApiController {
         return this.boHaiOrderApiService.getPolicyPrint(policyPrintVo);
     }
 
-    @PostMapping("/auditStatusQuery")
-    @ApiOperation(value = "核保状态查询")
-    public HttpResult<Object> auditStatusQuery(@RequestSingleParam(value = "companyId") String companyId) {
-        return this.boHaiOrderApiService.auditStatusQuery(companyId);
-    }
-
-
 }

+ 24 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/CertType.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @version
+ * @description: 证件类型代码
+ * @author: wenks
+ * @date: 2024/3/7 14:18
+ **/
+@AllArgsConstructor
+@Getter
+public enum CertType {
+
+    CT_111("111", "居民身份证");
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 46 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/Coverages.java

@@ -0,0 +1,46 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @description: 渤海财险险种
+ * @author: wenks
+ * @date: 2024/3/7 16:19
+ **/
+@AllArgsConstructor
+@Getter
+public enum Coverages {
+
+    C_A("0301200", "机动车损失保险", "0401200", "新能源汽车损失保险"),
+    C_B("0301600", "机动车第三者责任保险", "0401600", "新能源汽车第三者责任保险"),
+    C_D3("0301701", "机动车车上人员责任保险(司机)", "0401701", "新能源汽车车上人员责任保险(司机)"),
+    C_D4("0301702", "机动车车上人员责任保险(乘客)", "0301702", "新能源汽车车上人员责任保险(乘客)"),
+    C_L("0301210", "附加车身划痕损失险", "0301210", "附加车身划痕损失险"),
+    C_BD("0301604", "附加法定节假日限额翻倍险", "0301604", "附加法定节假日限额翻倍险"),
+
+    C_SY_FJ_YBW1("0301002", "附加医保外医疗费用责任险(机动车第三者责任保险)", "0301002", "附加医保外医疗费用责任险(机动车第三者责任保险)"),
+    C_SY_FJ_YBW3("0301011", "附加医保外医疗费用责任险(机动车车上人员责任保险(司机))", "0301011", "附加医保外医疗费用责任险(机动车车上人员责任保险(司机))"),
+    C_SY_FJ_YBW2("0301012", "附加医保外医疗费用责任险(机动车车上人员责任保险(乘客))", "0301012", "附加医保外医疗费用责任险(机动车车上人员责任保险(乘客))"),
+
+    C_TY1("0301003", "道路救援服务特约条款", "0301003", "道路救援服务特约条款"),
+    C_TY2("0301004", "车辆安全检测特约条款", "0301004", "车辆安全检测特约条款"),
+    C_TY3("0301005", "代为驾驶服务特约条款", "0301005", "代为驾驶服务特约条款"),
+    C_TY4("0301006", "代为送检服务特约条款", "0301006", "代为送检服务特约条款"),
+
+    C_MJ1("0301007", "附加绝对免赔率特约条款(机动车损失保险)", "0301007", "附加绝对免赔率特约条款(机动车损失保险)"),
+    C_MJ2("0301008", "附加绝对免赔率特约条款(机动车第三者责任保险)", "0301008", "附加绝对免赔率特约条款(机动车第三者责任保险)"),
+    C_MJ3("0301009", "附加绝对免赔率特约条款(机动车车上人员责任保险(司机))", "0301009", "附加绝对免赔率特约条款(机动车车上人员责任保险(司机))"),
+    C_MJ4("0301010", "附加绝对免赔率特约条款(机动车车上人员责任保险(乘客))", "0301010", "附加绝对免赔率特约条款(机动车车上人员责任保险(乘客))");
+
+    private final String fuelOilCode;
+
+    private final String fuelOilDesc;
+
+    private final String newEnergyCode;
+
+    private final String newEnergyDesc;
+
+}

+ 27 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/CustomerType.java

@@ -0,0 +1,27 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @version
+ * @description: 客户类型代码
+ * @author: wenks
+ * @date: 2024/3/7 14:36
+ **/
+@Getter
+@AllArgsConstructor
+public enum CustomerType {
+
+    CT_1("1", "团体客户"),
+    CT_2("2","个人客户"),
+    CT_3("3","虚拟客户"),
+    CT_4("4","机关"),
+    CT_5("5","企业"),
+    CT_6("6","事业单位");
+
+    private final String code;
+
+    private final String desc;
+}

+ 23 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/FormatType.java

@@ -0,0 +1,23 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @description: 保单格式
+ * @author: wenks
+ * @date: 2024/3/7 14:15
+ **/
+@AllArgsConstructor
+@Getter
+public enum FormatType {
+
+    FT_0("0", "纸质保单"),
+    FT_1("1", "电子保单");
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 26 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/InvoiceType.java

@@ -0,0 +1,26 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @version
+ * @description: 渤海财险 发票类型
+ * @author: wenks
+ * @date: 2024/3/7 14:13
+ **/
+@AllArgsConstructor
+@Getter
+public enum InvoiceType {
+
+    IT_0("0", "纸质普票"),
+    IT_1("1", "电子普票"),
+    IT_2("2", "电子专票"),
+    IT_3("3", "纸质专票");
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 7 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/VehicleUsageDetail.java

@@ -4,6 +4,13 @@ package com.ydtech.modules.order.entity.api.bohai.constants;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 
+
+/**
+ * @version
+ * @description: 车辆用途
+ * @author: wenks
+ * @date: 2024/3/7 17:57
+ **/
 @Getter
 @AllArgsConstructor
 public enum VehicleUsageDetail {

+ 4 - 1
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/ImageUploadRequest.java

@@ -6,6 +6,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
+import java.io.Serializable;
 import java.util.List;
 
 
@@ -29,7 +30,9 @@ public class ImageUploadRequest extends BoHaiBaseRequest {
 
     @NoArgsConstructor
     @Data
-    public static class FileInfosDTO {
+    public static class FileInfosDTO implements Serializable {
+
+        private static final long serialVersionUID = -8033707257927745517L;
 
         @JsonProperty("documentClass")
         private String documentClass;

+ 32 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/NonAutomotiveProductsDetailsRequest.java

@@ -0,0 +1,32 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+
+/**
+ * @version
+ * @description: 渤海财险 车+X产品详情
+ * @author: wenks
+ * @date: 2024/3/8 9:44
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class NonAutomotiveProductsDetailsRequest extends BoHaiBaseRequest  {
+
+    private static final long serialVersionUID = 2175047725829413628L;
+
+    @JsonProperty("productCode")
+    private String productCode;
+
+    @JsonProperty("packageCode")
+    private String packageCode;
+
+    @JsonProperty("version")
+    private String version;
+
+}

+ 70 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/NonAutomotiveProductsRequest.java

@@ -0,0 +1,70 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+
+/**
+ * @description: 车+X产品
+ * @author: wenks
+ * @date: 2024/3/8 9:44
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class NonAutomotiveProductsRequest extends BoHaiBaseRequest {
+
+    private static final long serialVersionUID = 4630356671221242632L;
+
+    @JsonProperty("vehicleUsage")
+    private String vehicleUsage;
+
+    @JsonProperty("seatCount")
+    private String seatCount;
+
+    @JsonProperty("vehicleUsageDetail")
+    private String vehicleUsageDetail;
+
+    @JsonProperty("vehicleKind")
+    private String vehicleKind;
+
+    @JsonProperty("tonNumber")
+    private String tonNumber;
+
+    @JsonProperty("power")
+    private String power;
+
+    @JsonProperty("exhaustScale")
+    private String exhaustScale;
+
+    @JsonProperty("applicantDto")
+    private PremPersonnelDto applicantDto;
+
+    @JsonProperty("insuredDto")
+    private PremPersonnelDto insuredDto;
+
+    @NoArgsConstructor
+    @Data
+    public static class PremPersonnelDto implements Serializable {
+
+        private static final long serialVersionUID = 49261748717534895L;
+
+        @JsonProperty("type")
+        private String type;
+
+        @JsonProperty("name")
+        private String name;
+
+        @JsonProperty("identifyType")
+        private String identifyType;
+
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+    }
+
+}

+ 27 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/PaymentRequest.java

@@ -0,0 +1,27 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * @description: 渤海财险 支付
+ * @author: wenks
+ * @date: 2024/3/7 18:34
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class PaymentRequest extends BoHaiBaseRequest{
+
+    private static final long serialVersionUID = 7772208518421837950L;
+
+    @JsonProperty("payWay")
+    private String payWay;
+
+    @JsonProperty("busUniqueId")
+    private String busUniqueId;
+
+}

+ 166 - 14
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/QuotationRequest.java

@@ -1,87 +1,239 @@
 package com.ydtech.modules.order.entity.api.bohai.request;
 
 
+import cn.hutool.core.util.ArrayUtil;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.constants.enums.InsurKind;
+import com.ydtech.constants.enums.InsuranceRisk;
+import com.ydtech.modules.ins.model.vo.CarInfoVo;
+import com.ydtech.modules.ins.model.vo.KindInfoVo;
+import com.ydtech.modules.ins.model.vo.RiskInfoVo;
+import com.ydtech.modules.order.constants.InsuranceTypeCorrespondence;
+import com.ydtech.modules.order.entity.api.bohai.constants.Coverages;
+import com.ydtech.modules.order.entity.api.bohai.constants.RequestType;
+import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
+import com.ydtech.utils.StringUtils;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
+import java.io.Serializable;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @description: 渤海财险 报价接口
  * @author: wenks
  * @date: 2024/3/6 10:20
  **/
+@EqualsAndHashCode(callSuper = true)
 @NoArgsConstructor
 @Data
 public class QuotationRequest extends BoHaiBaseRequest {
 
     private static final long serialVersionUID = -7695992388798928886L;
 
-
     @JsonProperty("trafficPolicy")
     private TrafficPolicyDTO trafficPolicy;
+
     @JsonProperty("businessPolicy")
     private BusinessPolicyDTO businessPolicy;
+
     @JsonProperty("argueSolution")
     private String argueSolution;
+
     @JsonProperty("realNameCheck")
     private RealNameCheckDTO realNameCheck;
 
+    @JsonProperty("unAuto")
+    private List<UnAutoDTO> unAuto;
+
+    public QuotationRequest(BoHaiConfigureParameters parameters,
+                            List<RiskInfoVo> riskList,
+                            List<KindInfoVo> kindList,
+                            String currentValue,
+                            String orderNO,
+                            CarInfoVo carInfo) {
+        this.setBaseParam(parameters, RequestType.Z00006.getCode(), orderNO);
+        this.argueSolution = "1";
+        for (RiskInfoVo riskInfoVo : riskList) {
+            if (InsuranceRisk.TRAFFIC.getCode().equals(riskInfoVo.getRiskCode())) {
+                this.trafficPolicy = new TrafficPolicyDTO(riskInfoVo);
+            } else if (InsuranceRisk.BUSINESS.getCode().equals(riskInfoVo.getRiskCode())) {
+                this.businessPolicy = new BusinessPolicyDTO(riskInfoVo, kindList, currentValue, carInfo);
+            }
+        }
+    }
+
+
+    @NoArgsConstructor
+    @Data
+    public static class UnAutoDTO implements Serializable{
+
+        private static final long serialVersionUID = -5387591716781571838L;
+
+        @JsonProperty("productCode")
+        private String productCode;
+
+        @JsonProperty("packageCode")
+        private String packageCode;
+
+        @JsonProperty("copies")
+        private String copies;
+
+    }
+
     @NoArgsConstructor
     @Data
-    public static class TrafficPolicyDTO {
+    public static class TrafficPolicyDTO implements Serializable {
+
+        private static final long serialVersionUID = 681715828868987408L;
+
         @JsonProperty("startDate")
         private String startDate;
+
+        @JsonProperty("endDate")
+        private String endDate;
+
         @JsonProperty("vehicleTax")
         private VehicleTaxDTO vehicleTax;
 
-        @NoArgsConstructor
+        public TrafficPolicyDTO(RiskInfoVo riskInfoVo) {
+            this.startDate = riskInfoVo.getStartDate();
+            this.endDate = riskInfoVo.getEndDate();
+            this.vehicleTax = new VehicleTaxDTO();
+        }
+
         @Data
-        public static class VehicleTaxDTO {
+        public static class VehicleTaxDTO implements Serializable {
+
+            private static final long serialVersionUID = -3844092730010921781L;
+
             @JsonProperty("taxType")
             private String taxType;
+
+            @JsonProperty("taxpayerFlag")
+            private String taxpayerFlag;
+
+            public VehicleTaxDTO() {
+                this.taxType = "03";
+                this.taxpayerFlag = "1";
+            }
+
         }
     }
 
     @NoArgsConstructor
     @Data
-    public static class BusinessPolicyDTO {
+    public static class BusinessPolicyDTO implements Serializable {
+
+        private static final long serialVersionUID = -4469895302454868397L;
+
         @JsonProperty("coverages")
         private List<CoveragesDTO> coverages;
+
         @JsonProperty("startDate")
         private String startDate;
 
+        @JsonProperty("endDate")
+        private String endDate;
+
+        public BusinessPolicyDTO(RiskInfoVo riskInfoVo, List<KindInfoVo> kindList, String currentValue, CarInfoVo carInfo) {
+            this.startDate = riskInfoVo.getStartDate();
+            this.endDate = riskInfoVo.getEndDate();
+            this.coverages = CoveragesDTO.toCoveragesDTOList(kindList, currentValue, carInfo);
+        }
+
         @NoArgsConstructor
         @Data
-        public static class CoveragesDTO {
+        public static class CoveragesDTO implements Serializable {
+
+            private static final long serialVersionUID = -5350833561452911857L;
+
             @JsonProperty("coverageCode")
             private String coverageCode;
+
             @JsonProperty("coverageName")
             private String coverageName;
+            /**
+             * seat: 乘客数 (机动车车上人员责任保险-乘客)
+             * repairFactorRate:指定修理厂费率(指定专修厂险,
+             * 国产车:车损险基准纯风险保费的10%~30%之间,选择国产默认10%;
+             * 进口车:车损险基准纯风险保费的15%~60%之间,选择进口默认20%。)
+             * importFlag:是否国产 0:国产 1:进口';
+             * claimLimitPerDay:每日赔付限额 (修理期间赔付险)
+             * maxClaimDays:最大赔付天数(修理期间赔付险)
+             * damageCardeductibles:绝对免赔额(车辆损失险)
+             * damageCarDeductiblesNoClaimRate: 车损险绝对免赔率
+             * serviceTimes: 服务次数
+             * serviceGrade: 服务款别
+             */
             @JsonProperty("extendInfos")
-            private ExtendInfosDTO extendInfos;
+            private Map<String, String> extendInfos;
+
             @JsonProperty("sumInsurd")
-            private Integer sumInsurd;
+            private String sumInsurd;
 
-            @NoArgsConstructor
-            @Data
-            public static class ExtendInfosDTO {
-                @JsonProperty("damageCardeductibles")
-                private Integer damageCardeductibles;
+            public static List<CoveragesDTO> toCoveragesDTOList(List<KindInfoVo> kindList, String currentValue, CarInfoVo carInfo) {
+                return kindList.stream().map(x -> toCoveragesDTO(x, currentValue, carInfo)).collect(Collectors.toList());
             }
+
+            private static CoveragesDTO toCoveragesDTO(KindInfoVo kindInfoVo, String currentValue, CarInfoVo carInfo) {
+                String kindCode = kindInfoVo.getKindCode();
+                Coverages coverages = Coverages.valueOf("C_" +kindInfoVo.getKindCode());
+                CoveragesDTO coveragesDTO = new CoveragesDTO();
+                if (carInfo.isNewEnergy()) {
+                    coveragesDTO.setCoverageCode(coverages.getNewEnergyCode());
+                    coveragesDTO.setCoverageName(coverages.getNewEnergyDesc());
+                } else {
+                    coveragesDTO.setCoverageCode(coverages.getFuelOilCode());
+                    coveragesDTO.setCoverageName(coverages.getFuelOilDesc());
+                }
+                coveragesDTO.extendInfos = new HashMap<>();
+
+                if (InsurKind.A.getCode().equals(kindCode)) {
+                    coveragesDTO.setSumInsurd(currentValue);
+                }
+                // 乘客
+                else if (ArrayUtil.indexOf(InsuranceTypeCorrespondence.getPassenger(), kindCode) >= 0) {
+                    int quantity = StringUtils.toInt(carInfo.getSeatCount()) - 1;
+                    coveragesDTO.extendInfos.put("seat", String.valueOf(quantity));
+                    coveragesDTO.setSumInsurd(String.valueOf(kindInfoVo.getUnitAmount()));
+                }
+                // 绝对免赔
+                else if (ArrayUtil.indexOf(InsuranceTypeCorrespondence.getAbsoluteDeductible(), kindCode) >= 0) {
+                    coveragesDTO.extendInfos.put("", String.valueOf(kindInfoVo.getDeductibleRate()));
+                }
+                // 增值服务
+                else if (ArrayUtil.indexOf(InsuranceTypeCorrespondence.getSpecialContractClause(), kindCode) >= 0) {
+                    coveragesDTO.extendInfos.put("serviceTimes", String.valueOf(kindInfoVo.getServiceTimes()));
+                } else {
+                    coveragesDTO.setSumInsurd(String.valueOf(kindInfoVo.getAmount()));
+                }
+                return coveragesDTO;
+            }
+
+
         }
     }
 
     @NoArgsConstructor
     @Data
-    public static class RealNameCheckDTO {
+    public static class RealNameCheckDTO implements Serializable {
+
+        private static final long serialVersionUID = 7007478686453041903L;
+
         @JsonProperty("busSrePcmac")
         private String busSrePcmac;
+
         @JsonProperty("busSrePcip")
         private String busSrePcip;
+
         @JsonProperty("busSrePcname")
         private String busSrePcname;
+
         @JsonProperty("busSrePhone")
         private String busSrePhone;
     }

+ 17 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/RevocationUnderwritingRequest.java

@@ -0,0 +1,17 @@
+package com.ydtech.modules.order.entity.api.bohai.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class RevocationUnderwritingRequest extends BoHaiBaseRequest{
+    private static final long serialVersionUID = -7254577366453136126L;
+
+    @JsonProperty("busUniqueId")
+    private String busUniqueId;
+
+}

+ 32 - 4
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/UnderwritingRequest.java

@@ -1,12 +1,22 @@
 package com.ydtech.modules.order.entity.api.bohai.request;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.bohai.constants.RequestType;
+import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
+import java.io.Serializable;
 import java.util.List;
 
+
+/**
+ * @version
+ * @description: 渤海财险 核保请求
+ * @author: wenks
+ * @date: 2024/3/7 18:29
+ **/
 @EqualsAndHashCode(callSuper = true)
 @NoArgsConstructor
 @Data
@@ -19,17 +29,28 @@ public class UnderwritingRequest extends BoHaiBaseRequest {
     @JsonProperty("trafficPolicy")
     private TrafficPolicyDTO trafficPolicy;
 
+    public UnderwritingRequest(BoHaiConfigureParameters parameters, String orderNo) {
+        this.setBaseParam(parameters, RequestType.Z00007.getCode(), orderNo);
+    }
+
     @NoArgsConstructor
     @Data
-    public static class BusinessPolicyDTO {
+    public static class BusinessPolicyDTO implements Serializable {
+
+        private static final long serialVersionUID = -5347382618116081294L;
+
         @JsonProperty("specialTermItems")
         private List<SpecialTermItemsDTO> specialTermItems;
 
         @NoArgsConstructor
         @Data
-        public static class SpecialTermItemsDTO {
+        public static class SpecialTermItemsDTO implements Serializable {
+
+            private static final long serialVersionUID = 7841782399003609362L;
+
             @JsonProperty("specialTermCode")
             private String specialTermCode;
+
             @JsonProperty("specialTermParams")
             private String specialTermParams;
         }
@@ -37,15 +58,22 @@ public class UnderwritingRequest extends BoHaiBaseRequest {
 
     @NoArgsConstructor
     @Data
-    public static class TrafficPolicyDTO {
+    public static class TrafficPolicyDTO implements Serializable{
+
+        private static final long serialVersionUID = 7534600381669821602L;
+
         @JsonProperty("specialTermItems")
         private List<SpecialTermItemsDTO> specialTermItems;
 
         @NoArgsConstructor
         @Data
-        public static class SpecialTermItemsDTO {
+        public static class SpecialTermItemsDTO implements Serializable{
+
+            private static final long serialVersionUID = -4496753996600648785L;
+
             @JsonProperty("specialTermCode")
             private String specialTermCode;
+
             @JsonProperty("specialTermParams")
             private String specialTermParams;
         }

+ 210 - 27
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/VehicleConfirmationReqeust.java

@@ -1,6 +1,7 @@
 package com.ydtech.modules.order.entity.api.bohai.request;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.admin.model.vo.PersonAreaVo;
 import com.ydtech.modules.ins.model.vo.CarInfoVo;
 import com.ydtech.modules.ins.model.vo.CustomerInfoVo;
 import com.ydtech.modules.order.entity.api.bohai.constants.*;
@@ -40,22 +41,23 @@ public class VehicleConfirmationReqeust extends BoHaiBaseRequest {
     private InsurederDTO insureder;
 
 
-   public VehicleConfirmationReqeust(BoHaiConfigureParameters parameters, BaseQuoteInfoVo quoteInfoVo,
-                                     VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO vehicleModelsDTO,
-                                     String orderNo) {
+    public VehicleConfirmationReqeust(BoHaiConfigureParameters parameters, BaseQuoteInfoVo quoteInfoVo,
+                                      VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO vehicleModelsDTO,
+                                      String orderNo, PersonAreaVo ownerInfoArea, PersonAreaVo insuredPersonArea,
+                                      PersonAreaVo policyHolderArea) {
         this.setBaseParam(parameters, RequestType.Z00005.getCode(), orderNo);
         // 车辆信息
         CarInfoVo carInfo = quoteInfoVo.getCarInfo();
         this.vehicle = new VehicleDTO(carInfo, vehicleModelsDTO);
         // 车主
         CustomerInfoVo ownerInfo = quoteInfoVo.getOwnerInfo();
-        this.carOwner = new CarOwnerDTO(ownerInfo);
+        this.carOwner = new CarOwnerDTO(ownerInfo, ownerInfoArea);
         // 投保人
         CustomerInfoVo policyHolderInfo = quoteInfoVo.getPolicyHolderInfo();
-        this.holder = new HolderDTO(policyHolderInfo);
+        this.holder = new HolderDTO(policyHolderInfo, policyHolderArea);
         // 被保人
         CustomerInfoVo insuredPersonInfo = quoteInfoVo.getInsuredPersonInfo();
-        this.insureder = new InsurederDTO(insuredPersonInfo);
+        this.insureder = new InsurederDTO(insuredPersonInfo, insuredPersonArea);
 
     }
 
@@ -183,9 +185,16 @@ public class VehicleConfirmationReqeust extends BoHaiBaseRequest {
         @JsonProperty("transferDate")
         private String transferDate;
 
+        @JsonProperty("vehicleTypeOfDrivingPermit")
+        private String vehicleTypeOfDrivingPermit;
+
+        @JsonProperty("secondHandVehicleFlag")
+        private String secondHandVehicleFlag;
+
+
         public VehicleDTO(CarInfoVo carInfo, VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO vehicleModelsDTO) {
             this.carVin = carInfo.getVinNo();
-            this.vehicleModelCode = vehicleModelsDTO.getMoldCharacterCode();
+            this.vehicleModelCode = vehicleModelsDTO.getVehicleModelCode();
             this.engineNo = carInfo.getEngineNo();
             this.plateNo = carInfo.getLicenseNo();
             this.registerDate = carInfo.getRegisterDate();
@@ -198,16 +207,20 @@ public class VehicleConfirmationReqeust extends BoHaiBaseRequest {
             this.fuelType = carInfo.getEnergyType();
             this.emptyWeight = carInfo.getCompleteKerbMass();
             this.exhaustMeasure = vehicleModelsDTO.getExhaustMeasure();
-            VehicleKind vehicleKindEnum = VehicleKind.valueOf(carInfo.getCimodelclass());
+            VehicleKind vehicleKindEnum = VehicleKind.valueOf("VK_" + carInfo.getCimodelclass());
             this.vehicleKind = vehicleKindEnum.getCode();
             this.vehicleAffNature = VehicleAffNature.VAN_1.getCode();
-            VehicleUsage vehicleUsageEnum = VehicleUsage.valueOf(carInfo.getCarnature());
+            // 车辆使用性质
+            VehicleUsage vehicleUsageEnum = VehicleUsage.valueOf("VU_" + carInfo.getCarnature());
             this.vehicleUsage = vehicleUsageEnum.getCode();
-            VehicleUsageDetail vehicleUsageDetailEnum = VehicleUsageDetail.valueOf(carInfo.getVehicleUse());
+            // 车辆用途
+            VehicleUsageDetail vehicleUsageDetailEnum = VehicleUsageDetail.valueOf("VUD_" + carInfo.getVehicleUse());
             this.vehicleUsageDetail = vehicleUsageDetailEnum.getCode();
             this.isTransfer = carInfo.isTransferFlag() ? "1" : "0";
             this.transferDate = carInfo.getTransferDate();
 
+            this.vehicleTypeOfDrivingPermit = carInfo.getCartype();
+            this.secondHandVehicleFlag = "0";
         }
     }
 
@@ -232,8 +245,73 @@ public class VehicleConfirmationReqeust extends BoHaiBaseRequest {
         @JsonProperty("phoneNumber")
         private String phoneNumber;
 
-        public CarOwnerDTO(CustomerInfoVo ownerInfo) {
+        /**
+         * 客户类型
+         */
+        @JsonProperty("customerType")
+        private String customerType;
+        /**
+         *
+         */
+        @JsonProperty("certiType")
+        private String certiType;
 
+        /**
+         * 邮箱
+         */
+        @JsonProperty("email")
+        private String email;
+        /**
+         * 省份代码
+         */
+        @JsonProperty("provCode")
+        private String provCode;
+
+        /**
+         * 省份名称
+         */
+        @JsonProperty("provName")
+        private String provName;
+        /**
+         * 城市代码
+         */
+        @JsonProperty("cityCode")
+        private String cityCode;
+        /**
+         * 城市名称
+         */
+        @JsonProperty("cityName")
+        private String cityName;
+        /**
+         * 区县代码
+         */
+        @JsonProperty("distCode")
+        private String distCode;
+        /**
+         * 区县名称
+         */
+        @JsonProperty("distName")
+        private String distName;
+
+        @JsonProperty("residentialAddress")
+        private String residentialAddress;
+
+        public CarOwnerDTO(CustomerInfoVo ownerInfo, PersonAreaVo ownerInfoArea) {
+            this.certType = CertType.CT_111.getCode();
+            this.ownerName = ownerInfo.getName();
+            this.certNo = ownerInfo.getIdentifyNumber();
+            this.address = ownerInfo.getAddr();
+            this.phoneNumber = ownerInfo.getMobile();
+            this.customerType = CustomerType.CT_2.getCode();
+            this.email = ownerInfo.getEmail();
+            this.certiType = ownerInfo.getIdentifyValidEndDate().contains("9999") ? "1" : "0";
+            this.residentialAddress = ownerInfo.getAddr();
+            this.provCode = ownerInfoArea.getProvinceCode();
+            this.provName = ownerInfoArea.getProvinceName();
+            this.cityCode = ownerInfoArea.getCityCode();
+            this.cityName = ownerInfoArea.getCityName();
+            this.distCode = ownerInfoArea.getCountyCode();
+            this.distName = ownerInfoArea.getCountyName();
         }
     }
 
@@ -288,25 +366,71 @@ public class VehicleConfirmationReqeust extends BoHaiBaseRequest {
         @JsonProperty("elecApplicationFlag")
         private String elecApplicationFlag;
 
+        @JsonProperty("customerType")
+        private String customerType;
+
+        /**
+         * 省份代码
+         */
+        @JsonProperty("provCode")
+        private String provCode;
+
+        /**
+         * 省份名称
+         */
+        @JsonProperty("provName")
+        private String provName;
+        /**
+         * 城市代码
+         */
+        @JsonProperty("cityCode")
+        private String cityCode;
+        /**
+         * 城市名称
+         */
+        @JsonProperty("cityName")
+        private String cityName;
+        /**
+         * 区县代码
+         */
+        @JsonProperty("distCode")
+        private String distCode;
+        /**
+         * 区县名称
+         */
+        @JsonProperty("distName")
+        private String distName;
+
+        @JsonProperty("residentialAddress")
+        private  String residentialAddress;
 
 
-        public HolderDTO(CustomerInfoVo policyHolderInfo) {
-            this.certType = certType;
+        public HolderDTO(CustomerInfoVo policyHolderInfo, PersonAreaVo policyHolderArea) {
+            // 通用参数
+            this.certType = CertType.CT_111.getCode();
             this.holderName = policyHolderInfo.getName();
+            this.certNo = policyHolderInfo.getIdentifyNumber();
+            this.address = policyHolderInfo.getAddr();
+            this.phoneNumber = policyHolderInfo.getMobile();
+            this.customerType = CustomerType.CT_2.getCode();
+            this.email = policyHolderInfo.getEmail();
+            this.certiType = policyHolderInfo.getIdentifyValidEndDate().contains("9999") ? "1" : "0";
+
+            // 个别参数
+            this.invoiceType = InvoiceType.IT_1.getCode();
+            this.bizFormatType = FormatType.FT_1.getCode();
+            this.forceFormatType = FormatType.FT_1.getCode();
+
+            // 省市县
+            this.provCode = policyHolderArea.getProvinceCode();
+            this.provName = policyHolderArea.getProvinceName();
+            this.cityCode = policyHolderArea.getCityCode();
+            this.cityName = policyHolderArea.getCityName();
+            this.distCode = policyHolderArea.getCountyCode();
+            this.distName = policyHolderArea.getCountyName();
+
+            this.residentialAddress = policyHolderInfo.getAddr();
 
-            this.certNo = certNo;
-            this.address = address;
-            this.phoneNumber = phoneNumber;
-            this.nation = nation;
-            this.certiStartDate = certiStartDate;
-            this.certiEndDate = certiEndDate;
-            this.certiType = certiType;
-            this.issuer = issuer;
-            this.email = email;
-            this.invoiceType = "";
-            this.bizFormatType = bizFormatType;
-            this.forceFormatType = forceFormatType;
-            this.elecApplicationFlag = elecApplicationFlag;
         }
     }
 
@@ -343,9 +467,68 @@ public class VehicleConfirmationReqeust extends BoHaiBaseRequest {
         @JsonProperty("certiType")
         private String certiType;
 
-        public InsurederDTO(CustomerInfoVo insuredPersonInfo) {
+        @JsonProperty("customerType")
+        private String customerType;
 
+        @JsonProperty("email")
+        private String email;
+
+        /**
+         * 省份代码
+         */
+        @JsonProperty("provCode")
+        private String provCode;
+
+        /**
+         * 省份名称
+         */
+        @JsonProperty("provName")
+        private String provName;
+        /**
+         * 城市代码
+         */
+        @JsonProperty("cityCode")
+        private String cityCode;
+        /**
+         * 城市名称
+         */
+        @JsonProperty("cityName")
+        private String cityName;
+        /**
+         * 区县代码
+         */
+        @JsonProperty("distCode")
+        private String distCode;
+        /**
+         * 区县名称
+         */
+        @JsonProperty("distName")
+        private String distName;
+
+        @JsonProperty("residentialAddress")
+        private String residentialAddress;
+
+
+        public InsurederDTO(CustomerInfoVo insuredPersonInfo, PersonAreaVo insuredPersonArea) {
+            // 通用参数
+            this.certType = CertType.CT_111.getCode();
+            this.insuredName = insuredPersonInfo.getName();
+            this.certNo = insuredPersonInfo.getIdentifyNumber();
+            this.address = insuredPersonInfo.getAddr();
+            this.phoneNumber = insuredPersonInfo.getMobile();
+            this.customerType = CustomerType.CT_2.getCode();
+            this.email = insuredPersonInfo.getEmail();
+            this.certiType = insuredPersonInfo.getIdentifyValidEndDate().contains("9999") ? "1" : "0";
+            this.residentialAddress = insuredPersonInfo.getAddr();
+            // 省市县
+            this.provCode = insuredPersonArea.getProvinceCode();
+            this.provName = insuredPersonArea.getProvinceName();
+            this.cityCode = insuredPersonArea.getCityCode();
+            this.cityName = insuredPersonArea.getCityName();
+            this.distCode = insuredPersonArea.getCountyCode();
+            this.distName = insuredPersonArea.getCountyName();
 
         }
+
     }
 }

+ 54 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/NonAutomotiveProductsDetailsResponse.java

@@ -0,0 +1,54 @@
+package com.ydtech.modules.order.entity.api.bohai.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+
+/**
+ * @version
+ * @description: 渤海财险 车+X产品详情
+ * @author: wenks
+ * @date: 2024/3/8 9:43
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class NonAutomotiveProductsDetailsResponse extends BoHaiBaseResponse{
+
+    private static final long serialVersionUID = -6556554018987490384L;
+
+    @JsonProperty("data")
+    private DataDTO data;
+
+    @NoArgsConstructor
+    @Data
+    public static class DataDTO implements Serializable {
+
+        private static final long serialVersionUID = 9194021766088374146L;
+
+        @JsonProperty("coverages")
+        private List<CoveragesDTO> coverages;
+
+        @NoArgsConstructor
+        @Data
+        public static class CoveragesDTO implements Serializable{
+
+            private static final long serialVersionUID = 2067236539629811833L;
+
+            @JsonProperty("coverageName")
+            private String coverageName;
+
+            @JsonProperty("insuredAmount")
+            private String insuredAmount;
+
+        }
+
+    }
+
+}

+ 72 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/NonAutomotiveProductsResponse.java

@@ -0,0 +1,72 @@
+package com.ydtech.modules.order.entity.api.bohai.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+
+/**
+ * @version
+ * @description: 车+X产品
+ * @author: wenks
+ * @date: 2024/3/8 9:44
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class NonAutomotiveProductsResponse  extends BoHaiBaseResponse {
+
+    private static final long serialVersionUID = 844949613598572846L;
+
+    @JsonProperty("data")
+    private DataDTO data;
+
+    @NoArgsConstructor
+    @Data
+    public static class DataDTO implements Serializable {
+
+        private static final long serialVersionUID = -1433411188857721950L;
+
+        @JsonProperty("products")
+        private List<ProductsDTO> products;
+
+        @NoArgsConstructor
+        @Data
+        public static class ProductsDTO implements Serializable {
+
+            private static final long serialVersionUID = -4084170925450969659L;
+
+            @JsonProperty("productType")
+            private String productType;
+
+            @JsonProperty("productCode")
+            private String productCode;
+
+            @JsonProperty("premium")
+            private String premium;
+
+            @JsonProperty("minInsuredAge")
+            private String minInsuredAge;
+
+            @JsonProperty("maxInsuredAge")
+            private String maxInsuredAge;
+
+            @JsonProperty("packageCode")
+            private String packageCode;
+
+            @JsonProperty("packageName")
+            private String packageName;
+
+            @JsonProperty("version")
+            private String version;
+
+            @JsonProperty("maxCopies")
+            private String maxCopies;
+        }
+    }
+}

+ 48 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/PaymentResponse.java

@@ -0,0 +1,48 @@
+package com.ydtech.modules.order.entity.api.bohai.response;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @description: 支付响应
+ * @author: wenks
+ * @date: 2024/3/7 18:34
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class PaymentResponse extends BoHaiBaseResponse {
+
+    private static final long serialVersionUID = -8173818241781027842L;
+
+
+    @JsonProperty("data")
+    private DataDTO data;
+
+    @NoArgsConstructor
+    @Data
+    public static class DataDTO implements Serializable {
+
+        private static final long serialVersionUID = 3700311849033773101L;
+
+        @JsonProperty("payNo")
+        private String payNo;
+
+        @JsonProperty("checkCode")
+        private String checkCode;
+
+        @JsonProperty("amount")
+        private String amount;
+
+        @JsonProperty("payUrl")
+        private String payUrl;
+
+        @JsonProperty("paymentEndDate")
+        private String paymentEndDate;
+    }
+}

+ 77 - 10
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/QuotationResponse.java

@@ -5,6 +5,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
+import java.io.Serializable;
 import java.util.List;
 
 @EqualsAndHashCode(callSuper = true)
@@ -20,46 +21,69 @@ public class QuotationResponse extends BoHaiBaseResponse {
 
     @NoArgsConstructor
     @Data
-    public static class DataDTO {
+    public static class DataDTO implements Serializable {
+
+        private static final long serialVersionUID = -2304181484676681954L;
+
         @JsonProperty("premium")
         private String premium;
+
         @JsonProperty("vehicle")
         private VehicleDTO vehicle;
+
         @JsonProperty("carOwner")
         private CarOwnerDTO carOwner;
+
         @JsonProperty("holder")
         private HolderDTO holder;
+
         @JsonProperty("insureder")
         private InsurederDTO insureder;
+
         @JsonProperty("businessPolicy")
         private BusinessPolicyDTO businessPolicy;
+
         @JsonProperty("trafficPolicy")
         private TrafficPolicyDTO trafficPolicy;
 
         @NoArgsConstructor
         @Data
-        public static class VehicleDTO {
+        public static class VehicleDTO implements Serializable  {
+
+            private static final long serialVersionUID = -1516467168214096674L;
+
             @JsonProperty("currentValue")
             private String currentValue;
+
             @JsonProperty("carVin")
             private String carVin;
+
             @JsonProperty("vehicleModelCode")
             private String vehicleModelCode;
+
             @JsonProperty("engineNo")
             private String engineNo;
+
             @JsonProperty("plateNo")
             private String plateNo;
+
             @JsonProperty("plateColor")
             private String plateColor;
+
             @JsonProperty("registerDate")
             private String registerDate;
+
             @JsonProperty("purchasePrice")
             private String purchasePrice;
+
         }
 
         @NoArgsConstructor
         @Data
-        public static class CarOwnerDTO {
+        public static class CarOwnerDTO implements Serializable {
+
+            private static final long serialVersionUID = -2294396875606612211L;
+
             @JsonProperty("ownerName")
             private String ownerName;
             @JsonProperty("certType")
@@ -76,7 +100,10 @@ public class QuotationResponse extends BoHaiBaseResponse {
 
         @NoArgsConstructor
         @Data
-        public static class HolderDTO {
+        public static class HolderDTO implements Serializable {
+
+            private static final long serialVersionUID = -862914591722517034L;
+
             @JsonProperty("holderName")
             private String holderName;
             @JsonProperty("certType")
@@ -99,7 +126,10 @@ public class QuotationResponse extends BoHaiBaseResponse {
 
         @NoArgsConstructor
         @Data
-        public static class InsurederDTO {
+        public static class InsurederDTO implements Serializable  {
+
+            private static final long serialVersionUID = 2362012197504237392L;
+
             @JsonProperty("insuredName")
             private String insuredName;
             @JsonProperty("certType")
@@ -116,7 +146,8 @@ public class QuotationResponse extends BoHaiBaseResponse {
 
         @NoArgsConstructor
         @Data
-        public static class BusinessPolicyDTO {
+        public static class BusinessPolicyDTO implements Serializable  {
+            private static final long serialVersionUID = 3738634684794032589L;
             @JsonProperty("coverages")
             private List<CoveragesDTO> coverages;
             @JsonProperty("specialTermItems")
@@ -136,7 +167,10 @@ public class QuotationResponse extends BoHaiBaseResponse {
 
             @NoArgsConstructor
             @Data
-            public static class CoveragesDTO {
+            public static class CoveragesDTO implements Serializable  {
+
+                private static final long serialVersionUID = -1632275770513414351L;
+
                 @JsonProperty("coverageCode")
                 private String coverageCode;
                 @JsonProperty("coverageName")
@@ -153,9 +187,13 @@ public class QuotationResponse extends BoHaiBaseResponse {
 
             @NoArgsConstructor
             @Data
-            public static class SpecialTermItemsDTO {
+            public static class SpecialTermItemsDTO implements Serializable  {
+
+                private static final long serialVersionUID = -8348339774598055057L;
+
                 @JsonProperty("specialTermCode")
                 private String specialTermCode;
+
                 @JsonProperty("specialTermText")
                 private String specialTermText;
             }
@@ -163,29 +201,58 @@ public class QuotationResponse extends BoHaiBaseResponse {
 
         @NoArgsConstructor
         @Data
-        public static class TrafficPolicyDTO {
+        public static class TrafficPolicyDTO implements Serializable {
+
+            private static final long serialVersionUID = 1428110944460353402L;
+
             @JsonProperty("applicationNo")
             private String applicationNo;
+
             @JsonProperty("policyNo")
             private String policyNo;
+
             @JsonProperty("sumInsurd")
             private String sumInsurd;
+
             @JsonProperty("premium")
             private String premium;
+
             @JsonProperty("vehicleTax")
             private VehicleTaxDTO vehicleTax;
+
             @JsonProperty("startDate")
             private String startDate;
+
             @JsonProperty("endDate")
             private String endDate;
 
             @NoArgsConstructor
             @Data
-            public static class VehicleTaxDTO {
+            public static class VehicleTaxDTO implements Serializable {
+
+                private static final long serialVersionUID = -1479483711084115520L;
+
                 @JsonProperty("totalAmount")
                 private String totalAmount;
+
                 @JsonProperty("taxType")
                 private String taxType;
+
+                @JsonProperty("overdueTaxAmount")
+                private String overdueTaxAmount;
+
+                @JsonProperty("lateFee")
+                private String lateFee;
+
+                @JsonProperty("overdueTaxStartDate")
+                private String overdueTaxStartDate;
+
+                @JsonProperty("overdueTaxEndDate")
+                private String overdueTaxEndDate;
+
+                @JsonProperty("declareStatus")
+                private String declareStatus;
+
             }
         }
     }

+ 15 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/RevocationUnderwritingResponse.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.order.entity.api.bohai.response;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class RevocationUnderwritingResponse extends BoHaiBaseResponse {
+
+    private static final long serialVersionUID = 253685820880366525L;
+
+
+}

+ 36 - 5
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/UnderwritingResponse.java

@@ -6,8 +6,15 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
+import java.io.Serializable;
 import java.util.List;
 
+
+/**
+ * @description: 渤海财险 核保响应
+ * @author: wenks
+ * @date: 2024/3/7 18:29
+ **/
 @NoArgsConstructor
 @EqualsAndHashCode(callSuper = true)
 @Data
@@ -20,33 +27,49 @@ public class UnderwritingResponse extends BoHaiBaseResponse {
 
     @NoArgsConstructor
     @Data
-    public static class DataDTO {
+    public static class DataDTO implements Serializable {
+
+        private static final long serialVersionUID = -6017042824315436288L;
+
         @JsonProperty("trafficResultCode")
         private String trafficResultCode;
+
         @JsonProperty("trafficResultMsg")
         private String trafficResultMsg;
+
         @JsonProperty("businessResultCode")
         private String businessResultCode;
+
         @JsonProperty("businessResultMsg")
         private String businessResultMsg;
+
         @JsonProperty("total")
         private String total;
+
         @JsonProperty("businessPolicy")
         private BusinessPolicyDTO businessPolicy;
+
         @JsonProperty("trafficPolicy")
         private TrafficPolicyDTO trafficPolicy;
 
         @NoArgsConstructor
         @Data
-        public static class BusinessPolicyDTO {
+        public static class BusinessPolicyDTO implements Serializable {
+
+            private static final long serialVersionUID = -7621567011799751040L;
+
             @JsonProperty("applicationNo")
             private String applicationNo;
+
             @JsonProperty("specialTermItems")
             private List<SpecialTermItemsDTO> specialTermItems;
 
             @NoArgsConstructor
             @Data
-            public static class SpecialTermItemsDTO {
+            public static class SpecialTermItemsDTO implements Serializable{
+
+                private static final long serialVersionUID = 3193463755642823937L;
+
                 @JsonProperty("specialTermCode")
                 private String specialTermCode;
                 @JsonProperty("specialTermText")
@@ -56,17 +79,25 @@ public class UnderwritingResponse extends BoHaiBaseResponse {
 
         @NoArgsConstructor
         @Data
-        public static class TrafficPolicyDTO {
+        public static class TrafficPolicyDTO implements Serializable {
+
+            private static final long serialVersionUID = -6435567822855664252L;
+
             @JsonProperty("applicationNo")
             private String applicationNo;
+
             @JsonProperty("specialTermItems")
             private List<SpecialTermItemsDTO> specialTermItems;
 
             @NoArgsConstructor
             @Data
-            public static class SpecialTermItemsDTO {
+            public static class SpecialTermItemsDTO  implements Serializable {
+
+                private static final long serialVersionUID = 8337098391141236122L;
+
                 @JsonProperty("specialTermCode")
                 private String specialTermCode;
+
                 @JsonProperty("specialTermText")
                 private String specialTermText;
             }

+ 4 - 0
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/VehicleTypeQueryResponse.java

@@ -78,6 +78,10 @@ public class VehicleTypeQueryResponse extends BoHaiBaseResponse {
 
             @JsonProperty("exhaustMeasure")
             private String exhaustMeasure;
+
+            @JsonProperty("vehicleModelCode")
+            private String vehicleModelCode;
+
             @Override
             public String getPurchasePrice() {
                 return purchasePrice;

+ 5 - 51
src/main/java/com/ydtech/modules/order/service/BoHaiOrderApiService.java

@@ -2,16 +2,10 @@ package com.ydtech.modules.order.service;
 
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.ins.model.vo.QuoteRespVo;
-import com.ydtech.modules.order.entity.api.zijin.request.PaymentCallbacksRequest;
-import com.ydtech.modules.order.entity.api.zijin.request.SubmitVerifyRequest;
-import com.ydtech.modules.order.entity.api.zijin.response.QueryClauseDataResponse;
-import com.ydtech.modules.order.entity.api.zijin.response.QueryVehicProductsResponse;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
 import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
-import com.ydtech.modules.order.entity.vo.SpecialAuditVo;
 import com.ydtech.modules.order.entity.vo.zj.ZjQuoteAccidentVo;
-import com.ydtech.modules.order.entity.vo.zj.ZjVehicleProductsQueryVo;
 
 import java.util.List;
 
@@ -27,45 +21,18 @@ public interface BoHaiOrderApiService {
     /**
      * 提交影像信息
      *
-     * @param subOrderNo 子订单
+     * @param subOrderNo 子订单
      * @return HttpResult
      */
-    HttpResult<Object> submitImage(String subOrderNo);
-
-    /**
-     * 特约查询
-     *
-     * @param companyId 子订单号
-     */
-    HttpResult<List<QueryClauseDataResponse.ClauseInfoDtoListDTO>> queryClauseData(String companyId);
+    HttpResult<Object> submitImage(String subOrderNo) throws Exception;
 
     /**
      * 提交核保
      *
-     * @param specialAudit 核保特约
-     */
-    HttpResult<Object> audit(SpecialAuditVo<SubmitVerifyRequest.EngageListDTO> specialAudit);
-
-    /**
-     * 获取驾意险
-     *
-     * @return 查询“车+意”中意外险方案信息
-     */
-    HttpResult<List<QueryVehicProductsResponse.ProductDtoListDTO>> queryVehicleProducts(ZjVehicleProductsQueryVo zjVehicleProductsVo);
-
-    /**
-     * 订单状态查询
-     *
-     * @param companyId 子订单号
-     */
-    HttpResult<Object> getOrderDetail(String companyId);
-
-    /**
-     * 未缴费保单撤单
-     *
-     * @param companyId 子订单号
+     * @param subOrderNo 子订单号
+     * @return HttpResult
      */
-    HttpResult<Object> cancel(String companyId);
+    HttpResult<Object> audit(String subOrderNo);
 
     /**
      * 获取电子保单
@@ -75,18 +42,5 @@ public interface BoHaiOrderApiService {
      */
     HttpResult<String> getPolicyPrint(PolicyPrintVo policyPrintVo);
 
-    /**
-     * 支付回调
-     *
-     * @param paymentCallbacksRequest 支付回调实体
-     */
-    HttpResult<Object> paymentCallbacks(PaymentCallbacksRequest paymentCallbacksRequest);
-
-
-    /**
-     * 核保状态查询
-     * @param companyId 子订单号
-     */
-    HttpResult<Object> auditStatusQuery(String companyId);
 
 }

+ 143 - 43
src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java

@@ -1,20 +1,20 @@
 package com.ydtech.modules.order.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.core.page.HttpResult;
-import com.ydtech.modules.ins.model.vo.CarInfoVo;
-import com.ydtech.modules.ins.model.vo.QuoteRespVo;
+import com.ydtech.modules.admin.model.vo.PersonAreaVo;
+import com.ydtech.modules.admin.service.SysAreaService;
+import com.ydtech.modules.ins.model.vo.*;
 import com.ydtech.modules.order.components.ConfigureParametersComponents;
 import com.ydtech.modules.order.components.bohai.BoHaiRequestApiComponent;
-import com.ydtech.modules.order.entity.api.bohai.request.GenerateOrderNoRequest;
-import com.ydtech.modules.order.entity.api.bohai.request.VehicleConfirmationReqeust;
-import com.ydtech.modules.order.entity.api.bohai.request.VehicleTypeQueryRequest;
-import com.ydtech.modules.order.entity.api.bohai.response.GenerateOrderNoResponse;
-import com.ydtech.modules.order.entity.api.bohai.response.VehicleConfirmationResponse;
-import com.ydtech.modules.order.entity.api.bohai.response.VehicleTypeQueryResponse;
-import com.ydtech.modules.order.entity.api.zijin.request.PaymentCallbacksRequest;
+import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.TaxArrears;
+import com.ydtech.modules.order.entity.api.bohai.constants.Coverages;
+import com.ydtech.modules.order.entity.api.bohai.request.*;
+import com.ydtech.modules.order.entity.api.bohai.response.*;
 import com.ydtech.modules.order.entity.api.zijin.request.SubmitVerifyRequest;
-import com.ydtech.modules.order.entity.api.zijin.response.QueryClauseDataResponse;
-import com.ydtech.modules.order.entity.api.zijin.response.QueryVehicProductsResponse;
 import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
 import com.ydtech.modules.order.entity.filter.CarModelsFilterUtils;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
@@ -22,14 +22,19 @@ import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
 import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
 import com.ydtech.modules.order.entity.vo.SpecialAuditVo;
 import com.ydtech.modules.order.entity.vo.zj.ZjQuoteAccidentVo;
-import com.ydtech.modules.order.entity.vo.zj.ZjVehicleProductsQueryVo;
 import com.ydtech.modules.order.service.BoHaiOrderApiService;
+import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
+import com.ydtech.utils.CalculateUtils;
+import com.ydtech.utils.idgen.IdGenerate;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
+import java.util.stream.Collectors;
 
 
 @Service
@@ -42,6 +47,10 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
 
     private final BoHaiRequestApiComponent boHaiRequestApiComponent;
 
+    private final SysAreaService sysAreaService;
+
+    private final InsAreaCompanyService insAreaCompanyService;
+
     @Override
     public HttpResult<QuoteRespVo> quote(BaseQuoteInfoVo quoteInfoVo, BaseQuoteVo<List<ZjQuoteAccidentVo>> quoteVo) {
         // 协议id获取配置实体
@@ -67,51 +76,62 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
                             quoteInfoVo.getCarInfo());
 
             // 3 车辆确认接口
+            // 车主信息
+            CustomerInfoVo ownerInfo = quoteInfoVo.getOwnerInfo();
+            PersonAreaVo ownerInfoArea = sysAreaService.queryByAddressBoHai(ownerInfo.getAddr(), ownerInfo.getIdentifyNumber());
+            // 被保人信息
+            CustomerInfoVo insuredPersonInfo = quoteInfoVo.getInsuredPersonInfo();
+            PersonAreaVo insuredPersonArea = sysAreaService.queryByAddressBoHai(insuredPersonInfo.getAddr(), ownerInfo.getIdentifyNumber());
+            // 投保人信息
+            CustomerInfoVo policyHolderInfo = quoteInfoVo.getPolicyHolderInfo();
+            PersonAreaVo policyHolderArea = sysAreaService.queryByAddressBoHai(policyHolderInfo.getAddr(),
+                    policyHolderInfo.getIdentifyNumber());
             VehicleConfirmationReqeust vehicleConfirmationReqeust = new VehicleConfirmationReqeust(parameters, quoteInfoVo,
-                    vehicleModelsDTO, orderNo);
+                    vehicleModelsDTO, orderNo, ownerInfoArea, insuredPersonArea, policyHolderArea);
             VehicleConfirmationResponse vehicleConfirmationResponse =
                     boHaiRequestApiComponent.vehicleConfirmation(vehicleConfirmationReqeust);
+            // 车辆实际价值
+            String currentValue = vehicleConfirmationResponse.getData().getVehicleModels().get(0).getCurrentValue();
 
             // 4. 报价接口
+            QuotationRequest quotationRequest = new QuotationRequest(parameters, quoteInfoVo.getRiskList(), quoteInfoVo.getKindList(),
+                    currentValue, orderNo, carInfo);
+            QuotationResponse response = boHaiRequestApiComponent.quotation(quotationRequest);
+            QuoteRespVo quoteRespVo = getQuoteRespVo(response, quoteInfoVo);
+            return responseOrder(response, quoteRespVo, ptlAgreementAttribution, orderNo);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
 
+    @Override
+    public HttpResult<Object> submitImage(String subOrderNo) throws Exception {
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(subOrderNo);
 
+        // 账号信息
+        PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
+        // 通过 协议id获取配置实体
+        BoHaiConfigureParameters parameters = configureParametersComponents.toEntity(BoHaiConfigureParameters.class,
+                ptlAgreementAttribution);
 
+        // 核保请求
+        UnderwritingRequest underwritingRequest = new UnderwritingRequest(parameters, insAreaCompany.getInsOrderNo());
+        UnderwritingResponse underwritingResponse =  boHaiRequestApiComponent.underwriting(underwritingRequest);
 
+        // 支付请求
 
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
 
         return null;
     }
 
     @Override
-    public HttpResult<Object> submitImage(String subOrderNo) {
-        return null;
-    }
+    public HttpResult<Object> audit(String subOrderNo) {
+
 
-    @Override
-    public HttpResult<List<QueryClauseDataResponse.ClauseInfoDtoListDTO>> queryClauseData(String companyId) {
-        return null;
-    }
 
-    @Override
-    public HttpResult<Object> audit(SpecialAuditVo<SubmitVerifyRequest.EngageListDTO> specialAudit) {
-        return null;
-    }
 
-    @Override
-    public HttpResult<List<QueryVehicProductsResponse.ProductDtoListDTO>> queryVehicleProducts(ZjVehicleProductsQueryVo zjVehicleProductsVo) {
-        return null;
-    }
 
-    @Override
-    public HttpResult<Object> getOrderDetail(String companyId) {
-        return null;
-    }
 
-    @Override
-    public HttpResult<Object> cancel(String companyId) {
         return null;
     }
 
@@ -120,13 +140,93 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         return null;
     }
 
-    @Override
-    public HttpResult<Object> paymentCallbacks(PaymentCallbacksRequest paymentCallbacksRequest) {
-        return null;
+
+    public QuoteRespVo getQuoteRespVo(QuotationResponse response, BaseQuoteInfoVo yaQuoteInfoVo) {
+        double jyPremium = 0;
+        QuoteRespVo quoteRespVo = new QuoteRespVo();
+        // 交强险
+        QuotationResponse.DataDTO.TrafficPolicyDTO trafficPolicy = response.getData().getTrafficPolicy();
+        double sumPayTax = Double.parseDouble(trafficPolicy.getVehicleTax().getTotalAmount());
+        double jqPremium = Double.parseDouble(trafficPolicy.getPremium());
+        // 交强
+        quoteRespVo.setStartDateJq(trafficPolicy.getStartDate());
+        quoteRespVo.setEndDateJq(trafficPolicy.getEndDate());
+        quoteRespVo.setJqApplyNo(trafficPolicy.getApplicationNo());
+
+        // 商业险
+        QuotationResponse.DataDTO.BusinessPolicyDTO businessPolicy = response.getData().getBusinessPolicy();
+        double syPremium = Double.parseDouble(businessPolicy.getPremium());
+        // 商业
+        quoteRespVo.setStartDateSy(businessPolicy.getStartDate());
+        quoteRespVo.setEndDateSy(businessPolicy.getEndDate());
+        quoteRespVo.setSyApplyNo(businessPolicy.getApplicationNo());
+
+        List<QuoteKindRespVo> kindList1 = new ArrayList<>();
+        List<RiskInfoVo> riskList = yaQuoteInfoVo.getRiskList();
+        //  报价险种放入保费
+        List<QuoteRiskRespVo> riskList1 = QuoteRiskRespVo.toQuoteRiskRespVoList(riskList, jqPremium, syPremium);
+
+        QuoteKindRespVo kind;
+        List<QuotationResponse.DataDTO.BusinessPolicyDTO.CoveragesDTO> coverages = businessPolicy.getCoverages();
+
+        // 商业险险种
+        List<KindInfoVo> kindList = yaQuoteInfoVo.getKindList();
+        for (KindInfoVo kindInfoVo : kindList) {
+            kind = new QuoteKindRespVo();
+            kind.setKindCode(kindInfoVo.getKindCode());
+            kind.setKindName(kindInfoVo.getKindName());
+
+            QuotationResponse.DataDTO.BusinessPolicyDTO.CoveragesDTO coveragesDTO = coverages.stream().filter(x -> {
+                Coverages c = Coverages.valueOf("C_" + kindInfoVo.getKindCode());
+                return c.getFuelOilCode().equals(x.getCoverageCode());
+            }).collect(Collectors.toList()).get(0);
+
+            kind.setAmount(kindInfoVo.getAmount());
+
+            kind.setCoveragePremium(Double.parseDouble(coveragesDTO.getPremium()));
+
+            kind.setUnitAmount(kindInfoVo.getUnitAmount());
+            kind.setServiceTimes(String.valueOf(kindInfoVo.getServiceTimes()));
+            if (!ObjectUtils.isEmpty(kindInfoVo.getDeductibleRate())) {
+                kind.setDeductibleRate(Double.parseDouble(kindInfoVo.getDeductibleRate()));
+            }
+            kindList1.add(kind);
+        }
+
+        quoteRespVo.setRiskList(riskList1);
+        quoteRespVo.setKindList(kindList1);
+        quoteRespVo.setJqPremium(jqPremium);
+        quoteRespVo.setSyPremium(syPremium);
+        quoteRespVo.setTaxAmount(sumPayTax);
+        quoteRespVo.setJyPremium(jyPremium);
+        quoteRespVo.setCiSumPermium(CalculateUtils.add(jqPremium, sumPayTax));//交强险和车船税合计
+        quoteRespVo.setSumPermium(CalculateUtils.add(jqPremium, syPremium, sumPayTax, jyPremium));//保费合计
+        quoteRespVo.setTotalAdjustRate(0);
+        quoteRespVo.setOrderno(yaQuoteInfoVo.getOrderNo()); //订单号
+        return quoteRespVo;
     }
 
-    @Override
-    public HttpResult<Object> auditStatusQuery(String companyId) {
-        return null;
+
+    public HttpResult<QuoteRespVo> responseOrder(QuotationResponse response, QuoteRespVo quoteRespVo,
+                                                 PtlAgreementAttribution ptlAgreementAttribution, String orderId) {
+        // 保存订单信息
+        InsAreaCompany insAreaCompany = new InsAreaCompany(quoteRespVo, ptlAgreementAttribution);
+        // 协议id
+        String companyId = IdGenerate.nextId();
+        insAreaCompany.setId(companyId);
+        insAreaCompany.setReptxt(JSON.parseObject(JSON.toJSONString(response)));
+        insAreaCompany.setOrderstatus(InsOrderStatusEnum.QUOTE_ING.getCode());
+        insAreaCompany.setInsOrderNo(orderId);
+        // 车船税
+        QuotationResponse.DataDTO.TrafficPolicyDTO.VehicleTaxDTO vehicleTax = response.getData().getTrafficPolicy().getVehicleTax();
+        TaxArrears taxArrears = new TaxArrears("往年欠税", Double.parseDouble(vehicleTax.getOverdueTaxAmount()),
+                Double.parseDouble(vehicleTax.getLateFee()));
+        List<TaxArrears> taxArrearsList = Collections.singletonList(taxArrears);
+        insAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(taxArrearsList)));
+        insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
+        quoteRespVo.setCompanyId(companyId);
+        return HttpResult.ok("报价成功", quoteRespVo);
     }
+
+
 }