Browse Source

华泰对接新建实体

li.pengfei 2 years ago
parent
commit
87ee507073
20 changed files with 1106 additions and 153 deletions
  1. 9 17
      src/main/java/com/ydtech/config/properties/HuaTaiApiConfigurationProperties.java
  2. 90 31
      src/main/java/com/ydtech/modules/order/components/huatai/HuaTaiRequestApiComponents.java
  3. 9 2
      src/main/java/com/ydtech/modules/order/controller/HuaTaiOrderApiController.java
  4. 25 0
      src/main/java/com/ydtech/modules/order/entity/api/huatai/HuaTaiEncryptReq.java
  5. 25 0
      src/main/java/com/ydtech/modules/order/entity/api/huatai/HuaTaiEncryptRes.java
  6. 48 0
      src/main/java/com/ydtech/modules/order/entity/api/huatai/constants/TransCode.java
  7. 32 0
      src/main/java/com/ydtech/modules/order/entity/api/huatai/request/HuaTaiInsurancePolicyPrintRequest.java
  8. 44 0
      src/main/java/com/ydtech/modules/order/entity/api/huatai/request/HuaTaiOrderStatusRequest.java
  9. 46 0
      src/main/java/com/ydtech/modules/order/entity/api/huatai/request/HuaTaiPaymentUrlRequest.java
  10. 337 0
      src/main/java/com/ydtech/modules/order/entity/api/huatai/request/HuaTaiSubmitRequest.java
  11. 59 0
      src/main/java/com/ydtech/modules/order/entity/api/huatai/request/HuaTaiSubmitStatusQueryRequest.java
  12. 16 0
      src/main/java/com/ydtech/modules/order/entity/api/huatai/response/HuaTaiInsurancePolicyPrintResponse.java
  13. 67 0
      src/main/java/com/ydtech/modules/order/entity/api/huatai/response/HuaTaiOrderStatusResponse.java
  14. 51 0
      src/main/java/com/ydtech/modules/order/entity/api/huatai/response/HuaTaiPaymentUrlResponse.java
  15. 56 0
      src/main/java/com/ydtech/modules/order/entity/api/huatai/response/HuaTaiSubmitResponse.java
  16. 53 0
      src/main/java/com/ydtech/modules/order/entity/api/huatai/response/HuaTaiSubmitStatusQueryResponse.java
  17. 7 0
      src/main/java/com/ydtech/modules/order/service/HuaTaiOrderApiService.java
  18. 118 103
      src/main/java/com/ydtech/modules/order/service/impl/HuaTaiOrderApiServiceImpl.java
  19. 7 0
      src/main/resources/application-prod.yml
  20. 7 0
      src/main/resources/application-test.yml

+ 9 - 17
src/main/java/com/ydtech/config/properties/HuaTaiApiConfigurationProperties.java

@@ -13,23 +13,15 @@ import org.springframework.stereotype.Component;
 
 
 @Data
 @Data
 @Component
 @Component
-@ConfigurationProperties(prefix = "zm.api")
+@ConfigurationProperties(prefix = "huatai.api")
 public class HuaTaiApiConfigurationProperties {
 public class HuaTaiApiConfigurationProperties {
-
-    private String url;
-
-    private String imageUrl;
-
-    private String smsUrl;
-    // 支付完成页面跳转地址
-    private String pageUrl;
-    // 回调前缀
-    private String callbackDomain;
-    // 承保回调地址
-    private String callbackUrl;
-    // 审核回调地址
-    private String passMsgUrl;
-    // 会话密钥
-    private String sessionKey;
+    //华泰请求API地址
+    private String baseUrl;
+    //我司提供RSA公钥
+    private String selfPublicKey;
+    //我司自用RSA私钥
+    private String selfPrivateKey;
+    // 华泰RSA公钥
+    private String huaTaiPublicKey;
 
 
 }
 }

+ 90 - 31
src/main/java/com/ydtech/modules/order/components/huatai/HuaTaiRequestApiComponents.java

@@ -3,20 +3,21 @@ package com.ydtech.modules.order.components.huatai;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.ydtech.config.properties.HuaTaiApiConfigurationProperties;
 import com.ydtech.config.properties.HuaTaiApiConfigurationProperties;
-import com.ydtech.config.properties.ZhongmeiApiConfigurationProperties;
 import com.ydtech.constants.InsuranceEnum;
 import com.ydtech.constants.InsuranceEnum;
 import com.ydtech.exception.SystemException;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequest;
 import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequest;
 import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseResponse;
 import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseResponse;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiEncryptReq;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiEncryptRes;
+import com.ydtech.modules.order.entity.api.huatai.constants.TransCode;
 import com.ydtech.modules.order.entity.api.huatai.request.HuaTaiQuotedPriceRequest;
 import com.ydtech.modules.order.entity.api.huatai.request.HuaTaiQuotedPriceRequest;
 import com.ydtech.modules.order.entity.api.huatai.response.HuaTaiQuotedPriceResponse;
 import com.ydtech.modules.order.entity.api.huatai.response.HuaTaiQuotedPriceResponse;
-import com.ydtech.modules.order.entity.api.zhongmei.BaseRequest;
-import com.ydtech.modules.order.entity.api.zhongmei.BaseResponse;
-import com.ydtech.modules.order.entity.api.zhongmei.constants.TransCode;
-import com.ydtech.modules.order.entity.api.zhongmei.request.*;
-import com.ydtech.modules.order.entity.api.zhongmei.response.*;
+import com.ydtech.modules.order.entity.api.huatai.request.*;
+import com.ydtech.modules.order.entity.api.huatai.response.*;
 import com.ydtech.modules.order.utils.AESUtilsWithDataBase;
 import com.ydtech.modules.order.utils.AESUtilsWithDataBase;
 import com.ydtech.modules.order.utils.InsuranceLog;
 import com.ydtech.modules.order.utils.InsuranceLog;
+import com.ydtech.utils.Base64Utils;
+import com.ydtech.utils.RSA.RSAUtils;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpEntity;
@@ -26,8 +27,7 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 import org.springframework.util.ObjectUtils;
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.client.RestTemplate;
-
-import java.util.List;
+import java.security.SecureRandom;
 
 
 
 
 /**
 /**
@@ -65,17 +65,48 @@ public class HuaTaiRequestApiComponents {
         HttpHeaders httpHeaders = new HttpHeaders();
         HttpHeaders httpHeaders = new HttpHeaders();
         httpHeaders.setContentType(MediaType.APPLICATION_JSON);
         httpHeaders.setContentType(MediaType.APPLICATION_JSON);
 
 
-        String jsonString = JSON.toJSONString(q, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
-        InsuranceLog.infoLog(InsuranceEnum.ZMBX.getPinyin(), "\n\t---------> URl: {} \n---------> 请求参数:{}", url, jsonString);
-        // 加密
-        String sessionKey = properties.getSessionKey();
-        String s = AESUtilsWithDataBase.encryptECBPK5Hex(jsonString, sessionKey);
-        InsuranceLog.infoLog(InsuranceEnum.ZMBX.getPinyin(), "\n\t---------> 加密后的参数:{}", s);
-        HttpEntity<String> httpEntity = new HttpEntity<>(s, httpHeaders);
+        String busReqString = JSON.toJSONString(q, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
+        InsuranceLog.infoLog(InsuranceEnum.HTIC.getPinyin(), "\n\t---------> URl: {} \n---------> 请求参数:{}", url, busReqString);
+        // ----加密starting------------
+        //1.先获取16位随机字符串 Key
+        String key=generateRadomStr(8);
+        //2.使用Base64加密请求报文
+        String base64ReqJson=Base64Utils.getBase64Encode(busReqString);
+        //3. 使用AES算法 秘钥Key  对 base64ReqJson加密
+         String busiContent=AESUtilsWithDataBase.encryptECBPK5Hex(base64ReqJson, key);
+        //4.对Key 使用RSA算法进行加密
+        String accessToken="";
+        try{
+            accessToken=RSAUtils.rsaEncrypt(key,properties.getHuaTaiPublicKey(),"UTF-8");
+        }catch (Exception e){
+            throw new SystemException("RSA加密获取accessToken失败!");
+        }
+        HuaTaiEncryptReq encryptReq=new HuaTaiEncryptReq();
+        encryptReq.setBusiContent(busiContent);
+        encryptReq.setAccessToken(accessToken);
+        String jsonString = JSON.toJSONString(encryptReq, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
+        InsuranceLog.infoLog(InsuranceEnum.HTIC.getPinyin(), "\n\t---------> 加密后的参数:{}", jsonString);
+        //----加密endding------------
+        HttpEntity<String> httpEntity = new HttpEntity<>(jsonString, httpHeaders);
         ResponseEntity<String> response = restTemplate.postForEntity(url, httpEntity, String.class);
         ResponseEntity<String> response = restTemplate.postForEntity(url, httpEntity, String.class);
         String body = response.getBody();
         String body = response.getBody();
-
-        S t = AESUtilsWithDataBase.decryptMessage(body, tClass, "响应参数", sessionKey);
+        InsuranceLog.infoLog(InsuranceEnum.HTIC.getPinyin(), "\n\t---------> 解密前的参数:{}", body);
+        // ------解密starting---------
+        HuaTaiEncryptRes encryptRes=JSON.parseObject(body,HuaTaiEncryptRes.class);
+        //1.通过自己的私钥对key进行解密
+        String resAccessToken="";
+        try{
+            resAccessToken=RSAUtils.rsaDecrypt(encryptRes.getAccessToken(),properties.getSelfPrivateKey(),"UTF-8");
+        }catch (Exception e){
+            throw new SystemException("RSA解密获取accessToken失败!");
+        }
+        //2.用key解密出出参报文
+        String aseDecryptStr=AESUtilsWithDataBase.decryptECBPK5Hex(encryptRes.getBusiContent(),resAccessToken);
+        //3.使用Base64解密最终返回报文
+        String text = Base64Utils.getBase64Encode(aseDecryptStr);
+        InsuranceLog.infoLog(InsuranceEnum.HTIC.getPinyin(), "\n\t---------> {}:{}", "响应参数", text);
+        S t= JSON.parseObject(text, tClass);
+        // ------解密ending---------
         if (ObjectUtils.isEmpty(t)) {
         if (ObjectUtils.isEmpty(t)) {
             throw new SystemException("请求失败");
             throw new SystemException("请求失败");
         }
         }
@@ -110,7 +141,7 @@ public class HuaTaiRequestApiComponents {
      *            常规
      *            常规
      */
      */
     private <Q extends HuaTaiBaseRequest, S extends HuaTaiBaseResponse> S routineRequest(Q request, Class<S> tClass, boolean verify, String urlInterface) {
     private <Q extends HuaTaiBaseRequest, S extends HuaTaiBaseResponse> S routineRequest(Q request, Class<S> tClass, boolean verify, String urlInterface) {
-        return request(request, tClass, verify, properties.getUrl(), urlInterface);
+        return request(request, tClass, verify, properties.getBaseUrl(), urlInterface);
     }
     }
 
 
     /**
     /**
@@ -119,7 +150,7 @@ public class HuaTaiRequestApiComponents {
      *            影像
      *            影像
      */
      */
     private <Q extends HuaTaiBaseRequest, S extends HuaTaiBaseResponse> void imageRequest(Q request, Class<S> tClass, boolean verify) {
     private <Q extends HuaTaiBaseRequest, S extends HuaTaiBaseResponse> void imageRequest(Q request, Class<S> tClass, boolean verify) {
-        request(request, tClass, verify, properties.getUrl(), "");
+        request(request, tClass, verify, properties.getBaseUrl(), "");
     }
     }
 
 
     /**
     /**
@@ -128,7 +159,7 @@ public class HuaTaiRequestApiComponents {
      *            短信
      *            短信
      */
      */
     private <Q extends HuaTaiBaseRequest, S extends HuaTaiBaseResponse> S smsRequest(Q request, Class<S> tClass, boolean verify) {
     private <Q extends HuaTaiBaseRequest, S extends HuaTaiBaseResponse> S smsRequest(Q request, Class<S> tClass, boolean verify) {
-        return request(request, tClass, verify, properties.getSmsUrl(), "");
+        return request(request, tClass, verify, properties.getBaseUrl(), "");
     }
     }
 
 
 
 
