Sfoglia il codice sorgente

Merge branch 'master' into hlx

helixiao 1 anno fa
parent
commit
38b388efca
49 ha cambiato i file con 447 aggiunte e 194 eliminazioni
  1. 1 1
      tenant/insurance/quotation-commons/pom.xml
  2. 2 2
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/build/HbCrawlerQuoteResultVoBuild.java
  3. 10 49
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/component/HengBangCrawlerRequestComponent.java
  4. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/constant/RequestConstant.java
  5. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/constant/enums/RequestUrl.java
  6. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/HengBangCrawlerConfigureParameters.java
  7. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/dto/HbEncDTO.java
  8. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/po/HbCrawlerOrder.java
  9. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbBaseRequest.java
  10. 2 2
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerAuthenticateRequest.java
  11. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerCalculationRequest.java
  12. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerCaptchaRequest.java
  13. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerCoreProposalRequest.java
  14. 2 2
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerDepreciationRequest.java
  15. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerFileUploadRequest.java
  16. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerGetPolicyRequest.java
  17. 4 4
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerQueryCarRequest.java
  18. 4 4
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerQuoteimmediatelyRequest.java
  19. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerSaleInfoRequest.java
  20. 14 0
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbBaseResponse.java
  21. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerAuthenticateResponse.java
  22. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerCalculationResponse.java
  23. 6 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerCaptchaResponse.java
  24. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerCoreProposalResponse.java
  25. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerDepreciationResponse.java
  26. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerGetPolicyResponse.java
  27. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerOrderStateResponse.java
  28. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerPayUrlResponse.java
  29. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerProposalResponse.java
  30. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerQueryCarResponse.java
  31. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerSaleInfoResponse.java
  32. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/properties/HengBangCrawlerProperties.java
  33. 2 2
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/repository/HbCrawlerOrderReposiroty.java
  34. 2 2
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/service/HbCrawlerOrderService.java
  35. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/service/HengBangCrawlerRequest.java
  36. 4 4
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/service/Impl/HbCrawlerOrderServiceImpl.java
  37. 32 24
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/service/Impl/HengBangCrawlerRequestImpl.java
  38. 1 1
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/utils/HengBangAESUtil.java
  39. 0 11
      tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/response/HbBaseResponse.java
  40. 5 1
      tenant/insurance/quotation-summary/pom.xml
  41. 7 1
      tenant/insurance/quotation-zhongmei/pom.xml
  42. 7 0
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/build/ZmCrawlerQuoteResultVoBuild.java
  43. 69 18
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/component/ZmCrawlerRequestComponent.java
  44. 24 0
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/Request/ZmCrawlerImageCookieRequest.java
  45. 21 0
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/Request/ZmCrawlerSubmitRequest.java
  46. 1 1
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/Response/ZmCrawlerQuotedPriceResponse.java
  47. 134 0
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/service/Impl/ZhongMeiCrawlerQuoteProcessServiceImpl.java
  48. 52 40
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/service/Impl/ZhongMeiCrawlerRequestImpl.java
  49. 17 0
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/service/ZhongMeiCrawlerQuoteProcessService.java

+ 1 - 1
tenant/insurance/quotation-commons/pom.xml

@@ -56,4 +56,4 @@
         </plugins>
     </build>
 
-</project>
+</project>

+ 2 - 2
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/build/HbCrawlerQuoteResultVoBuild.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/build/HbCrawlerQuoteResultVoBuild.java

@@ -1,10 +1,10 @@
-package com.jzg.quote.hengbang.crawler.build;
+package com.jzg.quotation.hengbang.crawler.build;
 
 import com.jzg.commons.entity.quote.vo.KindInfoVo;
 import com.jzg.commons.entity.quote.vo.RiskInfoVo;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteResultsVo;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
-import com.jzg.quote.hengbang.crawler.entity.response.HbCrawlerProposalResponse;
+import com.jzg.quotation.hengbang.crawler.entity.response.HbCrawlerProposalResponse;
 
 import java.util.List;
 import java.util.Map;

+ 10 - 49
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/component/HengBangCrawlerRequestComponent.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/component/HengBangCrawlerRequestComponent.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.component;
+package com.jzg.quotation.hengbang.crawler.component;
 
 import com.alibaba.fastjson.JSONObject;
 import com.jzg.commons.exception.SystemException;
@@ -7,13 +7,13 @@ import com.jzg.quotation.commons.component.RequestComponent;
 import com.jzg.quotation.commons.constant.CacheConstant;
 import com.jzg.quotation.commons.service.ExteriorUtilsRequest;
 import com.jzg.quotation.commons.utils.RequestObjectConversion;
-import com.jzg.quote.hengbang.crawler.constant.RequestConstant;
-import com.jzg.quote.hengbang.crawler.constant.enums.RequestUrl;
-import com.jzg.quote.hengbang.crawler.entity.dto.HbEncDTO;
-import com.jzg.quote.hengbang.crawler.entity.request.*;
-import com.jzg.quote.hengbang.crawler.entity.response.*;
-import com.jzg.quote.hengbang.crawler.properties.HengBangCrawlerProperties;
-import com.jzg.quote.hengbang.crawler.utils.HengBangAESUtil;
+import com.jzg.quotation.hengbang.crawler.constant.RequestConstant;
+import com.jzg.quotation.hengbang.crawler.constant.enums.RequestUrl;
+import com.jzg.quotation.hengbang.crawler.entity.dto.HbEncDTO;
+import com.jzg.quotation.hengbang.crawler.entity.request.*;
+import com.jzg.quotation.hengbang.crawler.entity.response.*;
+import com.jzg.quotation.hengbang.crawler.properties.HengBangCrawlerProperties;
+import com.jzg.quotation.hengbang.crawler.utils.HengBangAESUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.redisson.api.RMap;
@@ -57,53 +57,14 @@ public class HengBangCrawlerRequestComponent {
         if (frequency <= 0) {
             throw new SystemException("验证码异常");
         }
-        HbCrawlerCaptchaRequest captchaRequest = new HbCrawlerCaptchaRequest();
         // 请求
-        HbCrawlerCaptchaResponse HbCrawlerCaptchaResponse = requestComponent.objectPost(RequestUrl.VERIFY_CODE.getRequestUrl(hbCrawlerProperties.getBaseUrl()), JSONObject.toJSONString(captchaRequest), "", HbCrawlerCaptchaResponse.class);
+        HbCrawlerCaptchaResponse HbCrawlerCaptchaResponse = requestComponent.objectPost(RequestUrl.VERIFY_CODE.getRequestUrl(hbCrawlerProperties.getBaseUrl()), new HbCrawlerCaptchaRequest(), "", HbCrawlerCaptchaResponse.class);
         // 识别验证码
         String s = exteriorUtilsRequest.captchaIdentify(HbCrawlerCaptchaResponse.getVerifyImg());
-        try {
-            int i = processCaptcha(s);
-            s = String.valueOf(i);
-        } catch (Exception e) {
-            frequency = frequency - 1;
-            return captcha(frequency);
-        }
         HbCrawlerCaptchaResponse.setVerifyCode(s);
         return HbCrawlerCaptchaResponse;
     }
 
