浏览代码

大家报价迁移

dongxin 1 年之前
父节点
当前提交
a892ae1567
共有 53 个文件被更改,包括 4427 次插入151 次删除
  1. 60 120
      tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/component/ChengTaiRequestApiComponent.java
  2. 0 15
      tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/entity/ChengTaiApiConfigureParameters.java
  3. 34 0
      tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/entity/ChengTaiEncrypted.java
  4. 0 4
      tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/entity/request/BaseRequest.java
  5. 10 3
      tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/properties/ChengTaiApiProperties.java
  6. 5 5
      tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/service/impl/ChengTaiApiRequestImpl.java
  7. 2 3
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/InsuranceCode.java
  8. 62 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/build/DaJiaAPIQuoteResultsVoBuild.java
  9. 109 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/compoment/DaJiaApiRequestComponent.java
  10. 54 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/CCvrgNo.java
  11. 43 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/CIndemLmtLvl.java
  12. 17 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/CInspectionCde.java
  13. 17 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/COwnerCls.java
  14. 30 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/CPayTaxType.java
  15. 23 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/CProdNo.java
  16. 14 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/CResvSex.java
  17. 18 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/CResvTxt.java
  18. 35 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/CVhlTyp.java
  19. 17 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/CvrgCIndemLmtLvl.java
  20. 17 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/NDeductionRate.java
  21. 50 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/ServiceCode.java
  22. 38 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/TypeVehicleMapping.java
  23. 25 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/VehicleType.java
  24. 95 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/enums/InsuranceEnum.java
  25. 28 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/enums/Message.java
  26. 50 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/enums/RequestUrl.java
  27. 152 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/AESEncrypt.java
  28. 127 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/DaJiaApiConfigureParameters.java
  29. 40 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/DaJiaBaseRequest.java
  30. 24 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/DaJiaBaseResponse.java
  31. 35 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/po/DaJiaApiOrder.java
  32. 81 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/ODR1007Request.java
  33. 853 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/ODR1008Request.java
  34. 687 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/ODR1009Request.java
  35. 268 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/ODR1010Request.java
  36. 122 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/ODR1013Request.java
  37. 48 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/ODR1016Request.java
  38. 77 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/ODR2009Request.java
  39. 38 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/ODR1007Response.java
  40. 118 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/ODR1008Response.java
  41. 304 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/ODR1009Response.java
  42. 46 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/ODR1010Response.java
  43. 22 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/ODR1013Response.java
  44. 36 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/ODR1016Response.java
  45. 178 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/ODR2009Response.java
  46. 44 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/vo/PersonAreaVo.java
  47. 19 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/properties/DaJiaApiProperties.java
  48. 9 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/repository/DaJiaApiOrderRepository.java
  49. 6 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/service/DaJiaApiRequest.java
  50. 24 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/service/DaJiaCrawlerOrderService.java
  51. 182 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/service/impl/DaJiaApiRequestImpl.java
  52. 33 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/service/impl/DaJiaCrawlerOrderServiceImpl.java
  53. 1 1
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/service/impl/DaJiaCrawlerOrderServiceImpl.java

+ 60 - 120
tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/component/ChengTaiRequestApiComponent.java

@@ -5,7 +5,7 @@ import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.quotation.chengtai.api.entity.ChengTaiApiConfigureParameters;
-import com.jzg.quotation.chengtai.api.entity.constants.ResponseCode;
+import com.jzg.quotation.chengtai.api.entity.ChengTaiEncrypted;
 import com.jzg.quotation.chengtai.api.entity.constants.enums.RequestUrl;
 import com.jzg.quotation.chengtai.api.entity.request.*;
 import com.jzg.quotation.chengtai.api.entity.response.*;