@@ -151,35 +182,47 @@ public class HuaTaiRequestApiComponents {
     /**
     /**
      * 提交核保 传入投保单必要信息,对投保单进行审核
      * 提交核保 传入投保单必要信息,对投保单进行审核
      */
      */
-/*    public SubmitResponse submit(SubmitRequest request, Class<SubmitResponse> tClass) {
-        request.setCallbackUrl(properties.getCallbackDomain() + properties.getCallbackUrl());
-        request.setPageUrl(properties.getPageUrl());
-        request.setPassMsgUrl(properties.getCallbackDomain() + properties.getPassMsgUrl());
+    public HuaTaiSubmitResponse submit(HuaTaiSubmitRequest request, Class<HuaTaiSubmitResponse> tClass) {
         return routineRequest(request, tClass, false, "");
         return routineRequest(request, tClass, false, "");
-    }*/
+    }
 
 
     /**
     /**
      * 上传影像 传入订单信息,查询是否生成保单成功
      * 上传影像 传入订单信息,查询是否生成保单成功
      */
      */
-    public void uploadImage(UploadImageRequest request, Class<UploadImageResponse> tClass) {
-      //  imageRequest(request, tClass, true);
+ /*   public void uploadImage(UploadImageRequest request, Class<UploadImageResponse> tClass) {
+        //  imageRequest(request, tClass, true);
+    }
+*/
+
+    /**
+     * 缴费查询
+     */
+    public HuaTaiOrderStatusResponse orderStatus(HuaTaiOrderStatusRequest request, Class<HuaTaiOrderStatusResponse> tClass) {
+        return routineRequest(request, tClass, true, "");
     }
     }
 
 
 
 
+    /**
+     * 缴费查询
+     */
+    public HuaTaiPaymentUrlResponse getPaymentUrl(HuaTaiPaymentUrlRequest request, Class<HuaTaiPaymentUrlResponse> tClass) {
+        return routineRequest(request, tClass, true, "");
+    }
+
     /**
     /**
      * 核保状态查询 传入单号查询该单核保状态
      * 核保状态查询 传入单号查询该单核保状态
      */
      */
-/*    public SubmitStatusQueryResponse submitStatus(SubmitStatusQueryRequest request, Class<SubmitStatusQueryResponse> tClass) {
+    public HuaTaiSubmitStatusQueryResponse submitStatus(HuaTaiSubmitStatusQueryRequest request, Class<HuaTaiSubmitStatusQueryResponse> tClass) {
         return routineRequest(request, tClass, true, TransCode.SUBMIT_STATUS);
         return routineRequest(request, tClass, true, TransCode.SUBMIT_STATUS);
-    }*/
+    }
 
 
 
 
     /**
     /**
      * 电子保单下载 传入单号相关信息下载电子保单
      * 电子保单下载 传入单号相关信息下载电子保单
      */
      */
-/*    public InsurancePolicyPrintResponse insurancePolicyPrint(InsurancePolicyPrintRequest request, Class<InsurancePolicyPrintResponse> tClass) {
+    public HuaTaiInsurancePolicyPrintResponse insurancePolicyPrint(HuaTaiInsurancePolicyPrintRequest request, Class<HuaTaiInsurancePolicyPrintResponse> tClass) {
         return routineRequest(request, tClass, true, "");
         return routineRequest(request, tClass, true, "");
-    }*/
+    }
 
 
 
 
     public <T extends HuaTaiBaseResponse> void validationResults(T t) {
     public <T extends HuaTaiBaseResponse> void validationResults(T t) {
@@ -193,4 +236,20 @@ public class HuaTaiRequestApiComponents {
         }
         }
     }
     }
 
 
+
+    /**
+     * 生成对应长度的随机字符串
+     * @param length
+     * @return
+     */
+    private static   String generateRadomStr(int length) {
+        SecureRandom random = new SecureRandom();
+        byte[] bytes = new byte[length];
+        random.nextBytes(bytes);
+        StringBuilder sb = new StringBuilder();
+        for (byte b : bytes) {
+            sb.append(String.format("%02x", b));
+        }
+        return sb.toString();
+    }
 }
 }

+ 9 - 2
src/main/java/com/ydtech/modules/order/controller/HuaTaiOrderApiController.java

@@ -61,11 +61,11 @@ public class HuaTaiOrderApiController {
         return this.huaTaiOrderApiService.audit(companyId);
         return this.huaTaiOrderApiService.audit(companyId);
     }
     }
 
 
-    @PostMapping(value = "/submitImage")
+/*    @PostMapping(value = "/submitImage")
     @ApiOperation(value = "提交影像信息")
     @ApiOperation(value = "提交影像信息")
     public HttpResult<Object> submitImage(@RequestSingleParam(value = "companyId") String companyId) {
     public HttpResult<Object> submitImage(@RequestSingleParam(value = "companyId") String companyId) {
         return this.huaTaiOrderApiService.submitImage(companyId);
         return this.huaTaiOrderApiService.submitImage(companyId);
-    }
+    }*/
 
 
     @PostMapping("/getPolicyPrint")
     @PostMapping("/getPolicyPrint")
     @ApiOperation(value = "电子保单")
     @ApiOperation(value = "电子保单")
@@ -84,4 +84,11 @@ public class HuaTaiOrderApiController {
     public HttpResult<Object> auditStatusQuery(@RequestSingleParam(value = "companyId") String companyId) {
     public HttpResult<Object> auditStatusQuery(@RequestSingleParam(value = "companyId") String companyId) {
         return this.huaTaiOrderApiService.auditStatusQuery(companyId);
         return this.huaTaiOrderApiService.auditStatusQuery(companyId);
     }
     }
+
+    @PostMapping("/getPaymentUrl")
+    @ApiOperation(value = "支付码获取")
+    public HttpResult<Object> getPaymentUrl(@RequestSingleParam(value = "companyId") String companyId) {
+        return this.huaTaiOrderApiService.getPaymentUrl(companyId);
+    }
+
 }
 }

+ 25 - 0
src/main/java/com/ydtech/modules/order/entity/api/huatai/HuaTaiEncryptReq.java

@@ -0,0 +1,25 @@
+package com.ydtech.modules.order.entity.api.huatai;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+public class HuaTaiEncryptReq {
+    //合作方代码,由华泰分配
+    @JsonProperty(value = "insuredCode")
+    private String insuredCode;
+
+    //系统来源代码,由华泰分配
+    @JsonProperty(value = "sourceCode")
+    private String sourceCode;
+
+    //业务数据加密串
+    @JsonProperty(value = "busiContent")
+    private String busiContent;
+
+    //请求令牌
+    @JsonProperty(value = "accessToken")
+    private String accessToken;
+
+
+}

+ 25 - 0
src/main/java/com/ydtech/modules/order/entity/api/huatai/HuaTaiEncryptRes.java

@@ -0,0 +1,25 @@
+package com.ydtech.modules.order.entity.api.huatai;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+public class HuaTaiEncryptRes {
+    //合作方代码,由华泰分配
+    @JsonProperty(value = "insuredCode")
+    private String insuredCode;
+
+    //系统来源代码,由华泰分配
+    @JsonProperty(value = "sourceCode")
+    private String sourceCode;
+
+    //业务数据加密串
+    @JsonProperty(value = "busiContent")
+    private String busiContent;
+
+    //请求令牌
+    @JsonProperty(value = "accessToken")
+    private String accessToken;
+
+
+}

