Jelajahi Sumber

渤海车险代码提交

wks 2 tahun lalu
induk
melakukan
e2c7d9369a
22 mengubah file dengan 696 tambahan dan 92 penghapusan
  1. 3 0
      src/main/java/com/ydtech/modules/ins/model/InsOrdersExcel.java
  2. 0 1
      src/main/java/com/ydtech/modules/ins/model/vo/CarInfoVo.java
  3. 26 0
      src/main/java/com/ydtech/modules/order/components/FileComponents.java
  4. 73 1
      src/main/java/com/ydtech/modules/order/components/bohai/BoHaiRequestApiComponent.java
  5. 22 5
      src/main/java/com/ydtech/modules/order/controller/BoHaiOrderApiController.java
  6. 55 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/DocumentClass.java
  7. 26 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/ResponseCode.java
  8. 35 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/constants/ResultCode.java
  9. 21 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/ElectronicPolicyRequest.java
  10. 27 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/ImageUploadRequest.java
  11. 10 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/NonAutomotiveProductsDetailsRequest.java
  12. 31 2
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/NonAutomotiveProductsRequest.java
  13. 7 0
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/PaymentRequest.java
  14. 6 1
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/UnderwritingRequest.java
  15. 35 5
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/QuotationResponse.java
  16. 34 2
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/UnderwritingResponse.java
  17. 26 0
      src/main/java/com/ydtech/modules/order/entity/vo/bohai/ProductDetailsQueryVo.java
  18. 79 0
      src/main/java/com/ydtech/modules/order/entity/vo/bohai/ProductQueryVo.java
  19. 23 5
      src/main/java/com/ydtech/modules/order/service/BoHaiOrderApiService.java
  20. 0 1
      src/main/java/com/ydtech/modules/order/service/InsOrdersService.java
  21. 154 69
      src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java
  22. 3 0
      src/main/resources/mapper/modules/order/InsOrdersMapper.xml

+ 3 - 0
src/main/java/com/ydtech/modules/ins/model/InsOrdersExcel.java