@@ -45,121 +45,58 @@ public class ChengTaiRequestApiComponent {
 
     private final RequestComponent requestComponent;
 
-    public <T, B extends BaseResponse> B requestUrl(String url, T requestBody, Class<B> responseType, HttpHeaders httpHeaders) {
-        ResponseEntity<B> bResponseEntity = requestComponent.objectPost(url, requestBody, responseType, httpHeaders);
-        return bResponseEntity.getBody();
-    }
+    public <T extends BaseRequest, B extends BaseResponse> B requestUrl(String url, T requestBody, Class<B> responseType, HttpHeaders httpHeaders) {
+        String busReqString = JSON.toJSONString(requestBody, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
+        try{
+            PrivateKey privateKey = RSAUtil.getPrivateKeyFromPKCS8("RSA", chengTaiApiProperties.getPrivateKey());
+            PublicKey ctPublicKey = RSAUtil.getPublicKeyFromX509("RSA", chengTaiApiProperties.getCtPublicKey());
+            //base64加密
+            String baseStr = Base64.getEncoder().encodeToString(busReqString.getBytes(Charset.forName("UTF-8")));
+            //rsa加密
+            String encryptStr = RSAUtil.encryptString(ctPublicKey, baseStr); //加密
+            String signatureStr = RSAUtil.signature(baseStr, privateKey);  //加签
+            ChengTaiEncrypted chengTaiEncrypted = new ChengTaiEncrypted(encryptStr,chengTaiApiProperties,signatureStr);
 
-    public <T, B extends BaseResponse> B requestRequestUrl(RequestUrl requestUrl, T requestBody, Class<B> responseType, HttpHeaders httpHeaders) {
-        return requestUrl(requestUrl.getRequestUrl(chengTaiApiProperties.getBaseUrl()), requestBody, responseType, httpHeaders);
-    }
+            ResponseEntity<B> bResponseEntity = requestComponent.objectPost(url, chengTaiEncrypted, responseType, httpHeaders);
+
+            String body = JSON.toJSONString(bResponseEntity.getBody());//需要联调观察数据格式
 
-    /**
-     * 诚泰获取token请求加密校验
-     * @param requestUrl
-     * @param q
-     * @param tClass
-     * @param httpHeaders
-     * @param parameters
-     * @return
-     * @param <Q>
-     * @param <S>
-     */
-    public <Q extends BaseRequest, S extends BaseResponse> S verificationTokenResponse(RequestUrl requestUrl,
-                                                                                       Q q,
-                                                                                       Class<S> tClass,
-                                                                                       HttpHeaders httpHeaders,
-                                                                                       ChengTaiApiConfigureParameters parameters){
-        PrivateKey privateKey;PublicKey ctPublicKey;
-        S response; String info; boolean flag;
-        try{
-            privateKey = RSAUtil.getPrivateKeyFromPKCS8("RSA", parameters.getPrivateKey());
-            ctPublicKey = RSAUtil.getPublicKeyFromX509("RSA", parameters.getCtPublicKey());
-            response = requestRequestUrl(requestUrl, q, tClass, httpHeaders);
-            if (!ResponseCode.R_000.getCode().equals(response.getCode())){return response;}
             // 解密响应
-            String newSource = RSAUtil.decryptString(privateKey, response.encryptionMessage);
-            info = new String(Base64.getDecoder().decode(newSource), Charset.forName("UTF-8"));
-            flag = RSAUtil.signatureVerfiy(newSource, response.signature, ctPublicKey);
-            System.out.print("\n\t---------> {"+
-                    requestUrl.getRequestDescription()+"} \n\t---------> 解密后的参数:{"+
-                    info+"}");
-        } catch (Exception e){
+            String newSource = RSAUtil.decryptString(privateKey, body);
+//            info = new String(Base64.getDecoder().decode(newSource), Charset.forName("UTF-8"));
+//            flag = RSAUtil.signatureVerfiy(newSource, body, ctPublicKey);
+            return JSON.parseObject(body).toJavaObject(responseType);
+        }catch (Exception e){
             throw new SystemException(e.toString());
         }
-        if (!flag){throw new SystemException(response.getMessage());}
-        if (!ResponseCode.R_000.getCode().equals(response.getCode())) {
-            throw new SystemException(response.getMessage());
-        }
-        S s = JSON.parseObject(info).toJavaObject(tClass);
-        s.setCode(response.getCode());
-        s.setFlag(flag);
-        s.setMessage(response.getMessage());
-        return s;
     }
 
-    /**
-     * 诚泰获取token请求加密校验
-     * @param requestUrl
-     * @param q
-     * @param tClass
-     * @param httpHeaders
-     * @param parameters
-     * @return
-     * @param <Q>
-     * @param <S>
-     */
-    public <Q extends BaseRequest, S extends BaseResponse> S verificationResponse(RequestUrl requestUrl,
-                                                                                       Q q,
-                                                                                       Class<S> tClass,
-                                                                                       HttpHeaders httpHeaders,
-                                                                                       ChengTaiApiConfigureParameters parameters){
-        PrivateKey privateKey;PublicKey ctPublicKey;
-        S response; String info; boolean flag;
+    public <T extends BaseRequest, B extends BaseResponse> B requestRequestUrl(RequestUrl requestUrl, T requestBody, Class<B> responseType, HttpHeaders httpHeaders, String partnerCode) {
+        return requestUrl(requestUrl.getRequestUrl(chengTaiApiProperties.getBaseUrl()), requestBody, responseType, httpHeaders);
+    }
+
+    public <T extends BaseRequest, B extends BaseResponse> B requestUrlToken(String url, T requestBody, Class<B> responseType, HttpHeaders httpHeaders) {
+        String busReqString = JSON.toJSONString(requestBody, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
         try{
-            String busReqString = JSON.toJSONString(q, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
-            System.out.print("\n\t---------> {"+
-                            requestUrl.getRequestDescription()+"} \n\t---------> URl: {"+
-                            requestUrl.getRequestUrl(chengTaiApiProperties.getBaseUrl())+"} \n\t---------> 请求参数:{"+
-                            busReqString+"}");
-            privateKey = RSAUtil.getPrivateKeyFromPKCS8("RSA", parameters.getPrivateKey());
-            ctPublicKey = RSAUtil.getPublicKeyFromX509("RSA", parameters.getCtPublicKey());
-            //base64加密
-            String baseStr = Base64.getEncoder().encodeToString(busReqString.getBytes(Charset.forName("UTF-8")));
-            //rsa加密
-            String encryptStr = RSAUtil.encryptString(ctPublicKey, baseStr); //加密
-            String signatureStr = RSAUtil.signature(baseStr, privateKey);  //加签
-            q.setEncryptionMessage(encryptStr);
-            q.setSignature(signatureStr);
-            response = requestRequestUrl(requestUrl, q, tClass, httpHeaders);
-            if(!response.getFlag()){return response;}
 
+            ResponseEntity<B> bResponseEntity = requestComponent.objectPost(url, requestBody, responseType, httpHeaders);
+            String body = JSON.toJSONString(bResponseEntity.getBody());//需要联调观察数据格式
+            PrivateKey privateKey = RSAUtil.getPrivateKeyFromPKCS8("RSA", chengTaiApiProperties.getPrivateKey());
             // 解密响应
-            String newSource = RSAUtil.decryptString(privateKey, response.encryptionMessage);
-            info = new String(Base64.getDecoder().decode(newSource), Charset.forName("UTF-8"));
-            flag = RSAUtil.signatureVerfiy(newSource, response.signature, ctPublicKey);
-            System.out.print("\n\t---------> {"+
-                    requestUrl.getRequestDescription()+"} \n\t---------> 解密后的参数:{"+
-                    info+"}");
-
-        } catch (Exception e){
+            String newSource = RSAUtil.decryptString(privateKey, body);
+//            info = new String(Base64.getDecoder().decode(newSource), Charset.forName("UTF-8"));
+//            flag = RSAUtil.signatureVerfiy(newSource, body, ctPublicKey);
+            return JSON.parseObject(body).toJavaObject(responseType);
+        }catch (Exception e){
             throw new SystemException(e.toString());
         }
-        if (!flag){throw new SystemException(response.getMessage());}
-        if (!ResponseCode.R_000.getCode().equals(response.getCode())
-                && !response.getMessage().contains("重复投保")
-                && !response.getMessage().contains("录入的校验码有误")) {
-            throw new SystemException(response.getMessage());
-        }
-        S s = JSON.parseObject(info).toJavaObject(tClass);
-        s.setCode(response.getCode());
-        s.setFlag(flag);
-        if(!ResponseCode.R_000.equals(response.getCode())) {
-            s.setMessage(response.message);
-        }
-        return s;
     }
 
+    public <T extends BaseRequest, B extends BaseResponse> B requestRequestUrlToken(RequestUrl requestUrl, T requestBody, Class<B> responseType, HttpHeaders httpHeaders) {
+        return requestUrlToken(requestUrl.getRequestUrl(chengTaiApiProperties.getBaseUrl()), requestBody, responseType, httpHeaders);
+    }
+
+
     /**
      * 协议id获取请求头
      *
@@ -239,7 +176,7 @@ public class ChengTaiRequestApiComponent {
 
         ChengTaiTokenRequest request = new ChengTaiTokenRequest(chengTaiApiConfigureParameters.getPartnerCode());
         httpHeaders.setContentType(MediaType.APPLICATION_JSON);
-        ChengTaiTokenResponse accessToken = getAccessToken(request,httpHeaders,chengTaiApiConfigureParameters);
+        ChengTaiTokenResponse accessToken = getAccessToken(request,httpHeaders);
         httpHeaders.set(AUTHTOKEN, accessToken.getAccessToken());
         // 3.1 存入redis中
         RMap<Object, Object> rMap = redissonClient.getMap(CacheConstant.CHENGTAI_AUTHORIZATION + chengTaiApiConfigureParameters.getPartnerCode());
@@ -253,15 +190,13 @@ public class ChengTaiRequestApiComponent {
      *
      * @param chengTaiTokenRequest           诚泰财险 为接入方提供获取token服务 入参实体
      * @param httpHeaders
-     * @param chengTaiApiConfigureParameters
      * @return 出参实体
      */
-    private ChengTaiTokenResponse getAccessToken(ChengTaiTokenRequest chengTaiTokenRequest, HttpHeaders httpHeaders, ChengTaiApiConfigureParameters chengTaiApiConfigureParameters) {
-        return verificationTokenResponse(RequestUrl.Z00001,
+    private ChengTaiTokenResponse getAccessToken(ChengTaiTokenRequest chengTaiTokenRequest, HttpHeaders httpHeaders) {
+        return requestRequestUrlToken(RequestUrl.Z00001,
                 chengTaiTokenRequest,
                 ChengTaiTokenResponse.class,
-                httpHeaders,
-                chengTaiApiConfigureParameters);
+                httpHeaders);
     }
 
 
@@ -269,21 +204,23 @@ public class ChengTaiRequestApiComponent {
      * 车型查询
      *
      * @param carInfoRequest 诚泰财险 车型查询 入参实体
+     * @param partnerCode
      * @return 出参实体
      */
-    public CarInfoResponse carinfoQuery(CarInfoRequest carInfoRequest, HttpHeaders httpHeaders, ChengTaiApiConfigureParameters chengTaiApiConfigureParameters) {
-        return verificationResponse(RequestUrl.Z00002, carInfoRequest, CarInfoResponse.class, httpHeaders,chengTaiApiConfigureParameters);
+    public CarInfoResponse carinfoQuery(CarInfoRequest carInfoRequest, HttpHeaders httpHeaders, String partnerCode) {
+        return requestRequestUrl(RequestUrl.Z00002, carInfoRequest, CarInfoResponse.class, httpHeaders, partnerCode);
     }
 
     /**
      * 车辆价格计算
+     *
      * @param carActualValueRequest 诚泰财险 车辆价格计算 入参实体
      * @param httpHeaders
-     * @param parameters
+     * @param partnerCode
      * @return 出参实体
      */
-    public QueryCarActualValueResponse queryActualValue(QueryCarActualValueRequest carActualValueRequest, HttpHeaders httpHeaders, ChengTaiApiConfigureParameters parameters) {
-        return verificationResponse(RequestUrl.Z00003, carActualValueRequest, QueryCarActualValueResponse.class, httpHeaders,parameters);
+    public QueryCarActualValueResponse queryActualValue(QueryCarActualValueRequest carActualValueRequest, HttpHeaders httpHeaders, String partnerCode) {
+        return requestRequestUrl(RequestUrl.Z00003, carActualValueRequest, QueryCarActualValueResponse.class, httpHeaders, partnerCode);
     }
 
 
@@ -291,30 +228,33 @@ public class ChengTaiRequestApiComponent {
      * 保费计算
      *
      * @param insurePremiumRequest 诚泰财险 保费计算 入参实体
+     * @param partnerCode
      * @return 出参实体
      */
-    public InsurePremiumResponse calculatePremium(InsurePremiumRequest insurePremiumRequest, HttpHeaders httpHeaders, ChengTaiApiConfigureParameters parameters) {
-        return verificationResponse(RequestUrl.Z00004, insurePremiumRequest, InsurePremiumResponse.class, httpHeaders,parameters);
+    public InsurePremiumResponse calculatePremium(InsurePremiumRequest insurePremiumRequest, HttpHeaders httpHeaders, String partnerCode) {
+        return requestRequestUrl(RequestUrl.Z00004, insurePremiumRequest, InsurePremiumResponse.class, httpHeaders, partnerCode);
     }
 
     /**
      * 获取支付链接
      *
      * @param payUrlRequest 诚泰财险 新支付 入参实体
+     * @param partnerCode
      * @return 出参实体
      */
-    public PayUrlResponse getPayUrl(PayUrlRequest payUrlRequest, HttpHeaders httpHeaders, ChengTaiApiConfigureParameters parameters) {
-        return verificationResponse(RequestUrl.Z00010, payUrlRequest, PayUrlResponse.class, httpHeaders,parameters);
+    public PayUrlResponse getPayUrl(PayUrlRequest payUrlRequest, HttpHeaders httpHeaders, String partnerCode) {
+        return requestRequestUrl(RequestUrl.Z00010, payUrlRequest, PayUrlResponse.class, httpHeaders, partnerCode);
     }
 
     /**
      * 影像上传
+     *
      * @param uploadFileRequest 诚泰财险 入参实体
      * @param httpHeaders
-     * @param parameters
+     * @param partnerCode
      * @return
      */
-    public UploadFileResponse submitImage(UploadFileRequest uploadFileRequest, HttpHeaders httpHeaders, ChengTaiApiConfigureParameters parameters) {
-        return verificationResponse(RequestUrl.Z00005, uploadFileRequest, UploadFileResponse.class, httpHeaders,parameters);
+    public UploadFileResponse submitImage(UploadFileRequest uploadFileRequest, HttpHeaders httpHeaders, String partnerCode) {
+        return requestRequestUrl(RequestUrl.Z00005, uploadFileRequest, UploadFileResponse.class, httpHeaders, partnerCode);
     }
 }

+ 0 - 15
tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/entity/ChengTaiApiConfigureParameters.java

@@ -15,21 +15,6 @@ public class ChengTaiApiConfigureParameters implements ConfigureParameters {
     @Serial
     private static final long serialVersionUID = 0xa297c16d38ff40b1L;
 
-    /**
-     * 诚泰RSA公钥
-     */
-    private String ctPublicKey;
-
-    /**
-     * 我司RSA公钥
-     */
-    private String publicKey;
-
-    /**
-     * 我司RSA私钥
-     */
-    private String privateKey;
-
     /**
      * 诚泰接入方code
      */

+ 34 - 0
tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/entity/ChengTaiEncrypted.java

@@ -0,0 +1,34 @@
+package com.jzg.quotation.chengtai.api.entity;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.chengtai.api.properties.ChengTaiApiProperties;
+
+import java.io.Serializable;
+
+
+public class ChengTaiEncrypted implements Serializable {
+
+    /**
+     * 业务数据加密串
+     */
+    @JsonProperty("encryptionMessage")
+    private String encryptionMessage;
+
+    /**
+     * 加密验签
+     */
+    @JsonProperty("signature")
+    private String signature;
+
+    /**
+     * 合作方代码
+     */
+    @JsonProperty("embarkPartnerCode")
+    private String embarkPartnerCode;
+
+    public ChengTaiEncrypted(String encryptionMessage, ChengTaiApiProperties properties, String signature) {
+        this.encryptionMessage = encryptionMessage;
+        this.embarkPartnerCode = properties.getPartnerCode();
+        this.signature = signature;
+    }
+}

+ 0 - 4
tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/entity/request/BaseRequest.java

@@ -18,10 +18,6 @@ public class BaseRequest implements Serializable {
 
     private String embarkPartnerCode;
 
-    private String encryptionMessage;
-
-    private String signature;
-
     public BaseRequest(String embarkPartnerCode) {
         this.embarkPartnerCode = embarkPartnerCode;
     }

+ 10 - 3
tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/properties/ChengTaiApiProperties.java

@@ -10,8 +10,15 @@ import org.springframework.stereotype.Component;
 @ConfigurationProperties(prefix = "chengtai.api")
 public class ChengTaiApiProperties {
 
-    /**
-     * 诚泰请求API地址
-     */
+    //诚泰接入方code
+    private String partnerCode;
+    //诚泰请求API地址
     private String baseUrl;
+    //诚泰RSA公钥
+    private String ctPublicKey;
+    //我司RSA公钥
+    private String publicKey;
+    //我司RSA私钥
+    private String privateKey;
+
 }

+ 5 - 5
tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/service/impl/ChengTaiApiRequestImpl.java

@@ -49,15 +49,15 @@ public class ChengTaiApiRequestImpl implements ChengTaiApiRequest {
         // 车型查询
         CarInfoVo carInfoVo = quoteVo.getCarInfoVo();
         CarInfoRequest carInfoRequest = new CarInfoRequest(parameters, carInfoVo.getBrandName());
-        CarInfoResponse carInfoResponse = chengTaiRequestApiComponent.carinfoQuery(carInfoRequest, httpHeaders,parameters);
+        CarInfoResponse carInfoResponse = chengTaiRequestApiComponent.carinfoQuery(carInfoRequest, httpHeaders,parameters.getPartnerCode());
         // 过滤车型
         CarInfoResponse.CarModelListDTO carModelListDTO = CarModelsFilterUtils.to(carInfoResponse.getCarModelList(), carInfoVo);
         // 计算车辆价格
         QueryCarActualValueRequest carActualValueRequest = new QueryCarActualValueRequest(quoteVo,carModelListDTO, parameters);
-        QueryCarActualValueResponse carActualValueResponse = chengTaiRequestApiComponent.queryActualValue(carActualValueRequest,httpHeaders,parameters);
+        QueryCarActualValueResponse carActualValueResponse = chengTaiRequestApiComponent.queryActualValue(carActualValueRequest,httpHeaders,parameters.getPartnerCode());
         // 报价
         InsurePremiumRequest insurePremiumRequest = new InsurePremiumRequest(carModelListDTO, carActualValueResponse,parameters,quoteVo);
-        InsurePremiumResponse insurePremiumResponse = chengTaiRequestApiComponent.calculatePremium(insurePremiumRequest,httpHeaders,parameters);
+        InsurePremiumResponse insurePremiumResponse = chengTaiRequestApiComponent.calculatePremium(insurePremiumRequest,httpHeaders,parameters.getPartnerCode());
 
         // 处理重复投保
 
@@ -91,7 +91,7 @@ public class ChengTaiApiRequestImpl implements ChengTaiApiRequest {
 
         // 获取支付链接
         PayUrlRequest payUrlRequest = new PayUrlRequest(parameters,chengTaiApiOrder.getOrderNo());
-        PayUrlResponse payUrlResponse = chengTaiRequestApiComponent.getPayUrl(payUrlRequest, httpHeaders,parameters);
+        PayUrlResponse payUrlResponse = chengTaiRequestApiComponent.getPayUrl(payUrlRequest, httpHeaders,parameters.getPartnerCode());
         return "";
     }
 
@@ -109,7 +109,7 @@ public class ChengTaiApiRequestImpl implements ChengTaiApiRequest {
         List<InsuranceImageVo> imageVoList = insuranceUploadImageVo.getImageVoList();
         imageVoList.forEach(imageVo -> {
             UploadFileRequest uploadFileRequest = new UploadFileRequest(imageVo, chengTaiApiOrder.getOrderNo(), parameters);
-            UploadFileResponse uploadFileResponse = chengTaiRequestApiComponent.submitImage(uploadFileRequest,httpHeaders,parameters);
+            UploadFileResponse uploadFileResponse = chengTaiRequestApiComponent.submitImage(uploadFileRequest,httpHeaders,parameters.getPartnerCode());
         });
     }
 

+ 2 - 3
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/InsuranceCode.java

@@ -38,8 +38,6 @@ public class InsuranceCode {
     public static final String INSURANCE_DBIC = "DBIC";
     public static final String INSURANCE_DHIC = "DHIC";
     public static final String INSURANCE_DICC = "DICC";
-    //大家财产保险有限责任公司
-    public static final String INSURANCE_DJPC = "DJPC";
     public static final String INSURANCE_EAIC = "EAIC";
     public static final String INSURANCE_FPIC = "FPIC";
     public static final String INSURANCE_GPIC = "GPIC";
@@ -93,5 +91,6 @@ public class InsuranceCode {
     public static final String INSURANCE_SNPI = "SNPI";
     // 诚泰财产保险股份有限公司
     public static final String INSURANCE_CHAC = "CHAC";
-
+    // 大家财产保险股份有限公司
+    public static final String INSURANCE_DJPC = "DJPC";
 }

+ 62 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/build/DaJiaAPIQuoteResultsVoBuild.java

@@ -0,0 +1,62 @@
+package com.jzg.quotation.dajia.api.build;
+
+import com.jzg.quotation.commons.constant.enums.quote.KindCode;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.quotation.commons.entity.vo.quote.KindInfoVo;
+import com.jzg.quotation.commons.entity.vo.quote.RiskInfoVo;
+import com.jzg.quotation.dajia.api.entity.response.ODR1009Response;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+public final class DaJiaAPIQuoteResultsVoBuild {
+
+    public DaJiaAPIQuoteResultsVoBuild() {
+        throw new IllegalStateException("Utility class");
+    }
+
+    public static QuoteResultsVo buildQuoteResultsVo(QuoteVo quoteVo, ODR1009Response odr1009Response) {
+        QuoteResultsVo quoteResultsVo = new QuoteResultsVo();
+        quoteResultsVo.setOrdersNo(quoteVo.getOrder().getOrdersNo());
+        // 交强险
+        quoteResultsVo.setCiRiskInfoVo(new RiskInfoVo());
+        // 商业险
+        quoteResultsVo.setBiRiskInfoVo(new RiskInfoVo());
+        // 商业险险种信息
+        List<KindInfoVo> kindInfoVo = buildKindInfoVo(quoteVo.getKindInfoVo(), odr1009Response.getResult().getCoverageList());
+        quoteResultsVo.setKindInfoVo(kindInfoVo);
+        // 费用因子
+//        List<ExpenseFactor> expenseFactors = buildExpenseFactor(calculatePremiumResponse.getPriceInfoList());
+//        quoteResultsVo.setExpenseFactors(expenseFactors);
+        // 交强保费 车船税 商业保费
+        buildPremium(quoteResultsVo, odr1009Response);
+        return quoteResultsVo;
+    }
+
+    private static void buildPremium(QuoteResultsVo quoteResultsVo, ODR1009Response odr1009Response) {
+
+        quoteResultsVo.setCiPremium(odr1009Response.getResult().getBasePart().getJqPremium() + "");
+        quoteResultsVo.setVvTax(odr1009Response.getResult().getBasePart().getJqPremiumVat() + "");
+        quoteResultsVo.setBiPremium(odr1009Response.getResult().getBasePart().getSyPremium() + "");
+    }
+
+    private static List<KindInfoVo> buildKindInfoVo(List<KindInfoVo> kindInfoVo, List<ODR1009Response.ResultDTO.CoverageListDTO> itemKindList) {
+        Map<String, ODR1009Response.ResultDTO.CoverageListDTO> collect = itemKindList
+                .stream()
+                .collect(Collectors.toMap(ODR1009Response.ResultDTO.CoverageListDTO::getCvrgNo, x -> x));
+        kindInfoVo.forEach(kind -> {
+            ODR1009Response.ResultDTO.CoverageListDTO itemKindListDTO = collect.get(kind.getKindCode());
+            if (KindCode.A
+                    .getCode()
+                    .equals(kind.getPlatformKindCode())) {
+                kind.setAmount(itemKindListDTO.getPremium() + "");
+            }
+            // 设置保费
+            kind.setPremium(itemKindListDTO.getPremium() + "");
+        });
+        return kindInfoVo;
+    }
+}

+ 109 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/compoment/DaJiaApiRequestComponent.java

@@ -0,0 +1,109 @@
+package com.jzg.quotation.dajia.api.compoment;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.jzg.commons.exception.SystemException;
+import com.jzg.quotation.commons.component.RequestComponent;
+import com.jzg.quotation.dajia.api.constant.enums.InsuranceEnum;
+import com.jzg.quotation.dajia.api.constant.enums.RequestUrl;
+import com.jzg.quotation.dajia.api.entity.AESEncrypt;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseRequest;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseResponse;
+import com.jzg.quotation.dajia.api.entity.request.*;
+import com.jzg.quotation.dajia.api.entity.response.*;
+import com.jzg.quotation.dajia.api.properties.DaJiaApiProperties;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.*;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class DaJiaApiRequestComponent {
+
+    private final RequestComponent requestComponent;
+
+    private final DaJiaApiProperties daJiaApiProperties;
+
+
+    public <T, B extends DaJiaBaseResponse> B requestUrl(String url, T requestBody, Class<B> responseType) {
+
+        try{
+
+            HttpHeaders httpHeaders = new HttpHeaders();
+            httpHeaders.setContentType(MediaType.TEXT_PLAIN);
+            httpHeaders.set("User-Agent","");
+            System.out.println("\n\t---------> URl: {"
+                    +url+"} \n---------> 保险公司:{"
+                    + InsuranceEnum.DJPC.getName()+"}\n---------> 请求参数:{"
+                    +JSON.toJSONString(requestBody)+"}");
+            String encrypt = AESEncrypt.encrypt(JSON.toJSONString(requestBody), daJiaApiProperties.getEncryptKey());
+            ResponseEntity<B> bResponseEntity = requestComponent.objectPost(url, encrypt, responseType, httpHeaders);
+            return bResponseEntity.getBody();
+        }catch (Exception e){
+            throw new SystemException(e.getMessage());
+        }
+
+    }
+
+    public <T, B extends DaJiaBaseResponse> B requestRequestUrl(RequestUrl requestUrl, T requestBody, Class<B> responseType) {
+        return requestUrl(requestUrl.getRequestUrl(daJiaApiProperties.getUrl()), requestBody, responseType);
+    }
+
+
+    /**
+     * 获取业务订单号
+     * @param odr1007Request
+     * @return
+     */
+    public ODR1007Response queryBusinessOrders(ODR1007Request odr1007Request) {
+        return requestRequestUrl(RequestUrl.DJ_TQBD_100007, odr1007Request, ODR1007Response.class);
+    }
+
+    /**
+     * 车型查询
+     * @param odr2009Request
+     * @return
+     */
+    public ODR2009Response queryVehicleTypes(ODR2009Request odr2009Request) {
+        return requestRequestUrl(RequestUrl.DJ_TQBD_200009, odr2009Request, ODR2009Response.class);
+    }
+
+    /**
+     * 车辆与客户信息确认
+     * @param odr1008Request
+     * @return
+     */
+    public ODR1008Response carOrCustomInfoConfirm(ODR1008Request odr1008Request) {
+        return requestRequestUrl(RequestUrl.DJ_TQBD_100008, odr1008Request, ODR1008Response.class);
+    }
+
+    /**
+     * 车辆实际价值计算
+     * @param odr1016Request
+     * @return
+     */
+    public ODR1016Response carValueCalculation(ODR1016Request odr1016Request) {
+        return requestRequestUrl(RequestUrl.DJ_TQBD_100016, odr1016Request, ODR1016Response.class);
+    }
+
+    /**
+     * 报价
+     * @param odr1009Request
+     * @return
+     */
+    public ODR1009Response newPremiumXnyCalculation(ODR1009Request odr1009Request) {
+        return requestRequestUrl(RequestUrl.DJ_TQBD_100009, odr1009Request, ODR1009Response.class);
+    }
+
+    /**
+     * 影像上传
+     * @param odr1013Request
+     * @return
+     */
+    public ODR1013Response uploadImage(ODR1013Request odr1013Request) {
+        return requestRequestUrl(RequestUrl.DJ_TQBD_100013, odr1013Request, ODR1013Response.class);
+    }
+}

+ 54 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/CCvrgNo.java

@@ -0,0 +1,54 @@
+package com.jzg.quotation.dajia.api.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum CCvrgNo {
+    NO030001("030001","D3","车上人员责任险驾驶人座位"),
+    NO030006("030006","A","车辆损失保险"),
+    NO030009("030009","D4","车上人员责任险乘客座位"),
+    NO030061("030061","","全车盗抢保险"),
+    NO030015("030015","","附加精神损害抚慰金责任险(第三者责任保险)"),
+    NO030018("030018","B","第三者责任保险"),
+    NO030021("030021","","附加新增加设备损失险"),
+    NO030032("030032","","附加车上货物责任险"),
+    NO030042("030042","","附加修理期间费用补偿险"),
+    NO032601("032601","L","附加车身划痕损失险"),
+    NO032612("032612","","附加起重、装卸、挖掘车辆损失扩展条款"),
+    NO032613("032613","","附加特种车辆固定设备、仪器损坏扩展条款"),
+    NO033614("033614","DB","附加法定节假日限额翻倍险"),
+    NO035601("035601","FA","附加绝对免赔率特约条款(车辆损失保险)"),
+    NO035602("035602","MJ2","附加绝对免赔率特约条款(第三者责任保险)"),
+    NO035603("035603","MJ3","附加绝对免赔率特约条款(机动车车上人员责任保险(司机))"),
+    NO035604("035604","MJ4","附加绝对免赔率特约条款(机动车车上人员责任保险(乘客))"),
+    NO035605("035605","","附加绝对免赔率特约条款(特种车全车盗抢保险)"),
+    NO035606("035606","","附加车轮单独损失险"),
+    NO035607("035607","","附加发动机进水损坏除外特约条款"),
+    NO035608("035608","SY_FJ_YBW1","附加医保外医疗费用责任险(第三者责任保险)"),
+    NO035609("035609","TY1","道路救援服务特约条款"),
+    NO035610("035610","TY2","车辆安全检测特约条款"),
+    NO035611("035611","TY3","代为驾驶服务特约条款"),
+    NO035612("035612","TY4","代为送检服务特约条款"),
+    NO035613("035613","SY_FJ_YBW3","附加医保外医疗费用责任险(车上人员责任保险(司机))"),
+    NO035614("035614","SY_FJ_YBW2","附加医保外医疗费用责任险(车上人员责任保险(乘客))"),
+    NO035615("035615","","附加精神损害抚慰金责任险(车上人员责任保险(司机))"),
+    NO035616("035616","","附加精神损害抚慰金责任险(车上人员责任保险(乘客))"),
+
+    NO035804("035804","D3","新能源汽车车上人员责任保险(司机)"),
+    NO035801("035801","A","新能源汽车损失保险"),
+    NO035803("035803","D4","新能源汽车车上人员责任保险(乘客)"),
+    NO035802("035802","B","新能源汽车第三者责任保险"),
+    NO035805("035805","","附加外部电网故障损失险"),
+    NO035806("035806","","附加自用充电桩损失保险"),
+    NO035807("035807","","附加自用充电桩责任保险"),
+    NO035810("035810","TY1","道路救援服务特约条款(新能源汽车)"),
+    NO035811("035811","TY2","车辆安全检测特约条款(新能源汽车)"),
+    NO035812("035812","TY3","代为驾驶服务特约条款(新能源汽车)"),
+    NO035813("035813","TY4","代为送检服务特约条款(新能源汽车)"),
+    ;
+    private final String code;
+    private final String insurCode;
+    private final String desc;
+}

+ 43 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/CIndemLmtLvl.java

@@ -0,0 +1,43 @@
+package com.jzg.quotation.dajia.api.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 第三者责任险 限额档次
+ */
+@AllArgsConstructor
+@Getter
+public enum CIndemLmtLvl {
+//    L15("306006015","100万元以上",1000000.00),
+    L01("306006001",10000.00),
+    L02("306006002",20000.00),
+    L03("306006003",40000.00),
+    L04("306006004",50000.00),
+    L05("306006005",100000.00),
+    L06("306006006",200000.00),
+    L07("306006007",300000.00),
+    L08("306006008",400000.00),
+    L09("306006009",500000.00),
+    L10("306006010",150000.00),
+    L11("306006011",700000.00),
+    L12("306006012",800000.00),
+    L13("306006013",900000.00),
+    L14("306006014",1000000.00),
+    L16("306006016",1500000.00),
+    L17("306006017",2000000.00),
+    L18("306006018",3000000.00),
+    L19("306006019",5000000.00),
+    L20("306006020",2500000.00),
+    L21("306006021",3500000.00),
+    L22("306006022",4000000.00),
+    L23("306006023",4500000.00),
+    L24("306006024",6000000.00),
+    L25("306006025",8000000.00),
+    L26("306006026",10000000.00);
+
+    private final String code;
+
+    private final Double amount;
+
+}

+ 17 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/CInspectionCde.java

@@ -0,0 +1,17 @@
+package com.jzg.quotation.dajia.api.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum CInspectionCde {
+    INS2(305005002,"已验"),
+    INS3(305005003,"免验"),
+    INS6(305005006,"送单验车"),
+    INS5(305005005,"应验未验");
+
+    private final Integer code;
+    private final String desc;
+
+}

+ 17 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/COwnerCls.java

@@ -0,0 +1,17 @@
+package com.jzg.quotation.dajia.api.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum COwnerCls {
+    CLS1(1,"个人"),
+    CLS2(2,"机关"),
+    CLS3(3,"企业");
+
+    private final Integer code;
+
+    private final String desc;
+
+}

+ 30 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/CPayTaxType.java

@@ -0,0 +1,30 @@
+package com.jzg.quotation.dajia.api.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum CPayTaxType {
+    T5001("3T5001","暂不缴税"),
+    T5002("3T5002","缴税"),
+    T5003("3T5003","减税"),
+    T5004("3T5004","免税"),
+    T5005("3T5005","完税"),
+    T5006("3T5006","不征"),
+    T5007("3T5007","未代收"),
+    T5008("3T5008","补税");
+
+    private final String code;
+
+    private final String desc;
+
+    public static CPayTaxType getByCode(String code) {
+        for (CPayTaxType value : CPayTaxType.values()) {
+            if (value.getCode().equals(code)) {
+                return value;
+            }
+        }
+        return null;
+    }
+}

+ 23 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/CProdNo.java

@@ -0,0 +1,23 @@
+package com.jzg.quotation.dajia.api.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @description: 机动车险别代码
+ **/
+@AllArgsConstructor
+@Getter
+public enum CProdNo {
+    JQ("0320","交强险"),
+    SY("0356","商业险"),
+    SY_XNY("0358","新能源商业险"),
+    MTJQ("0316","摩托车交强险"),
+    MTSY("0355","摩托车商业险");
+
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 14 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/CResvSex.java

@@ -0,0 +1,14 @@
+package com.jzg.quotation.dajia.api.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum CResvSex {
+    MAN("3A05001","男"),
+    WOMAN("3A05002","女");
+
+    public final String code;
+    public final String desc;
+}

+ 18 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/CResvTxt.java

@@ -0,0 +1,18 @@
+package com.jzg.quotation.dajia.api.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum CResvTxt {
+RESC1(383001,"单责任险"),
+RESC2(383002,"新车新车新车"),
+RESC3(383003,"按期续保,未增加损失类险别"),
+RESC4(383004,"机关车辆,企业车队"),
+RESC5(383005,"符合免验规定");
+
+
+    public final Integer code;
+    public final String desc;
+}

+ 35 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/CVhlTyp.java

@@ -0,0 +1,35 @@
+package com.jzg.quotation.dajia.api.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum CVhlTyp {
+
+    T01(365001,"6座以下"),
+    T02(365002,"6-10座"),
+    T03(365003,"10-20座"),
+    T04(365004,"20-36座"),
+    T05(365005,"36座以上"),
+    T06(365006,"2吨以下"),
+    T07(365007,"2-5吨"),
+    T08(365008,"5-10吨"),
+    T09(365009,"10吨以上"),
+    T10(365010,"特种车型一"),
+    T11(365011,"特种车型二"),
+    T12(365012,"特种车型三"),
+    T13(365013,"特种车型四"),
+    T14(365014,"挂车(2吨以下)"),
+    T15(365015,"挂车(2-5吨)"),
+    T16(365016,"挂车(5-10吨)"),
+    T17(365017,"挂车(10吨以上)"),
+    T20(365020,"特种车型二挂车"),
+    T21(365021,"特种车型三挂车"),
+    T19(365019,"特种车型一挂车"),
+    T22(365022,"特种车型四挂车");
+
+    private Integer code;
+    private String desc;
+
+}

+ 17 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/CvrgCIndemLmtLvl.java

@@ -0,0 +1,17 @@
+package com.jzg.quotation.dajia.api.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum CvrgCIndemLmtLvl {
+    N1("N03001001",2000),
+    N2("N03001002",5000),
+    N3("N03001003",10000),
+    N4("N03001004",20000);
+
+    private final String code;
+
+    private final Integer amount;
+}

+ 17 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/NDeductionRate.java

@@ -0,0 +1,17 @@
+package com.jzg.quotation.dajia.api.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+// 绝对免赔率
+@AllArgsConstructor
+@Getter
+public enum NDeductionRate {
+    N5("-5",0.05),
+    N10("-10",0.1),
+    N15("-15",0.15),
+    N20("-20",0.2);
+
+    private final String code;
+    private final Double rate;
+}

+ 50 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/ServiceCode.java

@@ -0,0 +1,50 @@
+package com.jzg.quotation.dajia.api.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @version
+ * @description: 基础业务代码 服务编码
+ * @author: wenks
+ * @date: 2023/11/14 16:12
+ **/
+
+@AllArgsConstructor
+@Getter
+public enum ServiceCode {
+
+    ODR2036("ODR2036"	,"深圳双录手动上传保批单列表接口"),
+    ODR2033("ODR2033"	,"平台重复投保信息查询接口"),
+    ODR2010("ODR2010"	,"根据订单号查询订单状态轨迹接口"),
+    ODR2009("ODR2009"	,"车辆车型查询接口"),
+    ODR2006("ODR2006"	,"今日验车码获取接口"),
+    ODR2005("ODR2005"	,"查询保单接口"),
+    ODR1078("ODR1078"	,"深圳双录影像认证接口"),
+    ODR1073("ODR1073"	,"深圳双录上传投保单接口"),
+    ODR1071("ODR1071"	,"深圳双录上传保单接口"),
+    ODR1049("ODR1049"	,"北京承保交管车辆查询确认接口"),
+    ODR1048("ODR1048"	,"北京交管查询接口"),
+    ODR1036("ODR1036"	,"新车备案接口"),
+    ODR1021("ODR1021"	,"北京承保交管车辆查询确认接口"),
+    ODR1020("ODR1020"	,"北京承保交管车辆查询接口"),
+    ODR1016("ODR1016"	,"车辆实际价值计算接口"),
+    ODR1015("ODR1015"	,"业务订单删除接口"),
+    ODR1014("ODR1014"	,"业务订单退回接口"),
+    ODR1013("ODR1013"	,"影像上传接口"),
+    ODR1012("ODR1012"	,"非个人申请支付接口"),
+    ODR1011("ODR1011"	,"获取电子签名页面接口"),
+    ODR1010("ODR1010"	,"保存提交核保接口"),
+    ODR1009("ODR1009"	,"保费计算接口"),
+    ODR1008("ODR1008"	,"车辆和客户信息确认接口"),
+    ODR1007("ODR1007"	,"获取业务订单号接口"),
+    VHL_INS2005("VHL-INS2005"	,"电子保单下载接口"),
+    NVHLODR1001V01("NVHL-ODR1001V01","驾意险接口"),
+    NVHLODR2007("NVHL-ODR2007V01","驾意险保单查询接口");
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 38 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/TypeVehicleMapping.java

@@ -0,0 +1,38 @@
+package com.jzg.quotation.dajia.api.constant;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum TypeVehicleMapping {
+
+    TM_01("01", "营业出租租赁", "364003001", "374007"),
+    TM_02("02", "营业城市公交", "364003002", "374008"),
+    TM_03("03", "营业公路客运", "364003003", "374009"),
+    TM_04("04", "营业货运", "364004002", "374010"),
+    TM_05("05", "家庭自用", "364001001", "374001"),
+    TM_06("06", "非营业机关", "364002001", "374003"),
+    TM_07("07", "非营业企业", "364002002", "374002"),
+    TM_08("08", "非营业货运", "364004001", "374005");
+
+    private final String code;
+
+    private final String desc;
+
+    // 交强
+    private final String cUsageCdeJq;
+
+    // 商业
+    private final String cUsageCdeSy;
+
+    public static String getByCode(String code){
+        for (TypeVehicleMapping typeVehicleMapping : values()) {
+            if (typeVehicleMapping.getCode().equals(code)) {
+                return typeVehicleMapping.getDesc();
+            }
+        }
+        return null;
+    }
+}

+ 25 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/VehicleType.java

@@ -0,0 +1,25 @@
+package com.jzg.quotation.dajia.api.constant;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @description: 车辆种类
+ * @author: wenks
+ * @date: 2023/9/15 15:50
+ **/
+@AllArgsConstructor
+@Getter
+public enum VehicleType {
+
+    VT_A0("A0", "客车"),
+    VT_A1("A1","货车");
+
+    // 编号
+    private final String code;
+    // 说明
+    private final String desc;
+
+}

+ 95 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/enums/InsuranceEnum.java

@@ -0,0 +1,95 @@
+package com.jzg.quotation.dajia.api.constant.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @description: todo
+ * @author: shenwd
+ * @date: 2025/3/3 15:45
+ **/
+@AllArgsConstructor
+@Getter
+public enum InsuranceEnum {
+
+    AAIC("AAIC", "安信农业保险股份有限公司", ""),
+    ABIC("ABIC", "安邦财产保险股份有限公司", ""),
+    ACIC("ACIC", "安诚财产保险股份有限公司", ""),
+    AHIC("AHIC", "安华农业保险股份有限公司", ""),
+    AICS("AICS", "永诚财产保险股份有限公司", "yongcheng"),
+    AIGC("AIGC", "美亚财产保险有限公司", ""),
+    AMIC("AMIC", "中航安盟财产保险有限公司", ""),
+    APIC("APIC", "安心财产保险有限责任公司", ""),
+    AZCN("AZCN", "京东安联财产保险有限公司", ""),
+    BGIC("BGIC", "北部湾财产保险股份有限公司", ""),
+    BOCI("BOCI", "中银保险有限公司", ""),
+    BPIC("BPIC", "渤海财产保险股份有限公司", "bohai"),
+    CAIC("CAIC", "长安责任保险股份有限公司", ""),
+    CATH("CATH", "国泰财产保险有限责任公司", ""),
+    CCBP("CCBP", "建信财产保险有限公司", ""),
+    CCIC("CCIC", "中国大地财产保险股份有限公司", ""),
+    CHAC("CHAC", "诚泰财产保险股份有限公司", "chengtai"),
+    CICP("CICP", "中华联合财产保险股份有限公司", ""),
+    CJCX("CJCX", "长江财产保险股份有限公司", ""),
+    CPIC("CPIC", "中国太平洋财产保险股份有限公司", "taipingyang"),
+    CRCI("CRCI", "中国铁路财产保险自保有限公司", ""),
+    CRIC("CRIC", "富德财产保险股份有限公司", ""),
+    DBIC("DBIC", "都邦财产保险股份有限公司", ""),
+    DHIC("DHIC", "鼎和财产保险股份有限公司", ""),
+    DICC("DICC", "史带财产保险股份有限公司", ""),
+    DJPC("DJPC", "大家财产保险有限责任公司", "dajia"),
+    EAIC("EAIC", "易安财产保险股份有限公司", ""),
+    FPIC("FPIC", "富邦财产保险有限公司", ""),
+    GPIC("GPIC", "中国人寿财产保险股份有限公司", "renshou"),
+    GYIC("GYIC", "国元农业保险股份有限公司", ""),
+    HAIC("HAIC", "华安财产保险股份有限公司", ""),
+    HBIC("HBIC", "恒邦财产保险股份有限公司", "hengbang"),
+    HGIC("HGIC", "海峡金桥财产保险股份有限公司", ""),
+    HHBX("HHBX", "华海财产保险股份有限公司", ""),
+    HNIC("HNIC", "华农财产保险股份有限公司", "huanong"),
+    HTIC("HTIC", "华泰财产保险有限公司", "huatai"),
+    HYIC("HYIC", "现代财产保险(中国)有限公司", ""),
+    JLIC("JLIC", "久隆财产保险有限公司", ""),
+    JTIC("JTIC", "锦泰财产保险股份有限公司", ""),
+    LIHI("LIHI", "利宝保险有限公司", ""),
+    MACN("MACN", "亚太财产保险有限公司", ""),
+    MSIC("MSIC", "三井住友海上火灾保险(中国)有限公司", ""),
+    PAIC("PAIC", "中国平安财产保险股份有限公司", "pingan"),
+    PICC("PICC", "中国人民财产保险股份有限公司", ""),
+    QHIC("QHIC", "新疆前海联合财产保险股份有限公司", ""),
+    RSIC("RSIC", "融盛财产保险股份有限公司", ""),
+    SJIC("SJIC", "日本财产保险(中国)有限公司", ""),
+    SMIC("SMIC", "阳光农业相互保险公司", ""),
+    SPIC("SPIC", "三星财产保险(中国)有限公司", ""),
+    TAIC("TAIC", "天安财产保险股份有限公司", ""),
+    TKIC("TKIC", "泰康在线财产保险股份有限公司", "taikang"),
+    TMNF("TMNF", "东京海上日动火灾保险(中国)有限公司", ""),
+    TPBX("TPBX", "安盛天平财产保险股份有限公司", "ansheng"),
+    TPIC("TPIC", "太平财产保险有限公司", "taiping"),
+    TSBX("TSBX", "泰山财产保险股份有限公司", ""),
+    ULIC("ULIC", "合众财产保险股份有限公司", ""),
+    UTIC("UTIC", "众诚汽车保险股份有限公司", ""),
+    XAIC("XAIC", "鑫安汽车保险股份有限公司", ""),
+    XDCX("XDCX", "国任财产保险股份有限公司", "guoren"),
+    YAIC("YAIC", "永安财产保险股份有限公司", "yongan"),
+    YDCX("YDCX", "英大泰和财产保险股份有限公司", ""),
+    YGBX("YGBX", "阳光财产保险股份有限公司", "yangguang"),
+    YPIC("YPIC", "黄河财产保险股份有限公司", ""),
+    YZIC("YZIC", "燕赵财产保险股份有限公司", ""),
+    ZAPA("ZAPA", "众安在线财产保险股份有限公司", "zongan"),
+    ZFIC("ZFIC", "珠峰财产保险股份有限公司", ""),
+    ZKIC("ZKIC", "紫金财产保险股份有限公司", "zijin"),
+    ZLIC("ZLIC", "中路财产保险股份有限公司", ""),
+    ZMBX("ZMBX", "中煤财产保险股份有限公司", "zhongmei"),
+    ZSIC("ZSIC", "浙商财产保险股份有限公司", ""),
+    ZYBX("ZYBX", "中原农业保险股份有限公司", ""),
+    ZYIC("ZYIC", "中意财产保险有限公司", ""),
+    SNPIC("SNPIC", "申能财产保险股份有限公司", "");
+
+    private final String code;
+
+    private final String name;
+
+    private final String pinyin;
+
+}

+ 28 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/enums/Message.java

@@ -0,0 +1,28 @@
+package com.jzg.quotation.dajia.api.constant.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+
+/**
+ * @description: 请求异常
+ * @author: wenks
+ * @date: 2023/11/14 16:56
+ **/
+
+@AllArgsConstructor
+@Getter
+public enum Message {
+
+    M0000("0000", "交易成功"),
+    M0001("0001", "业务交互处理成功,但有相应软提示信息"),
+    M0002("0002", "数据校验失败(返回校验失败原因)"),
+    M0003("0003", "服务异常-系统异常"),
+    M9999("9999", "其它异常");
+
+    private final String code;
+
+    private final String desc;
+
+
+}

+ 50 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/constant/enums/RequestUrl.java

@@ -0,0 +1,50 @@
+package com.jzg.quotation.dajia.api.constant.enums;
+
+import com.jzg.quotation.commons.standard.CrawlerRequestUrlStandard;
+import lombok.AllArgsConstructor;
+
+@AllArgsConstructor
+public enum RequestUrl implements CrawlerRequestUrlStandard {
+
+    DJ_TQBD_200036("DJ_TQBD_200036", "深圳双录手动上传保批单列表接口"),
+    DJ_TQBD_200033("DJ_TQBD_200033", "平台重复投保信息查询接口"),
+    DJ_TQBD_200010("DJ_TQBD_200010", "根据订单号查询订单状态轨迹接口"),
+    DJ_TQBD_200009("DJ_TQBD_200009", "车辆车型查询接口"),
+    DJ_TQBD_200006("DJ_TQBD_200006", "今日验车码获取接口"),
+    DJ_TQBD_200005("DJ_TQBD_200005", "查询保单接口"),
+    DJ_TQBD_100078("DJ_TQBD_100078", "深圳双录影像认证接口"),
+    DJ_TQBD_100073("DJ_TQBD_100073", "深圳双录上传投保单接口"),
+    DJ_TQBD_100071("DJ_TQBD_100071", "深圳双录上传保单接口"),
+    DJ_TQBD_100049("DJ_TQBD_100049", "北京承保交管车辆查询确认接口"),
+    DJ_TQBD_100048("DJ_TQBD_100048", "北京交管查询接口"),
+    DJ_TQBD_100036("DJ_TQBD_100036", "新车备案接口"),
+    DJ_TQBD_100021("DJ_TQBD_100021", "北京承保交管车辆查询确认接口"),
+    DJ_TQBD_100020("DJ_TQBD_100020", "北京承保交管车辆查询接口"),
+    DJ_TQBD_100016("DJ_TQBD_100016", "车辆实际价值计算接口"),
+    DJ_TQBD_100014("DJ_TQBD_100014", "业务订单退回接口"),
+    DJ_TQBD_100013("DJ_TQBD_100013", "影像上传接口"),
+    DJ_TQBD_100012("DJ_TQBD_100012", "非个人申请支付接口"),
+    DJ_TQBD_100011("DJ_TQBD_100011", "获取电子签名页面接口"),
+    DJ_TQBD_100010("DJ_TQBD_100010", "保存提交核保接口"),
+    DJ_TQBD_100009("DJ_TQBD_100009", "保费计算接口"),
+    DJ_TQBD_100008("DJ_TQBD_100008", "车辆和客户信息确认接口"),
+    DJ_TQBD_100007("DJ_TQBD_100007", "获取业务订单号接口"),
+    DJ_TQBD_200000("DJ_TQBD_200000", "电子保单下载接口"),
+    DJ_TQBD_100100("DJ_TQB_NDR1001", "驾意险接口"),
+    DJ_TQBD_200007("DJ_TQB_NDR2007","驾意险保单查询接口")
+    ;
+
+    private final String uri;
+
+    private final String description;
+
+    @Override
+    public String getRequestDescription() {
+        return description;
+    }
+
+    @Override
+    public String uri() {
+        return uri;
+    }
+}

+ 152 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/AESEncrypt.java

@@ -0,0 +1,152 @@
+package com.jzg.quotation.dajia.api.entity;
+
+
+import cn.hutool.core.codec.Base64Decoder;
+import cn.hutool.core.codec.Base64Encoder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import javax.crypto.Cipher;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+
+
+/**
+ * AES 加解密工具类, AES/CFB/PKCS5Padding
+ */
+@Component
+public class AESEncrypt {
+	final static Logger log = LoggerFactory.getLogger(AESEncrypt.class);
+
+
+//	public static AESEncrypt me() {
+//		return SpringContextUtil.getBean("AESEncrypt");
+//	}
+
+	/**
+	 * 加密用的Key 可以用26个字母和数字组成 此处使用AES-128-CBC加密模式,key需要为16位。
+	 */
+	//private static String sKey = CommonUtil.getRandomString(16, "mix");// key,可自行修改
+	private static String ivParameter = "8811430976208818";// 偏移量,可自行修改
+	private static String sCipherAES = "AES/CFB/PKCS5Padding";
+	// private static String sCipherAES = "RSA/ECB/NoPadding";
+	private static String keySpec = "AES";
+
+	public String encrypt(String encData, String secretKey, String vector) throws Exception {
+		if (secretKey == null) {
+			return null;
+		}
+		if (secretKey.length() != 16) {
+			return null;
+		}
+		Cipher cipher = Cipher.getInstance(sCipherAES);
+		byte[] raw = secretKey.getBytes();
+		SecretKeySpec skeySpec = new SecretKeySpec(raw, keySpec);
+		// 使用CBC模式,需要一个向量iv,可增加加密算法的强度
+		IvParameterSpec iv = new IvParameterSpec(vector.getBytes());
+		cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
+		byte[] encrypted = cipher.doFinal(encData.getBytes("utf-8"));
+		// 此处使用BASE64做转码。
+		return new Base64Encoder().encode(encrypted);
+	}
+
+	public String decrypt(String sSrc, String key, String ivs) throws Exception {
+		try {
+			byte[] raw = key.getBytes("ASCII");
+			SecretKeySpec skeySpec = new SecretKeySpec(raw, keySpec);
+			Cipher cipher = Cipher.getInstance(sCipherAES);
+			IvParameterSpec iv = new IvParameterSpec(ivs.getBytes());
+			cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
+			// 先用base64解密
+
+			byte[] encrypted1 = new Base64Decoder().decode(sSrc);
+			byte[] original = cipher.doFinal(encrypted1);
+			String originalString = new String(original, "utf-8");
+			return originalString;
+		} catch (Exception ex) {
+			return null;
+		}
+	}
+
+	public static String encodeBytes(byte[] bytes) {
+		StringBuffer strBuf = new StringBuffer();
+
+		for (int i = 0; i < bytes.length; i++) {
+			strBuf.append((char) (((bytes[i] >> 4) & 0xF) + ((int) 'a')));
+			strBuf.append((char) (((bytes[i]) & 0xF) + ((int) 'a')));
+		}
+
+		return strBuf.toString();
+	}
+
+	// 加密
+	public static String encrypt(String sSrc, String encryKey) throws Exception {
+		Cipher cipher = Cipher.getInstance(sCipherAES);
+		byte[] raw = encryKey.getBytes("ASCII");
+		SecretKeySpec skeySpec = new SecretKeySpec(raw, keySpec);
+		// 使用CBC模式,需要一个向量iv,可增加加密算法的强度
+		IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());
+		cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
+		byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));
+		// 此处使用BASE64做转码。
+		return new Base64Encoder().encode(encrypted);
+	}
+
+	// 解密
+	public static String decrypt(String sSrc, String encryKey) throws Exception {
+		try {
+			byte[] raw = /*sKey*/encryKey.getBytes("ASCII");
+			SecretKeySpec skeySpec = new SecretKeySpec(raw, keySpec);
+			Cipher cipher = Cipher.getInstance(sCipherAES);
+			IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());
+			cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
+			byte[] encrypted1 = new Base64Decoder().decode(sSrc);// 先用base64解密
+			byte[] original = cipher.doFinal(encrypted1);
+			String originalString = new String(original, "utf-8");
+			return originalString;
+		} catch (Exception ex) {
+			return null;
+		}
+	}
+
+	public static void main(String[] args) throws Exception {
+
+
+		String encryKey="qwertyuiopasdfgh";//秘钥
+		// 加密
+		String jsonss = "{\n" +
+				" \"body\": {\n" +
+				"  \"businessInfo\": {\n" +
+				"   \"busiOpdpt\": \"19\",\n" +
+				"   \"busiOprCde\": \"02000176\"\n" +
+				"  },\n" +
+				"  \"vhlType\": 365001\n" +
+				" },\n" +
+				" \"channelCode\": \"TQBD\",\n" +
+				" \"interCode\": \"ODR1007\",\n" +
+				" \"moduleCode\": \"test\",\n" +
+				" \"serialNo\": \"test_20220331_623a1de14fd3488783ce4adf3e6b19eb\",\n" +
+				" \"transTime\": \"2023-11-15 09:03:25\"\n" +
+				"}";
+//		String jsonStr = "{\"body\":{\"authenticationNo\":\"21bb9edc-78e2-4d01-bcba-fd49673646cb\",\"checkCode\":\"123456\",\"orderNo\":\"D2022052604020001768f182663e2094\"},\"channelCode\":\"test\",\"interCode\":\"test\",\"moduleCode\":\"test\",\"serialNo\":\"test_20220331_623a1de14fd3488783ce4adf3e6b19eb\",\"transTime\":\"2022-04-02 16:03:52\"}";
+		long lStart = System.currentTimeMillis();
+		String enString = encrypt(jsonss, encryKey);
+		log.info("秘钥:{}", encryKey);
+		log.info("加密后的字串是:{}", enString);
+		System.out.println(enString);
+		long lUseTime = System.currentTimeMillis() - lStart;
+		log.info("加密耗时:{}毫秒", lUseTime);
+		// 解密
+		log.info("秘钥:{}", encryKey);
+		String deS = "04yFURVn6T1L0ApKAm910k32EiCzoxfxkuXK3zR4GJaWclnJh1OmwOllyzWSEPOykrWs691sbW3WeGuDbsisYIgw/RXiC8JJf9PpEy0uVWm5W+rdlaoPcujWPz6L2IuHg+PQqA0aFLpiRlAQ16fshfiasOlqE3Oov+5wBbuEICHTiT42NdcC+VfI6rPDSXTk6T6UiLQNYHHhDn3ZLrqdf14t9WlH3EI+uq12PuHgFgUYBnt1TMxAPWwDNfNwP94pbJ6HYoallMb4rAB0Q1yjrc7Nz8Mt43hda1rYKDIO3WF6KfgTKbDdHWTQqtTStMAbxdV/IBpKaw3QNXal3YeVgGuSJ/5E4F2C6btJsIzLIo/zQ1WM2Yj8VYrp+TSkXaoB";
+
+		String dec = "06THHBNxr34SyEhEeyY7lQrklGRCl9vKEsShgxcGGLLKQup0WLM1Ek4fm/7dQZTDnPH+82tkeHoO3vas6ZJe+xg+R7F7phedehES2gqj+r5xoO9Eiemp3WTtdawiL18FwZ/vEuEx9sYBrQLR8+wZt6F5zy7BbdPW0FwXk7gur4lBsJfUCxbBVX8crdfj2FiK4bqxdGd3FHARn/SNDATCKPGvuLrUwQv9PAZjsPK/ZvLmIL3Ob8NSXUMLGhYDHXy4l4cT3VboIzrYziJtyrULECICuBwUsQUq/L/lsQG9ghXHgMq4h6AuHz19ZAb7vlz/";
+		String DeString = decrypt(deS, encryKey);
+		log.info("decrypt:{}", DeString);
+
+
+		String DeString1 = decrypt(dec, encryKey);
+		log.info("decrypt11:{}", DeString1);
+	}
+}

+ 127 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/DaJiaApiConfigureParameters.java

@@ -0,0 +1,127 @@
+package com.jzg.quotation.dajia.api.entity;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.commons.standard.ConfigureParameters;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class DaJiaApiConfigureParameters implements ConfigureParameters {
+
+    @Serial
+    private static final long serialVersionUID = 01212276026647077640261L;
+
+    /**
+     *
+     */
+    @JsonProperty("IssuingRegion")
+    private String issuingRegion;
+
+    /**
+     *
+     */
+    @JsonProperty("LoginInstitution")
+    private String loginInstitution;
+
+    /**
+     *
+     */
+    @JsonProperty("OperatorCode")
+    private String operatorCode;
+
+    /**
+     *
+     */
+    @JsonProperty("OperatorName")
+    private String operatorName;
+
+    /**
+     *
+     */
+    @JsonProperty("BusinessSource")
+    private String businessSource;
+
+    /**
+     *
+     */
+    @JsonProperty("AgentCode")
+    private String agentCode;
+
+    /**
+     *
+     */
+    @JsonProperty("IssuingInstitution")
+    private String issuingInstitution;
+
+    /**
+     *
+     */
+    @JsonProperty("SalespersonCode")
+    private String salespersonCode;
+
+    /**
+     *
+     */
+    @JsonProperty("SalespersonIDNumber")
+    private String salespersonIDNumber;
+
+    /**
+     *
+     */
+    @JsonProperty("SalespersonName")
+    private String salespersonName;
+
+    /**
+     *
+     */
+    @JsonProperty("BusinessUnit")
+    private String businessUnit;
+
+    /**
+     *
+     */
+    @JsonProperty("BusinessUnitName")
+    private String businessUnitName;
+
+    /**
+     *
+     */
+    @JsonProperty("LoginPersonnelIDNumber")
+    private String loginPersonnelIDNumber;
+
+    /**
+     *
+     */
+    @JsonProperty("RecommendedBy")
+    private String recommendedBy;
+
+    /**
+     *
+     */
+    @JsonProperty("Channel")
+    private String channel;
+
+    /**
+     *
+     */
+    @JsonProperty("RecommendedSubChannels")
+    private String recommendedSubChannels;
+
+    /**
+     *
+     */
+    @JsonProperty("ChannelCode")
+    private String channelCode;
+
+    /**
+     *
+     */
+    @JsonProperty("RecommendedCode")
+    private String recommendedCode;
+
+}

+ 40 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/DaJiaBaseRequest.java

@@ -0,0 +1,40 @@
+package com.jzg.quotation.dajia.api.entity;
+
+import cn.hutool.core.date.DateUtil;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.commons.util.idgen.IdGenerate;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@NoArgsConstructor
+public class DaJiaBaseRequest implements Serializable {
+
+    private static final long serialVersionUID = 0432443271071471444742L;
+
+    @JsonProperty("channelCode")
+    private String channelCode;
+
+    @JsonProperty("interCode")
+    private String interCode;
+
+    @JsonProperty("moduleCode")
+    private String moduleCode;
+
+    @JsonProperty("serialNo")
+    private String serialNo;
+
+    @JsonProperty("transTime")
+    private String transTime;
+
+    public DaJiaBaseRequest(String channelCode, String interCode){
+        this.channelCode = channelCode;
+        this.interCode = interCode;
+        this.moduleCode = "test";
+        this.serialNo = "test" + IdGenerate.nextId();
+        this.transTime = DateUtil.formatDateTime(new Date());
+    }
+}

+ 24 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/DaJiaBaseResponse.java

@@ -0,0 +1,24 @@
+package com.jzg.quotation.dajia.api.entity;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@NoArgsConstructor
+@Data
+public class DaJiaBaseResponse implements Serializable {
+
+    private static final long serialVersionUID = 01100527405641642276404L;
+
+    @JsonProperty("status")
+    private String status;
+
+    @JsonProperty("message")
+    private String message;
+
+    @JsonProperty("respTime")
+    private String respTime;
+
+}

+ 35 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/po/DaJiaApiOrder.java

@@ -0,0 +1,35 @@
+package com.jzg.quotation.dajia.api.entity.po;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+
+/**
+ * @description: 大家财险 【API】 报价过程信息存储
+ * @author: wenks
+ * @date: 2025/2/25 15:42
+ **/
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+@Document("dajia.api.order")
+public class DaJiaApiOrder {
+
+    @Id
+    private String id;
+    /**
+     * 订单号
+     */
+    private String orderNo;
+    /**
+     * 产品代码
+     */
+    private String productsCode;
+    /**
+     * 被保人省份证
+     */
+    private String insuredIdentify;
+}

+ 81 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/ODR1007Request.java

@@ -0,0 +1,81 @@
+package com.jzg.quotation.dajia.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.dajia.api.constant.ServiceCode;
+import com.jzg.quotation.dajia.api.entity.DaJiaApiConfigureParameters;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @description: 大家财险 获取业务订单号接口 请求参数
+ * @author: dongxin
+ * @date: 2025/03/14 16:28
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ODR1007Request extends DaJiaBaseRequest {
+
+    private static final long serialVersionUID = 01537410142327235165744L;
+
+    @JsonProperty("body")
+    private BodyDTO body;
+
+    @NoArgsConstructor
+    @Data
+    public static class BodyDTO implements Serializable {
+
+        private static final long serialVersionUID = 3223519015734628032L;
+
+        /**
+         * 业务归属信息【业务范围】
+         */
+        @JsonProperty("businessInfo")
+        private BusinessInfoDTO businessInfo;
+
+        /**
+         * 车辆大类
+         */
+        @JsonProperty("vhlType")
+        private Integer vhlType;
+
+        @NoArgsConstructor
+        @Data
+        public static class BusinessInfoDTO implements Serializable {
+
+            private static final long serialVersionUID = -9215946890077827093L;
+
+            /**
+             * 登录机构
+             */
+            @JsonProperty("busiOpdpt")
+            private String busiOpdpt;
+
+            /**
+             * 操作员代码
+             */
+            @JsonProperty("busiOprCde")
+            private String busiOprCde;
+
+        }
+    }
+
+    public ODR1007Request(){
+        super("TQBD", ServiceCode.ODR1007.getCode());
+    }
+
+    public ODR1007Request(DaJiaApiConfigureParameters daJiaConfigureParameters){
+        super(daJiaConfigureParameters.getChannelCode(), ServiceCode.ODR1007.getCode());
+        BodyDTO bodyDTO = new BodyDTO();
+        BodyDTO.BusinessInfoDTO businessInfoDTO = new BodyDTO.BusinessInfoDTO();
+        businessInfoDTO.setBusiOpdpt(daJiaConfigureParameters.getLoginInstitution());
+        businessInfoDTO.setBusiOprCde(daJiaConfigureParameters.getOperatorCode());
+        bodyDTO.setVhlType(365001);
+        bodyDTO.setBusinessInfo(businessInfoDTO);
+        this.body = bodyDTO;
+
+    }
+}

+ 853 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/ODR1008Request.java

@@ -0,0 +1,853 @@
+package com.jzg.quotation.dajia.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.commons.util.StringUtils;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.quotation.commons.entity.vo.quote.CustomerInfoVo;
+import com.jzg.quotation.commons.entity.vo.quote.RiskInfoVo;
+import com.jzg.quotation.dajia.api.constant.*;
+import com.jzg.quotation.dajia.api.entity.DaJiaApiConfigureParameters;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseRequest;
+import com.jzg.quotation.dajia.api.entity.response.ODR2009Response;
+import com.jzg.quotation.dajia.api.entity.vo.PersonAreaVo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+import static com.ydtech.modules.order.entity.api.dajia.constants.CFuelType.*;
+
+
+/**
+ * @description: ODR1008 车辆和客户信息确认 请求参数
+ * @author: wenks
+ * @date: 2023/11/14 16:51
+ **/
+@EqualsAndHashCode(callSuper = true)
+//@NoArgsConstructor
+@Data
+public class ODR1008Request extends DaJiaBaseRequest {
+
+    private static final long serialVersionUID = -3271826016394642480L;
+
+    @JsonProperty("body")
+    private BodyDTO body;
+
+    @NoArgsConstructor
+    @Data
+    public static class BodyDTO implements Serializable {
+
+        private static final long serialVersionUID = 7312734581391918243L;
+        @JsonProperty("applicantInfo")
+        private ApplicantInfoDTO applicantInfo;
+        @JsonProperty("businessInfo")
+        private BusinessInfoDTO businessInfo;
+        @JsonProperty("insuredInfo")
+        private InsuredInfoDTO insuredInfo;
+        @JsonProperty("jqProdNo")
+        private String jqProdNo;
+        @JsonProperty("orderNo")
+        private String orderNo;
+        @JsonProperty("syProdNo")
+        private String syProdNo;
+        @JsonProperty("vehicleInfo")
+        private VehicleInfoDTO vehicleInfo;
+        @JsonProperty("vehicleOwnerInfo")
+        private VehicleOwnerInfoDTO vehicleOwnerInfo;
+
+        @NoArgsConstructor
+        @Data
+        public static class ApplicantInfoDTO implements Serializable {
+            private static final long serialVersionUID = 2368014689374178222L;
+            @JsonProperty("applicantCBusiness")
+            private Integer applicantCBusiness;
+            @JsonProperty("applicantCCertfCde")
+            private String applicantCCertfCde;
+            @JsonProperty("applicantCCertfCls")
+            private String applicantCCertfCls;
+            @JsonProperty("applicantCCountry")
+            private Integer applicantCCountry;
+            @JsonProperty("applicantCCusRiskLvl")
+            private Integer applicantCCusRiskLvl;
+            @JsonProperty("applicantCNation")
+            private Integer applicantCNation;
+            @JsonProperty("applicantCProfissionXiq1")
+            private Integer applicantCProfissionXiq1;
+            @JsonProperty("applicantCProfissionXiq2")
+            private Integer applicantCProfissionXiq2;
+            @JsonProperty("applicantCde")
+            private Long applicantCde;
+            @JsonProperty("applicantChasalesCertfCde")
+            private Long applicantChasalesCertfCde;
+            @JsonProperty("applicantChasalesCertfCls")
+            private String applicantChasalesCertfCls;
+            @JsonProperty("applicantChasalesClntMrk")
+            private Integer applicantChasalesClntMrk;
+            @JsonProperty("applicantChasalesEmail")
+            private String applicantChasalesEmail;
+            @JsonProperty("applicantChasalesMobile")
+            private Long applicantChasalesMobile;
+            @JsonProperty("applicantChasalesNme")
+            private String applicantChasalesNme;
+            @JsonProperty("applicantCity")
+            private String applicantCity;
+            @JsonProperty("applicantClntAddr")
+            private String applicantClntAddr;
+            @JsonProperty("applicantClntMrk")
+            private Integer applicantClntMrk;
+            @JsonProperty("applicantCounty")
+            private String applicantCounty;
+            @JsonProperty("applicantEmPower")
+            private Integer applicantEmPower;
+            @JsonProperty("applicantSuffixAddr")
+            private String applicantSuffixAddr;
+            @JsonProperty("applicantEmail")
+            private String applicantEmail;
+            @JsonProperty("applicantEthnicity")
+            private String applicantEthnicity;
+            @JsonProperty("applicantHomeAddr")
+            private String applicantHomeAddr;
+            @JsonProperty("applicantIssueOrg")
+            private String applicantIssueOrg;
+            @JsonProperty("applicantMobile")
+            private String applicantMobile;
+            @JsonProperty("applicantNme")
+            private String applicantNme;
+            @JsonProperty("applicantNote")
+            private String applicantNote;
+            @JsonProperty("applicantPayerRel")
+            private Integer applicantPayerRel;
+            @JsonProperty("applicantPhoneCertfCde")
+            private Long applicantPhoneCertfCde;
+            @JsonProperty("applicantPhoneCertiType")
+            private String applicantPhoneCertiType;
+            @JsonProperty("applicantPhoneName")
+            private String applicantPhoneName;
+            @JsonProperty("applicantPhoneType")
+            private String applicantPhoneType;
+            @JsonProperty("applicantProvince")
+            private String applicantProvince;
+            @JsonProperty("applicantSex")
+            private String applicantSex;
+            @JsonProperty("applicantTBirthday")
+            private String applicantTBirthday;
+            @JsonProperty("applicantTEffectiveDate")
+            private String applicantTEffectiveDate;
+            @JsonProperty("applicantTExpiredDate")
+            private String applicantTExpiredDate;
+            @JsonProperty("applicantWorkDpt")
+            private Integer applicantWorkDpt;
+            @JsonProperty("applicantZipCde")
+            private String applicantZipCde;
+            @JsonProperty("applicantTel")
+            private String applicantTel;
+
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class BusinessInfoDTO implements Serializable {
+            private static final long serialVersionUID = 2058043103906170015L;
+            @JsonProperty("busiAgentNme")
+            private String busiAgentNme;
+            @JsonProperty("busiBrkrCde")
+            private String busiBrkrCde;
+            @JsonProperty("busiBsnsTyp")
+            private String busiBsnsTyp;
+            @JsonProperty("busiChaSalesId")
+            private Integer busiChaSalesId;
+            @JsonProperty("busiChannelSrc")
+            private String busiChannelSrc;
+            @JsonProperty("busiCoopCde")
+            private String busiCoopCde;
+            @JsonProperty("busiCoopNme")
+            private String busiCoopNme;
+            @JsonProperty("busiDataFlag")
+            private String busiDataFlag;
+            @JsonProperty("busiDataSrc")
+            private String busiDataSrc;
+            @JsonProperty("busiDptCde")
+            private String busiDptCde;
+            @JsonProperty("busiGarageCode")
+            private String busiGarageCode;
+            @JsonProperty("busiGarageName")
+            private String busiGarageName;
+            @JsonProperty("busiGrantDptCde")
+            private String busiGrantDptCde;
+            @JsonProperty("busiGrantDptNme")
+            private String busiGrantDptNme;
+            @JsonProperty("busiId")
+            private String busiId;
+            @JsonProperty("busiOpdpt")
+            private String busiOpdpt;
+            @JsonProperty("busiOprCde")
+            private String busiOprCde;
+            @JsonProperty("busiOprNme")
+            private String busiOprNme;
+            @JsonProperty("busiRecSubChannel")
+            private String busiRecSubChannel;
+            @JsonProperty("busiRecommendCde")
+            private String busiRecommendCde;
+            @JsonProperty("busiRepairFlag")
+            private Integer busiRepairFlag;
+            @JsonProperty("busiServiceCode")
+            private String busiServiceCode;
+            @JsonProperty("busiSlsCde")
+            private String busiSlsCde;
+            @JsonProperty("busiSlsId")
+            private Long busiSlsId;
+            @JsonProperty("busiSlsNme")
+            private String busiSlsNme;
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class InsuredInfoDTO implements Serializable {
+            private static final long serialVersionUID = 1471113087138506721L;
+            @JsonProperty("insuredBusiness")
+            private Integer insuredBusiness;
+            @JsonProperty("insuredCde")
+            private Long insuredCde;
+            @JsonProperty("insuredCertfCde")
+            private String insuredCertfCde;
+            @JsonProperty("insuredCertfCls")
+            private String insuredCertfCls;
+            @JsonProperty("insuredCity")
+            private String insuredCity;
+            @JsonProperty("insuredClntAddr")
+            private String insuredClntAddr;
+            @JsonProperty("insuredClntMrk")
+            private Integer insuredClntMrk;
+            @JsonProperty("insuredCountry")
+            private Integer insuredCountry;
+            @JsonProperty("insuredCounty")
+            private String insuredCounty;
+            @JsonProperty("insuredSuffixAddr")
+            private String insuredSuffixAddr;
+            @JsonProperty("insuredCusRiskLvl")
+            private Integer insuredCusRiskLvl;
+            @JsonProperty("insuredEmail")
+            private String insuredEmail;
+            @JsonProperty("insuredEthnicity")
+            private String insuredEthnicity;
+            @JsonProperty("insuredHomeAddr")
+            private String insuredHomeAddr;
+            @JsonProperty("insuredIssueOrg")
+            private String insuredIssueOrg;
+            @JsonProperty("insuredMobile")
+            private String insuredMobile;
+            @JsonProperty("insuredNation")
+            private Integer insuredNation;
+            @JsonProperty("insuredNme")
+            private String insuredNme;
+            @JsonProperty("insuredPhoneCertfCde")
+            private Long insuredPhoneCertfCde;
+            @JsonProperty("insuredPhoneCertiType")
+            private String insuredPhoneCertiType;
+            @JsonProperty("insuredPhoneName")
+            private String insuredPhoneName;
+            @JsonProperty("insuredPhoneType")
+            private String insuredPhoneType;
+            @JsonProperty("insuredProfissionXiq1")
+            private Integer insuredProfissionXiq1;
+            @JsonProperty("insuredProfissionXiq2")
+            private Integer insuredProfissionXiq2;
+            @JsonProperty("insuredProvince")
+            private String insuredProvince;
+            @JsonProperty("insuredResidAddr")
+            private String insuredResidAddr;
+            @JsonProperty("insuredSex")
+            private String insuredSex;
+            @JsonProperty("insuredTBirthday")
+            private String insuredTBirthday;
+            @JsonProperty("insuredTEffectiveDate")
+            private String insuredTEffectiveDate;
+            @JsonProperty("insuredTExpiredDate")
+            private String insuredTExpiredDate;
+            @JsonProperty("insuredWorkDpt")
+            private Integer insuredWorkDpt;
+            @JsonProperty("insuredZipCde")
+            private String insuredZipCde;
+            @JsonProperty("insuredTel")
+            private String insuredTel;
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class VehicleInfoDTO implements Serializable {
+            private static final long serialVersionUID = 8099502440213359843L;
+            @JsonProperty("vehicleAnswer")
+            private String vehicleAnswer;
+            @JsonProperty("vehicleBrandId")
+            private String vehicleBrandId;
+            @JsonProperty("vehicleCSaleCompany")
+            private String vehicleCSaleCompany;
+            @JsonProperty("vehicleChgOwnerFlag")
+            private Integer vehicleChgOwnerFlag;
+            @JsonProperty("vehicleEcdemicMrk")
+            private String vehicleEcdemicMrk;
+            @JsonProperty("vehicleEngNo")
+            private String vehicleEngNo;
+            @JsonProperty("vehicleFrmNo")
+            private String vehicleFrmNo;
+            @JsonProperty("vehicleFstRegYmBar")
+            private String vehicleFstRegYmBar;
+            @JsonProperty("vehicleFuelType")
+            private String vehicleFuelType;
+            @JsonProperty("vehicleIs4SShop")
+            private Integer vehicleIs4SShop;
+            @JsonProperty("vehicleIsQuery")
+            private Integer vehicleIsQuery;
+            @JsonProperty("vehicleLoanVehicleFlag")
+            private Integer vehicleLoanVehicleFlag;
+            @JsonProperty("vehicleModelCde")
+            private String vehicleModelCde;
+            @JsonProperty("vehicleModelEnergyType")
+            private String vehicleModelEnergyType;
+            @JsonProperty("vehicleModelNme")
+            private String vehicleModelNme;
+            @JsonProperty("vehicleNConsultPurchaseValue")
+            private Double vehicleNConsultPurchaseValue;
+            @JsonProperty("vehicleNCurbWt")
+            private Float vehicleNCurbWt;
+            @JsonProperty("vehicleNDisplacement")
+            private String vehicleNDisplacement;
+            @JsonProperty("vehicleNNewPurchaseValue")
+            private String vehicleNNewPurchaseValue;
+            @JsonProperty("vehicleNPower")
+            private Double vehicleNPower;
+            @JsonProperty("vehicleNPureRange")
+            private Integer vehicleNPureRange;
+            @JsonProperty("vehicleNSeatNum")
+            private String vehicleNSeatNum;
+            @JsonProperty("vehicleNTonage")
+            private Double vehicleNTonage;
+            @JsonProperty("vehicleNewMrk")
+            private Integer vehicleNewMrk;
+            @JsonProperty("vehicleNewPlate")
+            private Integer vehicleNewPlate;
+            @JsonProperty("vehiclePlateNo")
+            private String vehiclePlateNo;
+            @JsonProperty("vehiclePlateTyp")
+            private String vehiclePlateTyp;
+            @JsonProperty("vehicleRegVhlTyp")
+            private String vehicleRegVhlTyp;
+            @JsonProperty("vehicleSaleAreaCode")
+            private Integer vehicleSaleAreaCode;
+            @JsonProperty("vehicleSpecialRiskFlag")
+            private Integer vehicleSpecialRiskFlag;
+            @JsonProperty("vehicleTBuyCarDate")
+            private String vehicleTBuyCarDate;
+            @JsonProperty("vehicleTCertificateDate")
+            private String vehicleTCertificateDate;
+            @JsonProperty("vehicleTTransferDate")
+            private String vehicleTTransferDate;
+            @JsonProperty("vehicleTVhlCertDate")
+            private String vehicleTVhlCertDate;
+            @JsonProperty("vehicleTfiSpecialMrk")
+            private Integer vehicleTfiSpecialMrk;
+            @JsonProperty("vehicleTraUsageCde")
+            private Integer vehicleTraUsageCde;
+            @JsonProperty("vehicleUsageCde")
+            private String vehicleUsageCde;
+            @JsonProperty("vehicleVhlCertNo")
+            private Long vehicleVhlCertNo;
+            @JsonProperty("vehicleVhlCertType")
+            private String vehicleVhlCertType;
+            @JsonProperty("vehicleVhlTyp")
+            private String vehicleVhlTyp;
+            @JsonProperty("vehicleInspectionCde")
+            private String vehicleInspectionCde;
+            @JsonProperty("vehicleInspectTm")
+            private String vehicleInspectTm;
+            @JsonProperty("vehicleInspectorNme")
+            private String vehicleInspectorNme;
+            @JsonProperty("vehicleInspectRec")
+            private String vehicleInspectRec;
+            @JsonProperty("vehicleResvTxt1")
+            private String vehicleResvTxt1;
+            @JsonProperty("vehicleResvTxt8")
+            private String vehicleResvTxt8;
+            @JsonProperty("vehicleTransferTm")
+            private String vehicleTransferTm;
+
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class VehicleOwnerInfoDTO implements Serializable {
+            private static final long serialVersionUID = 3725955472263478330L;
+            @JsonProperty("vehicleOwnerCCertfCde")
+            private String vehicleOwnerCCertfCde;
+            @JsonProperty("vehicleOwnerCCertfCls")
+            private String vehicleOwnerCCertfCls;
+            @JsonProperty("vehicleOwnerCClntAddr")
+            private String vehicleOwnerCClntAddr;
+            @JsonProperty("vehicleOwnerCContactTel")
+            private String vehicleOwnerCContactTel;
+            @JsonProperty("vehicleOwnerCCountry")
+            private Integer vehicleOwnerCCountry;
+            @JsonProperty("vehicleOwnerCEmail")
+            private String vehicleOwnerCEmail;
+            @JsonProperty("vehicleOwnerCMobile")
+            private String vehicleOwnerCMobile;
+            @JsonProperty("vehicleOwnerCNation")
+            private Integer vehicleOwnerCNation;
+            @JsonProperty("vehicleOwnerCOwnerCls")
+            private Integer vehicleOwnerCOwnerCls;
+            @JsonProperty("vehicleOwnerCOwnerNme")
+            private String vehicleOwnerCOwnerNme;
+            @JsonProperty("vehicleOwnerCSex")
+            private String vehicleOwnerCSex;
+            @JsonProperty("vehicleOwnerCWorkdptKind")
+            private Integer vehicleOwnerCWorkdptKind;
+            @JsonProperty("vehicleOwnerCZipCde")
+            private String vehicleOwnerCZipCde;
+            @JsonProperty("vehicleOwnerTBirthday")
+            private String vehicleOwnerTBirthday;
+            @JsonProperty("vehicleOwnerTExpiredDate")
+            private String vehicleOwnerTExpiredDate;
+
+            @JsonProperty("vehicleOwnerProvince")
+            private String vehicleOwnerProvince;
+            @JsonProperty("vehicleOwnerCity")
+            private String vehicleOwnerCity;
+            @JsonProperty("vehicleOwnerCounty")
+            private String vehicleOwnerCounty;
+            @JsonProperty("vehicleOwnerSuffixAddr")
+            private String vehicleOwnerSuffixAddr;
+
+        }
+    }
+
+    public ODR1008Request(String orderNo, String busiId, QuoteVo quoteVo, DaJiaApiConfigureParameters daJiaConfigureParameters,
+                          ODR2009Response odr2009Response, PersonAreaVo ownerInfoArea, PersonAreaVo insuredPersonArea,
+                          PersonAreaVo policyHolderArea) {
+        super(daJiaConfigureParameters.getChannelCode(), ServiceCode.ODR1008.getCode());
+        if (Objects.isNull(body)) {
+            this.body = new BodyDTO();
+        }
+        this.body.setOrderNo(orderNo);
+        //设置车主信息
+        setVehicleOwnerInfo(quoteVo, ownerInfoArea);
+        //设置投保人信息
+        setApplicantInfo(quoteVo, policyHolderArea);
+        //设置被保人信息
+        setInsuredInfo(quoteVo, insuredPersonArea);
+        //设置车辆信息
+        setVehicleInfo(quoteVo, odr2009Response);
+        //设置业务归属信息
+        setBusinessInfo(daJiaConfigureParameters, busiId);
+    }
+
+    //根据身份证获取生日
+    public String getBirthdateFromIDCardNumber(String idCardNumber) {
+        int year = Integer.parseInt(idCardNumber.substring(6, 10));
+        int month = Integer.parseInt(idCardNumber.substring(10, 12));
+        int day = Integer.parseInt(idCardNumber.substring(12, 14));
+        return year + "-" + month + "-" + day;
+    }
+
+    //根据身份证获取性别
+    public String getSexFromIdCardNumber(String idCardNumber) {
+        String genderBit = idCardNumber.substring(16, 17);
+        int genderBitNumber = Integer.parseInt(genderBit);
+        boolean isOdd = genderBitNumber % 2 != 0;
+        if (isOdd) {
+            return CResvSex.MAN.getCode();
+        } else {
+            return CResvSex.WOMAN.getCode();
+        }
+    }
+
+    //设置车主信息
+    public void setVehicleOwnerInfo(QuoteVo quoteVo, PersonAreaVo OwnerPersonArea) {
+        BodyDTO.VehicleOwnerInfoDTO vehicleOwnerInfoDTO = new BodyDTO.VehicleOwnerInfoDTO();
+        CustomerInfoVo ownerInfo = quoteVo.getOwnersInfo();
+        if(StringUtils.isBlank(ownerInfo.getProperty()) || !"0".equals(ownerInfo.getProperty())) {
+            //设置证件号码
+            vehicleOwnerInfoDTO.setVehicleOwnerCCertfCde(ownerInfo.getIdentifyNumber());
+            //设置证件类型
+            vehicleOwnerInfoDTO.setVehicleOwnerCCertfCls("01");
+            //车主类型
+            vehicleOwnerInfoDTO.setVehicleOwnerCOwnerCls(COwnerCls.CLS1.getCode());
+            //车主性别
+            vehicleOwnerInfoDTO.setVehicleOwnerCSex(getSexFromIdCardNumber(ownerInfo.getIdentifyNumber()));
+            //身份证号获取出生日期
+            vehicleOwnerInfoDTO.setVehicleOwnerTBirthday(getBirthdateFromIDCardNumber(ownerInfo.getIdentifyNumber()));
+            vehicleOwnerInfoDTO.setVehicleOwnerProvince(OwnerPersonArea.getProvinceCode());
+            vehicleOwnerInfoDTO.setVehicleOwnerCity(OwnerPersonArea.getCityCode());
+            vehicleOwnerInfoDTO.setVehicleOwnerCounty(OwnerPersonArea.getCountyCode());
+        }else{
+            //设置证件号码
+            vehicleOwnerInfoDTO.setVehicleOwnerCCertfCde(ownerInfo.getOrganizationCode());
+            //设置证件类型
+            vehicleOwnerInfoDTO.setVehicleOwnerCCertfCls("04");
+            //车主类型
+            vehicleOwnerInfoDTO.setVehicleOwnerCOwnerCls(COwnerCls.CLS3.getCode());
+
+            vehicleOwnerInfoDTO.setVehicleOwnerProvince(ownerInfo.getProvince());
+            vehicleOwnerInfoDTO.setVehicleOwnerCity(ownerInfo.getCity());
+            vehicleOwnerInfoDTO.setVehicleOwnerCounty(ownerInfo.getCounty());
+        }
+        //新能源测试使用
+//        vehicleOwnerInfoDTO.setVehicleOwnerCCertfCde("E88888888");
+//        vehicleOwnerInfoDTO.setVehicleOwnerCCertfCls("02");
+        //通讯地址
+        vehicleOwnerInfoDTO.setVehicleOwnerCClntAddr(ownerInfo.getAddr());
+        //手机号
+        vehicleOwnerInfoDTO.setVehicleOwnerCContactTel(ownerInfo.getMobile());
+        //邮箱号
+        vehicleOwnerInfoDTO.setVehicleOwnerCEmail(ownerInfo.getEmail());
+        //手机号
+        vehicleOwnerInfoDTO.setVehicleOwnerCMobile(ownerInfo.getMobile());
+        //车主姓名
+        vehicleOwnerInfoDTO.setVehicleOwnerCOwnerNme(ownerInfo.getName());
+
+        //邮编
+        vehicleOwnerInfoDTO.setVehicleOwnerCZipCde("030024");
+
+//        //证件有效日期
+//        vehicleOwnerInfoDTO.setVehicleOwnerTEffectiveDate(quoteInfoVo.getOwnerInfo().getIdentifyValidDate());
+        //证件失效日期
+        vehicleOwnerInfoDTO.setVehicleOwnerTExpiredDate(ownerInfo.getIdentifyValidEndDate());
+        //国家
+        vehicleOwnerInfoDTO.setVehicleOwnerCNation(1);
+        //国籍
+        vehicleOwnerInfoDTO.setVehicleOwnerCCountry(1);
+        //单位性质 默认为9 其他
+        vehicleOwnerInfoDTO.setVehicleOwnerCWorkdptKind(9);
+
+
+        int index = -1;
+        if (OwnerPersonArea.getCountyName() != null) {
+            index = ownerInfo.getAddr().indexOf(OwnerPersonArea.getCountyName());
+        }
+
+        if (index > -1) {
+            vehicleOwnerInfoDTO.setVehicleOwnerSuffixAddr(ownerInfo.getAddr().substring(index + OwnerPersonArea.getCountyName().length()));
+        } else {
+            vehicleOwnerInfoDTO.setVehicleOwnerSuffixAddr(ownerInfo.getAddr());
+        }
+        this.body.setVehicleOwnerInfo(vehicleOwnerInfoDTO);
+    }
+
+    //设置投保人信息
+    public void setApplicantInfo(QuoteVo quoteInfoVo, PersonAreaVo policyHolderPersonArea) {
+        BodyDTO.ApplicantInfoDTO applicantInfoDTO = new BodyDTO.ApplicantInfoDTO();
+
+        CustomerInfoVo policyHolderInfo = quoteInfoVo.getPolicyHolderInfo();
+        if(StringUtils.isBlank(policyHolderInfo.getProperty()) || !"0".equals(policyHolderInfo.getProperty())) {
+            //设置证件号码
+            applicantInfoDTO.setApplicantCCertfCde(policyHolderInfo.getIdentifyNumber());
+            //设置证件类型
+            applicantInfoDTO.setApplicantCCertfCls("01");
+            //客户类型
+            applicantInfoDTO.setApplicantClntMrk(COwnerCls.CLS1.getCode());
+            //投保人出生日期
+            applicantInfoDTO.setApplicantTBirthday(getBirthdateFromIDCardNumber(policyHolderInfo.getIdentifyNumber()));
+            //投保人性别
+            applicantInfoDTO.setApplicantSex(getSexFromIdCardNumber(policyHolderInfo.getIdentifyNumber()));
+            //省市县
+            applicantInfoDTO.setApplicantProvince(policyHolderPersonArea.getProvinceCode());
+            applicantInfoDTO.setApplicantCity(policyHolderPersonArea.getCityCode());
+            applicantInfoDTO.setApplicantCounty(policyHolderPersonArea.getCountyCode());
+        }else{
+            //设置证件号码
+            applicantInfoDTO.setApplicantCCertfCde(policyHolderInfo.getOrganizationCode());
+            //设置证件类型
+            applicantInfoDTO.setApplicantCCertfCls("04");
+            //客户类型
+            applicantInfoDTO.setApplicantClntMrk(COwnerCls.CLS3.getCode());
+            //省市县
+            applicantInfoDTO.setApplicantProvince(policyHolderInfo.getProvince());
+            applicantInfoDTO.setApplicantCity(policyHolderInfo.getCity());
+            applicantInfoDTO.setApplicantCounty(policyHolderInfo.getCounty());
+            applicantInfoDTO.setApplicantTel(policyHolderInfo.getTelephone());
+        }
+
+        //新能源测试使用
+//        applicantInfoDTO.setApplicantCCertfCde("E88888888");
+//        applicantInfoDTO.setApplicantCCertfCls("02");
+
+        //通讯地址
+        applicantInfoDTO.setApplicantClntAddr(policyHolderInfo.getAddr());
+        //手机号
+        applicantInfoDTO.setApplicantMobile(policyHolderInfo.getMobile());
+        //邮箱号
+        applicantInfoDTO.setApplicantEmail(policyHolderInfo.getEmail());
+        //投保人姓名
+        applicantInfoDTO.setApplicantNme(policyHolderInfo.getName());
+
+        //邮编
+//        vehicleOwnerInfoDTO.setVehicleOwnerCZipCde(quoteInfoVo.getOwnerInfo().get)
+        //证件生效日期
+        applicantInfoDTO.setApplicantTEffectiveDate(policyHolderInfo.getIdentifyValidDate());
+        //证件失效日期
+        applicantInfoDTO.setApplicantTExpiredDate(policyHolderInfo.getIdentifyValidEndDate());
+        //证件上地址
+        applicantInfoDTO.setApplicantHomeAddr(policyHolderInfo.getAddr());
+        //国籍
+//        applicantInfoDTO.set(1);
+
+        int index = -1;
+        if (policyHolderPersonArea.getCountyName() != null) {
+            index = policyHolderInfo.getAddr().indexOf(policyHolderPersonArea.getCountyName());
+        }
+        if (index > -1) {
+            applicantInfoDTO.setApplicantSuffixAddr(policyHolderInfo.getAddr().substring(index + policyHolderPersonArea.getCountyName().length()));
+        } else {
+            applicantInfoDTO.setApplicantSuffixAddr(policyHolderInfo.getAddr());
+        }
+//        applicantInfoDTO.setApplicantZipCde("030024");
+        this.body.setApplicantInfo(applicantInfoDTO);
+    }
+
+    //设置被保人信息
+    public void setInsuredInfo(QuoteVo quoteInfoVo, PersonAreaVo insuredPersonArea) {
+        BodyDTO.InsuredInfoDTO insuredInfoDTO = new BodyDTO.InsuredInfoDTO();
+        CustomerInfoVo insuredPersonInfo = quoteInfoVo.getInsuredPersonInfo();
+        if(StringUtils.isBlank(insuredPersonInfo.getProperty()) || !"0".equals(insuredPersonInfo.getProperty())) {
+            //设置证件号码
+            insuredInfoDTO.setInsuredCertfCde(insuredPersonInfo.getIdentifyNumber());
+            //设置证件类型
+            insuredInfoDTO.setInsuredCertfCls("01");
+            //客户类型
+            insuredInfoDTO.setInsuredClntMrk(COwnerCls.CLS1.getCode());
+            //被保人出生日期
+            insuredInfoDTO.setInsuredTBirthday(getBirthdateFromIDCardNumber(insuredPersonInfo.getIdentifyNumber()));
+            //被保人性别
+            insuredInfoDTO.setInsuredSex(getSexFromIdCardNumber(insuredPersonInfo.getIdentifyNumber()));
+            //省市县
+            insuredInfoDTO.setInsuredProvince(insuredPersonArea.getProvinceCode());
+            insuredInfoDTO.setInsuredCity(insuredPersonArea.getCityCode());
+            insuredInfoDTO.setInsuredCounty(insuredPersonArea.getCountyCode());
+        }else{
+            //设置证件号码
+            insuredInfoDTO.setInsuredCertfCde(insuredPersonInfo.getOrganizationCode());
+            //设置证件类型
+            insuredInfoDTO.setInsuredCertfCls("04");
+            //客户类型
+            insuredInfoDTO.setInsuredClntMrk(COwnerCls.CLS3.getCode());
+            //省市县
+            insuredInfoDTO.setInsuredProvince(insuredPersonInfo.getProvince());
+            insuredInfoDTO.setInsuredCity(insuredPersonInfo.getCity());
+            insuredInfoDTO.setInsuredCounty(insuredPersonInfo.getCounty());
+            insuredInfoDTO.setInsuredTel(insuredPersonInfo.getTelephone());
+        }
+
+        //新能源测试使用
+//        insuredInfoDTO.setInsuredCertfCde("E88888888");
+//        insuredInfoDTO.setInsuredCertfCls("02");
+
+        //通讯地址
+        insuredInfoDTO.setInsuredClntAddr(insuredPersonInfo.getAddr());
+        //证件上地址
+        insuredInfoDTO.setInsuredHomeAddr(insuredPersonInfo.getAddr());
+        //居住地址
+        insuredInfoDTO.setInsuredResidAddr(insuredPersonInfo.getAddr());
+        //手机号
+        insuredInfoDTO.setInsuredMobile(insuredPersonInfo.getMobile());
+        //邮箱号
+        insuredInfoDTO.setInsuredEmail(insuredPersonInfo.getEmail());
+        //被保人姓名
+        insuredInfoDTO.setInsuredNme(insuredPersonInfo.getName());
+        //身份证生效日期
+        insuredInfoDTO.setInsuredTEffectiveDate(insuredPersonInfo.getIdentifyValidDate());
+        //身份证失效日期
+        insuredInfoDTO.setInsuredTExpiredDate(insuredPersonInfo.getIdentifyValidEndDate());
+
+        insuredInfoDTO.setInsuredSuffixAddr(insuredPersonInfo.getAddr());
+        int index = -1;
+        if (insuredPersonArea.getCountyName() != null) {
+            index = insuredPersonInfo.getAddr().indexOf(insuredPersonArea.getCountyName());
+        }
+        if (index > -1) {
+            insuredInfoDTO.setInsuredSuffixAddr(insuredPersonInfo.getAddr().substring(index + insuredPersonArea.getCountyName().length()));
+        } else {
+            insuredInfoDTO.setInsuredSuffixAddr(insuredPersonInfo.getAddr());
+        }
+        //邮编
+//        insuredInfoDTO.setInsuredZipCde("030024");
+        this.body.setInsuredInfo(insuredInfoDTO);
+    }
+
+    //设置车辆信息
+    public void setVehicleInfo(QuoteVo quoteVo, ODR2009Response odr2009Response) {
+        BodyDTO.VehicleInfoDTO vehicleInfoDTO = new BodyDTO.VehicleInfoDTO();
+        //设置发动机号
+        vehicleInfoDTO.setVehicleEngNo(quoteVo.getCarInfoVo().getEngineNo());
+        //设置车架号
+        vehicleInfoDTO.setVehicleFrmNo(quoteVo.getCarInfoVo().getVinNo());
+        //是否是过户车
+        if (quoteVo.getCarInfoVo().isTransfer()) {
+            //过户
+            vehicleInfoDTO.setVehicleTfiSpecialMrk(1);
+            vehicleInfoDTO.setVehicleTransferTm(quoteVo.getCarInfoVo().getTransferDate());
+            //商业过户标志
+            vehicleInfoDTO.setVehicleChgOwnerFlag(1);
+            vehicleInfoDTO.setVehicleTTransferDate(quoteVo.getCarInfoVo().getTransferDate());
+        } else {
+            //没有过户
+            vehicleInfoDTO.setVehicleTfiSpecialMrk(0);
+            //商业过户标志
+            vehicleInfoDTO.setVehicleChgOwnerFlag(0);
+        }
+        //初登日期
+        vehicleInfoDTO.setVehicleFstRegYmBar(quoteVo.getCarInfoVo().getRegisterDate());
+        //能源类型
+        String EnergyType = quoteVo.getCarInfoVo().getEnergyTypeCode();
+        vehicleInfoDTO.setVehicleFuelType(EnergyType);
+        //行驶证车辆类型
+        vehicleInfoDTO.setVehicleRegVhlTyp(quoteVo.getCarInfoVo().getCarTypeCode());
+        //交强险特殊车标志
+
+        //使用性质
+
+
+        RiskInfoVo ciRiskInfoVo = quoteVo.getCiRiskInfoVo();
+        RiskInfoVo biRiskInfoVo = quoteVo.getBiRiskInfoVo();
+        //运营性质
+        String vehicleUse = quoteVo.getCarInfoVo().getVehicleUseCode();
+        TypeVehicleMapping typeVehicleMapping = Enum.valueOf(TypeVehicleMapping.class, "TM_" + vehicleUse);
+        if (Objects.nonNull(ciRiskInfoVo)) {
+            vehicleInfoDTO.setVehicleUsageCde(typeVehicleMapping.getCUsageCdeSy());
+            vehicleInfoDTO.setVehicleTraUsageCde(Integer.valueOf(typeVehicleMapping.getCUsageCdeSy()));
+        }else if(Objects.nonNull(biRiskInfoVo)){
+            vehicleInfoDTO.setVehicleUsageCde(typeVehicleMapping.getCUsageCdeJq());
+            vehicleInfoDTO.setVehicleTraUsageCde(Integer.valueOf(typeVehicleMapping.getCUsageCdeJq()));
+        }
+
+        //特殊风险标识
+
+        //是否上牌
+        if (StringUtils.isBlank(quoteVo.getCarInfoVo().getLicenseNo())) {
+            //上牌车
+            vehicleInfoDTO.setVehicleNewPlate(0);
+            vehicleInfoDTO.setVehicleNewMrk(0);
+            //车牌号
+            vehicleInfoDTO.setVehiclePlateNo(quoteVo.getCarInfoVo().getLicenseNo());
+            //车牌种类
+            vehicleInfoDTO.setVehiclePlateTyp("02");
+
+            //是否为外地车
+            vehicleInfoDTO.setVehicleEcdemicMrk(quoteVo.getCarInfoVo().getLicenseNo().contains("晋") ? "0" : "1");
+        } else {
+            //新车
+            vehicleInfoDTO.setVehicleNewPlate(1);
+            vehicleInfoDTO.setVehicleNewMrk(1);
+        }
+
+        boolean consistentPrice = false;
+        ODR2009Response.ResultDTO resultDTO = new ODR2009Response.ResultDTO();
+        for (ODR2009Response.ResultDTO item : odr2009Response.getResult()) {
+            if (item.getVehiclePrice().equals(quoteVo.getCarInfoVo().getPurchasePrice())) {
+                consistentPrice = true;
+                resultDTO = item;
+                break;
+            }
+        }
+        if (!consistentPrice) {
+            resultDTO = odr2009Response.getResult().get(0);
+        }
+
+        // 设置报价车型
+
+        //厂牌车型码
+        vehicleInfoDTO.setVehicleModelCde(resultDTO.getVehicleId());
+        //新车购置价
+        vehicleInfoDTO.setVehicleNNewPurchaseValue(resultDTO.getVehiclePriceTax());
+        //车型名称
+        vehicleInfoDTO.setVehicleModelNme(resultDTO.getVehicleName());
+        //排气量
+        vehicleInfoDTO.setVehicleNDisplacement(resultDTO.getVehicleExhaust());
+
+//        vehicleInfoDTO.setVehicleNDisplacement("1.0");
+        //功率
+        if (resultDTO.getPower() == null) {
+            if (quoteVo.getCarInfoVo().getPowerScale() != null && !"".equals(quoteVo.getCarInfoVo().getPowerScale())) {
+                vehicleInfoDTO.setVehicleNPower(Double.parseDouble(quoteVo.getCarInfoVo().getPowerScale()));
+            }
+        } else {
+            vehicleInfoDTO.setVehicleNPower(Double.parseDouble(resultDTO.getPower()));
+        }
+        //座位数
+        vehicleInfoDTO.setVehicleNSeatNum(quoteVo.getCarInfoVo().getSeatCount());
+        //车辆种类
+        if (VehicleType.VT_A0.getCode().equals(quoteVo.getCarInfoVo().getCarKindCode())) {
+            //客车
+            if (Integer.parseInt(resultDTO.getVehicleSeat()) < 6) {
+                vehicleInfoDTO.setVehicleVhlTyp(CVhlTyp.T01.getCode().toString());
+            } else {
+                vehicleInfoDTO.setVehicleVhlTyp(CVhlTyp.T02.getCode().toString());
+            }
+        } else if (VehicleType.VT_A1.getCode().equals(quoteVo.getCarInfoVo().getCarKindCode())) {
+            //货车
+            float limitLoad = Float.parseFloat(quoteVo.getCarInfoVo().getLimitLoad()) / 1000;
+            if (limitLoad < 2) {
+                vehicleInfoDTO.setVehicleVhlTyp(CVhlTyp.T06.getCode().toString());
+            } else if (limitLoad >= 2 && limitLoad < 5) {
+                vehicleInfoDTO.setVehicleVhlTyp(CVhlTyp.T07.getCode().toString());
+            } else if (limitLoad >= 5 && limitLoad < 10) {
+                vehicleInfoDTO.setVehicleVhlTyp(CVhlTyp.T08.getCode().toString());
+            } else if (limitLoad >= 10) {
+                vehicleInfoDTO.setVehicleVhlTyp(CVhlTyp.T09.getCode().toString());
+            }
+        }
+
+        //车辆品牌
+        vehicleInfoDTO.setVehicleBrandId(resultDTO.getBrandId());
+        //整备质量
+        vehicleInfoDTO.setVehicleNCurbWt(Float.parseFloat(quoteVo.getCarInfoVo().getCompleteKerbMass()) / 1000);
+        //货车传递吨位
+        if (VehicleType.VT_A1.getCode().equals(quoteVo.getCarInfoVo().getCarKindCode())) {
+            //核定载质量
+            vehicleInfoDTO.setVehicleNTonage(Double.parseDouble(quoteVo.getCarInfoVo().getLimitLoad()) / 1000);
+        }
+
+        //验车情况
+        vehicleInfoDTO.setVehicleInspectionCde(CInspectionCde.INS3.getCode().toString());
+        //免验原因
+        vehicleInfoDTO.setVehicleResvTxt1(CResvTxt.RESC1.getCode().toString());
+        this.body.setVehicleInfo(vehicleInfoDTO);
+    }
+
+
+    //设置业务归属信息
+    public void setBusinessInfo(DaJiaApiConfigureParameters daJiaConfigureParameters, String busiId) {
+        BodyDTO.BusinessInfoDTO businessInfoDTO = new BodyDTO.BusinessInfoDTO();
+        //设置id
+        businessInfoDTO.setBusiId(busiId);
+        //设置登录机构
+        businessInfoDTO.setBusiOpdpt(daJiaConfigureParameters.getLoginInstitution());
+        //设置出单口
+        businessInfoDTO.setBusiDptCde(daJiaConfigureParameters.getIssuingInstitution());
+        //设置代理人编码
+        businessInfoDTO.setBusiBrkrCde(daJiaConfigureParameters.getAgentCode());
+        //设置操作员代码
+        businessInfoDTO.setBusiOprCde(daJiaConfigureParameters.getOperatorCode());
+        //设置操作员姓名
+        businessInfoDTO.setBusiOprNme(daJiaConfigureParameters.getOperatorName());
+        //设置业务来源
+        businessInfoDTO.setBusiBsnsTyp(daJiaConfigureParameters.getBusinessSource());
+        //设置业务员代码
+        businessInfoDTO.setBusiSlsCde(daJiaConfigureParameters.getSalespersonCode());
+        //设置推荐人代码
+        businessInfoDTO.setBusiRecommendCde(daJiaConfigureParameters.getRecommendedCode());
+        //设置推荐人渠道
+        businessInfoDTO.setBusiRecSubChannel(daJiaConfigureParameters.getRecommendedSubChannels());
+        //设置渠道
+//        businessInfoDTO.setBusiChannelSrc(CChannelSrc.CHANNEL0.getCode().toString());
+        //准生产环境测试
+        businessInfoDTO.setBusiChannelSrc(daJiaConfigureParameters.getChannel());
+        //设置一级来源
+        businessInfoDTO.setBusiDataSrc("G");
+        //设置二级来源
+        businessInfoDTO.setBusiDataFlag("TQBD");
+
+        this.body.setBusinessInfo(businessInfoDTO);
+    }
+
+}

+ 687 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/ODR1009Request.java

@@ -0,0 +1,687 @@
+package com.jzg.quotation.dajia.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.quotation.commons.entity.vo.quote.KindInfoVo;
+import com.jzg.quotation.commons.entity.vo.quote.VehicleAndVesselTaxVo;
+import com.jzg.quotation.dajia.api.constant.*;
+import com.jzg.quotation.dajia.api.entity.DaJiaApiConfigureParameters;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseRequest;
+import com.jzg.quotation.dajia.api.entity.response.ODR1016Response;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+import static com.jzg.quotation.dajia.api.constant.CPayTaxType.T5002;
+
+/**
+ * @version
+ * @description: ODR1008 保费计算 请求参数
+ * @author: wenks
+ * @date: 2023/11/14 16:51
+ **/
+//@EqualsAndHashCode(callSuper = true)
+//@NoArgsConstructor
+@Data
+public class ODR1009Request extends DaJiaBaseRequest {
+
+    private static final long serialVersionUID = -3271826016394642480L;
+
+    @JsonProperty("body")
+    private BodyDTO body;
+
+    public ODR1009Request(String orderNo, QuoteVo quoteVo, ODR1016Response odr1016Response, DaJiaApiConfigureParameters parameters) {
+        super(parameters.getChannelCode(), ServiceCode.ODR1009.getCode());
+        if(Objects.isNull(body)){
+            body = new BodyDTO();
+        }
+        body.setOrderNo(orderNo);
+        //车险交商联合出单类型
+        if(Objects.nonNull(quoteVo.getCiRiskInfoVo()) && Objects.nonNull(quoteVo.getBiRiskInfoVo())){
+            //交商联合
+            body.setMotorJointType("3");
+        }else {
+            if (Objects.nonNull(quoteVo.getBiRiskInfoVo())) {
+                //单商业
+                body.setMotorJointType("2");
+            } else if(Objects.nonNull(quoteVo.getCiRiskInfoVo())) {
+                // 单交强
+                body.setMotorJointType("1");
+            }
+        }
+        //设置基本信息
+        setBasePartReq(quoteVo,odr1016Response);
+        //设置车船税
+        setVehicleTaxation(quoteVo);
+        //设置商业险信息
+        setCoverageList(quoteVo,odr1016Response);
+        //设置验车情况
+        setInspectionInfo();
+        //设置特殊属性
+        setSpecialInfo(quoteVo);
+
+        //非车险
+//        if(!Objects.isNull(insAccidentalDrivingDajia)) {
+//            body.nvhPolicyList = setNvhPolicyList(insAccidentalDrivingDajia, insAccidentalDrivingSubDajias,riskInfoVos);
+//        }
+
+    }
+
+    //基本信息
+    public void setBasePartReq(QuoteVo quoteVo, ODR1016Response odr1016Response){
+        BodyDTO.basePartReqDTO basePartReqDTO = new BodyDTO.basePartReqDTO();
+        if (Objects.nonNull(quoteVo.getCiRiskInfoVo())){
+            //交强险保险起期
+            basePartReqDTO.setJqEffectiveDate(quoteVo.getCiRiskInfoVo().getStartDate());
+            //交强险保险止期
+            basePartReqDTO.setJqExpireDate(quoteVo.getCiRiskInfoVo().getEndDate());
+            //交强险即时生效
+            basePartReqDTO.setJqImmeffMrk("0");
+            //交强险产品编码
+            basePartReqDTO.setJqProdNo(CProdNo.JQ.getCode());
+        }
+        if (Objects.nonNull(quoteVo.getBiRiskInfoVo())){
+            //商业险保险起期
+            basePartReqDTO.setSyEffectiveDate(quoteVo.getBiRiskInfoVo().getStartDate());
+            //商业险保险止期
+            basePartReqDTO.setSyExpireDate(quoteVo.getBiRiskInfoVo().getEndDate());
+            //商业险及时生效
+            basePartReqDTO.setSyImmeffMrk("0");
+            if("0".equals(quoteVo.getCarInfoVo().getEnergyTypeCode())) {
+                //商业险产品编码
+                basePartReqDTO.setSyProdNo(CProdNo.SY.getCode());
+            }else{
+                //商业险产品编码
+                basePartReqDTO.setSyProdNo(CProdNo.SY_XNY.getCode());
+            }
+            //商业折扣是否下浮标志
+            basePartReqDTO.setFixedDropDiscount("0");
+        }
+
+        //期望折扣
+//        basePartReqDTO.setSyExpectedFloatingRate("1.5");
+        //收费方式
+        basePartReqDTO.setFinType("10");//默认是10  二维码收款
+        //协商实际价值
+        basePartReqDTO.setConsultPurchaseValue(odr1016Response.getResult().getActualValue());
+        //大家测试使用
+//        basePartReqDTO.setRemark("【超权限特批:】【分公司特批:】");
+
+        this.body.setBasePartReq(basePartReqDTO);
+    }
+
+    //交强险 车船税信息
+    public void setVehicleTaxation(QuoteVo quoteVo){
+        BodyDTO.vehicleTaxationDTO vehicleTaxationDTO = new BodyDTO.vehicleTaxationDTO();
+        VehicleAndVesselTaxVo vehicleAndVesselTax = quoteVo.getVehicleAndVesselTax();
+        //缴税方式
+        vehicleTaxationDTO.setTaxPaytaxTyp(T5002.getCode());
+
+        if(Objects.nonNull(quoteVo.getCiRiskInfoVo())){
+            //交强险保险起期
+            vehicleTaxationDTO.setTaxEffBgnTm(quoteVo.getCiRiskInfoVo().getStartDate());
+            //交强险保险止期
+            vehicleTaxationDTO.setTaxEffEndTm(quoteVo.getCiRiskInfoVo().getEndDate());
+        }
+        this.body.setVehicleTaxation(vehicleTaxationDTO);
+    }
+
+    //设置 特殊属性
+    public void setSpecialInfo(QuoteVo quoteVo){
+        BodyDTO.specialInfoDTO specialInfoDTO = new BodyDTO.specialInfoDTO();
+        //车险交商联合出单类型
+        if (Objects.nonNull(quoteVo.getCiRiskInfoVo()) && Objects.nonNull(quoteVo.getBiRiskInfoVo())) {
+            //交商联合
+            specialInfoDTO.setVehicleUsageCde("374003");
+        }else{
+            if(Objects.nonNull(quoteVo.getBiRiskInfoVo())){
+                //单商业
+                specialInfoDTO.setVehicleUsageCde("374003");
+            }else{
+                // 单交强
+                specialInfoDTO.setVehicleUsageCde("364001001");
+            }
+        }
+        this.body.specialInfo = specialInfoDTO;
+    }
+    private CIndemLmtLvl getCPayTaxType(KindInfoVo kindInfoVo){
+        CIndemLmtLvl[] values = CIndemLmtLvl.values();
+        for(CIndemLmtLvl item : values){
+            if(item.getAmount().equals(kindInfoVo.getAmount())){
+                return item;
+            }
+        }
+        return null;
+    }
+
+    private NDeductionRate getNDeductionRate(Double rate){
+        NDeductionRate[] values = NDeductionRate.values();
+        for(NDeductionRate item : values){
+            if(Objects.equals(item.getRate(), rate)){
+                return item;
+            }
+        }
+        return null;
+    }
+
+    private CvrgCIndemLmtLvl getCvrgCIndemLmtLvl(KindInfoVo kindInfoVo){
+        CvrgCIndemLmtLvl[] values = CvrgCIndemLmtLvl.values();
+        for(CvrgCIndemLmtLvl item : values){
+            if(item.getAmount() == Integer.parseInt(kindInfoVo.getAmount())){
+                return item;
+            }
+        }
+        return null;
+    }
+
+    //商业险别信息(列表)
+    public void setCoverageList(QuoteVo quoteVo,ODR1016Response odr1016Response){
+        ArrayList<BodyDTO.coverageListDTO> coverageListDTOS = new ArrayList<>();
+        Integer seatCount = Integer.parseInt(quoteVo.getCarInfoVo().getSeatCount());
+        List<KindInfoVo> kindInfoVos = quoteVo.getKindInfoVo();
+        kindInfoVos.forEach(kindInfoVo->{
+            BodyDTO.coverageListDTO coverageListDTO = new BodyDTO.coverageListDTO();
+            coverageListDTO.setCvrgNo(kindInfoVo.getKindCode());
+            //车损险
+            if(kindInfoVo.getKindCode().equals(CCvrgNo.NO030006.getInsurCode())){
+                //保额
+                coverageListDTO.setLossNAmt(odr1016Response.getResult().getActualValue());
+                coverageListDTOS.add(coverageListDTO);
+            }else if(kindInfoVo.getKindCode().equals(CCvrgNo.NO035601.getInsurCode())){
+                //绝对免赔率
+                coverageListDTO.setLossNDeductionRate(String.valueOf(Double.parseDouble(kindInfoVo.getDeductibleRate()) / 100));
+                coverageListDTOS.add(coverageListDTO);
+            } else if(kindInfoVo.getKindCode().equals(CCvrgNo.NO030018.getInsurCode())) {
+                //第三者责任险
+                //限额档次
+                coverageListDTO.setThreeCIndemLmtLvl(getCPayTaxType(kindInfoVo).getCode());
+                //档次对应限额
+                coverageListDTO.setThreeNIndemLmt(Double.parseDouble(kindInfoVo.getAmount()));
+                coverageListDTOS.add(coverageListDTO);
+            }else if(kindInfoVo.getKindCode().equals(CCvrgNo.NO035602.getInsurCode())){
+                //三者绝对免赔率
+                NDeductionRate nDeductionRate = getNDeductionRate(Double.parseDouble(kindInfoVo.getDeductibleRate()) / 100);
+                coverageListDTO.setThreeNDeductionRate(nDeductionRate.getCode());
+                coverageListDTOS.add(coverageListDTO);
+            }else if(kindInfoVo.getKindCode().equals(CCvrgNo.NO032601.getInsurCode())) {
+                //车身划痕险
+                coverageListDTO.setCarSscratchCIndemLmtLvl(getCvrgCIndemLmtLvl(kindInfoVo).getCode());
+                coverageListDTOS.add(coverageListDTO);
+            }else if(kindInfoVo.getKindCode().equals(CCvrgNo.NO035603.getInsurCode())) {
+                //绝对免赔率特约险(司机)
+                NDeductionRate nDeductionRate = getNDeductionRate(Double.parseDouble(kindInfoVo.getDeductibleRate()) / 100);
+                coverageListDTO.setDriverNDeductionRate(nDeductionRate.getCode());
+                coverageListDTOS.add(coverageListDTO);
+            }else if(kindInfoVo.getKindCode().equals(CCvrgNo.NO035604.getInsurCode())) {
+                //绝对免赔率特约险(乘客)
+                NDeductionRate nDeductionRate = getNDeductionRate(Double.parseDouble(kindInfoVo.getDeductibleRate()) / 100);
+                coverageListDTO.setPassengerNDeductionRate(nDeductionRate.getCode());
+                coverageListDTOS.add(coverageListDTO);
+            }else if(kindInfoVo.getKindCode().equals(CCvrgNo.NO030001.getInsurCode())) {
+                //车上人员责任保险(司机)
+                coverageListDTO.setDriverNLiabDaysLmt("1");
+                coverageListDTO.setDriverNPerAmt(Double.parseDouble(kindInfoVo.getAmount()));
+                coverageListDTOS.add(coverageListDTO);
+            }else if(kindInfoVo.getKindCode().equals(CCvrgNo.NO033614.getInsurCode())) {
+                //"法定节假日限额翻倍险
+                coverageListDTO.setThreeQuotaAmt(Double.parseDouble(kindInfoVo.getAmount()));
+                coverageListDTOS.add(coverageListDTO);
+            }else if(kindInfoVo.getKindCode().equals(CCvrgNo.NO030009.getInsurCode())) {
+                //车上人员责任保险(乘客)
+                coverageListDTO.setPassengerNLiabDaysLmt(seatCount - 1 + "");
+                coverageListDTO.setPassengerNPerAmt(Double.parseDouble(kindInfoVo.getUnitAmount()));
+                coverageListDTOS.add(coverageListDTO);
+
+            } else if(kindInfoVo.getKindCode().equals(CCvrgNo.NO035608.getInsurCode())){
+                //附加医保外医疗费用责任险(第三者责任保险)
+                coverageListDTO.setThreeMedicalAmt(Double.parseDouble(kindInfoVo.getAmount()));
+                coverageListDTOS.add(coverageListDTO);
+            }else if(kindInfoVo.getKindCode().equals(CCvrgNo.NO035613.getInsurCode())){
+                //附加医保外用药责任险(机动车车上人员责任保险(司机))
+                coverageListDTO.setDriverNLiabDaysLmt("1");
+                coverageListDTO.setDriverMedicalAmt(Double.parseDouble(kindInfoVo.getAmount()));
+                coverageListDTOS.add(coverageListDTO);
+            }else if(kindInfoVo.getKindCode().equals(CCvrgNo.NO035614.getInsurCode())){
+                //附加医保外用药责任险(机动车车上人员责任保险(乘客))
+                coverageListDTO.setPassengerNLiabDaysLmt(seatCount - 1 + "");
+                coverageListDTO.setPassengerMoralDamageAmt(Double.parseDouble(kindInfoVo.getUnitAmount()));
+                coverageListDTOS.add(coverageListDTO);
+            }else if(kindInfoVo.getKindCode().equals(CCvrgNo.NO035609.getInsurCode())){
+                //道路救援服务特约条款
+                coverageListDTO.setRoadRescueServices(String.valueOf(kindInfoVo.getServiceTimes()));
+                coverageListDTOS.add(coverageListDTO);
+            }else if(kindInfoVo.getKindCode().equals(CCvrgNo.NO035610.getInsurCode())) {
+                //车辆安全检测特约条款
+                coverageListDTO.setVehicleSafetyInspectionServices(String.valueOf(kindInfoVo.getServiceTimes()));
+                coverageListDTOS.add(coverageListDTO);
+            }else if(kindInfoVo.getKindCode().equals(CCvrgNo.NO035611.getInsurCode())) {
+                //代为驾驶服务特约条款
+                coverageListDTO.setDrivingServiceTimes(String.valueOf(kindInfoVo.getServiceTimes()));
+                coverageListDTOS.add(coverageListDTO);
+            }else if(kindInfoVo.getKindCode().equals(CCvrgNo.NO035612.getInsurCode())) {
+                //代为送检服务特约条款
+                coverageListDTO.setInspectionServiceTimes(String.valueOf(kindInfoVo.getServiceTimes()));
+                coverageListDTOS.add(coverageListDTO);
+            }
+        });
+        this.body.setCoverageList(coverageListDTOS);
+    }
+
+    //验车情况
+    public void setInspectionInfo(){
+        if(Objects.isNull(body.inspectionInfo))
+        {
+            body.inspectionInfo = new BodyDTO.inspectionInfoDTO();
+        }
+//        //验车情况
+//        body.inspectionInfo.setVehicleInspectionCde(CInspectionCde.INS3.getCode().toString());
+//        //免验原因
+//        body.inspectionInfo.setVehicleResvTxt1(CResvTxt.RESC3.getCode().toString());
+//        //验车时间
+//        body.inspectionInfo.setVehicleInspectTm(new DateTime().toDateStr());
+//        //验车人
+//        body.inspectionInfo.setVehicleInspectorNme("张英");
+//        //验车结果
+//        body.inspectionInfo.setVehicleInspectRec(INSREC1.getCode().toString());
+    }
+
+    //非车险
+//    public List<BodyDTO.nvhPolicyListDTO> setNvhPolicyList(InsAccidentalDrivingDajia insAccidentalDrivingDajia,List<InsAccidentalDrivingSubDajia> insAccidentalDrivingSubDajias,List<RiskInfoVo> riskInfoVos){
+//        List<BodyDTO.nvhPolicyListDTO> nvhPolicyListDTOS = new ArrayList<>();
+//        insAccidentalDrivingSubDajias.forEach(item->{
+//            BodyDTO.nvhPolicyListDTO nvhPolicyListDTO = new BodyDTO.nvhPolicyListDTO();
+//            nvhPolicyListDTO.setNvhlProdCode(insAccidentalDrivingDajia.getProductCode());
+//            //非车方案代码
+//            nvhPolicyListDTO.setNvhlSchemeCode(insAccidentalDrivingDajia.getPlanCode());
+//            //非车商品号
+//            nvhPolicyListDTO.setNvDutyRiskCode(insAccidentalDrivingDajia.getCommodityCode());
+//            for (RiskInfoVo riskInfoVo : riskInfoVos) {
+//                //时间
+//                nvhPolicyListDTO.setNvhlEffectiveDate(riskInfoVos.get(0).getStartDate());
+//                nvhPolicyListDTO.setNvhlExpireDate(riskInfoVos.get(0).getStartDate());
+//            }
+//            //非车投保份数
+//            nvhPolicyListDTO.setNoVhlSum(insAccidentalDrivingDajia.getQuantity().toString());
+//            //非车险每份保费
+//            nvhPolicyListDTO.setNvhlPrm(insAccidentalDrivingDajia.getPrice().toString());
+//            //险别代码
+//            nvhPolicyListDTO.setNvDutyRiskCode(item.getCvrgCde());
+//            nvhPolicyListDTO.setNvhlSumPrm(insAccidentalDrivingDajia.getPrice() + "");
+//            nvhPolicyListDTOS.add(nvhPolicyListDTO);
+//        });
+//        return nvhPolicyListDTOS;
+//    }
+
+    @NoArgsConstructor
+    @Data
+    public static class BodyDTO implements Serializable {
+
+        private static final long serialVersionUID = 7312734581391918243L;
+        //业务订单号
+        @JsonProperty("orderNo")
+        private String orderNo;
+        //车险交商联合出单类型
+        @JsonProperty("motorJointType")
+        private String motorJointType;
+        //基本信息
+        @JsonProperty("basePartReq")
+        private basePartReqDTO basePartReq;
+        //【商业险必传】商业险别信息(列表)
+        @JsonProperty("coverageList")
+        private List<coverageListDTO> coverageList;
+
+        //【交强险必传】车船税信息
+        @JsonProperty("vehicleTaxation")
+        private vehicleTaxationDTO vehicleTaxation;
+
+        //商业平台车型信息
+        @JsonProperty("vehicleInfo")
+        private vehicleInfoDTO vehicleInfo;
+
+        //商业平台车型信息
+        @JsonProperty("nvhPolicyList")
+        private List<nvhPolicyListDTO> nvhPolicyList;
+
+        //验车情况
+        @JsonProperty("inspectionInfo")
+        private inspectionInfoDTO inspectionInfo;
+
+        //特殊字段信息
+        @JsonProperty("specialInfo")
+        private specialInfoDTO specialInfo;
+
+
+
+        //基本信息
+        @Data
+        public static class basePartReqDTO implements Serializable{
+            //交强险保险起期
+            @JsonProperty("jqEffectiveDate")
+            private String jqEffectiveDate;
+            //交强险保险止期
+            @JsonProperty("jqExpireDate")
+            private String jqExpireDate;
+            //交强险即时生效
+            @JsonProperty("jqImmeffMrk")
+            private String jqImmeffMrk;
+            //商业险保险起期
+            @JsonProperty("syEffectiveDate")
+            private String syEffectiveDate;
+            //商业险保险止期
+            @JsonProperty("syExpireDate")
+            private String syExpireDate;
+            //商业险即时生效
+            @JsonProperty("syImmeffMrk")
+            private String syImmeffMrk;
+            //商业险期望折扣
+            @JsonProperty("syExpectedFloatingRate")
+            private String syExpectedFloatingRate;
+            //商业折扣是否下浮标志
+            @JsonProperty("fixedDropDiscount")
+            private String fixedDropDiscount;
+            //交强险产品编码
+            @JsonProperty("jqProdNo")
+            private String jqProdNo;
+            //商业险产品编码
+            @JsonProperty("syProdNo")
+            private String syProdNo;
+            //收费方式
+            @JsonProperty("finType")
+            private String finType;
+            //协商实际价值
+            @JsonProperty("consultPurchaseValue")
+            private Double consultPurchaseValue;
+            //告知
+            @JsonProperty("remark")
+            private String remark;
+
+
+        }
+
+        //【商业险必传】商业险别信息(列表)
+        @Data
+        public static class coverageListDTO implements Serializable{
+            private static final long serialVersionUID = 1L;
+            //险别
+            @JsonProperty("cvrgNo")
+            private String cvrgNo;
+            //【车损险】保额
+            @JsonProperty("lossNAmt")
+            private Double lossNAmt;
+            //【车辆损失险】免赔额
+            @JsonProperty("lossNoPayAmt")
+            private String lossNoPayAmt;
+            //【车损险】绝对免赔率
+            @JsonProperty("lossNDeductionRate")
+            private String lossNDeductionRate;
+            //【车辆损失险】免赔优惠
+            @JsonProperty("lossDeductible")
+            private String lossDeductible;
+            //【第三者责任险】限额档次
+            @JsonProperty("threeCIndemLmtLvl")
+            private String threeCIndemLmtLvl;
+            //【第三者责任险】绝对免赔率
+            @JsonProperty("threeNDeductionRate")
+            private String threeNDeductionRate;
+            //【第三者责任险】档次对应限额
+            @JsonProperty("threeNIndemLmt")
+            private Double threeNIndemLmt;
+            //【附加车身划痕损失险】限额档次
+            @JsonProperty("carSscratchCIndemLmtLvl")
+            private String carSscratchCIndemLmtLvl;
+            //【车上责任险】司机绝对免赔率
+            @JsonProperty("driverNDeductionRate")
+            private String driverNDeductionRate;
+            //【车上责任险】乘客绝对免赔率
+            @JsonProperty("passengerNDeductionRate")
+            private String passengerNDeductionRate;
+            //【车上责任险】司机座位数
+            @JsonProperty("driverNLiabDaysLmt")
+            private String driverNLiabDaysLmt;
+            //【车上责任险】乘客座位数
+            @JsonProperty("passengerNLiabDaysLmt")
+            private String passengerNLiabDaysLmt;
+            //【车上责任险】乘客每人保额
+            @JsonProperty("passengerNPerAmt")
+            private Double passengerNPerAmt;
+            //【盗抢险】特种车绝对免赔率
+            @JsonProperty("therfNDeductionRate")
+            private String therfNDeductionRate;
+            //【盗抢险】保额
+            @JsonProperty("therfNNAmt")
+            private String therfNNAmt;
+            //【附加新增加设备损失险】保额
+            @JsonProperty("deviceNAmt")
+            private String deviceNAmt;
+            //【附加修理期间费用补偿险 】天数
+            @JsonProperty("repairDays")
+            private String repairDays;
+            //【附加修理期间费用补偿险 】保额
+            @JsonProperty("repairNAmt")
+            private String repairNAmt;
+            //【医疗责任】乘客每人保额
+            @JsonProperty("medicalLiabilityNPerAmt")
+            private String medicalLiabilityNPerAmt;
+            //【增值服务】车辆安全检测服务次数
+            @JsonProperty("vehicleSafetyInspectionServices")
+            private String vehicleSafetyInspectionServices;
+            //【增值服务】代为送检服务次数
+            @JsonProperty("inspectionServiceTimes")
+            private String inspectionServiceTimes;
+            //【增值服务】代为驾驶服务次数
+            @JsonProperty("drivingServiceTimes")
+            private String drivingServiceTimes;
+            //【增值服务】道路救援服务次数
+            @JsonProperty("roadRescueServices")
+            private String roadRescueServices;
+            //【车上责任险】司机每人保额
+            @JsonProperty("driverNPerAmt")
+            private Double driverNPerAmt;
+            //【车上责任保险(乘客)】附加精神损害抚慰金责任险
+            @JsonProperty("passengerMoralDamageAmt")
+            private Double passengerMoralDamageAmt;
+            //【车上人员责任保险(司机)】附加医保外医疗费用责任险
+            @JsonProperty("driverMedicalAmt")
+            private Double driverMedicalAmt;
+            //【车上人员责任保险(司机)】附加精神损害抚慰金责任险
+            @JsonProperty("driverMoralDamageAmt")
+            private String driverMoralDamageAmt;
+            //【第三者责任保险】附加精神损害抚慰金责任险
+            @JsonProperty("threeMoralDamageAmt")
+            private String threeMoralDamageAmt;
+            //【第三者责任保险】附加医保外医疗费用责任险
+            @JsonProperty("threeMedicalAmt")
+            private Double threeMedicalAmt;
+            //附加法定节假日限额翻倍险
+            @JsonProperty("threeQuotaAmt")
+            private Double threeQuotaAmt;
+            //附加车轮单独损失险
+            @JsonProperty("wheelAmt")
+            private String wheelAmt;
+            //附加外部电网故障损失险
+            @JsonProperty("gridFaultLossAmt")
+            private String gridFaultLossAmt;
+            //附加车上货物责任险
+            @JsonProperty("goodsLiabilityAmt")
+            private String goodsLiabilityAmt;
+
+
+        }
+
+        //【交强险必传】车船税信息
+        @Data
+        public static class vehicleTaxationDTO implements  Serializable{
+            private static final long serialVersionUID = 1L;
+
+            //缴税方式
+            @JsonProperty("taxPaytaxTyp")
+            private String taxPaytaxTyp;
+
+            //车船税有效起期
+            @JsonProperty("taxEffBgnTm")
+            private String taxEffBgnTm;
+
+            //车船税有效止期
+            @JsonProperty("taxEffEndTm")
+            private String taxEffEndTm;
+
+            //减免税原因(平台)
+            @JsonProperty("taxTaxfreeVhltyp")
+            private String taxTaxfreeVhltyp;
+
+            //减免税方案(平台)
+            @JsonProperty("taxFreeRedTaxWay")
+            private String taxFreeRedTaxWay;
+
+            //减免比例(平台)
+            @JsonProperty("taxFreeRedTaxPro")
+            private String taxFreeRedTaxPro;
+
+            //减税金额(平台)
+            @JsonProperty("taxAbateAmt")
+            private String taxAbateAmt;
+
+            //减免税凭证号(平台)
+            @JsonProperty("taxFreeCertNo")
+            private String taxFreeCertNo;
+
+            //减税税务机关代码(平台)
+            @JsonProperty("taxFreeRedTaxOrgCde")
+            private String taxFreeRedTaxOrgCde;
+
+            //免税税务机关名称(平台)
+            @JsonProperty("taxFreeTaxOrg")
+            private String taxFreeTaxOrg;
+
+            //完税税务机关代码(平台)
+            @JsonProperty("taxComTaxOrgCde")
+            private String taxComTaxOrgCde;
+
+            //完税税务机关名称(平台)
+            @JsonProperty("taxComTaxOrg")
+            private String taxComTaxOrg;
+
+            //完税凭证号(平台)
+            @JsonProperty("taxPaymentRecptNo")
+            private String taxPaymentRecptNo;
+
+            //完税凭证填发日期(平台)
+            @JsonProperty("taxDocumentDate")
+            private String taxDocumentDate;
+
+            //开具完税凭证地区代码(平台)
+            @JsonProperty("taxPaidAreaCode")
+            private String taxPaidAreaCode;
+
+            //外地开具税务机关(北京)
+            @JsonProperty("taxDeptNonlocal")
+            private String taxDeptNonlocal;
+
+            //缴税车辆类型
+            @JsonProperty("taxdptVhltyp")
+            private String taxdptVhltyp;
+
+            //纳税人识别号
+            @JsonProperty("taxTaxpayerId")
+            private String taxTaxpayerId;
+
+        }
+
+        //商业平台车型信息
+        @Data
+        public static class vehicleInfoDTO implements  Serializable{
+            @JsonProperty("vehlcleCode")
+            private String vehlcleCode;
+
+            @JsonProperty("vehlcleModeCode")
+            private String vehlcleModeCode;
+
+            @JsonProperty("vehicleStyleUniqueId")
+            private String vehicleStyleUniqueId;
+
+            @JsonProperty("vehicleIndustryModelCode")
+            private String vehicleIndustryModelCode;
+
+
+        }
+
+        @Data
+        public static class nvhPolicyListDTO implements  Serializable{
+            @JsonProperty("nvhlProdCode")
+            private String nvhlProdCode;
+            @JsonProperty("nvhlSchemeCode")
+            private String nvhlSchemeCode;
+            @JsonProperty("nvhlEffectiveDate")
+            private String nvhlEffectiveDate;
+            @JsonProperty("nvhlExpireDate")
+            private String nvhlExpireDate;
+            @JsonProperty("noVhlSum")
+            private String noVhlSum;
+            @JsonProperty("nvhlPrm")
+            private String nvhlPrm;
+            @JsonProperty("nvhlSumPrm")
+            private String nvhlSumPrm;
+            @JsonProperty("nvGoodsCode")
+            private String nvGoodsCode;
+            @JsonProperty("nvDutyRiskCode")
+            private String nvDutyRiskCode;
+            @JsonProperty("nv_prm")
+            private String nv_prm;
+            @JsonProperty("nv_amt")
+            private String nv_amt;
+
+        }
+
+        @Data
+        public static class inspectionInfoDTO implements  Serializable{
+
+            //验车情况
+            @JsonProperty("vehicleInspectionCde")
+            private String vehicleInspectionCde;
+
+            //验车时间
+            @JsonProperty("vehicleInspectTm")
+            private String vehicleInspectTm;
+
+            //验车人
+            @JsonProperty("vehicleInspectorNme")
+            private String vehicleInspectorNme;
+
+            //验车结果
+            @JsonProperty("vehicleInspectRec")
+            private String vehicleInspectRec;
+
+            //免验原因
+            @JsonProperty("vehicleResvTxt1")
+            private String vehicleResvTxt1;
+
+            //损伤部位
+            @JsonProperty("damagedSite")
+            private String damagedSite;
+
+        }
+
+        @Data
+        public static class specialInfoDTO implements  Serializable{
+
+            //使用性质
+            @JsonProperty("vehicleUsageCde")
+            private String vehicleUsageCde;
+
+            //业务识别号
+            @JsonProperty("busiServiceCode")
+            private String busiServiceCode;
+
+            //员工车
+            @JsonProperty("staffCar")
+            private String staffCar;
+
+        }
+    }
+
+
+}

+ 268 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/ODR1010Request.java

@@ -0,0 +1,268 @@
+package com.jzg.quotation.dajia.api.entity.request;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseRequest;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.api.dajia.DaJiaBaseRequest;
+import com.ydtech.modules.order.entity.api.dajia.DaJiaConfigureParameters;
+import com.ydtech.modules.order.entity.api.dajia.constants.ServiceCode;
+import com.ydtech.modules.order.entity.api.dajia.response.ODR1009Response;
+import com.ydtech.utils.StringUtils;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+
+/**
+ * @description: ODR1010 保存提交核保接口 请求参数
+ * @author: wenks
+ * @date: 2023/11/14 17:53
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class ODR1010Request extends DaJiaBaseRequest {
+
+    private static final long serialVersionUID = -7900375590655616626L;
+
+    @JsonProperty("body")
+    private BodyDTO body;
+
+    public ODR1010Request(String orderNo, String busiId, DaJiaConfigureParameters daJiaConfigureParameters,
+                          ODR1009Response.ResultDTO odr1009Response, InsOrders insOrders) {
+        super(daJiaConfigureParameters.getChannelCode(), ServiceCode.ODR1010.getCode());
+        if(body == null){
+            body = new BodyDTO();
+        }
+        body.setOrderNo( orderNo );
+        //业务信息
+        setBusinessInfo(busiId,daJiaConfigureParameters);
+        //交强特约信息
+        setJqSpecialEngageList(odr1009Response.getJqSpecialEngageList());
+        //商业特约信息
+        setSySpecialEngageList(odr1009Response.getSySpecialEngageList());
+        //校验信息
+        setCheckInfo(insOrders);
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class BodyDTO implements Serializable {
+
+        private static final long serialVersionUID = 6601852490284509959L;
+        @JsonProperty("arbitralCommitteeName")
+        private String arbitralCommitteeName;
+        @JsonProperty("businessInfo")
+        private BusinessInfoDTO businessInfo;
+        @JsonProperty("checkInfo")
+        private CheckInfoDTO checkInfo;
+        @JsonProperty("disputeResolution")
+        private String disputeResolution;
+        @JsonProperty("jqSpecialEngageList")
+        private List<JqSpecialEngageListDTO> jqSpecialEngageList;
+        @JsonProperty("orderNo")
+        private String orderNo;
+        @JsonProperty("sySpecialEngageList")
+        private List<ODR1009Response.ResultDTO.SySpecialEngageListDTO> sySpecialEngageList;
+        @JsonProperty("undrOpn")
+        private String undrOpn;
+
+        @NoArgsConstructor
+        @Data
+        public static class BusinessInfoDTO implements Serializable {
+            private static final long serialVersionUID = -8856499478348312937L;
+            @JsonProperty("busiAgentNme")
+            private String busiAgentNme;
+            @JsonProperty("busiBrkrCde")
+            private String busiBrkrCde;
+            @JsonProperty("busiBsnsTyp")
+            private Integer busiBsnsTyp;
+            @JsonProperty("busiChaSalesId")
+            private Integer busiChaSalesId;
+            @JsonProperty("busiChannelSrc")
+            private String busiChannelSrc;
+            @JsonProperty("busiCoopCde")
+            private String busiCoopCde;
+            @JsonProperty("busiCoopNme")
+            private String busiCoopNme;
+            @JsonProperty("busiDataFlag")
+            private String busiDataFlag;
+            @JsonProperty("busiDataSrc")
+            private String busiDataSrc;
+            @JsonProperty("busiDptCde")
+            private String busiDptCde;
+            @JsonProperty("busiGarageCode")
+            private String busiGarageCode;
+            @JsonProperty("busiGarageName")
+            private String busiGarageName;
+            @JsonProperty("busiGrantDptCde")
+            private String busiGrantDptCde;
+            @JsonProperty("busiGrantDptNme")
+            private String busiGrantDptNme;
+            @JsonProperty("busiId")
+            private String busiId;
+            @JsonProperty("busiOpdpt")
+            private String busiOpdpt;
+            @JsonProperty("busiOprCde")
+            private String busiOprCde;
+            @JsonProperty("busiOprNme")
+            private String busiOprNme;
+            @JsonProperty("busiRecSubChannel")
+            private String busiRecSubChannel;
+            @JsonProperty("busiRecommendCde")
+            private String busiRecommendCde;
+            @JsonProperty("busiRepairFlag")
+            private Integer busiRepairFlag;
+            @JsonProperty("busiServiceCode")
+            private String busiServiceCode;
+            @JsonProperty("busiSlsCde")
+            private String busiSlsCde;
+            @JsonProperty("busiSlsId")
+            private Long busiSlsId;
+            @JsonProperty("busiSlsNme")
+            private String busiSlsNme;
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class CheckInfoDTO implements Serializable {
+
+            private static final long serialVersionUID = -6205288448953625502L;
+            @JsonProperty("applicantCCertfCde")
+            private String applicantCCertfCde;
+            @JsonProperty("applicantMobile")
+            private String applicantMobile;
+            @JsonProperty("applicantNme")
+            private String applicantNme;
+            @JsonProperty("insuredCertfCde")
+            private String insuredCertfCde;
+            @JsonProperty("insuredMobile")
+            private String insuredMobile;
+            @JsonProperty("insuredNme")
+            private String insuredNme;
+            @JsonProperty("vehicleFrmNo")
+            private String vehicleFrmNo;
+            @JsonProperty("vehiclePlateNo")
+            private String vehiclePlateNo;
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class JqSpecialEngageListDTO implements Serializable {
+
+            private static final long serialVersionUID = -6646243296747024901L;
+            @JsonProperty("specialClausesCode")
+            private String specialClausesCode;
+            @JsonProperty("specialClausesContent")
+            private String specialClausesContent;
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class SySpecialEngageListDTO implements Serializable {
+            private static final long serialVersionUID = 6989142913059247016L;
+            @JsonProperty("specialClausesCode")
+            private String specialClausesCode;
+            @JsonProperty("specialClausesContent")
+            private String specialClausesContent;
+        }
+    }
+
+    //业务信息
+    public void setBusinessInfo(String busiId,DaJiaConfigureParameters daJiaConfigureParameters){
+        if(Objects.isNull(body.businessInfo)){
+            body.businessInfo = new BodyDTO.BusinessInfoDTO();
+        }
+        //业务ID
+        body.businessInfo.setBusiId(busiId);
+        //登录机构
+        body.businessInfo.setBusiOpdpt(daJiaConfigureParameters.getLoginInstitution());
+        //出单口
+        body.businessInfo.setBusiDptCde(daJiaConfigureParameters.getIssuingInstitution());
+        //代理人编码
+        body.businessInfo.setBusiBrkrCde(daJiaConfigureParameters.getAgentCode());
+        //操作员代码
+        body.businessInfo.setBusiOprCde(daJiaConfigureParameters.getOperatorCode());
+        //操作员姓名
+        body.businessInfo.setBusiOprNme(daJiaConfigureParameters.getOperatorName());
+        //业务来源
+        body.businessInfo.setBusiBsnsTyp(Integer.parseInt(daJiaConfigureParameters.getBusinessSource()));
+        //业务员代码
+        body.businessInfo.setBusiSlsCde(daJiaConfigureParameters.getSalespersonCode());
+        //推荐人代码
+        body.businessInfo.setBusiRecommendCde(daJiaConfigureParameters.getRecommendedCode());
+        //推荐子渠道
+        body.businessInfo.setBusiRecSubChannel(daJiaConfigureParameters.getRecommendedSubChannels());
+        //渠道
+        body.businessInfo.setBusiChannelSrc(daJiaConfigureParameters.getChannel());
+        //设置一级来源
+        body.businessInfo.setBusiDataSrc("G");
+        //设置二级来源
+        body.businessInfo.setBusiDataFlag("TQBD");
+    }
+
+    //交强特约信息
+    public void setJqSpecialEngageList(List<BodyDTO.JqSpecialEngageListDTO> jqSpecialEngageList){
+        if(Objects.isNull(body.jqSpecialEngageList)){
+            body.jqSpecialEngageList = new ArrayList<>();
+        }
+        body.jqSpecialEngageList = jqSpecialEngageList;
+    }
+
+    //商业特约信息
+    public void setSySpecialEngageList(List<ODR1009Response.ResultDTO.SySpecialEngageListDTO> sySpecialEngageList){
+        if(Objects.isNull(body.sySpecialEngageList)){
+            body.sySpecialEngageList = new ArrayList<>();
+        }
+        body.sySpecialEngageList = sySpecialEngageList;
+    }
+
+    //校验信息
+    public void setCheckInfo(InsOrders insOrders){
+        if(Objects.isNull(body.checkInfo)){
+            body.checkInfo = new BodyDTO.CheckInfoDTO();
+        }
+        //车牌号
+        if(!insOrders.getCarinfo().getBooleanValue("noLicenseFlag")){
+            body.checkInfo.setVehiclePlateNo(insOrders.getLicenseno());
+        }
+
+        //车架号
+        body.checkInfo.setVehicleFrmNo(insOrders.getFrameno());
+        JSONObject applyInfo = insOrders.getApplyinfo();
+        JSONObject insureInfo = insOrders.getInsureinfo();
+        String applyProperty = applyInfo.getString("property");
+        String insureProperty = insureInfo.getString("property");
+        //投保人名称
+        body.checkInfo.setApplicantNme(applyInfo.getString("name"));
+        if(StringUtils.isBlank(applyProperty) || !"0".equals(applyProperty)){
+            //投保人证件号码
+            body.checkInfo.setApplicantCCertfCde(applyInfo.getString("identifyNumber"));
+        }else{
+            //投保人证件号码
+            body.checkInfo.setApplicantCCertfCde(applyInfo.getString("organizationCode"));
+        }
+        //投保人手机号
+        body.checkInfo.setApplicantMobile(applyInfo.getString("mobile"));
+
+        //被保人名称
+        body.checkInfo.setInsuredNme(insureInfo.getString("name"));
+        if(StringUtils.isBlank(insureProperty) || !"0".equals(insureProperty)){
+            //被保人证件号码
+            body.checkInfo.setInsuredCertfCde(insureInfo.getString("identifyNumber"));
+        }else{
+            //被保人证件号码
+            body.checkInfo.setInsuredCertfCde(insureInfo.getString("organizationCode"));
+        }
+        //被保人手机号
+        body.checkInfo.setInsuredMobile(insureInfo.getString("mobile"));
+
+    }
+
+}

+ 122 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/ODR1013Request.java

@@ -0,0 +1,122 @@
+package com.jzg.quotation.dajia.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.commons.entity.vo.base.OrderBase;
+import com.jzg.quotation.commons.entity.vo.image.InsuranceImageVo;
+import com.jzg.quotation.dajia.api.constant.ServiceCode;
+import com.jzg.quotation.dajia.api.entity.DaJiaApiConfigureParameters;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseRequest;
+import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.api.dajia.DaJiaBaseRequest;
+import com.ydtech.modules.order.entity.api.dajia.DaJiaConfigureParameters;
+import com.ydtech.modules.order.entity.api.dajia.constants.ServiceCode;
+import com.ydtech.modules.order.entity.po.InsTaskImagesBase64;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+
+/**
+ * @version 
+ * @description: 大家财险 影像上传接口 请求参数
+ * @author: wenks 
+ * @date: 2023/11/14 17:43
+ **/
+
+@EqualsAndHashCode(callSuper = true)
+//@NoArgsConstructor
+@Data
+public class ODR1013Request extends DaJiaBaseRequest {
+
+    private static final long serialVersionUID = -7892713641287949312L;
+
+    @JsonProperty("body")
+    private BodyDTO body;
+
+    public ODR1013Request(OrderBase orderBase, DaJiaApiConfigureParameters parameters, List<InsuranceImageVo> insUploadImagesDtos) {
+        super(parameters.getChannelCode(), ServiceCode.ODR1013.getCode());
+        if(Objects.isNull(body)){
+            body = new BodyDTO();
+        }
+        body.setOrderNo(orderBase.getOrdersNo());
+//        body.setJqProposalNo(insAreaCompany.getJqapplyno());
+//        body.setSyProposalNo(insAreaCompany.getSyapplyno());
+        //业务类型  车险 默认80
+        body.setAppType("80");
+        //资料类型  车险 默认 8001
+        body.setDataId(8001);
+        //操作机构
+        body.setOrgNum(parameters.getLoginInstitution());
+        //操作员编码
+        body.setOprId(parameters.getOperatorCode());
+        //上传类型  1文件流 2ftp
+        body.setUpType(1);
+
+        //设置图片信息
+        setImageList(insUploadImagesDtos);
+
+    }
+
+    public void setImageList(List<InsuranceImageVo> insTaskImagesBase64s){
+        this.body.imageList = new ArrayList<BodyDTO.ImageListDTO>();
+
+        insTaskImagesBase64s.forEach(item->{
+            BodyDTO.ImageListDTO imageListDTO = new BodyDTO.ImageListDTO();
+//            imageListDTO.setBase64Img(item.getImageBase64List());
+//            imageListDTO.setFiledSuffix("jpg");
+//            imageListDTO.setImgName(item.getImageCode());
+            this.body.imageList.add(imageListDTO);
+        });
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class BodyDTO implements Serializable {
+
+        private static final long serialVersionUID = -4592159874022566051L;
+
+        @JsonProperty("appCode")
+        private Integer appCode;
+        @JsonProperty("appType")
+        private String appType;
+        @JsonProperty("busiNum")
+        private Long busiNum;
+        @JsonProperty("dataId")
+        private Integer dataId;
+        @JsonProperty("imageList")
+        private List<ImageListDTO> imageList;
+        @JsonProperty("jqProposalNo")
+        private String jqProposalNo;
+        @JsonProperty("oprId")
+        private String oprId;
+        @JsonProperty("orderNo")
+        private String orderNo;
+        @JsonProperty("orgNum")
+        private String orgNum;
+        @JsonProperty("syProposalNo")
+        private String syProposalNo;
+        @JsonProperty("upType")
+        private Integer upType;
+
+        @NoArgsConstructor
+        @Data
+        public static class ImageListDTO implements Serializable{
+
+            private static final long serialVersionUID = -2595047257514402108L;
+
+            @JsonProperty("base64Img")
+            private String base64Img;
+            @JsonProperty("filedPath")
+            private String filedPath;
+            @JsonProperty("filedSuffix")
+            private String filedSuffix;
+            @JsonProperty("imgName")
+            private String imgName;
+        }
+    }
+}

+ 48 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/ODR1016Request.java

@@ -0,0 +1,48 @@
+package com.jzg.quotation.dajia.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.dajia.api.constant.ServiceCode;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+@EqualsAndHashCode(callSuper = true)
+//@NoArgsConstructor
+@Data
+public class ODR1016Request extends DaJiaBaseRequest {
+    private static final long serialVersionUID = 8872610170969597008L;
+
+    @JsonProperty("body")
+    private bodyDTO body;
+
+    /**
+     *
+     * @param orderNo 业务订单号
+     * @param effectiveDate 起保日期
+     */
+    public ODR1016Request(String orderNo, String effectiveDate) {
+        super("TQBD", ServiceCode.ODR1016.getCode());
+        if(Objects.isNull(body)){
+            body = new bodyDTO();
+        }
+        body.setOrderNo(orderNo);
+        body.setEffectiveDate(effectiveDate);
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class bodyDTO implements Serializable {
+        private static final long serialVersionUID = -5907748356987039351L;
+        //起保日期
+        @JsonProperty("effectiveDate")
+        private String effectiveDate;
+
+        //业务订单号
+        @JsonProperty("orderNo")
+        private String orderNo;
+    }
+}

+ 77 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/ODR2009Request.java

@@ -0,0 +1,77 @@
+package com.jzg.quotation.dajia.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.quotation.dajia.api.constant.ServiceCode;
+import com.jzg.quotation.dajia.api.entity.DaJiaApiConfigureParameters;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Objects;
+
+
+/**
+ * @description: 大家财险 车辆车型查询接口 请求参数
+ * @author: wenks
+ * @date: 2023/11/14 16:28
+ **/
+@EqualsAndHashCode(callSuper = true)
+//@NoArgsConstructor
+@Data
+public class ODR2009Request extends DaJiaBaseRequest {
+
+
+    private static final long serialVersionUID = 243809151769159227L;
+
+    @JsonProperty("body")
+    private BodyDTO body;
+
+    @NoArgsConstructor
+    @Data
+    public static class BodyDTO implements Serializable {
+        //出单口
+        @JsonProperty("cdptCde")
+        private String cdptCde;
+        //发动机号
+        @JsonProperty("engineNo")
+        private String engineNo;
+        //号牌号码
+        @JsonProperty("licensePlateNo")
+        private String licensePlateNo;
+        //业务订单号
+        @JsonProperty("orderNo")
+        private String orderNo;
+        //车型编码列表
+        @JsonProperty("vehicleIdList")
+        private List<String> vehicleIdList;
+        //车型名称
+        @JsonProperty("vehicleName")
+        private String vehicleName;
+        //车辆识别代号(车架号/VIN码)
+        @JsonProperty("vin")
+        private String vin;
+    }
+
+    public ODR2009Request(String orderNo, QuoteVo quoteVo, DaJiaApiConfigureParameters daJiaConfigureParameters) {
+        super(daJiaConfigureParameters.getChannelCode(), ServiceCode.ODR2009.getCode());
+        if(Objects.isNull(this.body)){
+            this.body = new BodyDTO();
+        }
+        //订单号
+        this.body.orderNo = orderNo;
+        //vin码
+        this.body.vin = quoteVo.getCarInfoVo().getVinNo();
+        //发动机号码
+        this.body.engineNo = quoteVo.getCarInfoVo().getEngineNo();
+        //号牌号码
+        this.body.licensePlateNo = quoteVo.getCarInfoVo().getLicenseNo();
+        //出单口
+        this.body.cdptCde = daJiaConfigureParameters.getIssuingInstitution();
+        //车型名称
+        this.body.vehicleName = quoteVo.getCarInfoVo().getBrandName();
+    }
+}

+ 38 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/ODR1007Response.java

@@ -0,0 +1,38 @@
+package com.jzg.quotation.dajia.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseResponse;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+
+/**
+ * @description: 大家财险 获取业务订单号接口 响应参数
+ * @author: wenks
+ * @date: 2023/11/14 16:28
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class ODR1007Response extends DaJiaBaseResponse {
+
+    private static final long serialVersionUID = -8058364300759565052L;
+    @JsonProperty("result")
+    private ResultDTO result;
+
+
+    @NoArgsConstructor
+    @Data
+    public static class ResultDTO implements Serializable {
+
+        private static final long serialVersionUID = 7893426766810061120L;
+
+        @JsonProperty("orderNo")
+        private String orderNo;
+
+    }
+
+}

+ 118 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/ODR1008Response.java

@@ -0,0 +1,118 @@
+package com.jzg.quotation.dajia.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseResponse;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class ODR1008Response extends DaJiaBaseResponse {
+
+    private static final long serialVersionUID = -1833711374434760893L;
+
+    @JsonProperty("result")
+    private ResultDTO result;
+
+    @NoArgsConstructor
+    @Data
+    public static class ResultDTO {
+        @JsonProperty("orderStatus")
+        private Object orderStatus;
+        @JsonProperty("orderMessage")
+        private Object orderMessage;
+        @JsonProperty("jqProdNo")
+        private Object jqProdNo;
+        @JsonProperty("syProdNo")
+        private Object syProdNo;
+        @JsonProperty("vehicleInfo")
+        private VehicleInfoDTO vehicleInfo;
+
+        @NoArgsConstructor
+        @Data
+        public static class VehicleInfoDTO {
+            @JsonProperty("vehicleEngNo")
+            private String vehicleEngNo;
+            @JsonProperty("vehicleFrmNo")
+            private String vehicleFrmNo;
+            @JsonProperty("vehicleChgOwnerFlag")
+            private String vehicleChgOwnerFlag;
+            @JsonProperty("vehicleFstRegYmBar")
+            private String vehicleFstRegYmBar;
+            @JsonProperty("vehicleFuelType")
+            private String vehicleFuelType;
+            @JsonProperty("vehicleModelCde")
+            private String vehicleModelCde;
+            @JsonProperty("vehiclePlateNo")
+            private String vehiclePlateNo;
+            @JsonProperty("vehiclePlateTyp")
+            private String vehiclePlateTyp;
+            @JsonProperty("vehicleRegVhlTyp")
+            private String vehicleRegVhlTyp;
+            @JsonProperty("vehicleTfiSpecialMrk")
+            private String vehicleTfiSpecialMrk;
+            @JsonProperty("vehicleUsageCde")
+            private String vehicleUsageCde;
+            @JsonProperty("vehicleVhlCertNo")
+            private String vehicleVhlCertNo;
+            @JsonProperty("vehicleVhlCertType")
+            private String vehicleVhlCertType;
+            @JsonProperty("vehicleNConsultPurchaseValue")
+            private Integer vehicleNConsultPurchaseValue;
+            @JsonProperty("vehicleTBuyCarDate")
+            private String vehicleTBuyCarDate;
+            @JsonProperty("vehicleTTransferDate")
+            private String vehicleTTransferDate;
+            @JsonProperty("vehicleTVhlCertDate")
+            private String vehicleTVhlCertDate;
+            @JsonProperty("vehicleSpecialRiskFlag")
+            private String vehicleSpecialRiskFlag;
+            @JsonProperty("vehicleNPower")
+            private Double vehicleNPower;
+            @JsonProperty("vehicleIs4SShop")
+            private String vehicleIs4SShop;
+            @JsonProperty("vehicleCSaleCompany")
+            private String vehicleCSaleCompany;
+            @JsonProperty("vehicleSaleAreaCode")
+            private String vehicleSaleAreaCode;
+            @JsonProperty("vehicleModelEnergyType")
+            private String vehicleModelEnergyType;
+            @JsonProperty("vehicleNPureRange")
+            private Integer vehicleNPureRange;
+            @JsonProperty("vehicleTraUsageCde")
+            private String vehicleTraUsageCde;
+            @JsonProperty("vehicleIsQuery")
+            private String vehicleIsQuery;
+            @JsonProperty("vehicleEcdemicMrk")
+            private String vehicleEcdemicMrk;
+            @JsonProperty("vehicleLoanVehicleFlag")
+            private String vehicleLoanVehicleFlag;
+            @JsonProperty("vehicleNCurbWt")
+            private Integer vehicleNCurbWt;
+            @JsonProperty("vehicleNSeatNum")
+            private Integer vehicleNSeatNum;
+            @JsonProperty("vehicleNNewPurchaseValue")
+            private Integer vehicleNNewPurchaseValue;
+            @JsonProperty("vehicleModelNme")
+            private String vehicleModelNme;
+            @JsonProperty("vehicleNTonage")
+            private Integer vehicleNTonage;
+            @JsonProperty("vehicleNDisplacement")
+            private Integer vehicleNDisplacement;
+            @JsonProperty("vehicleVhlTyp")
+            private String vehicleVhlTyp;
+            @JsonProperty("vehicleBrandId")
+            private String vehicleBrandId;
+            @JsonProperty("vehicleNewMrk")
+            private String vehicleNewMrk;
+            @JsonProperty("vehicleNewPlate")
+            private String vehicleNewPlate;
+            @JsonProperty("vehicleAnswer")
+            private String vehicleAnswer;
+            @JsonProperty("vehicleTCertificateDate")
+            private String vehicleTCertificateDate;
+        }
+    }
+}

+ 304 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/ODR1009Response.java

@@ -0,0 +1,304 @@
+package com.jzg.quotation.dajia.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseResponse;
+import com.jzg.quotation.dajia.api.entity.request.ODR1010Request;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class ODR1009Response extends DaJiaBaseResponse {
+
+    private static final long serialVersionUID = -1833711374434760893L;
+
+
+    @JsonProperty("result")
+    private ResultDTO result;
+
+    @NoArgsConstructor
+    @Data
+    public static class ResultDTO {
+        @JsonProperty("jqAppStatus")
+        private Object jqAppStatus;
+        @JsonProperty("jqAppStatusMessage")
+        private Object jqAppStatusMessage;
+        @JsonProperty("syAppStatus")
+        private Object syAppStatus;
+        @JsonProperty("syAppStatusMessage")
+        private Object syAppStatusMessage;
+        @JsonProperty("basePart")
+        private BasePartDTO basePart;
+        @JsonProperty("riskRatio")
+        private RiskRatioDTO riskRatio;
+        @JsonProperty("reInsuredInfo")
+        private String reInsuredInfo;
+        @JsonProperty("vehicleTaxation")
+        private VehicleTaxationDTO vehicleTaxation;
+        @JsonProperty("coverageList")
+        private List<CoverageListDTO> coverageList;
+        @JsonProperty("carModelList")
+        private Object carModelList;
+        @JsonProperty("jqSpecialEngageList")
+        private List<ODR1010Request.BodyDTO.JqSpecialEngageListDTO> jqSpecialEngageList;
+        @JsonProperty("sySpecialEngageList")
+        private List<SySpecialEngageListDTO> sySpecialEngageList;
+        @JsonProperty("jqSpecialEngageAllList")
+        private Object jqSpecialEngageAllList;
+        @JsonProperty("sySpecialEngageAllList")
+        private Object sySpecialEngageAllList;
+        @JsonProperty("nvhPolicyList")
+        private Object nvhPolicyList;
+
+        @NoArgsConstructor
+        @Data
+        public static class BasePartDTO {
+            @JsonProperty("totalPremium")
+            private Double totalPremium;
+            @JsonProperty("totalPremiumExclud")
+            private Double totalPremiumExclud;
+            @JsonProperty("totalPremiumVat")
+            private Double totalPremiumVat;
+            @JsonProperty("insurancePremium")
+            private Double insurancePremium;
+            @JsonProperty("jqProposalNo")
+            private String jqProposalNo;
+            @JsonProperty("jqEffectiveDate")
+            private Object jqEffectiveDate;
+            @JsonProperty("jqExpireDate")
+            private Object jqExpireDate;
+            @JsonProperty("jqPremium")
+            private Object jqPremium;
+            @JsonProperty("jqPremiumExclud")
+            private Object jqPremiumExclud;
+            @JsonProperty("jqPremiumVat")
+            private Object jqPremiumVat;
+            @JsonProperty("jqTaxPremium")
+            private Object jqTaxPremium;
+            @JsonProperty("syProposalNo")
+            private String syProposalNo;
+            @JsonProperty("syEffectiveDate")
+            private String syEffectiveDate;
+            @JsonProperty("syExpireDate")
+            private String syExpireDate;
+            @JsonProperty("syPremium")
+            private Double syPremium;
+            @JsonProperty("syPremiumExclud")
+            private Double syPremiumExclud;
+            @JsonProperty("syPremiumVat")
+            private Double syPremiumVat;
+            @JsonProperty("syShortRate")
+            private Integer syShortRate;
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class RiskRatioDTO {
+            @JsonProperty("jqResvNum2")
+            private Object jqResvNum2;
+            @JsonProperty("syResvNum2")
+            private Integer syResvNum2;
+            @JsonProperty("expDisc")
+            private Object expDisc;
+            @JsonProperty("billCTPELR")
+            private Double billCTPELR;
+            @JsonProperty("billCOMELR")
+            private Double billCOMELR;
+            @JsonProperty("billELR")
+            private Double billELR;
+            @JsonProperty("jqPubScores")
+            private Object jqPubScores;
+            @JsonProperty("syPubScores")
+            private String syPubScores;
+            @JsonProperty("cagoClmRec")
+            private Object cagoClmRec;
+            @JsonProperty("cclaimAdjustLevel")
+            private String cclaimAdjustLevel;
+            @JsonProperty("cclaimTimes")
+            private String cclaimTimes;
+            @JsonProperty("cinsureYears")
+            private String cinsureYears;
+            @JsonProperty("cnoClaimRes")
+            private String cnoClaimRes;
+            @JsonProperty("nresvNum1")
+            private Object nresvNum1;
+            @JsonProperty("nresvNum8")
+            private Integer nresvNum8;
+            @JsonProperty("cresvTxt1")
+            private Object cresvTxt1;
+            @JsonProperty("cresvTxt2")
+            private Object cresvTxt2;
+            @JsonProperty("jqPreEscNum")
+            private Integer jqPreEscNum;
+            @JsonProperty("syPreEscNum")
+            private Integer syPreEscNum;
+
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class CoverageListDTO {
+            @JsonProperty("cvrgNo")
+            private String cvrgNo;
+            @JsonProperty("amt")
+            private Integer amt;
+            @JsonProperty("discountValue")
+            private Double discountValue;
+            @JsonProperty("basicPremium")
+            private Double basicPremium;
+            @JsonProperty("premium")
+            private Double premium;
+            @JsonProperty("premiumExclud")
+            private Double premiumExclud;
+            @JsonProperty("premiumVat")
+            private Double premiumVat;
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class SySpecialEngageListDTO {
+            @JsonProperty("specialClausesCode")
+            private String specialClausesCode;
+            @JsonProperty("specialClausesContent")
+            private String specialClausesContent;
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class VehicleTaxationDTO {
+
+            //缴税方式(平台)
+            @JsonProperty("taxPaytaxTyp")
+            public String taxPaytaxTyp;
+
+            //车船税有效起期(平台)
+            @JsonProperty("taxEffBgnTm")
+            public String taxEffBgnTm;
+
+            //车船税有效止期(平台)
+            @JsonProperty("taxEffEndTm")
+            public String taxEffEndTm;
+
+            //减免税原因(平台)
+            @JsonProperty("taxTaxfreeVhltyp")
+            public String taxTaxfreeVhltyp;
+
+            //减免税方案(平台)
+            @JsonProperty("taxFreeRedTaxWay")
+            public String taxFreeRedTaxWay;
+
+            //纳税人识别号
+            @JsonProperty("taxTaxpayerId")
+            public String taxTaxpayerId;
+
+            //减免比例(平台)
+            @JsonProperty("taxFreeRedTaxPro")
+            public String taxFreeRedTaxPro;
+
+            //减税金额(平台)
+            @JsonProperty("taxAbateAmt")
+            public String taxAbateAmt;
+
+            //减免税凭证号(平台)
+            @JsonProperty("taxFreeCertNo")
+            public String taxFreeCertNo;
+
+            //减税税务机关代码(平台)
+            @JsonProperty("taxFreeRedTaxOrgCde")
+            public String taxFreeRedTaxOrgCde;
+
+            //免税税务机关名称(平台)
+            @JsonProperty("taxFreeTaxOrg")
+            public String taxFreeTaxOrg;
+
+            //完税税务机关代码(平台)
+            @JsonProperty("taxComTaxOrgCde")
+            public String taxComTaxOrgCde;
+
+            //完税税务机关名称(平台)
+            @JsonProperty("taxComTaxOrg")
+            public String taxComTaxOrg;
+
+            //完税凭证号(平台)
+            @JsonProperty("taxPaymentRecptNo")
+            public String taxPaymentRecptNo;
+
+            //完税凭证填发日期(平台)
+            @JsonProperty("taxDocumentDate")
+            public String taxDocumentDate;
+
+            //开具完税凭证地区代码(平台)
+            @JsonProperty("taxPaidAreaCode")
+            public String taxPaidAreaCode;
+
+            //外地开具税务机关(北京)
+            @JsonProperty("taxDeptNonlocal")
+            public String taxDeptNonlocal;
+
+            //当前期单位编码(平台)
+            @JsonProperty("taxUnitTypeCode")
+            public String taxUnitTypeCode;
+
+            //单位计税金额(平台)
+            @JsonProperty("taxUnitRate")
+            public String taxUnitRate;
+
+            //税费标准/年/单位(平台)
+            @JsonProperty("taxAnnUnitTaxAmt")
+            public String taxAnnUnitTaxAmt;
+
+            //当期应纳税额(平台)
+            @JsonProperty("taxDue")
+            public String taxDue;
+
+            //当期逾期日期(平台)
+            @JsonProperty("taxExceedDate")
+            public String taxExceedDate;
+
+            //当期逾期天数(平台)
+            @JsonProperty("taxExceedDaysCount")
+            public String taxExceedDaysCount;
+
+            //算税标志(平台)
+            @JsonProperty("taxCalcTaxFlag")
+            public String taxCalcTaxFlag;
+
+            //申报日期(平台)
+            @JsonProperty("taxDeclareDate")
+            public String taxDeclareDate;
+
+            //申报状态(平台)
+            @JsonProperty("taxDeclareStatus")
+            public String taxDeclareStatus;
+
+            //滞纳金(平台)
+            @JsonProperty("taxOverdueAmt")
+            public String taxOverdueAmt;
+
+            //合计金额(平台)
+            @JsonProperty("taxTotalAmount")
+            public String taxTotalAmount;
+
+            //车船税合计金额标识代码(平台)
+            @JsonProperty("taxAmountFlag")
+            public String taxAmountFlag;
+
+            //当年应缴(平台)
+            @JsonProperty("taxableAmt")
+            public String taxableAmt;
+
+            //往年补缴(平台)
+            @JsonProperty("taxLastYear")
+            public String taxLastYear;
+
+            //税款合计(平台)
+            @JsonProperty("taxAggTax")
+            public String taxAggTax;
+
+        }
+    }
+}

+ 46 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/ODR1010Response.java

@@ -0,0 +1,46 @@
+package com.jzg.quotation.dajia.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseResponse;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+
+/**
+ * @description: ODR1010 保存提交核保接口 响应参数
+ * @author: wenks
+ * @date: 2023/11/14 18:10
+ **/
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class ODR1010Response extends DaJiaBaseResponse {
+
+    private static final long serialVersionUID = -2378055721655271544L;
+
+    @JsonProperty("body")
+    private BodyDTO result;
+
+    @NoArgsConstructor
+    @Data
+    public static class BodyDTO {
+        @JsonProperty("orderStatus")
+        private String orderStatus;
+        @JsonProperty("jqProposalNo")
+        private Object jqProposalNo;
+        @JsonProperty("jqAppStatus")
+        private Object jqAppStatus;
+        @JsonProperty("jqAppStatusMessage")
+        private String jqAppStatusMessage;
+        @JsonProperty("syProposalNo")
+        private String syProposalNo;
+        @JsonProperty("syAppStatus")
+        private String syAppStatus;
+        @JsonProperty("syAppStatusMessage")
+        private String syAppStatusMessage;
+        @JsonProperty("nvhPolicyList")
+        private Object nvhPolicyList;
+    }
+}

+ 22 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/ODR1013Response.java

@@ -0,0 +1,22 @@
+package com.jzg.quotation.dajia.api.entity.response;
+
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseResponse;
+import com.ydtech.modules.order.entity.api.dajia.DaJiaBaseResponse;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * @description: 大家财险 影像上传接口 响应参数
+ * @author: wenks
+ * @date: 2023/11/14 17:50
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class ODR1013Response extends DaJiaBaseResponse {
+
+    private static final long serialVersionUID = 272886779414029674L;
+
+
+}

+ 36 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/ODR1016Response.java

@@ -0,0 +1,36 @@
+package com.jzg.quotation.dajia.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseResponse;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class ODR1016Response extends DaJiaBaseResponse {
+
+    private static final long serialVersionUID = 7133434751414472183L;
+
+    @JsonProperty("result")
+    private ResultDTO result;
+
+    @NoArgsConstructor
+    @Data
+    public static class ResultDTO implements Serializable {
+
+        private static final long serialVersionUID = 2420666839215689701L;
+
+        @JsonProperty("sumDepreciationRate")
+        private Double sumDepreciationRate;
+        @JsonProperty("actualValue")
+        private Double actualValue;
+        @JsonProperty("fairMarketValueUp")
+        private Integer fairMarketValueUp;
+        @JsonProperty("fairMarketValueDown")
+        private Integer fairMarketValueDown;
+    }
+}

+ 178 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/ODR2009Response.java

@@ -0,0 +1,178 @@
+package com.jzg.quotation.dajia.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.commons.entity.vo.quote.CoreModelsVo;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseResponse;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+ * @description: 大家财险 车辆车型查询接口 响应参数
+ * @author: wenks
+ * @date: 2023/11/14 16:46
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class ODR2009Response extends DaJiaBaseResponse {
+
+    private static final long serialVersionUID = -5345963590207304369L;
+
+    @JsonProperty("result")
+    private List<ResultDTO> result;
+
+    @NoArgsConstructor
+    @Data
+    public static class ResultDTO implements Serializable {
+
+        private static final long serialVersionUID = -8892193629620452567L;
+
+        /**
+         * 厂牌车型代码
+         */
+        @JsonProperty("vehicleId")
+        private String vehicleId;
+
+        @JsonProperty("brandId")
+        private String brandId;
+        /**
+         * 车型名称
+         */
+        @JsonProperty("vehicleName")
+        private String vehicleName;
+
+        @JsonProperty("vehicleAlias")
+        private Object vehicleAlias;
+
+        @JsonProperty("vehicleMaker")
+        private String vehicleMaker;
+        /**
+         * 上市年份
+         */
+        @JsonProperty("yearPattern")
+        private String yearPattern;
+
+        @JsonProperty("brandName")
+        private String brandName;
+
+        @JsonProperty("familyName")
+        private String familyName;
+
+        @JsonProperty("vehicleClass")
+        private String vehicleClass;
+
+        @JsonProperty("vehicleType")
+        private String vehicleType;
+
+        @JsonProperty("syxClassname")
+        private String syxClassname;
+
+        @JsonProperty("jqxClassname")
+        private String jqxClassname;
+
+        @JsonProperty("searchCode")
+        private String searchCode;
+        /**
+         * 排量
+         */
+        @JsonProperty("vehicleExhaust")
+        private String vehicleExhaust;
+
+        @JsonProperty("vehicleTonnage")
+        private Object vehicleTonnage;
+
+        /**
+         * 核定载客
+         */
+        @JsonProperty("vehicleSeat")
+        private String vehicleSeat;
+
+        @JsonProperty("vehiclePriceTax")
+        private String vehiclePriceTax;
+
+        @JsonProperty("antiTheft")
+        private String antiTheft;
+
+        @JsonProperty("airbag")
+        private String airbag;
+        @JsonProperty("absFlag")
+        private String absFlag;
+        @JsonProperty("transmissionType")
+        private String transmissionType;
+        @JsonProperty("remark")
+        private String remark;
+        @JsonProperty("qualityMax")
+        private String qualityMax;
+        @JsonProperty("qualityMin")
+        private String qualityMin;
+        /**
+         * 车辆价格
+         */
+        @JsonProperty("vehiclePrice")
+        private String vehiclePrice;
+        @JsonProperty("factoryId")
+        private String factoryId;
+        /**
+         * 功率(千瓦)
+         */
+        @JsonProperty("power")
+        private String power;
+        @JsonProperty("vehicleTypeNew")
+        private String vehicleTypeNew;
+        @JsonProperty("cfrmNo")
+        private String cfrmNo;
+        @JsonProperty("cplateNo")
+        private String cplateNo;
+        @JsonProperty("cengNo")
+        private String cengNo;
+        @JsonProperty("ncurbWt")
+        private Object ncurbWt;
+        @JsonProperty("cfuelType")
+        private Object cfuelType;
+        @JsonProperty("cmodelEnergyType")
+        private Object cmodelEnergyType;
+        @JsonProperty("cplateTyp")
+        private String cplateTyp;
+        @JsonProperty("ttransferDate")
+        private String ttransferDate;
+        @JsonProperty("cregVhlTyp")
+        private String cregVhlTyp;
+        @JsonProperty("cvhlTyp")
+        private String cvhlTyp;
+        @JsonProperty("ctraUsageCde")
+        private String ctraUsageCde;
+        @JsonProperty("cfstRegYmBar")
+        private String cfstRegYmBar;
+        @JsonProperty("nseatNum")
+        private Object nseatNum;
+        @JsonProperty("ntonage")
+        private Object ntonage;
+        @JsonProperty("ndisplacement")
+        private Object ndisplacement;
+        @JsonProperty("cregOwner")
+        private String cregOwner;
+        @JsonProperty("chaulge")
+        private String chaulge;
+        @JsonProperty("tcertificateDate")
+        private String tcertificateDate;
+
+        public CoreModelsVo toCoreModelsVo() {
+            CoreModelsVo coreModelsVo = new CoreModelsVo();
+            coreModelsVo.setModelCode(this.vehicleId);
+            coreModelsVo.setModelName(this.vehicleName);
+            coreModelsVo.setCarYear(this.yearPattern);
+            coreModelsVo.setPower(this.power);
+            coreModelsVo.setEnginedesc(this.vehicleExhaust);
+            coreModelsVo.setPurchasePrice(this.vehiclePrice);
+            coreModelsVo.setSeatCount(this.vehicleSeat);
+            return coreModelsVo;
+        }
+
+
+    }
+}

+ 44 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/vo/PersonAreaVo.java

@@ -0,0 +1,44 @@
+package com.jzg.quotation.dajia.api.entity.vo;
+
+import com.jzg.quotation.commons.entity.vo.quote.CustomerInfoVo;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @description: todo
+ * @author: shenwd
+ * @date: 2025/3/3 17:09
+ **/
+@Data
+@NoArgsConstructor
+public class PersonAreaVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -3920242388874610188L;
+    //省
+    private String provinceCode;
+    private String provinceName;
+
+
+    //市
+    private String cityCode;
+    private String cityName;
+
+    //区
+    private String countyCode;
+    private String countyName;
+
+
+
+    public PersonAreaVo(CustomerInfoVo customerInfoVo) {
+        this.provinceCode = customerInfoVo.getProvinceCode();
+        this.provinceName = customerInfoVo.getProvince();
+        this.cityCode = customerInfoVo.getCityCode();
+        this.cityName = customerInfoVo.getCity();
+        this.countyCode = customerInfoVo.getCountyCode();
+        this.countyName = customerInfoVo.getCounty();
+    }
+}

+ 19 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/properties/DaJiaApiProperties.java

@@ -0,0 +1,19 @@
+package com.jzg.quotation.dajia.api.properties;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "dajia.api")
+public class DaJiaApiProperties {
+
+    // 请求地址
+    private String url;
+
+    // 请求地址
+    private String encryptKey;
+
+
+}

+ 9 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/repository/DaJiaApiOrderRepository.java

@@ -0,0 +1,9 @@
+package com.jzg.quotation.dajia.api.repository;
+
+import com.jzg.quotation.dajia.api.entity.po.DaJiaApiOrder;
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+public interface DaJiaApiOrderRepository extends MongoRepository<DaJiaApiOrder, String> {
+
+    DaJiaApiOrder getById(String id);
+}

+ 6 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/service/DaJiaApiRequest.java

@@ -0,0 +1,6 @@
+package com.jzg.quotation.dajia.api.service;
+
+import com.jzg.quotation.commons.service.QuotationApiBaseService;
+
+public interface DaJiaApiRequest extends QuotationApiBaseService {
+}

+ 24 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/service/DaJiaCrawlerOrderService.java

@@ -0,0 +1,24 @@
+package com.jzg.quotation.dajia.api.service;
+
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.quotation.dajia.api.entity.po.DaJiaApiOrder;
+import com.jzg.quotation.dajia.api.entity.response.ODR1009Response;
+
+public interface DaJiaCrawlerOrderService {
+
+    /**
+     * 存储订单信息
+     *
+     * @param quoteVo            报价信息
+     * @param odr1009Response 报价信息
+     */
+    void saveOrderInfo(QuoteVo quoteVo, ODR1009Response odr1009Response);
+
+    /**
+     * 获取mongo中的订单信息
+     *
+     * @param ordersNo 订单号
+     * @return mongo中的订单信息
+     */
+    DaJiaApiOrder getById(String ordersNo);
+}

+ 182 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/service/impl/DaJiaApiRequestImpl.java

@@ -0,0 +1,182 @@
+package com.jzg.quotation.dajia.api.service.impl;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.jzg.commons.util.AssertionUtils;
+import com.jzg.commons.util.idgen.IdGenerate;
+import com.jzg.quotation.commons.constant.InsuranceCode;
+import com.jzg.quotation.commons.entity.vo.aggregated.InsuranceUploadImageVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.UnderwritingVo;
+import com.jzg.quotation.commons.entity.vo.base.OrderBase;
+import com.jzg.quotation.commons.entity.vo.image.InsuranceImageVo;
+import com.jzg.quotation.commons.entity.vo.quote.AttributionInformationVo;
+import com.jzg.quotation.commons.entity.vo.quote.CustomerInfoVo;
+import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
+import com.jzg.quotation.dajia.api.build.DaJiaAPIQuoteResultsVoBuild;
+import com.jzg.quotation.dajia.api.compoment.DaJiaApiRequestComponent;
+import com.jzg.quotation.dajia.api.constant.enums.Message;
+import com.jzg.quotation.dajia.api.entity.DaJiaApiConfigureParameters;
+import com.jzg.quotation.dajia.api.entity.po.DaJiaApiOrder;
+import com.jzg.quotation.dajia.api.entity.request.*;
+import com.jzg.quotation.dajia.api.entity.response.*;
+import com.jzg.quotation.dajia.api.entity.vo.PersonAreaVo;
+import com.jzg.quotation.dajia.api.service.DaJiaApiRequest;
+import com.jzg.quotation.dajia.api.service.DaJiaCrawlerOrderService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpHeaders;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Objects;
+
+@Service(value = InsuranceCode.INSURANCE_DJPC)
+@RequiredArgsConstructor
+public class DaJiaApiRequestImpl implements DaJiaApiRequest {
+
+    private final DaJiaApiRequestComponent daJiaApiRequestComponent;
+    private final DaJiaCrawlerOrderService daJiaCrawlerOrderService;
+
+    @Override
+    public QuoteResultsVo quote(QuoteVo quoteVo) throws JsonProcessingException {
+        OrderBase order = quoteVo.getOrder();
+        AttributionInformationVo attributionInformationVo = order.getAttributionInformationVo();
+        // 配置信息
+        DaJiaApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(DaJiaApiConfigureParameters.class,
+                attributionInformationVo.getConfigInfo());
+        // 获取业务订单号
+        String orderNo = getOrderNo(parameters);
+        String busiId = IdGenerate.nextId();
+        // 车型查询
+        ODR2009Request odr2009Request = new ODR2009Request(orderNo, quoteVo, parameters);
+        ODR2009Response odr2009Response = daJiaApiRequestComponent.queryVehicleTypes(odr2009Request);
+
+        // 车辆与客户信息确认
+        CustomerInfoVo ownerInfo = quoteVo.getOwnersInfo();
+        PersonAreaVo ownerInfoArea = new PersonAreaVo(ownerInfo);
+        // 被保人信息
+        CustomerInfoVo insuredPersonInfo = quoteVo.getInsuredPersonInfo();
+        PersonAreaVo insuredPersonArea = new PersonAreaVo(insuredPersonInfo);
+        // 投保人信息
+        CustomerInfoVo policyHolderInfo = quoteVo.getPolicyHolderInfo();
+        PersonAreaVo policyHolderArea = new PersonAreaVo(policyHolderInfo);
+        ODR1008Response odr1008Response = confirmationVehicleCustomerInformation(orderNo, busiId, quoteVo, parameters, odr2009Response, ownerInfoArea, insuredPersonArea, policyHolderArea);
+
+        // 车辆实际价值计算接口
+        // 获取起保日期
+        String bxStartDate = Objects.isNull(quoteVo.getBiRiskInfoVo()) ? quoteVo.getCiRiskInfoVo().getStartDate() : quoteVo.getBiRiskInfoVo().getStartDate();
+        ODR1016Request odr1016Request = new ODR1016Request(orderNo, bxStartDate);
+        ODR1016Response odr1016Response = daJiaApiRequestComponent.carValueCalculation(odr1016Request);
+        AssertionUtils.isFail(!odr1016Response.getStatus().equals(Message.M0000.getCode()),"车辆实际价值计算接口失败");
+
+        // 报价
+        ODR1009Response odr1009Response = quotation(orderNo, quoteVo, odr1016Response, parameters);
+        // 处理重复投保
+
+        // 处理验车码
+
+        // 处理验车码识别错误
+
+        daJiaCrawlerOrderService.saveOrderInfo(quoteVo,odr1009Response);
+        return DaJiaAPIQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo,odr1009Response);
+    }
+
+    /**
+     * 报价
+     * @param orderNo
+     * @param quoteVo
+     * @param odr1016Response
+     * @param parameters
+     * @return
+     */
+    private ODR1009Response quotation(String orderNo, QuoteVo quoteVo, ODR1016Response odr1016Response, DaJiaApiConfigureParameters parameters) {
+        ODR1009Request odr1009Request = new ODR1009Request(orderNo, quoteVo, odr1016Response,parameters);
+        ODR1009Response odr1009Response = daJiaApiRequestComponent.newPremiumXnyCalculation(odr1009Request);
+        // 处理重复投保
+
+        // 处理验车码
+
+        // 处理验车码识别错误
+        return odr1009Response;
+    }
+
+    /**
+     * 车辆与客户信息确认
+     * @param orderNo
+     * @param busiId
+     * @param quoteVo
+     * @param parameters
+     * @param odr2009Response
+     * @param ownerInfoArea
+     * @param insuredPersonArea
+     * @param policyHolderArea
+     * @return
+     */
+    private ODR1008Response confirmationVehicleCustomerInformation(String orderNo, String busiId, QuoteVo quoteVo, DaJiaApiConfigureParameters parameters, ODR2009Response odr2009Response, PersonAreaVo ownerInfoArea, PersonAreaVo insuredPersonArea, PersonAreaVo policyHolderArea) {
+
+        ODR1008Request odr1008Request = new ODR1008Request(orderNo, busiId, quoteVo, parameters, odr2009Response, ownerInfoArea, insuredPersonArea, policyHolderArea);
+        ODR1008Response odr1008Response = daJiaApiRequestComponent.carOrCustomInfoConfirm(odr1008Request);
+        AssertionUtils.isFail(!odr1008Response.getStatus().equals(Message.M0000.getCode()),"车辆与客户信息确认接口失败");
+        //车辆与客户信息确认返回
+        return odr1008Response;
+    }
+
+    /**
+     * 获取业务订单号接口
+     * @param parameters
+     * @return
+     */
+    private String getOrderNo(DaJiaApiConfigureParameters parameters) {
+        ODR1007Request odr1007Request = new ODR1007Request(parameters);
+        ODR1007Response odr1007Response = daJiaApiRequestComponent.queryBusinessOrders(odr1007Request);
+        AssertionUtils.isFail(!odr1007Response.getStatus().equals(Message.M0000.getCode()),"获取业务订单号接口失败");
+        //接口返回 订单号
+        String orderNo = odr1007Response.getResult().getOrderNo();
+        return orderNo;
+    }
+
+    @Override
+    public void underwriting(UnderwritingVo underwritingVo) {
+        OrderBase orderBase = underwritingVo.getOrder();
+        DaJiaApiOrder daJiaApiOrder = daJiaCrawlerOrderService.getById(orderBase.getOrdersNo());
+        // 配置信息
+        DaJiaApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(DaJiaApiConfigureParameters.class,
+                orderBase.getAttributionInformationVo().getConfigInfo());
+    }
+
+    @Override
+    public String getPaymentLink(OrderBase orderBase) throws JsonProcessingException {
+        DaJiaApiOrder daJiaApiOrder = daJiaCrawlerOrderService.getById(orderBase.getOrdersNo());
+        DaJiaApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(DaJiaApiConfigureParameters.class,
+                orderBase.getAttributionInformationVo().getConfigInfo());
+        return "";
+    }
+
+    @Override
+    public void uploadImage(InsuranceUploadImageVo insuranceUploadImageVo) {
+        // 获取订单信息
+        OrderBase orderBase = insuranceUploadImageVo.getOrder();
+        DaJiaApiOrder daJiaApiOrder = daJiaCrawlerOrderService.getById(orderBase.getOrdersNo());
+        // 配置信息
+        DaJiaApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(DaJiaApiConfigureParameters.class,
+                orderBase.getAttributionInformationVo().getConfigInfo());
+
+        // 上传影像信息
+        List<InsuranceImageVo> imageVoList = insuranceUploadImageVo.getImageVoList();
+
+        ODR1013Request odr1013Request = new ODR1013Request(orderBase, parameters, imageVoList);
+        ODR1013Response odr1013Response = daJiaApiRequestComponent.uploadImage(odr1013Request);
+
+    }
+
+    @Override
+    public void downloadPolicy(OrderBase orderBase) {
+        DaJiaApiOrder daJiaApiOrder = daJiaCrawlerOrderService.getById(orderBase.getOrdersNo());
+
+    }
+
+    @Override
+    public void queryOrderState(OrderBase orderBase) {
+
+    }
+}

+ 33 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/service/impl/DaJiaCrawlerOrderServiceImpl.java

@@ -0,0 +1,33 @@
+package com.jzg.quotation.dajia.api.service.impl;
+
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.quotation.dajia.api.entity.po.DaJiaApiOrder;
+import com.jzg.quotation.dajia.api.entity.response.ODR1009Response;
+import com.jzg.quotation.dajia.api.repository.DaJiaApiOrderRepository;
+import com.jzg.quotation.dajia.api.service.DaJiaCrawlerOrderService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+@Service
+@RequiredArgsConstructor
+public class DaJiaCrawlerOrderServiceImpl implements DaJiaCrawlerOrderService {
+
+    private final DaJiaApiOrderRepository daJiaApiOrderRepository;
+    @Override
+    public void saveOrderInfo(QuoteVo quoteVo, ODR1009Response odr1009Response) {
+        // 存储信息
+        DaJiaApiOrder daJiaApiOrder = new DaJiaApiOrder();
+        daJiaApiOrder.setId(quoteVo.getOrder().getOrdersNo());
+//        daJiaApiOrder.setOrderNo(odr1009Response.getResult().getBasePart());
+        daJiaApiOrder.setProductsCode(quoteVo.getOrder().getProductsCode());
+        daJiaApiOrder.setInsuredIdentify(quoteVo
+                .getInsuredPersonInfo()
+                .getIdentifyNumber());
+        daJiaApiOrderRepository.save(daJiaApiOrder);
+    }
+
+    @Override
+    public DaJiaApiOrder getById(String ordersNo) {
+        return daJiaApiOrderRepository.getById(ordersNo);
+    }
+}

+ 1 - 1
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/service/impl/DaJiaCrawlerOrderServiceImpl.java

@@ -23,6 +23,6 @@ public class DaJiaCrawlerOrderServiceImpl implements DaJiaCrawlerOrderService {
 
     @Override
     public DaJiaCrawlerOrder getById(String id) {
-        return daJiaCrawlerOrderRepository.getFirstById(id);
+        return daJiaCrawlerOrderRepository.getById(id);
     }
 }