+ 48 - 0
src/main/java/com/ydtech/modules/order/entity/api/huatai/constants/TransCode.java

@@ -0,0 +1,48 @@
+package com.ydtech.modules.order.entity.api.huatai.constants;
+
+/**
+ * @description 交互代码
+ */
+public class TransCode {
+
+    private TransCode() {
+        throw new IllegalStateException("Utility class");
+    }
+
+    //车型查询
+    public static final String MODELS_QUERY = "ModelsQuery";
+
+    //报价
+    public static final String QUOTE_PRICE = "QuotedPrice";
+
+    //提交核保
+    public static final String SUBMIT = "Submit";
+
+    //缴费查询
+    public static final String ORDER_STATUS = "OrderStatus";
+
+    //投保单核保状态查询
+    public static final String SUBMIT_STATUS_QUERY = "SubmitStatusQuery";
+
+    // 投保单核保状态 url 参数
+    public static final String SUBMIT_STATUS = "SubmitStatus";
+
+    //电子保单下载
+    public static final String INSURANCE_POLICY_PRINT = "InsurancePolicyPrint";
+
+    //影像上传
+    public static final String UPLOAD_IMAGE = "UploadImage";
+
+    //校验是否发送短信验证码
+    public static final String CHECK_SMS_CODE = "CheckSMScode";
+
+    //校验验证码是否正确
+    public static final String VALID_SMS_CODE = "ValidSMScode";
+
+    //续保查询
+    public static final String RENEWAL_QUERY = "RenewalQuery";
+
+    // 非车可投保产品查询
+    public static final String Ride_Accident_Query = "RideAccidentQuery";
+
+}

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

@@ -0,0 +1,32 @@
+package com.ydtech.modules.order.entity.api.huatai.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequest;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequestHead;
+import com.ydtech.modules.order.entity.api.huatai.constants.TransCode;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class HuaTaiInsurancePolicyPrintRequest extends HuaTaiBaseRequest {
+
+    private static final long serialVersionUID = 693328322236736239L;
+
+    @Override
+    public void setHead(HuaTaiBaseRequestHead head) {
+        super.setHead(head);
+        super.getHead().setTransCode(TransCode.INSURANCE_POLICY_PRINT);
+    }
+
+    //报价单号
+    @JsonProperty("businessNo")
+    private List<String> businessNo;
+
+}

+ 44 - 0
src/main/java/com/ydtech/modules/order/entity/api/huatai/request/HuaTaiOrderStatusRequest.java

@@ -0,0 +1,44 @@
+package com.ydtech.modules.order.entity.api.huatai.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequest;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequestHead;
+import com.ydtech.modules.order.entity.api.huatai.constants.TransCode;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class HuaTaiOrderStatusRequest extends HuaTaiBaseRequest {
+
+    private static final long serialVersionUID = -4923735011853043030L;
+
+    @Override
+    public void setHead(HuaTaiBaseRequestHead head) {
+        super.setHead(head);
+        super.getHead().setTransCode(TransCode.ORDER_STATUS);
+    }
+
+    //支付交易号
+    @JsonProperty("poaCode")
+    private String poaCode;
+
+    //操作员代码
+    @JsonProperty("operatorCode")
+    private String operatorCode;
+
+    //机构代码
+    @JsonProperty("loginCom")
+    private String loginCom;
+
+    //报价单号(列表)
+    @JsonProperty("contractNo")
+    private List<String> contractNo;
+
+
+
+}

+ 46 - 0
src/main/java/com/ydtech/modules/order/entity/api/huatai/request/HuaTaiPaymentUrlRequest.java

@@ -0,0 +1,46 @@
+package com.ydtech.modules.order.entity.api.huatai.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequest;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequestHead;
+import com.ydtech.modules.order.entity.api.huatai.constants.TransCode;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class HuaTaiPaymentUrlRequest extends HuaTaiBaseRequest {
+
+
+    private static final long serialVersionUID = -7834182784008531579L;
+
+    @Override
+    public void setHead(HuaTaiBaseRequestHead head) {
+        super.setHead(head);
+        super.getHead().setTransCode(TransCode.ORDER_STATUS);
+    }
+
+    //操作员代码
+    @JsonProperty("operatorCode")
+    private String operatorCode;
+
+    //机构代码
+    @JsonProperty("loginCom")
+    private String loginCom;
+
+    //报价单号(列表)
+    @JsonProperty("contractNo")
+    private List<String> contractNo;
+
+    //请求类型(1-电子投保单确认及缴费短信、北京平台电子投保单短信)(确认传值规则)
+    @JsonProperty("flag")
+    private String flag;
+
+    //是否发送短信,1-是,0-否,当等于0时会返回电子投保单链接(当为北京电子投保单短信时该短信由平台发送,所以必传1)
+    @JsonProperty("sendMessageFlag")
+    private String sendMessageFlag;
+}

+ 337 - 0
src/main/java/com/ydtech/modules/order/entity/api/huatai/request/HuaTaiSubmitRequest.java