-    public int processCaptcha(String res) {
-        // 检查字符串长度是否足够,并且第三个字符不是'='
-        if (res.length() >= 3 && res.charAt(2) != '=') {
-            char operator = res.charAt(1);
-            try {
-                int operand1 = Integer.parseInt(res.substring(0, 1));
-                int operand2 = Integer.parseInt(res.substring(2, 3));
-                // 注意:这里假设操作符和操作数都是有效的,实际应用中应该添加更多的错误处理
-
-                switch (operator) {
-                    case '+':
-                    case 'f': // 通常'f'不是加法运算符,但根据原代码保留
-                        return operand1 + operand2;
-                    case 'x':
-                    case 'X':
-                    case '4': // 通常'4'不是乘法运算符,但保留以匹配原代码
-                    case '9': // 通常'9'也不是乘法运算符,但保留以匹配原代码
-                        return operand1 * operand2;
-                    case '-':
-                    case 'e': // 通常'e'不是减法运算符,但根据原代码保留
-                    case '=': // 通常'='不是减法运算符,但根据原代码保留
-                    case '2': // 通常'2'也不是减法运算符,但根据原代码保留
-                        return operand1 - operand2;
-                    // 如果操作符不匹配,则获取新的验证码图片(模拟)
-                }
-            } catch (NumberFormatException ignored) {
-            }
-        }
-        throw new SystemException("");
-    }
-
     /**
      * 登录次数
      *
@@ -117,7 +78,7 @@ public class HengBangCrawlerRequestComponent {
         HbCrawlerCaptchaResponse captchaResponse = captcha(RequestConstant.REQUEST_NUMBER);
         // 登录存入缓存当中
         HbCrawlerAuthenticateRequest authenticateRequest = new HbCrawlerAuthenticateRequest(captchaResponse, username, password);
-        ResponseEntity<HbCrawlerAuthenticateResponse> responseEntity = requestComponent.objectPost(RequestUrl.AUTHENTICATE.getRequestUrl(hbCrawlerProperties.getBaseUrl()), JSONObject.toJSONString(authenticateRequest), HbCrawlerAuthenticateResponse.class);
+        ResponseEntity<HbCrawlerAuthenticateResponse> responseEntity = requestComponent.objectPost(RequestUrl.AUTHENTICATE.getRequestUrl(hbCrawlerProperties.getBaseUrl()), authenticateRequest, HbCrawlerAuthenticateResponse.class);
         HbCrawlerAuthenticateResponse authenticateResponse = Optional.of(responseEntity)
                 .map(ResponseEntity::getBody)
                 .orElseThrow();

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/constant/RequestConstant.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/constant/RequestConstant.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.constant;
+package com.jzg.quotation.hengbang.crawler.constant;
 
 /**
  * @description: 常量

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/constant/enums/RequestUrl.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/constant/enums/RequestUrl.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.constant.enums;
+package com.jzg.quotation.hengbang.crawler.constant.enums;
 
 import com.jzg.quotation.commons.standard.CrawlerRequestUrlStandard;
 import lombok.AllArgsConstructor;

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/HengBangCrawlerConfigureParameters.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/HengBangCrawlerConfigureParameters.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity;
+package com.jzg.quotation.hengbang.crawler.entity;
 
 import com.jzg.quotation.commons.standard.ConfigureParameters;
 import lombok.Data;

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/dto/HbEncDTO.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/dto/HbEncDTO.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity.dto;
+package com.jzg.quotation.hengbang.crawler.entity.dto;
 
 import lombok.Data;
 

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/po/HbCrawlerOrder.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/po/HbCrawlerOrder.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity.po;
+package com.jzg.quotation.hengbang.crawler.entity.po;
 
 import lombok.Data;
 import org.springframework.data.annotation.Id;

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/request/HbBaseRequest.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbBaseRequest.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity.request;
+package com.jzg.quotation.hengbang.crawler.entity.request;
 
 import java.io.Serializable;
 

+ 2 - 2
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/request/HbCrawlerAuthenticateRequest.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerAuthenticateRequest.java

@@ -1,8 +1,8 @@
-package com.jzg.quote.hengbang.crawler.entity.request;
+package com.jzg.quotation.hengbang.crawler.entity.request;
 
 import cn.hutool.crypto.digest.DigestUtil;
 import com.jzg.commons.text.CharsetKit;
-import com.jzg.quote.hengbang.crawler.entity.response.HbCrawlerCaptchaResponse;
+import com.jzg.quotation.hengbang.crawler.entity.response.HbCrawlerCaptchaResponse;
 import lombok.Data;
 
 import java.io.Serial;

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/request/HbCrawlerCalculationRequest.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerCalculationRequest.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity.request;
+package com.jzg.quotation.hengbang.crawler.entity.request;
 
 import com.jzg.commons.entity.quote.vo.KindInfoVo;
 import com.jzg.commons.entity.quote.vo.QuoteVo;

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/request/HbCrawlerCaptchaRequest.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerCaptchaRequest.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity.request;
+package com.jzg.quotation.hengbang.crawler.entity.request;
 
 import lombok.Data;
 

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/request/HbCrawlerCoreProposalRequest.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerCoreProposalRequest.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity.request;
+package com.jzg.quotation.hengbang.crawler.entity.request;
 
 import lombok.Data;
 

+ 2 - 2
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/request/HbCrawlerDepreciationRequest.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerDepreciationRequest.java

@@ -1,7 +1,7 @@
-package com.jzg.quote.hengbang.crawler.entity.request;
+package com.jzg.quotation.hengbang.crawler.entity.request;
 
 import com.jzg.commons.entity.quote.vo.CarInfoVo;
-import com.jzg.quote.hengbang.crawler.entity.response.HbCrawlerQueryCarResponse;
+import com.jzg.quotation.hengbang.crawler.entity.response.HbCrawlerQueryCarResponse;
 import lombok.Data;
 
 import java.io.Serial;

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/request/HbCrawlerFileUploadRequest.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerFileUploadRequest.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity.request;
+package com.jzg.quotation.hengbang.crawler.entity.request;
 
 import lombok.Data;
 

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/request/HbCrawlerGetPolicyRequest.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerGetPolicyRequest.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity.request;
+package com.jzg.quotation.hengbang.crawler.entity.request;
 
 import lombok.Data;
 

+ 4 - 4
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/request/HbCrawlerQueryCarRequest.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerQueryCarRequest.java

@@ -1,5 +1,6 @@
-package com.jzg.quote.hengbang.crawler.entity.request;
+package com.jzg.quotation.hengbang.crawler.entity.request;
 
+import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
@@ -29,9 +30,7 @@ public class HbCrawlerQueryCarRequest extends HbBaseRequest {
     private static final long serialVersionUID = 2573166312583296895L;
 
     public HbCrawlerQueryCarRequest(String brand, String modelCode, Integer VehicleStyleUniqueId) {
-        this.cbitData.Brand = brand;
-        this.cbitData.ModelCode = modelCode;
-        this.cbitData.VehicleStyleUniqueId = VehicleStyleUniqueId;
+        this.cbitData = new CbitDataDTO(brand, modelCode, VehicleStyleUniqueId);
         this.pageNo = 0;
         this.pageSize = 5;
     }
@@ -43,6 +42,7 @@ public class HbCrawlerQueryCarRequest extends HbBaseRequest {
     private Integer pageSize;
 
     @Data
+    @AllArgsConstructor
     @NoArgsConstructor
     public static class CbitDataDTO implements Serializable {
         @Serial

+ 4 - 4
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/request/HbCrawlerQuoteimmediatelyRequest.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerQuoteimmediatelyRequest.java

@@ -1,11 +1,11 @@
-package com.jzg.quote.hengbang.crawler.entity.request;
+package com.jzg.quotation.hengbang.crawler.entity.request;
 
 import com.jzg.commons.entity.quote.vo.CarInfoVo;
 import com.jzg.commons.entity.quote.vo.CustomerInfoVo;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
-import com.jzg.quote.hengbang.crawler.entity.HengBangCrawlerConfigureParameters;
-import com.jzg.quote.hengbang.crawler.entity.dto.HbEncDTO;
-import com.jzg.quote.hengbang.crawler.entity.response.HbCrawlerQueryCarResponse;
+import com.jzg.quotation.hengbang.crawler.entity.HengBangCrawlerConfigureParameters;
+import com.jzg.quotation.hengbang.crawler.entity.dto.HbEncDTO;
+import com.jzg.quotation.hengbang.crawler.entity.response.HbCrawlerQueryCarResponse;
 import lombok.Data;
 
 import java.io.Serial;

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/request/HbCrawlerSaleInfoRequest.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/request/HbCrawlerSaleInfoRequest.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity.request;
+package com.jzg.quotation.hengbang.crawler.entity.request;
 
 import lombok.AllArgsConstructor;
 import lombok.Data;

+ 14 - 0
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbBaseResponse.java

@@ -0,0 +1,14 @@
+package com.jzg.quotation.hengbang.crawler.entity.response;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @description:
+ * @author: shenwd
+ * @date: 2025/4/7 15:45
+ **/
+public class HbBaseResponse implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 8468085174218499877L;
+}

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/response/HbCrawlerAuthenticateResponse.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerAuthenticateResponse.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity.response;
+package com.jzg.quotation.hengbang.crawler.entity.response;
 
 import lombok.Data;
 

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/response/HbCrawlerCalculationResponse.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerCalculationResponse.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity.response;
+package com.jzg.quotation.hengbang.crawler.entity.response;
 
 import lombok.Data;
 