@@ -166,6 +166,9 @@ public class InsOrdersExcel {
     @ExcelProperty(value = "商业类型评分")
     private String syScore;
 
+    @ExcelProperty(value = "总赔付率")
+    private String lossRation;
+
     @ExcelProperty(value = "交强赔付率")
     private String jqLossRation;
 

+ 0 - 1
src/main/java/com/ydtech/modules/ins/model/vo/CarInfoVo.java

@@ -78,7 +78,6 @@ public class CarInfoVo {
     /**
      * @Date  2023-03-15
      */
-
     /**
      * @see com.ydtech.constants.enums.dict.insurance.EnergyType
      */

+ 26 - 0
src/main/java/com/ydtech/modules/order/components/FileComponents.java

@@ -0,0 +1,26 @@
+package com.ydtech.modules.order.components;
+
+import com.ydtech.utils.baidu.FileUtil;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+
+@Component
+public class FileComponents {
+
+    @Value("${upload.file.path}")
+    private String uploadFilePath;
+
+    @Value("${upload.file.url}")
+    private String showFileUrl;
+
+    @Value("${api.url}")
+    private String apiUrl;
+
+    public String gainCarInsPolicy(String url, String fileName, String licensePlate) {
+        String dir = "carInsPolicy/" + licensePlate + "/";
+        return FileUtil.netUrlToFile(url, dir, fileName, uploadFilePath, apiUrl + showFileUrl);
+    }
+
+
+}

+ 73 - 1
src/main/java/com/ydtech/modules/order/components/bohai/BoHaiRequestApiComponent.java

@@ -5,7 +5,9 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.ydtech.config.properties.BohaiApiConfigurationProperties;
 import com.ydtech.constants.InsuranceEnum;
+import com.ydtech.exception.SystemException;
 import com.ydtech.modules.order.entity.api.bohai.BoHaiEncrypted;
+import com.ydtech.modules.order.entity.api.bohai.constants.ResponseCode;
 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;
@@ -102,17 +104,87 @@ public class BoHaiRequestApiComponent {
      * @return 响应
      */
     public VehicleConfirmationResponse vehicleConfirmation(VehicleConfirmationReqeust request) throws Exception {
-        return post(request, properties.getUrl(), VehicleConfirmationResponse.class);
+        VehicleConfirmationResponse response = post(request, properties.getUrl(), VehicleConfirmationResponse.class);
+        if (ResponseCode.R_Z00002.getCode().equals(response.getResponseCode())) {
+            response = post(request, properties.getUrl(), VehicleConfirmationResponse.class);
+        }
+        if (ResponseCode.R_Z00001.getCode().equals(response.getResponseCode())) {
+            return response;
+        }
+        throw new SystemException(response.getResponseMsg());
+    }
+
+    /**
+     * 上传影响
+     *
+     * @param imageUploadRequest 影像请求
+     * @return 响应
+     */
+    public ImageUploadResponse imageUpload(ImageUploadRequest imageUploadRequest) throws Exception {
+        return post(imageUploadRequest, properties.getUrl(), ImageUploadResponse.class);
+    }
+
+
+    /**
+     * 车+X产品查询接口
+     *
+     * @param request 车辆确认 请求实体
+     * @return 响应
+     */
+    public NonAutomotiveProductsResponse products(NonAutomotiveProductsRequest request) throws Exception {
+        return post(request, properties.getUrl(), NonAutomotiveProductsResponse.class);
+    }
+
+    /**
+     * 车+X产品详情查询接口
+     *
+     * @param request 车辆确认 请求实体
+     * @return 响应
+     */
+    public NonAutomotiveProductsDetailsResponse productsDetails(NonAutomotiveProductsDetailsRequest request) throws Exception {
+        return post(request, properties.getUrl(), NonAutomotiveProductsDetailsResponse.class);
     }
 
 
+    /**
+     * 报价
+     *
+     * @param request 车辆确认 请求实体
+     * @return 响应
+     */
     public QuotationResponse quotation(QuotationRequest request) throws Exception {
         return post(request, properties.getUrl(), QuotationResponse.class);
     }
 
+    /**
+     * 核保
+     *
+     * @param underwritingRequest 核保 请求实体
+     * @return 响应
+     */
     public UnderwritingResponse underwriting(UnderwritingRequest underwritingRequest) throws Exception {
         return post(underwritingRequest, properties.getUrl(), UnderwritingResponse.class);
     }
 
+    /**
+     * 支付
+     *
+     * @param paymentRequest 车辆确认 请求实体
+     * @return 响应
+     */
+    public PaymentResponse payment(PaymentRequest paymentRequest) throws Exception {
+        return post(paymentRequest, properties.getUrl(), PaymentResponse.class);
+    }
+
+    /**
+     * 获取保单接口
+     *
+     * @param electronicPolicyRequest 保单请求
+     * @return 响应
+     */
+    public ElectronicPolicyResponse electronicPolicy(ElectronicPolicyRequest electronicPolicyRequest) throws Exception {
+        return post(electronicPolicyRequest, properties.getUrl(), ElectronicPolicyResponse.class);
+    }
+
 
 }

+ 22 - 5
src/main/java/com/ydtech/modules/order/controller/BoHaiOrderApiController.java

@@ -6,14 +6,19 @@ import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.ins.model.vo.QuoteRespVo;
 import com.ydtech.modules.order.aop.QuoteVerification;
 import com.ydtech.modules.order.components.InsOrdersComponents;
+import com.ydtech.modules.order.entity.api.bohai.response.NonAutomotiveProductsDetailsResponse;
+import com.ydtech.modules.order.entity.api.bohai.response.NonAutomotiveProductsResponse;
 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.crawler.vo.CrawlerPolicyPrintVo;
 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.bohai.ProductDetailsQueryVo;
+import com.ydtech.modules.order.entity.vo.bohai.ProductQueryVo;
 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;
@@ -39,30 +44,42 @@ public class BoHaiOrderApiController {
 
     private final InsOrdersComponents insOrdersComponents;
 
+    @PostMapping("/productQuery")
+    @ApiOperation("车+X产品查询接口")
+    public HttpResult<List<NonAutomotiveProductsResponse.DataDTO.ProductsDTO>> productQuery(@RequestBody ProductQueryVo productQueryVo) throws Exception {
+        return this.boHaiOrderApiService.productQuery(productQueryVo);
+    }
+
+    @PostMapping("/productDetailsQuery")
+    @ApiOperation("车+X产品详情查询接口")
+    public HttpResult<List<NonAutomotiveProductsDetailsResponse.DataDTO.CoveragesDTO>> productDetailsQuery(@RequestBody ProductDetailsQueryVo productDetailsQueryVo) throws Exception {
+        return this.boHaiOrderApiService.productDetailsQuery(productDetailsQueryVo);
+    }
+
     @QuoteVerification("报价授权")
     @PostMapping("/quote")
     @ApiOperation("报价")
-    public HttpResult<QuoteRespVo> quote(@RequestBody BaseQuoteVo<List<ZjQuoteAccidentVo>> quoteVo) {
+    public HttpResult<QuoteRespVo> quote(@RequestBody BaseQuoteVo<List<ZjQuoteAccidentVo>> quoteVo) throws Exception {
         BaseQuoteInfoVo quoteInfo = this.insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo(), quoteVo.getAgreementId());
         return this.boHaiOrderApiService.quote(quoteInfo, quoteVo);
     }
 
     @PostMapping(value = "/submitImage")
     @ApiOperation(value = "提交影像信息")
-    public HttpResult<Object> submitImage(@RequestSingleParam(value = "companyId") String companyId) {
+    public HttpResult<Object> submitImage(@RequestSingleParam(value = "companyId") String companyId) throws Exception {
         return this.boHaiOrderApiService.submitImage(companyId);
     }
 
     @PostMapping(value = "/audit")
     @ApiOperation(value = "提交核保")
-    public HttpResult<Object> audit(@RequestSingleParam(value = "companyId") String companyId) {
+    public HttpResult<Object> audit(@RequestSingleParam(value = "companyId") String companyId) throws Exception {
         return this.boHaiOrderApiService.audit(companyId);
     }
 
     @PostMapping("/getPolicyPrint")
     @ApiOperation(value = "电子保单")
-    public HttpResult<String> getPolicyPrint(@RequestBody PolicyPrintVo policyPrintVo) {
-        return this.boHaiOrderApiService.getPolicyPrint(policyPrintVo);
+    public HttpResult<CrawlerPolicyPrintVo> getPolicyPrint(@RequestSingleParam(value = "companyId") String companyId) {
+        return this.boHaiOrderApiService.getPolicyPrint(companyId);
     }
 
 }

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

@@ -0,0 +1,55 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @description: TODO
+ * @author: wenks
+ * @date: 2024/3/8 11:31
+ **/
+@AllArgsConstructor
+@Getter
+public enum DocumentClass {
+
+    SFZ_01("SFZ_01", "身份证正面", "", ""),
+    SFZ_02("SFZ_02", "身份证反面", "", ""),
+
+    ZGZ_00("ZGZ_00", "资格证照片", "", ""),
+
+    LD_00("LD_00", "劳动合同照片", "", ""),
+
+    YP_00("YP_00", "应聘表照片", "", ""),
+
+    DX_00("DX_00", "定薪表照片", "", ""),
+
+    XC00("XC00", "新车合格证", "Z00400", "Z00404"),
+    GC00("GC00", "购车发票", "Z00400", "Z00401"),
+    GX00("GX00", "关系证明", "", ""),
+
+    C01("C01", "行驶证正面", "Z00400", "Z001044"),
+    D01("D01", "行驶证反面", "Z00400", "Z001044"),
+
+    C02("C02", "车主身份证正面", "Z00300", "Z001042"),
+    D02("D02", "车主身份证反面", "Z00300", "Z001042"),
+
+    C03("C03", "投保人身份证正面", "Z00100", "Z001042"),
+    D03("D03", "投保人身份证反面", "Z00100", "Z001042"),
+
+    C04("C04", "被保人身份证正面", "Z00200", "Z001042"),
+    D04("D04", "被保人身份证反面", "Z00200", "Z001042");
+
+
+    private final String code;
+
+    private final String desc;
+
+    // 大类
+    private final String document;
+
+    // 小类
+    private final String documentType;
+
+}

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

@@ -0,0 +1,26 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @description: 渤海财险请求状态
+ * @author: wenks
+ * @date: 2024/3/8 14:44
+ **/
+@AllArgsConstructor
+@Getter
+public enum ResponseCode {
+
+    R_Z00001("Z00001", "失败"),
+    R_Z00002("Z00002", "再次调用此接口确认"),
+    R_Z00004("Z00004", "成功");
+
+    private final String code;
+
+    private final String desc;
+
+
+}

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

@@ -0,0 +1,35 @@
+package com.ydtech.modules.order.entity.api.bohai.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @description: 投保单状态
+ * @author: wenks
+ * @date: 2024/3/8 10:39
+ **/
+@AllArgsConstructor
+@Getter
+public enum ResultCode {
+
+    RC_A0("A0", "核保通过(待缴费)"),
+    RC_A1("A1", "发生重复投保"),
+    RC_A2("A2", "拒保不可申诉"),
+    RC_A3("A3", "拒保可申诉"),
+    RC_A4("A4", "待人工审核(非标件)"),
+    RC_A6("A6", "核保失败"),
+    RC_B0("B0", "出单失败"),
+    RC_B3("B3", "待承保"),
+    RC_B4("B4", "修改中"),
+    RC_B5("B5", "已承保"),
+    RC_99("99", "已失效"),
+    RC_BZ("BZ", "系统异常"),
+    RC_BT("BT", "已退费");
+
+    private final String code;
+
+    private final String desc;
+
+}

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

@@ -1,10 +1,19 @@
 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 com.ydtech.utils.StringUtils;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
+
+/**
+ * @description: 渤海财险 电子保单
+ * @author: wenks
+ * @date: 2024/3/8 11:49
+ **/
 @EqualsAndHashCode(callSuper = true)
 @NoArgsConstructor
 @Data
@@ -18,4 +27,16 @@ public class ElectronicPolicyRequest extends BoHaiBaseRequest {
     @JsonProperty("policyType")
     private String policyType;
 
+    public ElectronicPolicyRequest(BoHaiConfigureParameters parameters, String id, String jqpolicyno, String sypolicyno) {
+        this.setBaseParam(parameters, RequestType.Z00020.getCode(), id);
+        this.policyNo = StringUtils.isNotEmpty(jqpolicyno) ? jqpolicyno : sypolicyno;
+        if (StringUtils.isEmpty(jqpolicyno)) {
+            this.policyType = "0";
+        } else if (StringUtils.isEmpty(sypolicyno)) {
+            this.policyType = "1";
+        } else {
+            this.policyType = "2";
+        }
+
+    }
 }

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

@@ -2,12 +2,17 @@ package com.ydtech.modules.order.entity.api.bohai.request;
 
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.bohai.constants.DocumentClass;
+import com.ydtech.modules.order.entity.api.bohai.constants.RequestType;
+import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
+import com.ydtech.modules.order.entity.po.InsTaskImagesBase64;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
 import java.util.List;
+import java.util.stream.Collectors;
 
 
 /**
@@ -28,6 +33,13 @@ public class ImageUploadRequest extends BoHaiBaseRequest {
     @JsonProperty("busUniqueId")
     private String busUniqueId;
 
+    public ImageUploadRequest(BoHaiConfigureParameters parameters, String id, String insOrderNo, List<InsTaskImagesBase64> insTaskImagesBase64s) {
+        this.setBaseParam(parameters, RequestType.Z00014.getCode(), id);
+        this.setBusUniqueId(insOrderNo);
+        this.fileInfos = FileInfosDTO.toFileInfosDTOList(insTaskImagesBase64s);
+    }
+
+
     @NoArgsConstructor
     @Data
     public static class FileInfosDTO implements Serializable {
@@ -46,6 +58,21 @@ public class ImageUploadRequest extends BoHaiBaseRequest {
         @JsonProperty("fileName")
         private String fileName;
 
+
+        public static List<FileInfosDTO> toFileInfosDTOList(List<InsTaskImagesBase64> imagesBase64){
+            return imagesBase64.stream().map(FileInfosDTO::toFileInfosDTO).collect(Collectors.toList());
+        }
+
+        private static FileInfosDTO toFileInfosDTO(InsTaskImagesBase64 imagesBase64){
+            FileInfosDTO fileInfosDTO = new FileInfosDTO();
+            DocumentClass document = DocumentClass.valueOf(imagesBase64.getImageType());
+            fileInfosDTO.setDocumentType(document.getDocumentType());
+            fileInfosDTO.setDocumentClass(document.getDocument());
+            fileInfosDTO.setFileName(imagesBase64.getFileName());
+            fileInfosDTO.setBase64(imagesBase64.getBase64String());
+            return fileInfosDTO;
+        }
+
     }
 
 }

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

@@ -2,6 +2,9 @@ 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 com.ydtech.modules.order.entity.vo.bohai.ProductDetailsQueryVo;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
@@ -29,4 +32,11 @@ public class NonAutomotiveProductsDetailsRequest extends BoHaiBaseRequest  {
     @JsonProperty("version")
     private String version;
 
+    public NonAutomotiveProductsDetailsRequest(BoHaiConfigureParameters parameters, ProductDetailsQueryVo productDetailsQueryVo) {
+        this.setBaseParam(parameters, RequestType.Z00019.getCode());
+        this.productCode = productDetailsQueryVo.getProductCode();
+        this.packageCode = productDetailsQueryVo.getPackageCode();
+        this.version = productDetailsQueryVo.getVersion();
+    }
+
 }

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

@@ -2,6 +2,9 @@ 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 com.ydtech.modules.order.entity.vo.bohai.ProductQueryVo;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
@@ -41,13 +44,31 @@ public class NonAutomotiveProductsRequest extends BoHaiBaseRequest {
 
     @JsonProperty("exhaustScale")
     private String exhaustScale;
-
+    /**
+     * 投保人
+     */
     @JsonProperty("applicantDto")
     private PremPersonnelDto applicantDto;
-
+    /**
+     * 被保人
+     */
     @JsonProperty("insuredDto")
     private PremPersonnelDto insuredDto;
 
+
+    public NonAutomotiveProductsRequest(BoHaiConfigureParameters parameters, ProductQueryVo productQueryVo) {
+        this.setBaseParam(parameters, RequestType.Z00018.getCode());
+        this.vehicleUsage = vehicleUsage;
+        this.seatCount = productQueryVo.getSeatCount();
+        this.vehicleUsageDetail = vehicleUsageDetail;
+        this.vehicleKind = vehicleKind;
+        this.tonNumber = tonNumber;
+        this.power = productQueryVo.getPowerScale();
+        this.exhaustScale = productQueryVo.getExhaustScale();
+        this.applicantDto = new PremPersonnelDto(productQueryVo.getPolicyHolderInfo());
+        this.insuredDto = new PremPersonnelDto(productQueryVo.getInsuredPersonInfo());
+    }
+
     @NoArgsConstructor
     @Data
     public static class PremPersonnelDto implements Serializable {
@@ -65,6 +86,14 @@ public class NonAutomotiveProductsRequest extends BoHaiBaseRequest {
 
         @JsonProperty("identifyNumber")
         private String identifyNumber;
+
+        public PremPersonnelDto(ProductQueryVo.CustomerInfoDTO policyHolderInfo) {
+            this.type = "1";
+            this.name = policyHolderInfo.getName();
+            this.identifyType = "111";
+            this.identifyNumber = policyHolderInfo.getIdentifyNumber();
+        }
+
     }
 
 }

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

@@ -2,6 +2,8 @@ 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;
@@ -24,4 +26,9 @@ public class PaymentRequest extends BoHaiBaseRequest{
     @JsonProperty("busUniqueId")
     private String busUniqueId;
 
+    public PaymentRequest(BoHaiConfigureParameters parameters, String orderNo, String insOrderNo) {
+        this.setBaseParam(parameters, RequestType.Z00008.getCode(), orderNo);
+        this.busUniqueId = insOrderNo;
+    }
+
 }

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

@@ -29,8 +29,13 @@ public class UnderwritingRequest extends BoHaiBaseRequest {
     @JsonProperty("trafficPolicy")
     private TrafficPolicyDTO trafficPolicy;
 
-    public UnderwritingRequest(BoHaiConfigureParameters parameters, String orderNo) {
+    @JsonProperty("busUniqueId")
+    private String busUniqueId;
+
+
+    public UnderwritingRequest(BoHaiConfigureParameters parameters, String orderNo, String busUniqueId) {
         this.setBaseParam(parameters, RequestType.Z00007.getCode(), orderNo);
+        this.busUniqueId = busUniqueId;
     }
 
     @NoArgsConstructor

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

@@ -25,6 +25,9 @@ public class QuotationResponse extends BoHaiBaseResponse {
 
         private static final long serialVersionUID = -2304181484676681954L;
 
+        @JsonProperty("sumInsurd")
+        private String sumInsurd;
+
         @JsonProperty("premium")
         private String premium;
 
@@ -46,9 +49,15 @@ public class QuotationResponse extends BoHaiBaseResponse {
         @JsonProperty("trafficPolicy")
         private TrafficPolicyDTO trafficPolicy;
 
+        @JsonProperty("busUniqueId")
+        private String busUniqueId;
+
+        @JsonProperty("checkInfoList")
+        private List<CheckInfoDTO> checkInfoList;
+
         @NoArgsConstructor
         @Data
-        public static class VehicleDTO implements Serializable  {
+        public static class VehicleDTO implements Serializable {
 
             private static final long serialVersionUID = -1516467168214096674L;
 
@@ -126,7 +135,7 @@ public class QuotationResponse extends BoHaiBaseResponse {
 
         @NoArgsConstructor
         @Data
-        public static class InsurederDTO implements Serializable  {
+        public static class InsurederDTO implements Serializable {
 
             private static final long serialVersionUID = 2362012197504237392L;
 
@@ -146,7 +155,7 @@ public class QuotationResponse extends BoHaiBaseResponse {
 
         @NoArgsConstructor
         @Data
-        public static class BusinessPolicyDTO implements Serializable  {
+        public static class BusinessPolicyDTO implements Serializable {
             private static final long serialVersionUID = 3738634684794032589L;
             @JsonProperty("coverages")
             private List<CoveragesDTO> coverages;
@@ -167,7 +176,7 @@ public class QuotationResponse extends BoHaiBaseResponse {
 
             @NoArgsConstructor
             @Data
-            public static class CoveragesDTO implements Serializable  {
+            public static class CoveragesDTO implements Serializable {
 
                 private static final long serialVersionUID = -1632275770513414351L;
 
@@ -187,7 +196,7 @@ public class QuotationResponse extends BoHaiBaseResponse {
 
             @NoArgsConstructor
             @Data
-            public static class SpecialTermItemsDTO implements Serializable  {
+            public static class SpecialTermItemsDTO implements Serializable {
 
                 private static final long serialVersionUID = -8348339774598055057L;
 
@@ -255,5 +264,26 @@ public class QuotationResponse extends BoHaiBaseResponse {
 
             }
         }
+
+        @NoArgsConstructor
+        @Data
+        public static class CheckInfoDTO implements Serializable {
+
+            private static final long serialVersionUID = 422012236525748899L;
+
+            @JsonProperty("answerFlag")
+            private String answerFlag;
+
+            @JsonProperty("checkCode")
+            private String checkCode;
+
+            @JsonProperty("question")
+            private String question;
+
+            @JsonProperty("isTrafficQuestion")
+            private String isTrafficQuestion;
+
+        }
+
     }
 }

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

@@ -2,6 +2,8 @@ package com.ydtech.modules.order.entity.api.bohai.response;
 
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.bohai.constants.ResultCode;
+import com.ydtech.utils.StringUtils;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
@@ -52,6 +54,36 @@ public class UnderwritingResponse extends BoHaiBaseResponse {
         @JsonProperty("trafficPolicy")
         private TrafficPolicyDTO trafficPolicy;
 
+        public int verificationUnderwriting() {
+            int traffic = 1;
+            int business = 1;
+
+            if (StringUtils.isNotEmpty(this.trafficResultCode)) {
+                traffic = extracted(this.trafficResultCode);
+            }
+
+            if (StringUtils.isNotEmpty(this.businessResultCode)) {
+                business = extracted(this.businessResultCode);
+            }
+
+            if(traffic == 1 && business == 1){
+                return 1;
+            }else if(traffic == 2 || business == 2){
+                return 2;
+            }
+            return 0;
+        }
+
+        private int extracted(String resultCode) {
+            if (ResultCode.RC_A0.getCode().equals(resultCode)) {
+                return 1;
+            } else if (ResultCode.RC_A4.getCode().equals(resultCode)) {
+                return 2;
+            }
+            return 0;
+        }
+
+
         @NoArgsConstructor
         @Data
         public static class BusinessPolicyDTO implements Serializable {
@@ -66,7 +98,7 @@ public class UnderwritingResponse extends BoHaiBaseResponse {
 
             @NoArgsConstructor
             @Data
-            public static class SpecialTermItemsDTO implements Serializable{
+            public static class SpecialTermItemsDTO implements Serializable {
 
                 private static final long serialVersionUID = 3193463755642823937L;
 
@@ -91,7 +123,7 @@ public class UnderwritingResponse extends BoHaiBaseResponse {
 
             @NoArgsConstructor
             @Data
-            public static class SpecialTermItemsDTO  implements Serializable {
+            public static class SpecialTermItemsDTO implements Serializable {
 
                 private static final long serialVersionUID = 8337098391141236122L;
 

+ 26 - 0
src/main/java/com/ydtech/modules/order/entity/vo/bohai/ProductDetailsQueryVo.java

@@ -0,0 +1,26 @@
+package com.ydtech.modules.order.entity.vo.bohai;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProductDetailsQueryVo {
+
+    @ApiModelProperty(value = "协议id")
+    private String agreementId;
+
+    @ApiModelProperty("产品编码")
+    private String productCode;
+
+    @ApiModelProperty("套餐编码")
+    private String packageCode;
+
+    @ApiModelProperty("版本号")
+    private String version;
+
+}

+ 79 - 0
src/main/java/com/ydtech/modules/order/entity/vo/bohai/ProductQueryVo.java

@@ -0,0 +1,79 @@
+package com.ydtech.modules.order.entity.vo.bohai;
+
+
+import com.ydtech.validation.annotation.CheckIdentifyNumber;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+
+/**
+ * @description: 渤海财险 车+X产品查询
+ * @author: wenks
+ * @date: 2024/3/8 15:20
+ **/
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("渤海财险 车+X产品查询")
+public class ProductQueryVo implements Serializable {
+
+    private static final long serialVersionUID = -4550688848349420748L;
+
+    @ApiModelProperty(value = "协议id")
+    private String agreementId;
+
+    @ApiModelProperty(value = "使用性质")
+    private String carnature;
+
+    @ApiModelProperty(value = "车辆种类")
+    private String cimodelclass;
+
+    @ApiModelProperty(value = "座位数")
+    private String seatCount;
+
+    @ApiModelProperty(value = "核定载质量")
+    private String limitLoad;
+
+    @ApiModelProperty(value = "车辆用途")
+    private String vehicleUse;
+
+    @ApiModelProperty(value = "发动机功率")
+    private String powerScale;
+
+    @ApiModelProperty(value = "排量")
+    private String exhaustScale;
+
+    @ApiModelProperty(value = "投保人")
+    private CustomerInfoDTO policyHolderInfo;
+
+    //被保人信息  lig 2023-04-13
+    @ApiModelProperty(value = "被保人信息")
+    private CustomerInfoDTO insuredPersonInfo;
+
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @Data
+    @ApiModel("实体")
+    public static class CustomerInfoDTO implements Serializable {
+
+        private static final long serialVersionUID = -5471272439931733532L;
+
+        @ApiModelProperty("姓名")
+        private String name;
+
+        @CheckIdentifyNumber
+        @ApiModelProperty("身份证号")
+        private String identifyNumber;
+
+        @ApiModelProperty("身份证类型")
+        private String identifyType;
+
+    }
+
+
+}

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

@@ -2,21 +2,39 @@ 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.bohai.response.NonAutomotiveProductsDetailsResponse;
+import com.ydtech.modules.order.entity.api.bohai.response.NonAutomotiveProductsResponse;
+import com.ydtech.modules.order.entity.crawler.vo.CrawlerPolicyPrintVo;
 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.bohai.ProductDetailsQueryVo;
+import com.ydtech.modules.order.entity.vo.bohai.ProductQueryVo;
 import com.ydtech.modules.order.entity.vo.zj.ZjQuoteAccidentVo;
 
 import java.util.List;
 
 public interface BoHaiOrderApiService {
 
+    /**
+     * 车+X产品查询接口
+     *
+     * @param productQueryVo 车+X产品
+     */
+    HttpResult<List<NonAutomotiveProductsResponse.DataDTO.ProductsDTO>> productQuery(ProductQueryVo productQueryVo) throws Exception;
+
+    /**
+     * 车+X产品详情查询接口
+     *
+     * @param productDetailsQueryVo 车+X产品详情
+     */
+    HttpResult<List<NonAutomotiveProductsDetailsResponse.DataDTO.CoveragesDTO>> productDetailsQuery(ProductDetailsQueryVo productDetailsQueryVo) throws Exception;
+
     /**
      * 报价
      *
      * @param quoteInfoVo 报价实体
      */
-    HttpResult<QuoteRespVo> quote(BaseQuoteInfoVo quoteInfoVo, BaseQuoteVo<List<ZjQuoteAccidentVo>> t);
+    HttpResult<QuoteRespVo> quote(BaseQuoteInfoVo quoteInfoVo, BaseQuoteVo<List<ZjQuoteAccidentVo>> t) throws Exception;
 
     /**
      * 提交影像信息
@@ -32,15 +50,15 @@ public interface BoHaiOrderApiService {
      * @param subOrderNo 子订单号
      * @return HttpResult
      */
-    HttpResult<Object> audit(String subOrderNo);
+    HttpResult<Object> audit(String subOrderNo) throws Exception;
 
     /**
      * 获取电子保单
      *
-     * @param policyPrintVo 获取保单实体
+     * @param subOrderNo 子订单号
      * @return 电子保单链接
      */
-    HttpResult<String> getPolicyPrint(PolicyPrintVo policyPrintVo);
+    HttpResult<CrawlerPolicyPrintVo> getPolicyPrint(String subOrderNo) throws Exception;
 
 
 }

+ 0 - 1
src/main/java/com/ydtech/modules/order/service/InsOrdersService.java

@@ -77,7 +77,6 @@ public interface InsOrdersService extends IService<InsOrders> {
      * @param insOrdersExcelVo
      * @return
      */
-
     HttpResult<String> orderExportExcel(InsOrdersExcelVo insOrdersExcelVo);
 
 

+ 154 - 69
src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java

@@ -4,30 +4,37 @@ 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.exception.SystemException;
 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.FileComponents;
 import com.ydtech.modules.order.components.bohai.BoHaiRequestApiComponent;
 import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsOrders;
 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.constants.ResponseCode;
 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.config.BoHaiConfigureParameters;
+import com.ydtech.modules.order.entity.crawler.vo.CrawlerPolicyPrintVo;
 import com.ydtech.modules.order.entity.filter.CarModelsFilterUtils;
+import com.ydtech.modules.order.entity.po.InsTaskImagesBase64;
 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.bohai.ProductDetailsQueryVo;
+import com.ydtech.modules.order.entity.vo.bohai.ProductQueryVo;
 import com.ydtech.modules.order.entity.vo.zj.ZjQuoteAccidentVo;
 import com.ydtech.modules.order.service.BoHaiOrderApiService;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
+import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.modules.order.service.InsTaskImagesService;
 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 com.ydtech.utils.StringUtils;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
@@ -51,8 +58,41 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
 
     private final InsAreaCompanyService insAreaCompanyService;
 
+    private final InsOrdersService insOrdersService;
+
+    private final InsTaskImagesService insTaskImagesService;
+
+    private final FileComponents fileComponents;
+
     @Override
-    public HttpResult<QuoteRespVo> quote(BaseQuoteInfoVo quoteInfoVo, BaseQuoteVo<List<ZjQuoteAccidentVo>> quoteVo) {
+    public HttpResult<List<NonAutomotiveProductsResponse.DataDTO.ProductsDTO>> productQuery(ProductQueryVo productQueryVo) throws Exception {
+        // 账号信息
+        PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(productQueryVo.getAgreementId());
+        // 通过 协议id获取配置实体
+        BoHaiConfigureParameters parameters = configureParametersComponents.toEntity(BoHaiConfigureParameters.class,
+                ptlAgreementAttribution);
+        NonAutomotiveProductsRequest nonAutomotiveProductsRequest = new NonAutomotiveProductsRequest(parameters, productQueryVo);
+        NonAutomotiveProductsResponse response = boHaiRequestApiComponent.products(nonAutomotiveProductsRequest);
+        List<NonAutomotiveProductsResponse.DataDTO.ProductsDTO> products = response.getData().getProducts();
+        return HttpResult.ok(products);
+    }
+
+    @Override
+    public HttpResult<List<NonAutomotiveProductsDetailsResponse.DataDTO.CoveragesDTO>> productDetailsQuery(ProductDetailsQueryVo productDetailsQueryVo) throws Exception {
+        // 账号信息
+        PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(productDetailsQueryVo.getAgreementId());
+        // 通过 协议id获取配置实体
+        BoHaiConfigureParameters parameters = configureParametersComponents.toEntity(BoHaiConfigureParameters.class,
+                ptlAgreementAttribution);
+        NonAutomotiveProductsDetailsRequest nonAutomotiveProductsDetailsRequest = new NonAutomotiveProductsDetailsRequest(parameters,
+                productDetailsQueryVo);
+        NonAutomotiveProductsDetailsResponse response = boHaiRequestApiComponent.productsDetails(nonAutomotiveProductsDetailsRequest);
+        List<NonAutomotiveProductsDetailsResponse.DataDTO.CoveragesDTO> coverages = response.getData().getCoverages();
+        return HttpResult.ok(coverages);
+    }
+
+    @Override
+    public HttpResult<QuoteRespVo> quote(BaseQuoteInfoVo quoteInfoVo, BaseQuoteVo<List<ZjQuoteAccidentVo>> quoteVo) throws Exception {
         // 协议id获取配置实体
         String agreementId = quoteVo.getAgreementId();
         // 账号信息
@@ -61,85 +101,134 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         BoHaiConfigureParameters parameters = configureParametersComponents.toEntity(BoHaiConfigureParameters.class,
                 ptlAgreementAttribution);
         GenerateOrderNoRequest generateOrderNoRequest = new GenerateOrderNoRequest(parameters);
-        try {
-            // 1 生成生成订单
-            GenerateOrderNoResponse generateOrderNoResponse = boHaiRequestApiComponent.generateOrderNo(generateOrderNoRequest);
-            String orderNo = generateOrderNoResponse.getData().getOrderNo();
-
-            // 2 车型查询接口
-            CarInfoVo carInfo = quoteInfoVo.getCarInfo();
-            VehicleTypeQueryRequest vehicleTypeQueryRequest = new VehicleTypeQueryRequest(parameters, carInfo.getModelcname(), orderNo);
-            VehicleTypeQueryResponse vehicleTypeQueryResponse = boHaiRequestApiComponent.vehicleTypeQuery(vehicleTypeQueryRequest);
-            List<VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO> vehicleModels = vehicleTypeQueryResponse.getData().getVehicleModels();
-            VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO vehicleModelsDTO =
-                    new CarModelsFilterUtils<VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO>().to(vehicleModels,
-                            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, 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);
-        }
+
+        // 1 生成生成订单
+        GenerateOrderNoResponse generateOrderNoResponse = boHaiRequestApiComponent.generateOrderNo(generateOrderNoRequest);
+        String orderNo = generateOrderNoResponse.getData().getOrderNo();
+
+        // 2 车型查询接口
+        CarInfoVo carInfo = quoteInfoVo.getCarInfo();
+        VehicleTypeQueryRequest vehicleTypeQueryRequest = new VehicleTypeQueryRequest(parameters, carInfo.getModelcname(), orderNo);
+        VehicleTypeQueryResponse vehicleTypeQueryResponse = boHaiRequestApiComponent.vehicleTypeQuery(vehicleTypeQueryRequest);
+        List<VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO> vehicleModels = vehicleTypeQueryResponse.getData().getVehicleModels();
+        VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO vehicleModelsDTO =
+                new CarModelsFilterUtils<VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO>().to(vehicleModels, 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, 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);
     }
 
     @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);
-
-        // 支付请求
+        List<InsTaskImagesBase64> insTaskImagesBase64s = insTaskImagesService.findByOrderNo(insAreaCompany.getOrderno(),
+                insAreaCompany.getId(), true);
+        if (insTaskImagesBase64s.isEmpty()) {
+            return HttpResult.ok();
+        }
 
+        ImageUploadRequest imageUploadRequest = new ImageUploadRequest(parameters, insAreaCompany.getId(), insAreaCompany.getInsOrderNo()
+                , insTaskImagesBase64s);
+        ImageUploadResponse response = boHaiRequestApiComponent.imageUpload(imageUploadRequest);
+        if (ResponseCode.R_Z00001.getCode().equals(response.getResponseCode())) {
+            return HttpResult.ok("上传成功");
+        }
 
-        return null;
+        throw new SystemException(response.getResponseMsg());
     }
 
     @Override
-    public HttpResult<Object> audit(String subOrderNo) {
+    public HttpResult<Object> audit(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.getId(),
+                insAreaCompany.getInsOrderNo());
+        UnderwritingResponse underwritingResponse = boHaiRequestApiComponent.underwriting(underwritingRequest);
+        int i = underwritingResponse.getData().verificationUnderwriting();
+
+        if (i == 1) {
+            insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
+            // 支付请求
+            PaymentRequest paymentRequest = new PaymentRequest(parameters, insAreaCompany.getId(), insAreaCompany.getInsOrderNo());
+            PaymentResponse paymentResponse = boHaiRequestApiComponent.payment(paymentRequest);
+            String payUrl = paymentResponse.getData().getPayUrl();
+            insAreaCompany.setPaymentLink(payUrl);
+            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+            return HttpResult.ok("核保通过");
+        } else if (i == 2) {
+            insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
+        } else {
+            insAreaCompany.setOrderstatus(InsOrderStatusEnum.TO_BACK.getCode());
+        }
+        String trafficResultMsg = underwritingResponse.getData().getTrafficResultMsg();
+        String businessResultMsg = underwritingResponse.getData().getBusinessResultMsg();
+        return HttpResult.error(trafficResultMsg + "/n" + businessResultMsg);
+    }
 
+    @Override
+    public HttpResult<CrawlerPolicyPrintVo> getPolicyPrint(String subOrderNo) throws Exception {
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(subOrderNo);
+        InsOrders insOrders = insOrdersService.existOrder(insAreaCompany.getOrderno());
 
+        // 账号信息
+        PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
+        // 通过 协议id获取配置实体
+        BoHaiConfigureParameters parameters = configureParametersComponents.toEntity(BoHaiConfigureParameters.class,
+                ptlAgreementAttribution);
 
+        ElectronicPolicyRequest electronicPolicyRequest = new ElectronicPolicyRequest(parameters, insAreaCompany.getId(),
+                insAreaCompany.getJqpolicyno(), insAreaCompany.getSypolicyno());
+        ElectronicPolicyResponse response = boHaiRequestApiComponent.electronicPolicy(electronicPolicyRequest);
 
+        ElectronicPolicyResponse.DataDTO data = response.getData();
+        CrawlerPolicyPrintVo crawlerPolicyPrintVo = new CrawlerPolicyPrintVo();
+        String licenseno = insOrders.getLicenseno();
 
-        return null;
-    }
+        if (StringUtils.isNotEmpty(data.getTrafficEPolicyUrl())) {
+            crawlerPolicyPrintVo.setJqxFlagUrl(fileComponents.gainCarInsPolicy(data.getTrafficEPolicyUrl(),
+                    licenseno + insAreaCompany.getJqpolicyno() + "-交强险标志.pdf", licenseno));
+        }
 
-    @Override
-    public HttpResult<String> getPolicyPrint(PolicyPrintVo policyPrintVo) {
-        return null;
-    }
+        if (StringUtils.isNotEmpty(data.getBusinessEPolicyUrl())) {
+            crawlerPolicyPrintVo.setSyxPolicyUrl(fileComponents.gainCarInsPolicy(data.getBusinessEPolicyUrl(),
+                    licenseno + insAreaCompany.getSypolicyno() + "-交强险保单.pdf", licenseno));
+        }
 
+        return HttpResult.ok(crawlerPolicyPrintVo);
+    }
 
     public QuoteRespVo getQuoteRespVo(QuotationResponse response, BaseQuoteInfoVo yaQuoteInfoVo) {
         double jyPremium = 0;
@@ -182,9 +271,7 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
             }).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())) {
@@ -206,17 +293,16 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         return quoteRespVo;
     }
 
-
     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);
+        // 渤海业务id
+        String busUniqueId = response.getData().getBusUniqueId();
+        insAreaCompany.setId(orderId);
         insAreaCompany.setReptxt(JSON.parseObject(JSON.toJSONString(response)));
         insAreaCompany.setOrderstatus(InsOrderStatusEnum.QUOTE_ING.getCode());
-        insAreaCompany.setInsOrderNo(orderId);
+        insAreaCompany.setInsOrderNo(busUniqueId);
         // 车船税
         QuotationResponse.DataDTO.TrafficPolicyDTO.VehicleTaxDTO vehicleTax = response.getData().getTrafficPolicy().getVehicleTax();
         TaxArrears taxArrears = new TaxArrears("往年欠税", Double.parseDouble(vehicleTax.getOverdueTaxAmount()),
@@ -224,9 +310,8 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         List<TaxArrears> taxArrearsList = Collections.singletonList(taxArrears);
         insAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(taxArrearsList)));
         insAreaCompanyService.insertCompanyAndOrders(insAreaCompany);
-        quoteRespVo.setCompanyId(companyId);
+        quoteRespVo.setCompanyId(orderId);
         return HttpResult.ok("报价成功", quoteRespVo);
     }
 
-
 }

+ 3 - 0
src/main/resources/mapper/modules/order/InsOrdersMapper.xml

@@ -130,6 +130,7 @@
         <result property="syEndDate" column="sy_end_date" jdbcType="VARCHAR"/>
         <result property="jqScore" column="jq_score" jdbcType="VARCHAR"/>
         <result property="syScore" column="sy_score" jdbcType="VARCHAR"/>
+        <result property="lossRation" column="loss_ration" jdbcType="VARCHAR"/>
         <result property="jqLossRation" column="jq_loss_ration" jdbcType="VARCHAR"/>
         <result property="syLossRation" column="sy_loss_ration" jdbcType="VARCHAR"/>
         <result property="insCompany" column="inscompany" jdbcType="VARCHAR"/>
@@ -365,8 +366,10 @@
         b.jq_end_date,
         b.sy_start_date,
         b.sy_end_date,
+        b.score,
         b.jq_score,
         b.sy_score,
+        b.loss_ration,
         b.jq_loss_ration,
         b.sy_loss_ration,
         b.score,