@@ -0,0 +1,337 @@
+package com.ydtech.modules.order.entity.api.huatai.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequest;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequestHead;
+import com.ydtech.modules.order.entity.api.huatai.constants.TransCode;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class HuaTaiSubmitRequest extends HuaTaiBaseRequest  {
+
+    private static final long serialVersionUID = -3434101420731502321L;
+    @JsonProperty("businessData")
+    //投保单信息
+    private HuaTaiSubmitRequest.BusinessData businessData;
+
+    @Override
+    public void setHead(HuaTaiBaseRequestHead head) {
+        super.setHead(head);
+        super.getHead().setTransCode(TransCode.SUBMIT);
+    }
+
+    @AllArgsConstructor
+    @NoArgsConstructor
+    @Data
+    public static class BusinessData implements Serializable {
+
+        private static final long serialVersionUID = -4470540010039479454L;
+        // 投保主信息
+        @JsonProperty("businessMain")
+        private BusinessMain businessMain;
+        // 业务信息(列表)
+        @JsonProperty("contract")
+        private List<Contract> contract;
+        // 客户信息(列表)
+        @JsonProperty("customer")
+        private List<Customer> customer;
+        //  销售信息
+        @JsonProperty("saleInfo")
+        private SaleInfo saleInfo;
+
+    }
+
+    @AllArgsConstructor
+    @NoArgsConstructor
+    @Data
+    public static class BusinessMain implements Serializable{
+
+        private static final long serialVersionUID = -3901160212812740520L;
+        // 操作机构代码
+        @JsonProperty("makeCom")
+        private String makeCom;
+        // 操作员代码
+        @JsonProperty("operatorCode")
+        private String operatorCode;
+
+    }
+
+    @AllArgsConstructor
+    @NoArgsConstructor
+    @Data
+    public static class Contract implements Serializable{
+
+        private static final long serialVersionUID = 2452110821283897129L;
+        // 业务主信息
+        @JsonProperty("contractMain")
+        private ContractMain contractMain;
+        // 平台交互信息
+        @JsonProperty("platFormMessage")
+        private PlatFormMessage platFormMessage;
+
+    }
+
+    @AllArgsConstructor
+    @NoArgsConstructor
+    @Data
+    public static class ContractMain implements Serializable{
+
+        private static final long serialVersionUID = -827498526562322815L;
+        //报价单号(需传入报价接口返回的值)
+        @JsonProperty("contractNo")
+        private String contractNo;
+        //参见险种代码
+        @JsonProperty("riskCode")
+        private String riskCode;
+        //起保日期(YYYY-MM-DD HH24:MI:SS)
+        @JsonProperty("validDate")
+        private String validDate;
+        //终保日期(YYYY-MM-DD HH24:MI:SS)
+        @JsonProperty("expiryDate")
+        private String expiryDate;
+        //总签单保费
+        @JsonProperty("totalPremium")
+        private String totalPremium;
+        //备注
+        @JsonProperty("remark")
+        private String remark;
+    }
+
+    @AllArgsConstructor
+    @NoArgsConstructor
+    @Data
+    public static class PlatFormMessage implements Serializable{
+
+        private static final long serialVersionUID = 7957269957188794595L;
+        // 业务主信息
+        @JsonProperty("querySequenceNo")
+        private String querySequenceNo;
+    }
+
+    @AllArgsConstructor
+    @NoArgsConstructor
+    @Data
+    public static class Customer implements Serializable{
+
+        private static final long serialVersionUID = 3423549173956690508L;
+        //证件号码(个人客户必传)
+        @JsonProperty("identifyNumber")
+        private String identifyNumber;
+        //组织机构代码(机构客户必录
+        @JsonProperty("organizeCode")
+        private String organizeCode;
+        //参见客户证件类型代码
+        @JsonProperty("identifyType")
+        private String identifyType;
+        //客户名称
+        @JsonProperty("name")
+        private String name;
+        //客户角色身份(1-投保人;2-被保险人;3-车主)
+        @JsonProperty("role")
+        private String role;
+        //手机号码
+        @JsonProperty("mobile")
+        private String mobile;
+        //证件有效起期(格式:YYYY-MM-DD HH24:MI:SS)
+        @JsonProperty("identifyValidDate")
+        private String identifyValidDate;
+        //证件有效止期(格式:YYYY-MM-DD HH24:MI:SS)
+        @JsonProperty("identifyValidEndDate")
+        private String identifyValidEndDate;
+        //客户职业(传值要求通过职业查询接口获得)
+        @JsonProperty("occupationCode")
+        private String occupationCode;
+        //客户类型(1-个人,2-机构)
+        @JsonProperty("type")
+        private String type;
+        //车辆与被保险人所属关系(1-所有;2-使用;3-管理)
+        @JsonProperty("carInsuredRelation")
+        private String carInsuredRelation;
+        //参见投保人与被保人关系代码(投保人和被保人均为个人客户时必传)
+        @JsonProperty("aiRelation")
+        private String aiRelation;
+        //客户地址
+        @JsonProperty("addr")
+        private String addr;
+        //客户邮箱
+        @JsonProperty("email")
+        private String email;
+        //客户地址(省)代码(江西必传)
+        @JsonProperty("Province")
+        private String province;
+        //客户地址(省)名称(江西必传)
+        @JsonProperty("ProvinceName")
+        private String provinceName;
+        //客户地址(市)代码(江西必传)
+        @JsonProperty("City")
+        private String city;
+        //客户地址(市)名称(江西必传)
+        @JsonProperty("CityName")
+        private String cityName;
+        //客户地址(区)代码(江西必传)
+        @JsonProperty("District")
+        private String district;
+        //客户地址(区)名称(江西必传)
+        @JsonProperty("DistrictName")
+        private String districtName;
+        //手机实际持有人姓名(上海出单必录)
+        @JsonProperty("ActualHolderName")
+        private String actualHolderName;
+        //手机实际持有人证件类型(上海出单必录)(参见客户证件类型代码)
+        @JsonProperty("ActualHolderIdentifyType")
+        private String actualHolderIdentifyType;
+        //手机实际持有人证件号码(上海出单必录)
+        @JsonProperty("ActualHolderIdentifyCode")
+        private String actualHolderIdentifyCode;
+        //参见企业经办人类别代码(上海机构客户出单必录)
+        @JsonProperty("transactorType")
+        private String transactorType;
+        //营业性质/主要业务范围(机构客户必录)
+        @JsonProperty("businessDetail")
+        private String businessDetail;
+        //参见行业代码(机构客户必传)
+        @JsonProperty("BusinessSource")
+        private String businessSource;
+        //参见国籍代码
+        @JsonProperty("CitizenshipCode")
+        private String citizenshipCode;
+        //参见股权结构(机构客户必传)
+        @JsonProperty("EquityStructure")
+        private String equityStructure;
+        //法定代表人姓名(机构客户必传)
+        @JsonProperty("leaderName")
+        private String leaderName;
+        //法定代表人姓名其他身份证明号码(机构客户必传)
+        @JsonProperty("leaderIdentifyNumber")
+        private String leaderIdentifyNumber;
+        //法定代表人姓名其他身份证明种类(机构客户必传)(参见客户证件类型代码)
+        @JsonProperty("leaderOtherIdentifyType")
+        private String leaderOtherIdentifyType;
+        //法定代表人姓名其他身份证明号码(机构客户必传)
+        @JsonProperty("leaderOtherIdentifyNumber")
+        private String leaderOtherIdentifyNumber;
+        //法定代表人姓名其他身份证明有效期(机构客户必传)
+        @JsonProperty("leaderOtherEffectiveDate")
+        private String leaderOtherEffectiveDate;
+        //注册所在地代码(机构客户必传)(参见注册所在地代码)
+        @JsonProperty("nationalityCode")
+        private String nationalityCode;
+        //注册资本金币种(机构客户必传)
+        @JsonProperty("registCurrency")
+        private String registCurrency;
+        //注册资本金(机构客户必传)
+        @JsonProperty("registFund")
+        private String registFund;
+        //税务号(机构客户必传)
+        @JsonProperty("RevenueCode")
+        private String revenueCode;
+        //参见反洗钱交易监测记录
+        @JsonProperty("MonitorRecord")
+        private String monitorRecord;
+        //参见风险提示信息或权威媒体报道
+        @JsonProperty("RiskWarnInfo")
+        private String riskWarnInfo;
+        //执照、证明名称(机构客户必传)
+        @JsonProperty("supportDocuName")
+        private String supportDocuName;
+        //执照、证明号码(机构客户必传)
+        @JsonProperty("supportDocuNumber")
+        private String supportDocuNumber;
+        //执照、证明有效期(机构客户必传)
+        @JsonProperty("supportDocuValidDate")
+        private String supportDocuValidDate;
+        //办理人姓名(机构客户必传)
+        @JsonProperty("TransactorName")
+        private String transactorName;
+        //办理人证件类型代码(机构客户必传)(参见客户证件类型代码)
+        @JsonProperty("transactorIdentifyType")
+        private String transactorIdentifyType;
+        //办理人证件号码(机构客户必传)
+        @JsonProperty("transactorIdentifyCode")
+        private String transactorIdentifyCode;
+        //办理人手机号码(机构客户必传)
+        @JsonProperty("transactorMobile")
+        private String transactorMobile;
+        //办理人证件有效期(机构客户必传)
+        @JsonProperty("transactorExpiryDate")
+        private String transactorExpiryDate;
+        //工作单位名称(个人客户必传)
+        @JsonProperty("workUnit")
+        private String workUnit;
+        //工作单位地址(个人客户必传)
+        @JsonProperty("workAddress")
+        private String workAddress;
+        //其他联系方式(个人客户必传)
+        @JsonProperty("otherContact")
+        private String otherContact;
+        //其他住所地或工作单位地址(个人客户必传)
+        @JsonProperty("otherWorkAddress")
+        private String otherWorkAddress;
+        //联系人信息
+        @JsonProperty("contact")
+        private List<Contact> contact;
+
+    }
+
+
+
+    @AllArgsConstructor
+    @NoArgsConstructor
+    @Data
+    public static class Contact implements Serializable{
+
+        private static final long serialVersionUID = -7819712018066777471L;
+        // 联系人名称
+        @JsonProperty("linkName")
+        private String linkName;
+        // 联系人关联关系
+        @JsonProperty("related")
+        private String related;
+        // 电话
+        @JsonProperty("mobile")
+        private String mobile;
+        // 邮箱(电子保单必传)
+        @JsonProperty("email")
+        private String email;
+        // 单位电话(机构客户出单必传)
+        @JsonProperty("tel")
+        private String tel;
+        // 省(需传省国标码)
+        @JsonProperty("province")
+        private String province;
+        // 市(需传市国标码)
+        @JsonProperty("city")
+        private String city;
+        // 区(需传区国标码)
+        @JsonProperty("district")
+        private String district;
+        // 地址
+        @JsonProperty("street")
+        private String street;
+
+    }
+
+    @AllArgsConstructor
+    @NoArgsConstructor
+    @Data
+    public static class SaleInfo implements Serializable{
+
+        private static final long serialVersionUID = 2631084372177408934L;
+        // 操作机构代码
+        @JsonProperty("agentCode")
+        private String agentCode;
+        // 操作员代码
+        @JsonProperty("agreementNo")
+        private String agreementNo;
+
+    }
+
+}

+ 59 - 0
src/main/java/com/ydtech/modules/order/entity/api/huatai/request/HuaTaiSubmitStatusQueryRequest.java

@@ -0,0 +1,59 @@
+package com.ydtech.modules.order.entity.api.huatai.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequest;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequestHead;
+import com.ydtech.modules.order.entity.api.huatai.constants.TransCode;
+import com.ydtech.modules.order.entity.api.huatai.response.HuaTaiSubmitResponse;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class HuaTaiSubmitStatusQueryRequest extends HuaTaiBaseRequest {
+
+    private static final long serialVersionUID = -7392787547004524723L;
+    @Override
+    public void setHead(HuaTaiBaseRequestHead head) {
+        super.setHead(head);
+        super.getHead().setTransCode(TransCode.SUBMIT_STATUS_QUERY);
+    }
+    //机构代码
+    @JsonProperty("loginCom")
+    private String loginCom;
+
+    //操作员代码
+    @JsonProperty("userCode")
+    private String userCode;
+
+    //操作类型代码(1-提交核保;2-查询核保状态)
+    @JsonProperty("operateType")
+    private String operateType;
+
+    //业务信息(列表)
+    @JsonProperty("contractMain")
+    private List<ContractMain> contractMain;
+
+    @AllArgsConstructor
+    @NoArgsConstructor
+    @Data
+    public static class ContractMain implements Serializable {
+
+        private static final long serialVersionUID = -3342176430111587267L;
+        // 业务类型(2-投保)
+        @JsonProperty("businessType")
+        private String businessType;
+        // 报价单号
+        @JsonProperty("contractNo")
+        private String contractNo;
+        // 备注
+        @JsonProperty("remark")
+        private String remark;
+    }
+}

+ 16 - 0
src/main/java/com/ydtech/modules/order/entity/api/huatai/response/HuaTaiInsurancePolicyPrintResponse.java

@@ -0,0 +1,16 @@
+package com.ydtech.modules.order.entity.api.huatai.response;
+
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseResponse;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class HuaTaiInsurancePolicyPrintResponse extends HuaTaiBaseResponse {
+
+    private static final long serialVersionUID = -2403785562994746282L;
+
+
+}

+ 67 - 0
src/main/java/com/ydtech/modules/order/entity/api/huatai/response/HuaTaiOrderStatusResponse.java