+ 6 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/response/HbCrawlerCaptchaResponse.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerCaptchaResponse.java

@@ -1,7 +1,9 @@
-package com.jzg.quote.hengbang.crawler.entity.response;
+package com.jzg.quotation.hengbang.crawler.entity.response;
 
 import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
 
 import java.io.Serial;
 
@@ -10,9 +12,12 @@ import java.io.Serial;
  * @author: shenwd
  * @date: 2025/4/7 15:45
  **/
+@EqualsAndHashCode(callSuper = true)
 @Data
 @AllArgsConstructor
+@NoArgsConstructor
 public class HbCrawlerCaptchaResponse extends HbBaseResponse{
+
     @Serial
     private static final long serialVersionUID = -8992172251538749662L;
 

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/response/HbCrawlerCoreProposalResponse.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerCoreProposalResponse.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity.response;
+package com.jzg.quotation.hengbang.crawler.entity.response;
 
 import lombok.Data;
 

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/response/HbCrawlerDepreciationResponse.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerDepreciationResponse.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity.response;
+package com.jzg.quotation.hengbang.crawler.entity.response;
 
 import lombok.Data;
 

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/response/HbCrawlerGetPolicyResponse.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerGetPolicyResponse.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity.response;
+package com.jzg.quotation.hengbang.crawler.entity.response;
 
 import lombok.Data;
 

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/response/HbCrawlerOrderStateResponse.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerOrderStateResponse.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity.response;
+package com.jzg.quotation.hengbang.crawler.entity.response;
 
 import lombok.Data;
 

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/response/HbCrawlerPayUrlResponse.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerPayUrlResponse.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity.response;
+package com.jzg.quotation.hengbang.crawler.entity.response;
 
 import lombok.Data;
 

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/response/HbCrawlerProposalResponse.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerProposalResponse.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity.response;
+package com.jzg.quotation.hengbang.crawler.entity.response;
 
 import lombok.Data;
 

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/response/HbCrawlerQueryCarResponse.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerQueryCarResponse.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity.response;
+package com.jzg.quotation.hengbang.crawler.entity.response;
 
 import com.jzg.quotation.commons.filter.CarModelsFilter;
 import lombok.Data;

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/response/HbCrawlerSaleInfoResponse.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/entity/response/HbCrawlerSaleInfoResponse.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.entity.response;
+package com.jzg.quotation.hengbang.crawler.entity.response;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/properties/HengBangCrawlerProperties.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/properties/HengBangCrawlerProperties.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.properties;
+package com.jzg.quotation.hengbang.crawler.properties;
 
 import lombok.Data;
 import org.springframework.boot.context.properties.ConfigurationProperties;

+ 2 - 2
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/repository/HbCrawlerOrderReposiroty.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/repository/HbCrawlerOrderReposiroty.java

@@ -1,6 +1,6 @@
-package com.jzg.quote.hengbang.crawler.repository;
+package com.jzg.quotation.hengbang.crawler.repository;
 
-import com.jzg.quote.hengbang.crawler.entity.po.HbCrawlerOrder;
+import com.jzg.quotation.hengbang.crawler.entity.po.HbCrawlerOrder;
 import org.springframework.data.mongodb.repository.MongoRepository;
 import org.springframework.data.mongodb.repository.Query;
 

+ 2 - 2
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/service/HbCrawlerOrderService.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/service/HbCrawlerOrderService.java

@@ -1,6 +1,6 @@
-package com.jzg.quote.hengbang.crawler.service;
+package com.jzg.quotation.hengbang.crawler.service;
 
-import com.jzg.quote.hengbang.crawler.entity.po.HbCrawlerOrder;
+import com.jzg.quotation.hengbang.crawler.entity.po.HbCrawlerOrder;
 
 /**
  * @description: 恒邦财险 mongodb中操作数据

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/service/HengBangCrawlerRequest.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/service/HengBangCrawlerRequest.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.service;
+package com.jzg.quotation.hengbang.crawler.service;
 
 import com.jzg.quotation.commons.service.QuotationCrawlerBaseService;
 

+ 4 - 4
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/service/Impl/HbCrawlerOrderServiceImpl.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/service/Impl/HbCrawlerOrderServiceImpl.java

@@ -1,8 +1,8 @@
-package com.jzg.quote.hengbang.crawler.service.Impl;
+package com.jzg.quotation.hengbang.crawler.service.Impl;
 
-import com.jzg.quote.hengbang.crawler.entity.po.HbCrawlerOrder;
-import com.jzg.quote.hengbang.crawler.repository.HbCrawlerOrderReposiroty;
-import com.jzg.quote.hengbang.crawler.service.HbCrawlerOrderService;
+import com.jzg.quotation.hengbang.crawler.entity.po.HbCrawlerOrder;
+import com.jzg.quotation.hengbang.crawler.repository.HbCrawlerOrderReposiroty;
+import com.jzg.quotation.hengbang.crawler.service.HbCrawlerOrderService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;

+ 32 - 24
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/service/Impl/HengBangCrawlerRequestImpl.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/service/Impl/HengBangCrawlerRequestImpl.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.service.Impl;
+package com.jzg.quotation.hengbang.crawler.service.Impl;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.crypto.digest.DigestUtil;
@@ -8,25 +8,25 @@ import com.jzg.commons.entity.quote.vo.CarInfoVo;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.quote.vo.RiskInfoVo;
 import com.jzg.commons.entity.quote.vo.aggregated.*;
+import com.jzg.commons.entity.quote.vo.base.LoginBase;
+import com.jzg.commons.entity.quote.vo.image.InsuranceImageVo;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.quotation.commons.annotation.QuoteCrawlerService;
 import com.jzg.quotation.commons.constant.InsuranceCode;
-import com.jzg.commons.entity.quote.vo.base.LoginBase;
-import com.jzg.commons.entity.quote.vo.image.InsuranceImageVo;
 import com.jzg.quotation.commons.filter.CarModelsFilterUtils;
 import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
-import com.jzg.quote.hengbang.crawler.build.HbCrawlerQuoteResultVoBuild;
-import com.jzg.quote.hengbang.crawler.component.HengBangCrawlerRequestComponent;
-import com.jzg.quote.hengbang.crawler.constant.RequestConstant;
-import com.jzg.quote.hengbang.crawler.constant.enums.RequestUrl;
-import com.jzg.quote.hengbang.crawler.entity.HengBangCrawlerConfigureParameters;
-import com.jzg.quote.hengbang.crawler.entity.dto.HbEncDTO;
-import com.jzg.quote.hengbang.crawler.entity.po.HbCrawlerOrder;
-import com.jzg.quote.hengbang.crawler.entity.request.*;
-import com.jzg.quote.hengbang.crawler.entity.response.*;
-import com.jzg.quote.hengbang.crawler.properties.HengBangCrawlerProperties;
-import com.jzg.quote.hengbang.crawler.service.HbCrawlerOrderService;
-import com.jzg.quote.hengbang.crawler.service.HengBangCrawlerRequest;
+import com.jzg.quotation.hengbang.crawler.build.HbCrawlerQuoteResultVoBuild;
+import com.jzg.quotation.hengbang.crawler.component.HengBangCrawlerRequestComponent;
+import com.jzg.quotation.hengbang.crawler.constant.RequestConstant;
+import com.jzg.quotation.hengbang.crawler.constant.enums.RequestUrl;
+import com.jzg.quotation.hengbang.crawler.entity.HengBangCrawlerConfigureParameters;
+import com.jzg.quotation.hengbang.crawler.entity.dto.HbEncDTO;
+import com.jzg.quotation.hengbang.crawler.entity.po.HbCrawlerOrder;
+import com.jzg.quotation.hengbang.crawler.entity.request.*;
+import com.jzg.quotation.hengbang.crawler.entity.response.*;
+import com.jzg.quotation.hengbang.crawler.properties.HengBangCrawlerProperties;
+import com.jzg.quotation.hengbang.crawler.service.HbCrawlerOrderService;
+import com.jzg.quotation.hengbang.crawler.service.HengBangCrawlerRequest;
 import lombok.RequiredArgsConstructor;
 import org.springframework.http.HttpHeaders;
 
@@ -48,6 +48,7 @@ public class HengBangCrawlerRequestImpl implements HengBangCrawlerRequest {
     private final HbCrawlerOrderService hbCrawlerOrderService;
 
     private final HengBangCrawlerProperties hbCrawlerProperties;
+
     /**
      * 登录
      * @param loginBase 登录信息
@@ -136,7 +137,7 @@ public class HengBangCrawlerRequestImpl implements HengBangCrawlerRequest {
 
         HbCrawlerPayUrlResponse payUrlResponse = hbCrawlerRequestComponent.getPayUrl(hbCrawlerOrder.getPlyappno(), headers);
         PaymentLinkResultsVo paymentLinkResultsVo = new PaymentLinkResultsVo();
-        paymentLinkResultsVo.setPayLinkStatus("0".equals(payUrlResponse.getShowSms()) ? true : false);
+        paymentLinkResultsVo.setPayLinkStatus("0".equals(payUrlResponse.getShowSms()));
         paymentLinkResultsVo.setPaymentLink(payUrlResponse.getPayUrl());
 
         return paymentLinkResultsVo;
@@ -148,9 +149,11 @@ public class HengBangCrawlerRequestImpl implements HengBangCrawlerRequest {
      */
     @Override
     public void uploadImage(InsuranceUploadImageVo insuranceUploadImageVo) {
-        AttributionInformationVo attributionInformationVo = insuranceUploadImageVo.getOrder().getAttributionInformationVo();
+        AttributionInformationVo attributionInformationVo = insuranceUploadImageVo.getOrder()
+                .getAttributionInformationVo();
         HttpHeaders headers = hbCrawlerRequestComponent.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
-        HbCrawlerOrder hbCrawlerOrder = hbCrawlerOrderService.findByOrdersNo(insuranceUploadImageVo.getOrder().getOrdersNo());
+        HbCrawlerOrder hbCrawlerOrder = hbCrawlerOrderService.findByOrdersNo(insuranceUploadImageVo.getOrder()
+                .getOrdersNo());
         //暂时将图片默认为01,06,09,投保业务-旧车-其他资料
         Integer fileNum = 0;
         StringBuilder fileBuff = new StringBuilder();
@@ -163,19 +166,19 @@ public class HengBangCrawlerRequestImpl implements HengBangCrawlerRequest {
                 List<InsuranceImageVo.ImageDTO> imageBase64List = insuranceImageVo.getImageBase64List();
                 if (imageBase64List != null && !imageBase64List.isEmpty()) {
                     for (InsuranceImageVo.ImageDTO imageBase64 : imageBase64List) {
-                        if (fileBuff.length() > 0) {
+                        if (!fileBuff.isEmpty()) {
                             fileBuff.append("||");
                         }
                         fileBuff.append(imageBase64.getImageBase64Str());
-                        if (fileType.length() > 0) {
+                        if (!fileType.isEmpty()) {
                             fileType.append("||");
                         }
                         fileType.append(RequestConstant.IMAGE_TYPE);
-                        if (mark3.length() > 0) {
+                        if (!mark3.isEmpty()) {
                             mark3.append(",");
                         }
                         mark3.append(mark3Num++);
-                        fileNum+=1;
+                        fileNum += 1;
                     }
                 }
             }
@@ -204,13 +207,18 @@ public class HengBangCrawlerRequestImpl implements HengBangCrawlerRequest {
         getPolicyRequest.setCarMark(parameters.getLicenseNo());
         HbCrawlerGetPolicyResponse policyResponse = hbCrawlerRequestComponent.getPolicy(getPolicyRequest, headers);
         List<String> downloadUrls = new ArrayList<>();
-        List<HbCrawlerGetPolicyResponse.ResponseBodyDTO.ContentDTO> contentDTOList = policyResponse.getResponseBody().getContent();
+        List<HbCrawlerGetPolicyResponse.ResponseBodyDTO.ContentDTO> contentDTOList = policyResponse.getResponseBody()
+                .getContent();
         if (contentDTOList != null && !contentDTOList.isEmpty()) {
             contentDTOList.forEach(contentDTO -> {
                 //获取参数sign的值
                 String sign = getSign(contentDTO.getPOLICY_CATEGORY(), contentDTO.getBUSINESS_NO());
                 StringBuilder downloadUrl = new StringBuilder(RequestUrl.DOWNLOAD_POLICY.getRequestUrl(hbCrawlerProperties.getBaseUrl()));
-                downloadUrl.append(contentDTO.getPOLICY_CATEGORY()).append("/").append(contentDTO.getBUSINESS_NO()).append("?sign=").append(sign);
+                downloadUrl.append(contentDTO.getPOLICY_CATEGORY())
+                        .append("/")
+                        .append(contentDTO.getBUSINESS_NO())
+                        .append("?sign=")
+                        .append(sign);
                 downloadUrls.add(downloadUrl.toString());
             });
         }

+ 1 - 1
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/utils/HengBangAESUtil.java → tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quotation/hengbang/crawler/utils/HengBangAESUtil.java

@@ -1,4 +1,4 @@
-package com.jzg.quote.hengbang.crawler.utils;
+package com.jzg.quotation.hengbang.crawler.utils;
 
 import com.jzg.commons.text.CharsetKit;
 

+ 0 - 11
tenant/insurance/quotation-hengbang/src/main/java/com/jzg/quote/hengbang/crawler/entity/response/HbBaseResponse.java

@@ -1,11 +0,0 @@
-package com.jzg.quote.hengbang.crawler.entity.response;
-
-import java.io.Serializable;
-
-/**
- * @description:
- * @author: shenwd
- * @date: 2025/4/7 15:45
- **/
-public class HbBaseResponse implements Serializable {
-}

+ 5 - 1
tenant/insurance/quotation-summary/pom.xml

@@ -101,7 +101,11 @@
             <version>1.0-SNAPSHOT</version>
             <scope>compile</scope>
         </dependency>
-
+        <dependency>
+            <groupId>com.jzg</groupId>
+            <artifactId>quotation-hengbang</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
         <dependency>
             <groupId>com.jzg</groupId>
             <artifactId>quotation-ansheng</artifactId>

+ 7 - 1
tenant/insurance/quotation-zhongmei/pom.xml

@@ -23,6 +23,12 @@
             <version>1.0-SNAPSHOT</version>
             <scope>compile</scope>
         </dependency>
+        <!-- HTML 解析 -->
+        <dependency>
+            <groupId>org.jsoup</groupId>
+            <artifactId>jsoup</artifactId>
+            <version>1.16.1</version>
+        </dependency>
     </dependencies>
     <build>
         <plugins>
@@ -37,4 +43,4 @@
         </plugins>
     </build>
 
-</project>
+</project>

+ 7 - 0
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/build/ZmCrawlerQuoteResultVoBuild.java

@@ -1,6 +1,7 @@
 package com.jzg.quotation.zhongmei.crawler.build;
 
 import com.jzg.commons.constants.ProductsType;
+import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.entity.quote.vo.KindInfoVo;
 import com.jzg.commons.entity.quote.vo.RiskInfoVo;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteResultsVo;
@@ -22,6 +23,12 @@ public final class ZmCrawlerQuoteResultVoBuild {
     public static QuoteResultsVo build(QuoteVo quoteVo, ZmCrawlerQuotedPriceResponse quotedPriceResponse) {
         QuoteResultsVo quoteResultsVo = new QuoteResultsVo();
         quoteResultsVo.setOrdersNo(quoteVo.getOrder().getOrdersNo());
+        quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.WAIT_AUDIT);
+        if(!"0".equals(quotedPriceResponse.getHead().getReturnCode())){
+            quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.QUOTE_FAIL);
+            quoteResultsVo.setErrorMessage(quotedPriceResponse.getHead().getReturnMessage());
+            return quoteResultsVo;
+        }
         //交强险
         quoteResultsVo.setCiRiskInfoVo(buildCiInfo(quotedPriceResponse));
         //商业险

+ 69 - 18
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/component/ZmCrawlerRequestComponent.java

@@ -27,11 +27,13 @@ import lombok.extern.slf4j.Slf4j;
 import org.redisson.api.RBucket;
 import org.redisson.api.RMap;
 import org.redisson.api.RedissonClient;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.ResponseEntity;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.http.*;
 import org.springframework.stereotype.Component;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.reactive.function.BodyInserters;
 import org.springframework.web.reactive.function.client.WebClient;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -56,6 +58,7 @@ public class ZmCrawlerRequestComponent {
     private final WebClient webClient;
 
     private final RequestComponent requestComponent;
+    private final RestTemplate restTemplate;
 
     private final RedissonClient redissonClient;
 
@@ -298,27 +301,71 @@ public class ZmCrawlerRequestComponent {
 
     /**
      * 导入影像
+     *
      * @param importRequest
+     * @param cookies
      * @return
      */
-    public ZmCrawlerImageImportResponse importImage(ZmCrawlerImageImportRequest importRequest, List<InsuranceImageVo.ImageDTO> imageDTOS) {
+    public ZmCrawlerImageImportResponse importImage(ZmCrawlerImageImportRequest importRequest, List<InsuranceImageVo.ImageDTO> imageDTOS, List<String> cookies) {
         MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
-        params.put("batchId", Collections.singletonList(importRequest.getBatchId()));
-        params.put("batchVer", Collections.singletonList(importRequest.getBatchVer()));
-        params.put("busiNo", Collections.singletonList(importRequest.getBusiNo()));
-        params.put("appCode", Collections.singletonList(importRequest.getAppCode()));
+        params.add("batchId", importRequest.getBatchId());
+        params.add("batchVer", importRequest.getBatchVer());
+        params.add("busiNo", importRequest.getBusiNo());
+        params.add("appCode", importRequest.getAppCode());
 
         AtomicInteger index = new AtomicInteger(0);//标记数量
-        imageDTOS.forEach(image -> {
-            Map<String, Object> imageMap = new HashMap<>();
-            imageMap.put("base64", image.getImageBase64Str());
-            imageMap.put("size", image.getImageSize());
-            imageMap.put("orginalName", image.getImageName());
-            params.put("image" + (index.getAndAdd(1)), Collections.singletonList(imageMap));
-        });
-
-        return requestComponent.formData(RequestUrl.IMPORT_IMAGE.getRequestUrl(zmCrawlerProperties.getImageUrl()),
-                params, ZmCrawlerImageImportResponse.class, null).getBody();
+        Map<String, Object> imageMap = new HashMap<>();
+        imageMap.put("base64", "data:image/jpeg;base64," + imageDTOS.get(0).getImageBase64Str());
+        imageMap.put("size", imageDTOS.get(0).getImageSize());
+        imageMap.put("orginalName", imageDTOS.get(0).getImageName());
+        params.add("image" + (index.getAndAdd(1)), JSON.toJSONString(imageMap));
+//        imageDTOS.forEach(image -> {
+//
+//        });
+//        HttpHeaders headers = new HttpHeaders();
+//        headers.set("Connection","keep-alive");
+//        headers.set("Referer","https://image.chinacoal-ins.com/SunICMS/ecm-nview/image/webScan/webScanMain.jsp");
+//        headers.set("Accept","*/*");
+//        headers.set("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36");
+//        headers.set("Cookie",cookies.get(1) + ";" + cookies.get(0));
+////        headers.set(HttpHeaders.CONTENT_TYPE,"multipart/form-data");
+//        System.out.println(JSON.toJSONString(params));
+
+        String response = webClient.post()
+                .uri(RequestUrl.IMPORT_IMAGE.getUrl())
+                .contentType(MediaType.MULTIPART_FORM_DATA)
+                .headers(headers -> {
+
+//                    headers.set(HttpHeaders.CONTENT_TYPE, "multipart/form-data; boundary=----WebKitFormBoundaryfnJkn2a7ZSkzt9B6"); // 或 application/json
+                    headers.set(HttpHeaders.ACCEPT, MediaType.ALL_VALUE); // 或 application/json
+                    headers.set(HttpHeaders.CONNECTION, "keep-alive");
+                    headers.set(HttpHeaders.REFERER, "https://image.chinacoal-ins.com/SunICMS/ecm-nview/image/webScan/webScanMain.jsp");
+                    headers.set(HttpHeaders.USER_AGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36");
+                    headers.add(HttpHeaders.COOKIE, cookies.get(1) + ";" + cookies.get(0));
+                })
+                .body(BodyInserters.fromMultipartData(params)) // 替换为你构造的 MultipartBody
+                .retrieve()
+                .bodyToMono(String.class)
+                .block();
+
+//        HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers);
+//
+//        // 发送请求并接收响应
+//        ResponseEntity<String> response = restTemplate.exchange(
+//                RequestUrl.IMPORT_IMAGE.getUrl(),
+//                HttpMethod.POST,
+//                requestEntity,
+//                String.class
+//        );
+
+        System.out.println(JSON.toJSONString(response));
+
+
+
+
+//        return requestComponent.formData(RequestUrl.IMPORT_IMAGE.getUrl(),
+//                params, ZmCrawlerImageImportResponse.class, headers).getBody();
+        return null;
     }
 
     /**
@@ -800,7 +847,11 @@ public class ZmCrawlerRequestComponent {
      * @return
      */
     public ZmCrawlerSubmitResponse submit(ZmCrawlerSubmitRequest submitRequest) {
-        return request(RequestUrl.SUBMIT, submitRequest, ZmCrawlerSubmitResponse.class);
+        System.out.println(JSON.toJSON(submitRequest));
+        Mono<ZmCrawlerSubmitResponse> responseMono = requestComponent.postGbk(RequestUrl.SUBMIT.getRequestUrl(zmCrawlerProperties.getBaseUrl()),
+                Base64Tool.encode(JSONObject.toJSONString(submitRequest)), ZmCrawlerSubmitResponse.class,new HttpHeaders());
+        ZmCrawlerSubmitResponse response = responseMono.block();
+        return response;
     }
 
     /**

+ 24 - 0
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/Request/ZmCrawlerImageCookieRequest.java

@@ -0,0 +1,24 @@
+package com.jzg.quotation.zhongmei.crawler.entity.Request;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode()
+public class ZmCrawlerImageCookieRequest {
+
+    private String proposalNo;
+    private String sessionId;
+    private String source;
+    private String isEdit;
+    private String isOuter;
+
+    public ZmCrawlerImageCookieRequest(String bussinessNo, String authorization){
+        this.proposalNo = bussinessNo;
+        this.sessionId = authorization;
+        this.source = "2";
+        this.isEdit = "1";
+        this.isOuter = "Yes";
+
+    }
+}

+ 21 - 0
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/Request/ZmCrawlerSubmitRequest.java

@@ -3,10 +3,13 @@ package com.jzg.quotation.zhongmei.crawler.entity.Request;
 import com.jzg.quotation.zhongmei.api.constant.TransCode;
 import com.jzg.quotation.zhongmei.api.entity.BaseRequestHead;
 import com.jzg.quotation.zhongmei.api.entity.request.BaseRequest;
+import com.jzg.quotation.zhongmei.crawler.entity.ZmCrawlerConfigureParameters;
 import lombok.Data;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @description: 中煤财险 提交核保 请求参数
@@ -33,6 +36,18 @@ public class ZmCrawlerSubmitRequest extends BaseRequest {
 
     private String loginCom;
 
+    private List<ContractMainDTO> contractMain;
+
+    public ZmCrawlerSubmitRequest(String orderNo, ZmCrawlerConfigureParameters zmCrawlerConfigureParameters){
+        this.appliType = "-1";
+        this.operateType = "1";
+        this.loginCom = zmCrawlerConfigureParameters.getComCode();
+        List<ContractMainDTO> contractMains = new ArrayList<>();
+        ContractMainDTO contractMain = new ContractMainDTO(orderNo);
+        contractMains.add(contractMain);
+        this.contractMain = contractMains;
+    }
+
     @Data
     public static class ContractMainDTO implements Serializable {
         @Serial
@@ -43,6 +58,12 @@ public class ZmCrawlerSubmitRequest extends BaseRequest {
         private String contractNo;
 
         private String remark;
+
+        public ContractMainDTO(String contractNo) {
+            this.contractNo = contractNo;
+            this.businessType = "T-1";
+            this.remark = "submit";
+        }
     }
 
     /**

+ 1 - 1
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/Response/ZmCrawlerQuotedPriceResponse.java

@@ -21,7 +21,7 @@ public class ZmCrawlerQuotedPriceResponse extends BaseResponse {
     @Serial
     private static final long serialVersionUID = 5929122714197549712L;
 
-    @JsonProperty("bussinessMain")
+    @JsonProperty("businessData")
     private BussinessMainDTO bussinessMain;
 
     @Data

+ 134 - 0
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/service/Impl/ZhongMeiCrawlerQuoteProcessServiceImpl.java

@@ -0,0 +1,134 @@
+package com.jzg.quotation.zhongmei.crawler.service.Impl;
+
+import cn.hutool.crypto.digest.MD5;
+import com.alibaba.fastjson2.JSON;
+import com.jzg.commons.entity.quote.vo.image.InsuranceImageVo;
+import com.jzg.quotation.commons.component.RequestComponent;
+import com.jzg.quotation.commons.utils.RequestObjectConversion;
+import com.jzg.quotation.zhongmei.crawler.component.ZmCrawlerRequestComponent;
+import com.jzg.quotation.zhongmei.crawler.constant.ZmCrawlerImageConstant;
+import com.jzg.quotation.zhongmei.crawler.constant.enums.RequestUrl;
+import com.jzg.quotation.zhongmei.crawler.entity.Request.ZmCrawlerImageCookieRequest;
+import com.jzg.quotation.zhongmei.crawler.entity.Request.ZmCrawlerImageImportRequest;
+import com.jzg.quotation.zhongmei.crawler.entity.Response.ZmCrawlerImageImportResponse;
+import com.jzg.quotation.zhongmei.crawler.entity.po.ZmCrawlerOrder;
+import com.jzg.quotation.zhongmei.crawler.service.ZhongMeiCrawlerQuoteProcessService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.select.Elements;
+
+@Service
+@RequiredArgsConstructor
+public class ZhongMeiCrawlerQuoteProcessServiceImpl implements ZhongMeiCrawlerQuoteProcessService {
+
+    private final RequestComponent requestComponent;
+
+    private final ZmCrawlerRequestComponent zmCrawlerRequestComponent;
+
+
+    @Override
+    public void uploadImage(String authorization, ZmCrawlerOrder crawlerOrder, List<InsuranceImageVo> imageVoList) {
+
+        // 1. 获取上传页面的cookie
+        ZmCrawlerImageCookieRequest request = new ZmCrawlerImageCookieRequest(crawlerOrder.getBussinessNo(), authorization);
+        MultiValueMap<String, String> param = RequestObjectConversion.convertMultiValueStringMap(request);
+        ResponseEntity<String> response = requestComponent.baseGet(ZmCrawlerImageConstant.IMAGE_SYSTEM_URL, param, String.class,null);
+        System.out.println(response.getBody());
+        // 2. 使用 Jsoup 解析 HTML
+        Document doc = Jsoup.parse(response.getBody());
+        String actionUrl = doc.selectFirst("form[action][method]").attr("action");
+        Elements inputs = doc.select("input[value]");
+        String xml = inputs.get(0).attr("value");
+        String code = inputs.get(1).attr("value");
+        String format = inputs.get(2).attr("value");
+        System.out.println(actionUrl);
+
+        // 3. 准备 POST 请求数据
+        MultiValueMap<String, Object> parts = new LinkedMultiValueMap<>();
+        parts.add("xml", xml);
+        parts.add("code", code);
+        parts.add("format", format);
+        HttpHeaders headers = new HttpHeaders();
+        headers.set("Host", "image.chinacoal-ins.com");
+        headers.set("Connection", "keep-alive");
+        headers.set("Cache-Control", "max-age=0");
+        headers.set("sec-ch-ua", "\"Chromium\";v=\"104\", \" Not A;Brand\";v=\"99\", \"Google Chrome\";v=\"104\"");
+        headers.set("sec-ch-ua-mobile", "?0");
+        headers.set("sec-ch-ua-platform", "\"Windows\"");
+        headers.set("Upgrade-Insecure-Requests", "1");
+        headers.set("Origin", "https://hxkscd.chinacoal-ins.com");
+        headers.set("Content-Type", "application/x-www-form-urlencoded");
+        headers.set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36");
+        headers.set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9");
+        headers.set("Sec-Fetch-Site", "same-site");
+        headers.set("Sec-Fetch-Mode", "navigate");
+        headers.set("Sec-Fetch-Dest", "document");
+        headers.set("Referer", "https://hxkscd.chinacoal-ins.com/");
+        headers.set("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8");
+        ResponseEntity<String> res = requestComponent.formData(actionUrl,parts,String.class,headers);
+        System.out.println(res.getBody());
+        String responseText = res.getBody();
+        // 5. 提取 XML 返回内容
+        String userCode = extract(responseText, "<USER_CODE>(.*?)</USER_CODE>");
+        String userName = extract(responseText, "<USER_NAME>(.*?)</USER_NAME>");
+        String orgName = extract(responseText, "<ORG_NAME>(.*?)</ORG_NAME>");
+        String orgCode = extract(responseText, "<ORG_CODE>(.*?)</ORG_CODE>");
+        List<String> cookies = res.getHeaders().get("Set-Cookie");
+        System.out.println("CREATE_USER = " + userCode);
+        System.out.println("CREATE_USERNAME = " + userName);
+        System.out.println("UPLOAD_ORG = " + orgName);
+        System.out.println("BIZ_ORG = " + orgCode);
+
+        // 6.导入图片并组装提交入参
+        //生成影像批次号,如果存在多次上传该字段需保存
+        String batchId = MD5.create().digestHex(ZmCrawlerImageConstant.ZM_IMAGE_BATCHID_PRE + crawlerOrder.getBussinessNo());
+
+        //导入影像
+        ZmCrawlerImageImportResponse importResponse = null;
+//        Map<String, List<Map<String, String>>> docCodeAndImage = new HashMap<>();
+        for (InsuranceImageVo image : imageVoList) {
+            List<InsuranceImageVo.ImageDTO> imageBase64List = image.getImageBase64List();
+            if (imageBase64List != null && !imageBase64List.isEmpty()) {
+                //判断照片类型是否属于中煤影像类型,不属于则默认为01
+                String codeStr = Arrays.stream(ZmCrawlerImageConstant.ZM_IMAGE_TYPE).collect(Collectors.toList()).contains(image.getImageCode()) ? image.getImageCode() : "01";
+                ZmCrawlerImageImportRequest imageImportRequest = new ZmCrawlerImageImportRequest(imageBase64List.size(), crawlerOrder.getBussinessNo(), codeStr, batchId);
+                importResponse = zmCrawlerRequestComponent.importImage(imageImportRequest, imageBase64List,cookies);
+                System.out.println(JSON.toJSON(importResponse));
+//                if (importResponse != null) {
+//                    Map<String, Object> result = importResponse.getResult();
+//                    List<Map<String, String>> maps = docCodeAndImage.get(imageImportRequest.getDocCode());
+//                    List<Map<String, String>> imageResList = new ArrayList<>();
+//                    //先判断是否存在一样的图片类型
+//                    if (maps != null) {
+//                        imageResList = maps;
+//                    }
+//                    for (int i = 0; i < result.size()-1; i++) {
+//                        imageResList.add((Map<String, String>)result.get(String.valueOf(i)));
+//                    }
+//                    docCodeAndImage.put(imageImportRequest.getDocCode(), imageResList);
+//                }
+            }
+        }
+    }
+
+    private static String extract(String text, String pattern) {
+        Matcher matcher = Pattern.compile(pattern).matcher(text);
+        return matcher.find() ? matcher.group(1) : "";
+    }
+}

+ 52 - 40
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/service/Impl/ZhongMeiCrawlerRequestImpl.java

@@ -7,6 +7,7 @@ import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
 import com.jzg.commons.entity.quote.vo.CarInfoVo;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.quote.vo.aggregated.*;
+import com.jzg.commons.exception.SystemException;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.quotation.commons.annotation.QuoteCrawlerService;
 import com.jzg.quotation.commons.constant.InsuranceCode;
@@ -24,6 +25,7 @@ import com.jzg.quotation.zhongmei.crawler.entity.Response.*;
 import com.jzg.quotation.zhongmei.crawler.entity.ZmCrawlerConfigureParameters;
 import com.jzg.quotation.zhongmei.crawler.entity.dto.SaleInfoDTO;
 import com.jzg.quotation.zhongmei.crawler.entity.po.ZmCrawlerOrder;
+import com.jzg.quotation.zhongmei.crawler.service.ZhongMeiCrawlerQuoteProcessService;
 import com.jzg.quotation.zhongmei.crawler.service.ZhongMeiCrawlerRequest;
 import com.jzg.quotation.zhongmei.crawler.service.ZmCrawlerOrderService;
 import lombok.RequiredArgsConstructor;
@@ -45,6 +47,10 @@ public class ZhongMeiCrawlerRequestImpl implements ZhongMeiCrawlerRequest {
 
     private final ZmCrawlerOrderService zmCrawlerOrderService;
 
+    private final ZhongMeiCrawlerQuoteProcessService zhongMeiCrawlerQuoteProcessService;
+
+
+
     /**
      * 登录
      * @param loginBase 登录信息
@@ -86,11 +92,11 @@ public class ZhongMeiCrawlerRequestImpl implements ZhongMeiCrawlerRequest {
         ZmCrawlerQuotedPriceRequest quotedPriceRequest = new ZmCrawlerQuotedPriceRequest(zmCrawlerConfigureParameters, quoteVo, saleInfoDTO, fullCarDataDTO, actualValueResponse, userCode, head);
         ZmCrawlerQuotedPriceResponse quotedPriceResponse = zmCrawlerRequestComponent.quotedPrice(quotedPriceRequest);
         // 3.1 缓存数据
-        zmCrawlerRequestComponent.cacheZmCrawlerSaveResponse(quotedPriceResponse, quotedPriceResponse.getBussinessMain().getContractMainNo());
-
-        // 4.0 保存数据
-        zmCrawlerOrderService.save(quoteVo,quotedPriceResponse);
-
+        if(quotedPriceResponse.getHead().getReturnCode().equals("0")){
+            zmCrawlerRequestComponent.cacheZmCrawlerSaveResponse(quotedPriceResponse, quotedPriceResponse.getBussinessMain().getContractMainNo());
+            // 4.0 保存数据
+            zmCrawlerOrderService.save(quoteVo,quotedPriceResponse);
+        }
         return ZmCrawlerQuoteResultVoBuild.build(quoteVo, quotedPriceResponse);
     }
 
@@ -106,16 +112,17 @@ public class ZhongMeiCrawlerRequestImpl implements ZhongMeiCrawlerRequest {
         AttributionInformationVo attributionInformationVo = underwritingVo
                 .getOrder()
                 .getAttributionInformationVo();
+        ZmCrawlerOrder zmCrawlerOrder = zmCrawlerOrderService.findByOrdersNo(underwritingVo.getOrder().getOrdersNo());
         String userCode = zmCrawlerRequestComponent.getUserCode(attributionInformationVo.getUsername());
         String authorization = zmCrawlerRequestComponent.getAuthorization(attributionInformationVo.getUsername());
         //获取配置信息
         ZmCrawlerConfigureParameters zmCrawlerConfigureParameters = ConfigureParametersConversion.conversionEntity(ZmCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
         BaseRequestHead head = new BaseRequestHead(authorization, "2");
 
-        ZmCrawlerSubmitRequest submitRequest = new ZmCrawlerSubmitRequest();
+        ZmCrawlerSubmitRequest submitRequest = new ZmCrawlerSubmitRequest(zmCrawlerOrder.getBussinessNo(),zmCrawlerConfigureParameters);
         submitRequest.setHead(head);
         ZmCrawlerSubmitResponse submit = zmCrawlerRequestComponent.submit(submitRequest);
-        return null;
+        return new UnderwritingResultsVo();
     }
 
     /**
@@ -183,41 +190,46 @@ public class ZhongMeiCrawlerRequestImpl implements ZhongMeiCrawlerRequest {
         ZmCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(ZmCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
 
         ZmCrawlerOrder crawlerOrder = zmCrawlerOrderService.findByOrdersNo(insuranceUploadImageVo.getOrder().getOrdersNo());
-        //打开影像系统
-        zmCrawlerRequestComponent.startUploadImage(userCode.substring(0,2), authorization, crawlerOrder.getBussinessNo());
-        //生成影像批次号,如果存在多次上传该字段需保存
-        String batchId = MD5.create().digestHex(ZmCrawlerImageConstant.ZM_IMAGE_BATCHID_PRE + crawlerOrder.getBussinessNo());
 
-        //导入影像
-        ZmCrawlerImageImportResponse importResponse = null;
-        Map<String, List<Map<String, String>>> docCodeAndImage = new HashMap<>();
-        for (InsuranceImageVo image : insuranceUploadImageVo.getImageVoList()) {
-            List<InsuranceImageVo.ImageDTO> imageBase64List = image.getImageBase64List();
-            if (imageBase64List != null && !imageBase64List.isEmpty()) {
-                //判断照片类型是否属于中煤影像类型,不属于则默认为01
-                String code = Arrays.stream(ZmCrawlerImageConstant.ZM_IMAGE_TYPE).collect(Collectors.toList()).contains(image.getImageCode()) ? image.getImageCode() : "01";
-                ZmCrawlerImageImportRequest imageImportRequest = new ZmCrawlerImageImportRequest(imageBase64List.size(), crawlerOrder.getBussinessNo(), code, batchId);
-                importResponse = zmCrawlerRequestComponent.importImage(imageImportRequest, imageBase64List);
-                if (importResponse != null) {
-                    Map<String, Object> result = importResponse.getResult();
-                    List<Map<String, String>> maps = docCodeAndImage.get(imageImportRequest.getDocCode());
-                    List<Map<String, String>> imageResList = new ArrayList<>();
-                    //先判断是否存在一样的图片类型
-                    if (maps != null) {
-                        imageResList = maps;
-                    }
-                    for (int i = 0; i < result.size()-1; i++) {
-                        imageResList.add((Map<String, String>)result.get(String.valueOf(i)));
-                    }
-                    docCodeAndImage.put(imageImportRequest.getDocCode(), imageResList);
-                }
-            }
-        }
 
-        //上传影像
-        //获取已上传的影像
-        String uploadedXml = zmCrawlerRequestComponent.getUploadedImages(userCode, batchId);
-        String uploadedImages = zmCrawlerRequestComponent.submitImage(parameters, userCode, docCodeAndImage, uploadedXml, crawlerOrder);
+        // 上传影像 封装
+        zhongMeiCrawlerQuoteProcessService.uploadImage(authorization, crawlerOrder, insuranceUploadImageVo.getImageVoList());
+
+//        //打开影像系统
+//        zmCrawlerRequestComponent.startUploadImage(userCode.substring(0,2), authorization, crawlerOrder.getBussinessNo());
+//        //生成影像批次号,如果存在多次上传该字段需保存
+//        String batchId = MD5.create().digestHex(ZmCrawlerImageConstant.ZM_IMAGE_BATCHID_PRE + crawlerOrder.getBussinessNo());
+//
+//        //导入影像
+//        ZmCrawlerImageImportResponse importResponse = null;
+//        Map<String, List<Map<String, String>>> docCodeAndImage = new HashMap<>();
+//        for (InsuranceImageVo image : insuranceUploadImageVo.getImageVoList()) {
+//            List<InsuranceImageVo.ImageDTO> imageBase64List = image.getImageBase64List();
+//            if (imageBase64List != null && !imageBase64List.isEmpty()) {
+//                //判断照片类型是否属于中煤影像类型,不属于则默认为01
+//                String code = Arrays.stream(ZmCrawlerImageConstant.ZM_IMAGE_TYPE).collect(Collectors.toList()).contains(image.getImageCode()) ? image.getImageCode() : "01";
+//                ZmCrawlerImageImportRequest imageImportRequest = new ZmCrawlerImageImportRequest(imageBase64List.size(), crawlerOrder.getBussinessNo(), code, batchId);
+//                importResponse = zmCrawlerRequestComponent.importImage(imageImportRequest, imageBase64List);
+//                if (importResponse != null) {
+//                    Map<String, Object> result = importResponse.getResult();
+//                    List<Map<String, String>> maps = docCodeAndImage.get(imageImportRequest.getDocCode());
+//                    List<Map<String, String>> imageResList = new ArrayList<>();
+//                    //先判断是否存在一样的图片类型
+//                    if (maps != null) {
+//                        imageResList = maps;
+//                    }
+//                    for (int i = 0; i < result.size()-1; i++) {
+//                        imageResList.add((Map<String, String>)result.get(String.valueOf(i)));
+//                    }
+//                    docCodeAndImage.put(imageImportRequest.getDocCode(), imageResList);
+//                }
+//            }
+//        }
+//
+//        //上传影像
+//        //获取已上传的影像
+//        String uploadedXml = zmCrawlerRequestComponent.getUploadedImages(userCode, batchId);
+//        String uploadedImages = zmCrawlerRequestComponent.submitImage(parameters, userCode, docCodeAndImage, uploadedXml, crawlerOrder);
     }
 
     /**

+ 17 - 0
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/service/ZhongMeiCrawlerQuoteProcessService.java

@@ -0,0 +1,17 @@
+package com.jzg.quotation.zhongmei.crawler.service;
+
+import com.jzg.commons.entity.quote.vo.image.InsuranceImageVo;
+import com.jzg.quotation.zhongmei.crawler.entity.po.ZmCrawlerOrder;
+
+import java.util.List;
+
+public interface ZhongMeiCrawlerQuoteProcessService {
+
+    /**
+     * 上传影像
+     * @param authorization
+     * @param crawlerOrder
+     * @param imageVoList
+     */
+    void uploadImage(String authorization, ZmCrawlerOrder crawlerOrder, List<InsuranceImageVo> imageVoList);
+}