Răsfoiți Sursa

中煤代码的提交

dongxin 1 an în urmă
părinte
comite
cb1ee25af6

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

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

+ 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);
+}