@@ -0,0 +1,67 @@
+package com.ydtech.modules.order.entity.api.huatai.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseResponse;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class HuaTaiOrderStatusResponse extends HuaTaiBaseResponse {
+
+    private static final long serialVersionUID = -6936454122163983823L;
+
+    //支付明细
+    @JsonProperty("payDetaiList")
+    private List<PayDetaiList> payDetaiList;
+
+    //支付交易号
+    @JsonProperty("poaCode")
+    private String poaCode;
+
+    //POS交易流水号
+    @JsonProperty("transSerialNo")
+    private String transSerialNo;
+
+    @AllArgsConstructor
+    @NoArgsConstructor
+    @Data
+    public static class PayDetaiList implements Serializable {
+
+        private static final long serialVersionUID = -8143740622862273324L;
+
+        // 报价单号
+        @JsonProperty("bUSINESSNO")
+        private String bUSINESSNO;
+
+        // 失败原因
+        @JsonProperty("fAILREASON")
+        private String fAILREASON;
+
+        // 失败原因代码
+        @JsonProperty("fAILREASONCODE")
+        private String fAILREASONCODE;
+
+        // 车牌号
+        @JsonProperty("lICENSENO")
+        private String lICENSENO;
+
+        // 保单号
+        @JsonProperty("pOLICYNO")
+        private String pOLICYNO;
+
+        // 保单状态(0-生成失败;1-生成成功)
+        @JsonProperty("pOLICYSTATUS")
+        private String pOLICYSTATUS;
+
+        // 平台确认结果(0-失败;1-成功)
+        @JsonProperty("vALUEFLAG")
+        private String vALUEFLAG;
+    }
+}

+ 51 - 0
src/main/java/com/ydtech/modules/order/entity/api/huatai/response/HuaTaiPaymentUrlResponse.java

@@ -0,0 +1,51 @@
+package com.ydtech.modules.order.entity.api.huatai.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseResponse;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class HuaTaiPaymentUrlResponse extends HuaTaiBaseResponse {
+
+
+    private static final long serialVersionUID = 5666208696137342547L;
+    //短信发送结果(列表)
+    @JsonProperty("business")
+    private List<Business> business;
+
+    //电子投保单分享链接
+    @JsonProperty("messageUrl")
+    private String messageUrl;
+
+    //支付链接
+    @JsonProperty("payUrl")
+    private String payUrl;
+
+    @AllArgsConstructor
+    @NoArgsConstructor
+    @Data
+    public static class Business implements Serializable {
+
+
+        private static final long serialVersionUID = -8961738850484356502L;
+        // 报价单号--投保单改为报价单
+        @JsonProperty("businessNo")
+        private String businessNo;
+
+        // 手机实名校验信息(确认字段含义)
+        @JsonProperty("phoneRealNameMsg")
+        private String phoneRealNameMsg;
+
+        // 短信发送结果(1-发送成功)
+        @JsonProperty("validStatus")
+        private String validStatus;
+    }
+}

+ 56 - 0
src/main/java/com/ydtech/modules/order/entity/api/huatai/response/HuaTaiSubmitResponse.java

@@ -0,0 +1,56 @@
+package com.ydtech.modules.order.entity.api.huatai.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseResponse;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class HuaTaiSubmitResponse extends HuaTaiBaseResponse {
+
+    private static final long serialVersionUID = -9202263577023791996L;
+    //合同列表
+    @JsonProperty("appliResult")
+    private List<AppliResult> appliResult;
+
+    @AllArgsConstructor
+    @NoArgsConstructor
+    @Data
+    public static class AppliResult implements Serializable {
+
+        private static final long serialVersionUID = 1316555402908705455L;
+        // 报价单号
+        @JsonProperty("contractNo")
+        private String contractNo;
+        // 审核列表
+        @JsonProperty("notion")
+        private List<Notion> notion;
+        // 参见核保状态代码
+        @JsonProperty("status")
+        private String status;
+    }
+
+    @AllArgsConstructor
+    @NoArgsConstructor
+    @Data
+    public static class Notion implements Serializable{
+
+        private static final long serialVersionUID = 9128291340725273264L;
+        // 审核意见
+        @JsonProperty("uWNotion")
+        private String uWNotion;
+        // 处理方式
+        @JsonProperty("uWResult")
+        private String uWResult;
+        // 业务类型
+        @JsonProperty("uWType")
+        private String uWType;
+    }
+}

+ 53 - 0
src/main/java/com/ydtech/modules/order/entity/api/huatai/response/HuaTaiSubmitStatusQueryResponse.java

@@ -0,0 +1,53 @@
+package com.ydtech.modules.order.entity.api.huatai.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseResponse;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class HuaTaiSubmitStatusQueryResponse extends HuaTaiBaseResponse {
+
+    private static final long serialVersionUID = -6129730334128896865L;
+
+    //处理结果
+    @JsonProperty("appliResult")
+    private List<AppliResult> appliResult;
+
+    @AllArgsConstructor
+    @NoArgsConstructor
+    @Data
+    public static class AppliResult implements Serializable {
+
+        private static final long serialVersionUID = 1316555402908705455L;
+        // 报价单号
+        @JsonProperty("contractNo")
+        private String contractNo;
+        // 核保信息
+        @JsonProperty("notion")
+        private List<Notion> notion;
+        // 应收金额汇总(含税)
+        @JsonProperty("planFee")
+        private String planFee;
+        // 核保状态代码(操作类型为1); 审核状态代码(操作类型为2)
+        @JsonProperty("underWriteFlag")
+        private String underWriteFlag;
+    }
+
+    @AllArgsConstructor
+    @NoArgsConstructor
+    @Data
+    public static class Notion implements Serializable{
+
+        private static final long serialVersionUID = 5564787089656009500L;
+        // 核保信息
+        @JsonProperty("uWNotion")
+        private String uWNotion;
+    }
+}

+ 7 - 0
src/main/java/com/ydtech/modules/order/service/HuaTaiOrderApiService.java

@@ -42,4 +42,11 @@ public interface HuaTaiOrderApiService extends BaseOrderService<AccidentalDrivin
      */
      */
     HttpResult<Object> auditStatusQuery(String companyId);
     HttpResult<Object> auditStatusQuery(String companyId);
 
 
+    /**
+     * 获取支付链接(电子投保单确认及缴费短信发送接口)
+     * @param companyId
+     * @return
+     */
+    HttpResult<Object> getPaymentUrl(String companyId);
+
 }
 }

+ 118 - 103
src/main/java/com/ydtech/modules/order/service/impl/HuaTaiOrderApiServiceImpl.java

@@ -1,56 +1,38 @@
 package com.ydtech.modules.order.service.impl;
 package com.ydtech.modules.order.service.impl;
 
 
-import cn.hutool.core.util.ArrayUtil;
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
-import com.ydtech.components.ZhongmeiRequestComponents;
 import com.ydtech.constants.enums.InsuranceRisk;
 import com.ydtech.constants.enums.InsuranceRisk;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.fee.service.FeeRuleSchemeService;
 import com.ydtech.modules.fee.service.FeeRuleSchemeService;
-import com.ydtech.modules.ins.model.request.Response;
 import com.ydtech.modules.ins.model.vo.*;
 import com.ydtech.modules.ins.model.vo.*;
-import com.ydtech.modules.ins.model.ya.CarModelDTO;
-import com.ydtech.modules.ins.model.zm.ZmCarModel;
 import com.ydtech.modules.order.components.ConfigureParametersComponents;
 import com.ydtech.modules.order.components.ConfigureParametersComponents;
-import com.ydtech.modules.order.components.ZhongmeiRequestApiComponents;
 import com.ydtech.modules.order.components.huatai.HuaTaiRequestApiComponents;
 import com.ydtech.modules.order.components.huatai.HuaTaiRequestApiComponents;
-import com.ydtech.modules.order.components.zhongmei.ZhongmeiRepeatInsuranceComponents;
 import com.ydtech.modules.order.constants.InsuranceTypeCorrespondence;
 import com.ydtech.modules.order.constants.InsuranceTypeCorrespondence;
-import com.ydtech.modules.order.convert.SimpleStadarCarDTOConvert;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.InsOrders;
-import com.ydtech.modules.order.entity.TaxArrears;
 import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequestHead;
 import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequestHead;
 import com.ydtech.modules.order.entity.api.huatai.request.HuaTaiQuotedPriceRequest;
 import com.ydtech.modules.order.entity.api.huatai.request.HuaTaiQuotedPriceRequest;
 import com.ydtech.modules.order.entity.api.huatai.response.HuaTaiQuotedPriceResponse;
 import com.ydtech.modules.order.entity.api.huatai.response.HuaTaiQuotedPriceResponse;
-import com.ydtech.modules.order.entity.api.zhongmei.BaseRequestHead;
-import com.ydtech.modules.order.entity.api.zhongmei.constants.enums.AuditStatusEnum;
-import com.ydtech.modules.order.entity.api.zhongmei.constants.enums.DocumentTypeEnum;
-import com.ydtech.modules.order.entity.api.zhongmei.constants.enums.PaymentStatusEnum;
-import com.ydtech.modules.order.entity.api.zhongmei.constants.enums.SubmitStatus;
-import com.ydtech.modules.order.entity.api.zhongmei.request.*;
-import com.ydtech.modules.order.entity.api.zhongmei.response.*;
+import com.ydtech.modules.order.entity.api.huatai.request.*;
+import com.ydtech.modules.order.entity.api.huatai.response.*;
+import com.ydtech.modules.order.entity.api.zhongmei.request.ModelsQueryRequest;
+import com.ydtech.modules.order.entity.api.zhongmei.response.ModelsQueryResponse;
 import com.ydtech.modules.order.entity.config.HuaTaiConfigureParameters;
 import com.ydtech.modules.order.entity.config.HuaTaiConfigureParameters;
 import com.ydtech.modules.order.entity.config.ZmConfigureParameters;
 import com.ydtech.modules.order.entity.config.ZmConfigureParameters;
 import com.ydtech.modules.order.entity.filter.CarModelsFilterUtils;
 import com.ydtech.modules.order.entity.filter.CarModelsFilterUtils;
-import com.ydtech.modules.order.entity.po.InsTaskImagesBase64;
 import com.ydtech.modules.order.entity.vo.*;
 import com.ydtech.modules.order.entity.vo.*;
 import com.ydtech.modules.order.service.*;
 import com.ydtech.modules.order.service.*;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
 import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
-import com.ydtech.utils.CalculateUtils;
 import com.ydtech.utils.baidu.FileUtil;
 import com.ydtech.utils.baidu.FileUtil;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
-import org.springframework.util.ObjectUtils;
 
 
 import java.util.*;
 import java.util.*;
-import java.util.stream.Collectors;
 
 
 @Service
 @Service
 @Slf4j
 @Slf4j
@@ -120,9 +102,9 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
        // modelInquiry(carInfo.getModelcname(), simpleStadarCarDTOS);
        // modelInquiry(carInfo.getModelcname(), simpleStadarCarDTOS);
 
 
         // 2.2 过滤车型
         // 2.2 过滤车型
-        ModelsQueryResponse.SimpleStadarCarDTO simpleStadarCarDTO =
-                new CarModelsFilterUtils<ModelsQueryResponse.SimpleStadarCarDTO>().to(simpleStadarCarDTOS, carInfo);
-
+//        ModelsQueryResponse.SimpleStadarCarDTO simpleStadarCarDTO =
+//                new CarModelsFilterUtils<ModelsQueryResponse.SimpleStadarCarDTO>().to(simpleStadarCarDTOS, carInfo);
+        ModelsQueryResponse.SimpleStadarCarDTO simpleStadarCarDTO=new ModelsQueryResponse.SimpleStadarCarDTO();
         //座位数根据前端传入的赋值
         //座位数根据前端传入的赋值
         if(StringUtils.isNotEmpty(carInfo.getSeatCount())){
         if(StringUtils.isNotEmpty(carInfo.getSeatCount())){
             int seatCount = Integer.parseInt(carInfo.getSeatCount());
             int seatCount = Integer.parseInt(carInfo.getSeatCount());
@@ -139,34 +121,38 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
         return responseOrder(quotedPriceResponse, quoteRespVo, ptlAgreementAttribution);
         return responseOrder(quotedPriceResponse, quoteRespVo, ptlAgreementAttribution);
     }
     }
 
 
-
+    /**
+     * 转投保接口
+     * @param companyId 子订单号
+     * @return
+     */
     @Override
     @Override
     public HttpResult<Object> audit(String companyId) {
     public HttpResult<Object> audit(String companyId) {
         InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(companyId);
         InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(companyId);
         // 1. 协议id获取配置实体
         // 1. 协议id获取配置实体
-        ZmConfigureParameters zmConfigureParameters = configureParametersComponents.toEntity(ZmConfigureParameters.class, insAreaCompany.getAgreementId());
+        HuaTaiConfigureParameters huaTaiConfigureParameters = configureParametersComponents.toEntity(HuaTaiConfigureParameters.class, insAreaCompany.getAgreementId());
 
 
         InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
         InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
         JSONObject ownerinfo = insOrders.getApplyinfo();
         JSONObject ownerinfo = insOrders.getApplyinfo();
         CustomerInfoVo customerInfoVo = ownerinfo.toJavaObject(CustomerInfoVo.class);
         CustomerInfoVo customerInfoVo = ownerinfo.toJavaObject(CustomerInfoVo.class);
         // 2. 提交核保
         // 2. 提交核保
-        SubmitResponse response = submitForUnderwriting(insAreaCompany.getId(), insOrders.getFrameno(), customerInfoVo, zmConfigureParameters);
-        // 3. 人工核保
-        if (SubmitStatus.S_3.getCode().equals(response.getSubmitStatus())) {
-            insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
-            if(StringUtils.isNotEmpty(response.getSubmitNotion())){
-                insAreaCompany.setAuditopinion(response.getSubmitNotion());
-            }
-            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
-            return HttpResult.error(response.getSubmitNotion());
-        }
-       // huaTaiRequestApiComponents.validationResults(response);
-        // 4. 投保单号
-        insAreaCompany.setPaymentLink(response.getPayUrl());
-        insAreaCompany.setJqapplyno(response.getForceProposalNo());
-        insAreaCompany.setSyapplyno(response.getBizProposalNo());
-//        insAreaCompany.setJyapplyno(response.getAccidentProposalNo());
-        insAreaCompany.setInsOrderNo(response.getProposalNo());
+        HuaTaiSubmitResponse response = submitForUnderwriting(insAreaCompany.getId(), insOrders.getFrameno(), customerInfoVo, huaTaiConfigureParameters);
+//        // 3. 人工核保
+//        if (SubmitStatus.S_3.getCode().equals(response.getSubmitStatus())) {
+//            insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
+//            if(StringUtils.isNotEmpty(response.getSubmitNotion())){
+//                insAreaCompany.setAuditopinion(response.getSubmitNotion());
+//            }
+//            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+//            return HttpResult.error(response.getSubmitNotion());
+//        }
+//       // huaTaiRequestApiComponents.validationResults(response);
+//        // 4. 投保单号
+//        insAreaCompany.setPaymentLink(response.getPayUrl());
+//        insAreaCompany.setJqapplyno(response.getForceProposalNo());
+//        insAreaCompany.setSyapplyno(response.getBizProposalNo());
+////        insAreaCompany.setJyapplyno(response.getAccidentProposalNo());
+//        insAreaCompany.setInsOrderNo(response.getProposalNo());
         insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
         insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
         insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
         insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
         return HttpResult.ok("核保成功");
         return HttpResult.ok("核保成功");
@@ -174,7 +160,7 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
 
 
     @Override
     @Override
     public HttpResult<Object> submitImage(String companyId) {
     public HttpResult<Object> submitImage(String companyId) {
-        InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(companyId);
+     /*   InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(companyId);
         // 1. 协议id获取配置实体
         // 1. 协议id获取配置实体
         ZmConfigureParameters zmConfigureParameters = configureParametersComponents.toEntity(ZmConfigureParameters.class, insAreaCompany.getAgreementId());
         ZmConfigureParameters zmConfigureParameters = configureParametersComponents.toEntity(ZmConfigureParameters.class, insAreaCompany.getAgreementId());
 
 
@@ -188,55 +174,91 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
         }
         }
         UploadImageRequest request = new UploadImageRequest(insTaskImagesBase64s, insOrderNo);
         UploadImageRequest request = new UploadImageRequest(insTaskImagesBase64s, insOrderNo);
         request.setHead(new BaseRequestHead(zmConfigureParameters));
         request.setHead(new BaseRequestHead(zmConfigureParameters));
-        huaTaiRequestApiComponents.uploadImage(request, UploadImageResponse.class);
+        huaTaiRequestApiComponents.uploadImage(request, UploadImageResponse.class);*/
         return HttpResult.ok("上传文件成功");
         return HttpResult.ok("上传文件成功");
     }
     }
 
 
 
 
+    /**
+     * 缴费查询
+     * @param companyId 子订单号
+     * @return
+     */
     @Override
     @Override
     public HttpResult<Object> paymentEnquiry(String companyId) {
     public HttpResult<Object> paymentEnquiry(String companyId) {
         InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(companyId);
         InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(companyId);
 
 
         // 1. 协议id获取配置实体
         // 1. 协议id获取配置实体
-        ZmConfigureParameters zmConfigureParameters = configureParametersComponents.toEntity(ZmConfigureParameters.class, insAreaCompany.getAgreementId());
+        HuaTaiConfigureParameters huaTaiConfigureParameters = configureParametersComponents.toEntity(HuaTaiConfigureParameters.class, insAreaCompany.getAgreementId());
 
 
         if (insAreaCompany.getOrderstatus().equals(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode())) {
         if (insAreaCompany.getOrderstatus().equals(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode())) {
             return HttpResult.ok(InsOrderStatusEnum.ACCEPT_INSURANCE.getDesc());
             return HttpResult.ok(InsOrderStatusEnum.ACCEPT_INSURANCE.getDesc());
         }
         }
 
 
         // 2. 组装请求体
         // 2. 组装请求体
-        OrderStatusRequest orderStatusRequest = new OrderStatusRequest();
-        orderStatusRequest.setOrderNo(insAreaCompany.getId());
-        orderStatusRequest.setSubProposalNo(insAreaCompany.getInsOrderNo());
-        orderStatusRequest.setHead(new BaseRequestHead(zmConfigureParameters));
-
-        //OrderStatusResponse orderStatusResponse = huaTaiRequestApiComponents.orderStatus(orderStatusRequest, OrderStatusResponse.class);
-        OrderStatusResponse orderStatusResponse = null;
-        String status = orderStatusResponse.getStatus();
-
-        // 3. 承保成功修改状态
-        if (status.equals(String.valueOf(PaymentStatusEnum.P_2.getCode()))) {
-            insAreaCompany.setJqpolicyno(orderStatusResponse.getSubContractNoJ());
-            insAreaCompany.setSypolicyno(orderStatusResponse.getSubContractNoS());
-//            insAreaCompany.setJypolicyno(orderStatusResponse.getAccidentNo());
-            insAreaCompany.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
-            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+        HuaTaiOrderStatusRequest orderStatusRequest = new HuaTaiOrderStatusRequest();
+       /* orderStatusRequest.setOrderNo(insAreaCompany.getId());
+        orderStatusRequest.setSubProposalNo(insAreaCompany.getInsOrderNo());*/
+        orderStatusRequest.setHead(new HuaTaiBaseRequestHead(huaTaiConfigureParameters));
+
+        HuaTaiOrderStatusResponse orderStatusResponse = huaTaiRequestApiComponents.orderStatus(orderStatusRequest, HuaTaiOrderStatusResponse.class);
+//        String status = orderStatusResponse.getStatus();
+//
+//        // 3. 承保成功修改状态
+//        if (status.equals(String.valueOf(PaymentStatusEnum.P_2.getCode()))) {
+//            insAreaCompany.setJqpolicyno(orderStatusResponse.getSubContractNoJ());
+//            insAreaCompany.setSypolicyno(orderStatusResponse.getSubContractNoS());
+////            insAreaCompany.setJypolicyno(orderStatusResponse.getAccidentNo());
+//            insAreaCompany.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
+//            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+//
+//            return HttpResult.ok(PaymentStatusEnum.P_2.getMeaning());
+//        }
+//
+//        return HttpResult.error(Enum.valueOf(PaymentStatusEnum.class, "P_" + status).getMeaning());
+        return HttpResult.ok("");
+    }
+
+
+    /**
+     * 缴费查询
+     * @param companyId 子订单号
+     * @return
+     */
+    @Override
+    public HttpResult<Object> getPaymentUrl(String companyId) {
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(companyId);
+
+        // 1. 协议id获取配置实体
+        HuaTaiConfigureParameters huaTaiConfigureParameters = configureParametersComponents.toEntity(HuaTaiConfigureParameters.class, insAreaCompany.getAgreementId());
 
 
-            return HttpResult.ok(PaymentStatusEnum.P_2.getMeaning());
+        if (insAreaCompany.getOrderstatus().equals(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode())) {
+            return HttpResult.ok(InsOrderStatusEnum.ACCEPT_INSURANCE.getDesc());
         }
         }
 
 
-        return HttpResult.error(Enum.valueOf(PaymentStatusEnum.class, "P_" + status).getMeaning());
+        // 2. 组装请求体
+        HuaTaiPaymentUrlRequest orderStatusRequest = new HuaTaiPaymentUrlRequest();
+       /* orderStatusRequest.setOrderNo(insAreaCompany.getId());
+        orderStatusRequest.setSubProposalNo(insAreaCompany.getInsOrderNo());*/
+        orderStatusRequest.setHead(new HuaTaiBaseRequestHead(huaTaiConfigureParameters));
+        HuaTaiPaymentUrlResponse orderStatusResponse = huaTaiRequestApiComponents.getPaymentUrl(orderStatusRequest, HuaTaiPaymentUrlResponse.class);
+        return HttpResult.ok("");
     }
     }
 
 
+    /**
+     *电子保单下载接口
+     * @param policyPrintVo
+     * @return
+     */
     @Override
     @Override
     public HttpResult<List<String>> getPolicyPrint(PolicyPrintVo policyPrintVo) {
     public HttpResult<List<String>> getPolicyPrint(PolicyPrintVo policyPrintVo) {
         InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(policyPrintVo.getCompanyId());
         InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(policyPrintVo.getCompanyId());
         // 1. 协议id获取配置实体
         // 1. 协议id获取配置实体
-        ZmConfigureParameters zmConfigureParameters = configureParametersComponents.toEntity(ZmConfigureParameters.class, insAreaCompany.getAgreementId());
+        HuaTaiConfigureParameters huaTaiConfigureParameters = configureParametersComponents.toEntity(HuaTaiConfigureParameters.class, insAreaCompany.getAgreementId());
         InsOrders order = insOrdersService.getById(insAreaCompany.getOrderno());
         InsOrders order = insOrdersService.getById(insAreaCompany.getOrderno());
         String licensePlate = order.getLicenseno();
         String licensePlate = order.getLicenseno();
         String policyNo;
         String policyNo;
-        String code = DocumentTypeEnum.code(policyPrintVo.getType());
+  /*      String code = DocumentTypeEnum.code(policyPrintVo.getType());
         String riskCode = policyPrintVo.getRiskCode();
         String riskCode = policyPrintVo.getRiskCode();
         if (InsuranceRisk.TRAFFIC.getCode().equals(riskCode)) {
         if (InsuranceRisk.TRAFFIC.getCode().equals(riskCode)) {
             policyNo = insAreaCompany.getJqpolicyno();
             policyNo = insAreaCompany.getJqpolicyno();
@@ -244,17 +266,16 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
             policyNo = insAreaCompany.getJqpolicyno();
             policyNo = insAreaCompany.getJqpolicyno();
         } else {
         } else {
             throw new SystemException("险种代码不存在");
             throw new SystemException("险种代码不存在");
-        }
+        }*/
 
 
         // 2. 组装请求体
         // 2. 组装请求体
-        InsurancePolicyPrintRequest request = new InsurancePolicyPrintRequest();
-        request.setRiskCode(InsuranceTypeCorrespondence.getRisk().get(riskCode));
+        HuaTaiInsurancePolicyPrintRequest request = new HuaTaiInsurancePolicyPrintRequest();
+       /* request.setRiskCode(InsuranceTypeCorrespondence.getRisk().get(riskCode));
         request.setPolicyNo(policyNo);
         request.setPolicyNo(policyNo);
         request.setDocumentType(code);
         request.setDocumentType(code);
-        request.setHead(new BaseRequestHead(zmConfigureParameters));
-        //InsurancePolicyPrintResponse response = huaTaiRequestApiComponents.insurancePolicyPrint(request, InsurancePolicyPrintResponse.class);
-        InsurancePolicyPrintResponse response = null;
-        if("1".equals(response.getStatusCode())){
+        request.setHead(new BaseRequestHead(zmConfigureParameters));*/
+        HuaTaiInsurancePolicyPrintResponse response = huaTaiRequestApiComponents.insurancePolicyPrint(request, HuaTaiInsurancePolicyPrintResponse.class);
+      /*  if("1".equals(response.getStatusCode())){
             List<String> urlList = response.getDownloadUrl();
             List<String> urlList = response.getDownloadUrl();
 
 
             if(urlList!=null && !urlList.isEmpty()){
             if(urlList!=null && !urlList.isEmpty()){
@@ -276,8 +297,8 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
             }
             }
         }else{
         }else{
             return HttpResult.error("中煤电子保单生成失败,请重试或联系中煤!");
             return HttpResult.error("中煤电子保单生成失败,请重试或联系中煤!");
-        }
-        return HttpResult.ok("下载成功", response.getDownloadUrl());
+        }*/
+        return HttpResult.ok("下载成功"/*, response.getDownloadUrl()*/);
     }
     }
 
 
     public String gainCarInsPolicy(String url, String fileName, String licensePlate) {
     public String gainCarInsPolicy(String url, String fileName, String licensePlate) {
@@ -285,27 +306,17 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
         return FileUtil.netUrlToFile(url, dir, fileName, uploadFilePath, apiUrl + showFileUrl);
         return FileUtil.netUrlToFile(url, dir, fileName, uploadFilePath, apiUrl + showFileUrl);
     }
     }
     /**
     /**
-     * @param orderNo               中煤订单号
+     * @param orderNo               华泰订单号
      * @param frameNo               车架号
      * @param frameNo               车架号
      * @param customerInfoVo        车辆信息
      * @param customerInfoVo        车辆信息
-     * @param zmConfigureParameters 中煤配置参数
+     * @param huaTaiConfigureParameters 华泰配置参数
      * @return 核保请求参数
      * @return 核保请求参数
      */
      */
-    public SubmitResponse submitForUnderwriting(String orderNo, String frameNo, CustomerInfoVo customerInfoVo, ZmConfigureParameters zmConfigureParameters) {
-        SubmitRequest submitRequest = new SubmitRequest();
-        submitRequest.setBusinessNo(orderNo);
-        submitRequest.setVin(frameNo);
-        SubmitRequest.DeliveryInfoDTO deliveryInfoDTO = new SubmitRequest.DeliveryInfoDTO(customerInfoVo.getName(), customerInfoVo.getMobile(),
-                // 省
-                zmConfigureParameters.getProvince(),
-                // 市
-                zmConfigureParameters.getCity(),
-                // 县
-                zmConfigureParameters.getDistrict(), customerInfoVo.getAddr());
-        submitRequest.setDeliveryInfo(deliveryInfoDTO);
-        submitRequest.setHead(new BaseRequestHead(zmConfigureParameters));
-       // return huaTaiRequestApiComponents.submit(submitRequest, SubmitResponse.class);
-        return null;
+    public HuaTaiSubmitResponse submitForUnderwriting(String orderNo, String frameNo, CustomerInfoVo customerInfoVo, HuaTaiConfigureParameters huaTaiConfigureParameters) {
+        HuaTaiSubmitRequest submitRequest = new HuaTaiSubmitRequest();
+
+        submitRequest.setHead(new HuaTaiBaseRequestHead(huaTaiConfigureParameters));
+        return huaTaiRequestApiComponents.submit(submitRequest, HuaTaiSubmitResponse.class);
     }
     }
 
 
     public QuoteRespVo getQuoteRespVo(HuaTaiQuotedPriceResponse quotedPriceResponse, BaseQuoteInfoVo yaQuoteInfoVo) {
     public QuoteRespVo getQuoteRespVo(HuaTaiQuotedPriceResponse quotedPriceResponse, BaseQuoteInfoVo yaQuoteInfoVo) {
@@ -396,35 +407,39 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
         return HttpResult.ok(quotedPriceResponse.getHead().getReturnMessage(), quoteRespVo);
         return HttpResult.ok(quotedPriceResponse.getHead().getReturnMessage(), quoteRespVo);
     }
     }
 
 
+    /**
+     * 提交核保及查询核保状态接口
+     * @param companyId
+     * @return
+     */
     @Override
     @Override
     public HttpResult<Object> auditStatusQuery(String companyId) {
     public HttpResult<Object> auditStatusQuery(String companyId) {
         InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(companyId);
         InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(companyId);
         // 1. 协议id获取配置实体
         // 1. 协议id获取配置实体
-        ZmConfigureParameters zmConfigureParameters = configureParametersComponents.toEntity(ZmConfigureParameters.class, insAreaCompany.getAgreementId());
+        HuaTaiConfigureParameters huaTaiConfigureParameters = configureParametersComponents.toEntity(HuaTaiConfigureParameters.class, insAreaCompany.getAgreementId());
 
 
         if (insAreaCompany.getOrderstatus().equals(InsOrderStatusEnum.WAIT_PAY.getCode())) {
         if (insAreaCompany.getOrderstatus().equals(InsOrderStatusEnum.WAIT_PAY.getCode())) {
             return HttpResult.ok(InsOrderStatusEnum.WAIT_PAY.getDesc());
             return HttpResult.ok(InsOrderStatusEnum.WAIT_PAY.getDesc());
         }
         }
 
 
         // 2. 组装请求体
         // 2. 组装请求体
-        SubmitStatusQueryRequest submitStatusQueryRequest = new SubmitStatusQueryRequest();
-        submitStatusQueryRequest.setProposalNo(insAreaCompany.getInsOrderNo());
-        submitStatusQueryRequest.setHead(new BaseRequestHead(zmConfigureParameters));
-
-        //SubmitStatusQueryResponse submitStatusQueryResponse = huaTaiRequestApiComponents.submitStatus(submitStatusQueryRequest, SubmitStatusQueryResponse.class);
-        SubmitStatusQueryResponse submitStatusQueryResponse = null;
-        String underWriteInd = submitStatusQueryResponse.getUnderWriteInd();
+        HuaTaiSubmitStatusQueryRequest submitStatusQueryRequest = new HuaTaiSubmitStatusQueryRequest();
+//        submitStatusQueryRequest.setProposalNo(insAreaCompany.getInsOrderNo());
+        submitStatusQueryRequest.setHead(new HuaTaiBaseRequestHead(huaTaiConfigureParameters));
 
 
+        HuaTaiSubmitStatusQueryResponse submitStatusQueryResponse = huaTaiRequestApiComponents.submitStatus(submitStatusQueryRequest, HuaTaiSubmitStatusQueryResponse.class);
+//        String underWriteInd = submitStatusQueryResponse.getUnderWriteInd();
+        String underWriteInd="";
         // 3. 通过返回核保状态修改状态
         // 3. 通过返回核保状态修改状态
         if ("核保通过".equals(underWriteInd) || "自动核保".equals(underWriteInd)) {
         if ("核保通过".equals(underWriteInd) || "自动核保".equals(underWriteInd)) {
-            insAreaCompany.setPaymentLink(submitStatusQueryResponse.getPayUrl());
+//            insAreaCompany.setPaymentLink(submitStatusQueryResponse.getPayUrl());//需要调用接口获取支付链接
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());//当核保状态返回核保通过时,调整保单状态为已核保待缴费
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());//当核保状态返回核保通过时,调整保单状态为已核保待缴费
             insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
             insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
             return HttpResult.ok(underWriteInd);
             return HttpResult.ok(underWriteInd);
         }else if("核保不通过".equals(underWriteInd)){//当状态为核保不通过时,调整保单状态为报价中
         }else if("核保不通过".equals(underWriteInd)){//当状态为核保不通过时,调整保单状态为报价中
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.QUOTE_ING.getCode());
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.QUOTE_ING.getCode());
             insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
             insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
-            return HttpResult.error("核保不通过:"+submitStatusQueryResponse.getIssuedReason());
+            return HttpResult.error("核保不通过:"/*+submitStatusQueryResponse.getIssuedReason()*/);//需要处理放入核保原因
         }else {
         }else {
             return HttpResult.ok(underWriteInd);
             return HttpResult.ok(underWriteInd);
         }
         }

+ 7 - 0
src/main/resources/application-prod.yml

@@ -218,6 +218,13 @@ logging:
   path: /ins/logs
   path: /ins/logs
 
 
 
 
+# 华泰
+huatai:
+  api:
+    baseUrl: https://gears.pc.ehuatai.com:9040/interFaces/common/AutoInsuranceQuotation.do
+    selfPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBOtXf1T/no13LOuy5ti+/d+SADHns8hAv3+LjhDFsQRbHk3tHhnUNX7I8b25576AVmgraefS7jnpyB299f58PK8WkWZN+UB6pcyEpktrtqOnKcaQSTbkQzaseCW4sCRdoea0alzSXUuXC2FN0pHAE3JkT07e5doX3IHas2GJAkwIDAQAB
+    selfPrivateKey: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAME61d/VP+ejXcs67Lm2L7935IAMeezyEC/f4uOEMWxBFseTe0eGdQ1fsjxvbnnvoBWaCtp59LuOenIHb31/nw8rxaRZk35QHqlzISmS2u2o6cpxpBJNuRDNqx4JbiwJF2h5rRqXNJdS5cLYU3SkcATcmRPTt7l2hfcgdqzYYkCTAgMBAAECgYAwAAWRDNBLInHyQjj8CR3jWk0Q4giHq7oJqnwaOIRud9zIxwIgym3ZXKRSDvxKnhQOSa3Yh+MblFEmcmJnsoQ4OedLq7FVOw1eur/nw6jMcROT6ZiP512ZGgKZI1OdkQDpjCqM9Vg1brrFuGdV2RwI9ak2bjKbi7vs6slvd4r3AQJBAOqU+5xkyuaupg9cO/7TIxMgnTQH8W7IC1uDcx3f28QdkP+udJYfU/n1dYyGuhkW66KVANSqz4dsrEiAmfhvydECQQDS304+LEvPi4j8YmNlOXrs1o8H0tPB69svC9ER2YbrTjZf49XvY9fuor11XAprXZhBp8yvJu07FuRWilrQ8FkjAkEAop1qmqzIdweE+ErxECJfQygtsd77v9cPAH5sM752Q0pXtNbD3TmUZkeBGExg/3mDGW5/Z+2M9Y0hFRWJJs6fsQJAO11mV5Z82Tb9H6BLPyoJczeMGLW/q65MjFgVSaMlmoTwRdqMVdKT7bifAbUhscwtmv40X3LkAmiVa8+TdZLUZQJACu2NgPZkw6gjKCZf5xOfvKaC3PqKlhPghq+ypyutzTih9y81+EBJ25emLWNcd5BtIZ/AXmr3UUiGg0zX4s5njA==
+    huaTaiPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYyF2SBNzLOP5N5fFW2T2eQ5+iaI5wVpsedu+UY290TVuG152tkdtSuTXsx+8BKnd79/PF966/2aSP4EUm7vD9kvQUnX2EDUiMooorGvDTRxoHNXFGqOtxdMiUOuqx19HwNb4gOXZ1WdjWJwSmqC6ZP6OgxKIotCHJwe826Q/w8wIDAQAB
 # api url
 # api url
 api:
 api:
   url: http://sxzgkj.baoxianzhanggui.com/web-api
   url: http://sxzgkj.baoxianzhanggui.com/web-api

+ 7 - 0
src/main/resources/application-test.yml

@@ -317,6 +317,13 @@ knife4j:
   enable: true
   enable: true
 
 
 
 
+# 华泰
+huatai:
+  api:
+    baseUrl: https://gears.pc.ehuatai.com:9040/interFaces/common/AutoInsuranceQuotation.do
+    selfPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBOtXf1T/no13LOuy5ti+/d+SADHns8hAv3+LjhDFsQRbHk3tHhnUNX7I8b25576AVmgraefS7jnpyB299f58PK8WkWZN+UB6pcyEpktrtqOnKcaQSTbkQzaseCW4sCRdoea0alzSXUuXC2FN0pHAE3JkT07e5doX3IHas2GJAkwIDAQAB
+    selfPrivateKey: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAME61d/VP+ejXcs67Lm2L7935IAMeezyEC/f4uOEMWxBFseTe0eGdQ1fsjxvbnnvoBWaCtp59LuOenIHb31/nw8rxaRZk35QHqlzISmS2u2o6cpxpBJNuRDNqx4JbiwJF2h5rRqXNJdS5cLYU3SkcATcmRPTt7l2hfcgdqzYYkCTAgMBAAECgYAwAAWRDNBLInHyQjj8CR3jWk0Q4giHq7oJqnwaOIRud9zIxwIgym3ZXKRSDvxKnhQOSa3Yh+MblFEmcmJnsoQ4OedLq7FVOw1eur/nw6jMcROT6ZiP512ZGgKZI1OdkQDpjCqM9Vg1brrFuGdV2RwI9ak2bjKbi7vs6slvd4r3AQJBAOqU+5xkyuaupg9cO/7TIxMgnTQH8W7IC1uDcx3f28QdkP+udJYfU/n1dYyGuhkW66KVANSqz4dsrEiAmfhvydECQQDS304+LEvPi4j8YmNlOXrs1o8H0tPB69svC9ER2YbrTjZf49XvY9fuor11XAprXZhBp8yvJu07FuRWilrQ8FkjAkEAop1qmqzIdweE+ErxECJfQygtsd77v9cPAH5sM752Q0pXtNbD3TmUZkeBGExg/3mDGW5/Z+2M9Y0hFRWJJs6fsQJAO11mV5Z82Tb9H6BLPyoJczeMGLW/q65MjFgVSaMlmoTwRdqMVdKT7bifAbUhscwtmv40X3LkAmiVa8+TdZLUZQJACu2NgPZkw6gjKCZf5xOfvKaC3PqKlhPghq+ypyutzTih9y81+EBJ25emLWNcd5BtIZ/AXmr3UUiGg0zX4s5njA==
+    huaTaiPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYyF2SBNzLOP5N5fFW2T2eQ5+iaI5wVpsedu+UY290TVuG152tkdtSuTXsx+8BKnd79/PF966/2aSP4EUm7vD9kvQUnX2EDUiMooorGvDTRxoHNXFGqOtxdMiUOuqx19HwNb4gOXZ1WdjWJwSmqC6ZP6OgxKIotCHJwe826Q/w8wIDAQAB
 
 
 # api url
 # api url
 api:
 api: