Ver Fonte

update
安盛天平
1.状态查询
2.获取保单

wks há 1 ano atrás
pai
commit
15a2899928
12 ficheiros alterados com 484 adições e 71 exclusões
  1. 35 4
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/component/AnShengCrawlerCacheComponent.java
  2. 48 14
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/component/AnShengCrawlerRequestComponent.java
  3. 4 1
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/constant/enums/RequestUrl.java
  4. 41 8
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerApplyApplicationRequest.java
  5. 16 4
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerCalculatePremiumApplyMessage.java
  6. 77 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerComprehensiveQueryInsurenetRequest.java
  7. 1 1
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerQueryDocumentsInformationRequest.java
  8. 171 0
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/response/AnShengCrawlerComprehensiveQueryInsurenetResponse.java
  9. 24 1
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/response/AnShengCrawlerFileUploadResponse.java
  10. 2 1
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/AnShengCrawlerQuoteProcessService.java
  11. 4 1
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/impl/AnShengCrawlerQuoteProcessServiceImpl.java
  12. 61 36
      tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/impl/AnShengCrawlerRequestImpl.java

+ 35 - 4
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/component/AnShengCrawlerCacheComponent.java

@@ -2,14 +2,19 @@ package com.jzg.quotation.ansheng.crawler.component;
 
 
 import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
+import com.jzg.quotation.ansheng.crawler.entity.request.AnShengCrawlerApplyApplicationRequest;
+import com.jzg.quotation.ansheng.crawler.entity.request.AnShengCrawlerAutoSpecialPromiseRequest;
 import com.jzg.quotation.ansheng.crawler.entity.request.AnShengCrawlerCalculatePremiumApplyMessage;
+import com.jzg.quotation.ansheng.crawler.entity.response.AnShengCrawlerFileUploadResponse;
 import lombok.RequiredArgsConstructor;
 import org.redisson.api.RedissonClient;
 import org.springframework.stereotype.Component;
 import org.springframework.util.ObjectUtils;
 
 import java.time.Duration;
+import java.util.List;
 
 /**
  * @description: 安盛天平 爬虫 缓存配置
@@ -22,7 +27,7 @@ public class AnShengCrawlerCacheComponent {
 
     public static String AS_QUOTE_RESPONSE = "ansheng:quote:response:";
 
-    public static final long AS_QUOTE_RESPONSE_TIME = 3L;
+    public static final long AS_QUOTE_RESPONSE_TIME = 1L;
 
     public static String AS_LOGIN_COOKIE = "ansheng:login:cookie";
 
@@ -32,6 +37,10 @@ public class AnShengCrawlerCacheComponent {
 
     public static final String AGENT_DEFINE = "ansheng:agent:define:";
 
+    public static final String IMAGES_INFO = "ansheng:images:info:";
+
+    public static final long IMAGES_INFO_TIME = 1L;
+
     public static final long AGENT_DEFINE_TIME = 6L;
 
     private final RedissonClient redissonClient;
@@ -46,6 +55,7 @@ public class AnShengCrawlerCacheComponent {
         redissonClient.getBucket(AS_LOGIN_COOKIE + username).set(cookie, Duration.ofDays(AS_LOGIN_COOKIE_TIME));
     }
 
+
     /**
      * 获取登录的信息
      *
@@ -64,20 +74,41 @@ public class AnShengCrawlerCacheComponent {
      * @param premiumApplyMessage 报价请求信息
      */
     public void cacheQuoteRequest(String orderNo,
-                                  AnShengCrawlerCalculatePremiumApplyMessage premiumApplyMessage) {
+                                  AnShengCrawlerApplyApplicationRequest premiumApplyMessage) {
         String responseStr = JSONObject.toJSONString(premiumApplyMessage);
         redissonClient.getBucket(AS_QUOTE_RESPONSE + orderNo).set(responseStr, Duration.ofDays(AS_QUOTE_RESPONSE_TIME));
     }
 
+
+    /**
+     * 缓存图片信息
+     * @param orderNo 订单号
+     * @param dataDTOS 图片信息
+     */
+    public void cacheImagesInfo(String orderNo, List<AnShengCrawlerApplyApplicationRequest.ContractsDTO.PolicyAttachmentsDTO> dataDTOS) {
+        String responseStr = JSONObject.toJSONString(dataDTOS);
+        redissonClient.getBucket(IMAGES_INFO + orderNo).set(responseStr, Duration.ofDays(IMAGES_INFO_TIME));
+    }
+
+    /**
+     * 获取图片信息
+     * @param orderNo 订单号
+     * @return 图片信息
+     */
+    public List<AnShengCrawlerApplyApplicationRequest.ContractsDTO.PolicyAttachmentsDTO> getImagesInfo(String orderNo) {
+        String imagesInfo = (String) redissonClient.getBucket(IMAGES_INFO + orderNo).get();
+        return JSONArray.parseArray(imagesInfo, AnShengCrawlerApplyApplicationRequest.ContractsDTO.PolicyAttachmentsDTO.class);
+    }
+
     /**
      * 获取订单报价信息
      *
      * @param orderNo 订单号
      * @return 报价订单返回
      */
-    public AnShengCrawlerCalculatePremiumApplyMessage getQuoteResponse(String orderNo) {
+    public AnShengCrawlerApplyApplicationRequest getQuoteResponse(String orderNo) {
         String o = (String) redissonClient.getBucket(AS_QUOTE_RESPONSE + orderNo).get();
-        AnShengCrawlerCalculatePremiumApplyMessage anShengCrawlerCalculatePremiumApplyResponse = JSON.parseObject(o, AnShengCrawlerCalculatePremiumApplyMessage.class);
+        AnShengCrawlerApplyApplicationRequest anShengCrawlerCalculatePremiumApplyResponse = JSON.parseObject(o, AnShengCrawlerApplyApplicationRequest.class);
         if (ObjectUtils.isEmpty(anShengCrawlerCalculatePremiumApplyResponse)) {
             throw new RuntimeException("报价信息过期, 请重新报价");
         }

+ 48 - 14
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/component/AnShengCrawlerRequestComponent.java

@@ -12,7 +12,9 @@ import com.jzg.quotation.commons.utils.CookieParseUtils;
 import com.jzg.quotation.commons.utils.RequestObjectConversion;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.core.io.FileSystemResource;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.core.io.ByteArrayResource;
+import org.springframework.core.io.Resource;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.ResponseEntity;
@@ -20,7 +22,6 @@ import org.springframework.stereotype.Component;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
 
-import java.io.File;
 import java.util.*;
 
 /**
@@ -49,7 +50,7 @@ public class AnShengCrawlerRequestComponent {
                 .map(HttpEntity::getBody)
                 .orElseThrow(() -> new SystemException("程序异常请联系管理员"));
 
-        if(response.getCode() == 200){
+        if (response.getCode() == 200) {
             return response;
         }
         throw new SystemException(response.getMessage());
@@ -166,8 +167,9 @@ public class AnShengCrawlerRequestComponent {
      * @param headers 请求头
      * @return
      */
-    public AnShengCrawlerInsureAddResponse.DataDTO insureAdd(AnShengCrawlerInsureAddRequest request, HttpHeaders headers){
-        ResponseEntity<AnShengCrawlerInsureAddResponse> responseEntity = requestComponent.formData(RequestUrl.INSURE_ADD.getRequestUrl(anShengCrawlerProperties.getUrl()), request, AnShengCrawlerInsureAddResponse.class, headers);;
+    public AnShengCrawlerInsureAddResponse.DataDTO insureAdd(AnShengCrawlerInsureAddRequest request, HttpHeaders headers) {
+        ResponseEntity<AnShengCrawlerInsureAddResponse> responseEntity = requestComponent.formData(RequestUrl.INSURE_ADD.getRequestUrl(anShengCrawlerProperties.getUrl()), request, AnShengCrawlerInsureAddResponse.class, headers);
+        ;
         return Optional.ofNullable(responseEntity.getBody())
                 .map(AnShengCrawlerInsureAddResponse::getData)
                 .orElseThrow(() -> new SystemException("添加险种失败"));
@@ -203,7 +205,7 @@ public class AnShengCrawlerRequestComponent {
      * @param headers 请求头
      * @return 报价返回
      */
-    public AnShengCrawlerAutoSpecialPromiseResponse autoSpecialPromise(AnShengCrawlerAutoSpecialPromiseRequest request, HttpHeaders headers) {
+    public AnShengCrawlerAutoSpecialPromiseResponse autoSpecialPromise(AnShengCrawlerApplyApplicationRequest request, HttpHeaders headers) {
         return post(RequestUrl.AUTO_SPECIAL_PROMISE, request, AnShengCrawlerAutoSpecialPromiseResponse.class, headers);
     }
 
@@ -230,17 +232,45 @@ public class AnShengCrawlerRequestComponent {
         return responseEntity.getBody();
     }
 
+    /**
+     * 订单查询
+     *
+     * @param request 订单查询请求
+     * @param headers 请求头
+     * @return 订单信息
+     */
+    public AnShengCrawlerComprehensiveQueryInsurenetResponse comprehensiveQueryInsurenet(AnShengCrawlerComprehensiveQueryInsurenetRequest request, HttpHeaders headers) {
+        ResponseEntity<AnShengCrawlerComprehensiveQueryInsurenetResponse> responseEntity = requestComponent.formData(RequestUrl.COMPREHENSIVE_QUERY_INSURENET.getRequestUrl(anShengCrawlerProperties.getUrl()), request, AnShengCrawlerComprehensiveQueryInsurenetResponse.class, headers);
+        return responseEntity.getBody();
+    }
+
     /**
      * 上传文件
      *
      * @param request 上传文件请求
-     * @param file    文件路径
+     * @param fileData    文件信息
+     * @param fileName 文件名称
      * @param headers 请求头
      */
-    public void fileUpload(AnShengCrawlerFileUploadRequest request, File file, HttpHeaders headers) {
+    public AnShengCrawlerFileUploadResponse.DataDTO fileUpload(AnShengCrawlerFileUploadRequest request, byte[] fileData, String fileName, HttpHeaders headers) {
         MultiValueMap<String, Object> multiValueMap = RequestObjectConversion.convertMultiValueMap(request);
-        multiValueMap.add("file", new FileSystemResource(file));
-        ResponseEntity<AnShengCrawlerQueryDocumentsInformationResponse> responseEntity = requestComponent.formData(RequestUrl.QUERY_DOCUMENTS_INFORMATION.getRequestUrl(anShengCrawlerProperties.getUrl()), request, AnShengCrawlerQueryDocumentsInformationResponse.class, headers);
+        // 添加二进制文件
+        ByteArrayResource fileResource = new ByteArrayResource(fileData) {
+            @Override
+            public String getFilename() {
+                return fileName; // 必须重写此方法
+            }
+        };
+        multiValueMap.add("file", fileResource);
+
+        ResponseEntity<AnShengCrawlerFileUploadResponse> responseEntity = requestComponent.formData(RequestUrl.FILE_UPLOAD.getRequestUrl(anShengCrawlerProperties.getUrl()), multiValueMap, AnShengCrawlerFileUploadResponse.class, headers);
+        List<AnShengCrawlerFileUploadResponse.DataDTO> dataDTOS = Optional.ofNullable(responseEntity.getBody())
+                .map(AnShengCrawlerFileUploadResponse::getData)
+                .orElse(new ArrayList<>());
+        if (!dataDTOS.isEmpty()) {
+            return dataDTOS.get(0);
+        }
+        throw new SystemException("上传失败");
     }
 
     /**
@@ -263,8 +293,10 @@ public class AnShengCrawlerRequestComponent {
      * @param filePath 文件路劲
      * @param headers  请求头
      */
-    public void queryPrintPdf(AnShengCrawlerQueryPrintPdfRequest request, String filePath, HttpHeaders headers) {
-        requestComponent.downloadFileToPost(RequestUrl.QUERY_PRINT_PDF.getRequestUrl(anShengCrawlerProperties.getUrl()), request, filePath, headers);
+    public String queryPrintPdf(AnShengCrawlerQueryPrintPdfRequest request, HttpHeaders headers) {
+        ResponseEntity<Resource> response = requestComponent.formData(RequestUrl.QUERY_PRINT_PDF.getRequestUrl(anShengCrawlerProperties.getUrl()), request, Resource.class, headers);
+        Resource body = response.getBody();
+        return "";
     }
 
     /**
@@ -274,10 +306,12 @@ public class AnShengCrawlerRequestComponent {
      * @param policyNumber 保单号
      * @param headers      请求头
      */
-    public void downloadPdf(String filePath, String policyNumber, HttpHeaders headers) {
+    public String downloadPdf(String policyNumber, HttpHeaders headers) {
         String url = RequestUrl.DOWNLOAD_PDF.getRequestUrl(anShengCrawlerProperties.getUrl());
         url = String.format(url, Base64.getEncoder().encodeToString(policyNumber.getBytes()));
-        requestComponent.downloadFileToGet(url, Map.of(), filePath, headers);
+        Resource resource = requestComponent.get(url, Map.of(), "", new ParameterizedTypeReference<>() {
+        }, headers);
+        return "";
     }
 
 }

+ 4 - 1
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/constant/enums/RequestUrl.java

@@ -33,13 +33,16 @@ public enum RequestUrl implements CrawlerRequestUrlStandard {
     PAYMENT("/portalapi/payment", "支付"),
     // 投保状态查询
     QUERY_DOCUMENTS_INFORMATION("/portalapi/queryDocumentsInformation", "订单状态查询"),
+    COMPREHENSIVE_QUERY_INSURENET("/portalapi/comprehensiveQueryInsurenet", "订单状态查询"),
     // 保单下载
-    QUERY_PRINT_PDF("printportalapi/printportal/queryPrintpdf.do", "保单下载"),
+    QUERY_PRINT_PDF("/printportalapi/printportal/queryPrintpdf.do", "保单下载"),
     DOWNLOAD_PDF("/printportalapi/printportal/downloadPdf.do?policyNo=%s&policyType=6&channel=print&systemName=tpaic-ec&userName=tpaic-ec", "非车保单下载"),
     ;
 
 
 
+
+
     private final String uri;
 
     private final String description;

+ 41 - 8
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerApplyApplicationRequest.java

@@ -29,15 +29,9 @@ public class AnShengCrawlerApplyApplicationRequest {
     @JsonProperty("createdBy")
     private String createdBy;
 
-    public AnShengCrawlerApplyApplicationRequest(String createdBy) {
-        this.contracts = new ArrayList<>();
-        this.policySaleInfo = new PolicySaleInfoDTO();
-        this.agentDefine = new AgentDefineDTO();
-        this.createdBy = createdBy;
-    }
-
     @Data
     public static class PolicySaleInfoDTO {
+
         @JsonProperty("applicantCode")
         private String applicantCode;
         @JsonProperty("applyTime")
@@ -87,6 +81,7 @@ public class AnShengCrawlerApplyApplicationRequest {
     @NoArgsConstructor
     @Data
     public static class ContractsDTO {
+
         @JsonProperty("quotationList")
         private List<?> quotationList;
         @JsonProperty("saleBusinessSource")
@@ -101,8 +96,10 @@ public class AnShengCrawlerApplyApplicationRequest {
         private List<UnderwriteInfosDTO> underwriteInfos;
         @JsonProperty("policyExtend")
         private PolicyExtendDTO policyExtend;
+
         @JsonProperty("policyAttachments")
-        private List<?> policyAttachments;
+        private List<PolicyAttachmentsDTO> policyAttachments;
+
         @JsonProperty("policyPersons")
         private List<PolicyPersonsDTO> policyPersons;
         @JsonProperty("policyCoverages")
@@ -119,6 +116,7 @@ public class AnShengCrawlerApplyApplicationRequest {
         @NoArgsConstructor
         @Data
         public static class SaleBusinessSourceDTO {
+
             @JsonProperty("saleAgentName")
             private String saleAgentName;
             @JsonProperty("saleGroupCode")
@@ -148,6 +146,7 @@ public class AnShengCrawlerApplyApplicationRequest {
         @NoArgsConstructor
         @Data
         public static class BillInfoDetailDTO {
+
             @JsonProperty("billPersonType")
             private String billPersonType;
             @JsonProperty("billCertNo")
@@ -175,6 +174,7 @@ public class AnShengCrawlerApplyApplicationRequest {
         @NoArgsConstructor
         @Data
         public static class BrandAutoModelDTO {
+
             @JsonProperty("modelDesc")
             private String modelDesc;
             @JsonProperty("standardName")
@@ -186,6 +186,7 @@ public class AnShengCrawlerApplyApplicationRequest {
         @NoArgsConstructor
         @Data
         public static class SaleChannelSourceDTO {
+
             @JsonProperty("chief4S")
             private String chief4S;
         }
@@ -193,6 +194,7 @@ public class AnShengCrawlerApplyApplicationRequest {
         @NoArgsConstructor
         @Data
         public static class PolicyExtendDTO {
+
             @JsonProperty("orderNumber")
             private String orderNumber;
             @JsonProperty("riskSharingBusinessType")
@@ -240,6 +242,7 @@ public class AnShengCrawlerApplyApplicationRequest {
         @NoArgsConstructor
         @Data
         public static class PolicyBaseDTO {
+
             @JsonProperty("departmentLevelCode")
             private String departmentLevelCode;
             @JsonProperty("salesGroupCode")
@@ -429,12 +432,35 @@ public class AnShengCrawlerApplyApplicationRequest {
         @NoArgsConstructor
         @Data
         public static class UnderwriteInfosDTO {
+
             @JsonProperty("emergencyCode")
             private String emergencyCode;
+
             @JsonProperty("reportDescription")
             private String reportDescription;
         }
 
+        @NoArgsConstructor
+        @Data
+        public static class PolicyAttachmentsDTO{
+
+            @JsonProperty("attachmentType")
+            private String attachmentType;
+
+            @JsonProperty("attachmentName")
+            private String attachmentName;
+
+            @JsonProperty("uploadFileNo")
+            private String uploadFileNo;
+
+            @JsonProperty("uploadFileType")
+            private String uploadFileType;
+
+            @JsonProperty("uploadFileTypeName")
+            private String uploadFileTypeName;
+
+        }
+
         @NoArgsConstructor
         @Data
         public static class PolicyPersonsDTO {
@@ -613,6 +639,7 @@ public class AnShengCrawlerApplyApplicationRequest {
         @NoArgsConstructor
         @Data
         public static class PolicyCoveragesDTO {
+
             @JsonProperty("dutyCode")
             private String dutyCode;
             @JsonProperty("dutyChineseName")
@@ -676,6 +703,7 @@ public class AnShengCrawlerApplyApplicationRequest {
         @NoArgsConstructor
         @Data
         public static class PolicyRatiosDTO {
+
             @JsonProperty("linkId")
             private String linkId;
             @JsonProperty("ratio")
@@ -703,6 +731,7 @@ public class AnShengCrawlerApplyApplicationRequest {
         @NoArgsConstructor
         @Data
         public static class PolicyPaymentsDTO {
+
             @JsonProperty("paymentPremiumTimes")
             private Integer paymentPremiumTimes;
             @JsonProperty("bankAccountNo")
@@ -744,6 +773,7 @@ public class AnShengCrawlerApplyApplicationRequest {
         @NoArgsConstructor
         @Data
         public static class TargetListDTO {
+
             @JsonProperty("linkId")
             private String linkId;
             @JsonProperty("targetId")
@@ -968,6 +998,7 @@ public class AnShengCrawlerApplyApplicationRequest {
             @NoArgsConstructor
             @Data
             public static class CheckVehicleInfoDTO {
+
                 @JsonProperty("usageAttributeCode")
                 private String usageAttributeCode;
                 @JsonProperty("usageAttributeCodePM")
@@ -991,6 +1022,7 @@ public class AnShengCrawlerApplyApplicationRequest {
             @NoArgsConstructor
             @Data
             public static class PolicyPricingDTO {
+
                 @JsonProperty("usageAttributeCode")
                 private String usageAttributeCode;
                 @JsonProperty("usageAttributeCodePM")
@@ -1146,6 +1178,7 @@ public class AnShengCrawlerApplyApplicationRequest {
             @NoArgsConstructor
             @Data
             public static class VehicleTaxDTO {
+
                 @JsonProperty("ownerName")
                 private String ownerName;
                 @JsonProperty("vehicleTaxAmount")

+ 16 - 4
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerCalculatePremiumApplyMessage.java

@@ -13,6 +13,7 @@ import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.springframework.util.ObjectUtils;
+import org.springframework.util.StringUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -820,7 +821,9 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
                 this.vehicleModelType = "";
                 this.vehicleStyleDesc = "";
                 this.vehicleTypeName = carInfoVo.getCarKindName();
-                this.makeDate = Integer.valueOf(brandAutoModel.getMakeDate());
+                if (StringUtils.hasLength(brandAutoModel.getMakeDate())) {
+                    this.makeDate = Integer.valueOf(brandAutoModel.getMakeDate());
+                }
                 this.stopFlag = brandAutoModel.getStopFlag();
                 this.detailDesc = brandAutoModel.getRemark();
                 this.vehicleCategory = "";
@@ -849,7 +852,11 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
                 this.riskFlag = brandAutoModel.getRiskFlag();
                 this.targetType = "vehicleTarget";
                 this.fleetRate = "0";
-                this.usageAttributeCode = brandAutoModel.getVtrList().get(0).getUsageAttributeCode();
+                Optional.ofNullable(brandAutoModel.getVtrList())
+                        .filter(x->!x.isEmpty())
+                        .ifPresent(x->{
+                            this.usageAttributeCode = x.get(0).getUsageAttributeCode();
+                        });
                 this.usageAttributeCodePM = "";
                 this.ownershipAttributeCode = "1";
                 this.beneficiaryList = new ArrayList<>();
@@ -1191,9 +1198,14 @@ public class AnShengCrawlerCalculatePremiumApplyMessage {
                     this.modelrate = "";
                     this.advicediscount = "";
                     this.dbVehicleBrand = brandAutoModel.getBrandChnName();
-                    this.dbVehicleTypeName = brandAutoModel.getVtrList().get(0).getJyVehicleTypeName();
+                    Optional.ofNullable(brandAutoModel.getVtrList())
+                            .filter(x->!x.isEmpty())
+                            .ifPresent(x->{
+                                this.dbVehicleTypeName = x.get(0).getJyVehicleTypeName();
+                                this.vehicleTypeChiName = x.get(0).getVehicleTypeName();
+                            });
+
                     this.usageLicenceName = carInfoVo.getLicenseKindName();
-                    this.vehicleTypeChiName = brandAutoModel.getVtrList().get(0).getVehicleTypeName();
                     this.autoFloatTargetRebate = "";
                     this.riskFlag = brandAutoModel.getRiskFlag();
                     this.dbExhaustCapability = brandAutoModel.getExhaustCapabilityString();

+ 77 - 0
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerComprehensiveQueryInsurenetRequest.java

@@ -0,0 +1,77 @@
+package com.jzg.quotation.ansheng.crawler.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.commons.utils.TimeProcessing;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class AnShengCrawlerComprehensiveQueryInsurenetRequest {
+
+    @JsonProperty("agentCode")
+    private String agentCode;
+
+    @JsonProperty("departmentCode")
+    private String departmentCode;
+
+    @JsonProperty("planList")
+    private List<String> planList;
+
+    @JsonProperty("businessTypeList")
+    private List<Integer> businessTypeList;
+
+    @JsonProperty("documentNo")
+    private String documentNo;
+
+    @JsonProperty("documentType")
+    private Integer documentType;
+
+    @JsonProperty("appDateStart")
+    private String appDateStart;
+
+    @JsonProperty("appDateEnd")
+    private String appDateEnd;
+
+    @JsonProperty("isSubDepartment")
+    private Boolean isSubDepartment;
+
+    @JsonProperty("updateType")
+    private Integer updateType;
+
+    @JsonProperty("page")
+    private Integer page;
+
+    @JsonProperty("pageSize")
+    private Integer pageSize;
+
+    @JsonProperty("channelSourceList")
+    private List<String> channelSourceList;
+
+    public AnShengCrawlerComprehensiveQueryInsurenetRequest(String agentCode, String departmentCode, String documentNo, String quotationTime) {
+        this.agentCode = agentCode;
+        this.updateType = 2;
+        this.page = 1;
+        this.pageSize = 10;
+        this.departmentCode = departmentCode;
+        this.planList = List.of("103", "105", "107", "109", "110", "111", "113", "516", "518", "521",
+                "610", "712", "718", "788", "888", "889", "890", "895", "CFF", "G01",
+                "GAP", "GH1", "GPI", "H01", "H09", "H17", "H18", "H19", "H20", "H21",
+                "H23", "H24", "H25", "H27", "H86", "H90", "H91", "H92", "H93", "H96",
+                "H98", "H99", "P01", "P03", "P12", "P13", "P15", "P17", "P20", "P23",
+                "P24", "P95");
+        this.businessTypeList = List.of(3);
+        this.channelSourceList = List.of("1", "2");
+        this.documentType = 9;
+        TimeProcessing.TimeFrame timeFrame = TimeProcessing.getTimeFrame(quotationTime, true);
+        this.appDateStart = timeFrame.getStartTime();
+        this.appDateEnd = timeFrame.getEndTime();
+        // 订单号
+        this.documentNo = documentNo;
+        this.isSubDepartment = true;
+    }
+}

+ 1 - 1
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerQueryDocumentsInformationRequest.java

@@ -55,7 +55,7 @@ public class AnShengCrawlerQueryDocumentsInformationRequest {
     @JsonProperty("unInsuredFlag")
     private Boolean unInsuredFlag;
 
-    @JsonProperty
+    @JsonProperty("documentNo")
     private String documentNo;
 
     public AnShengCrawlerQueryDocumentsInformationRequest(String agentCode, String departmentCode, String documentNo, String quotationTime) {

+ 171 - 0
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/response/AnShengCrawlerComprehensiveQueryInsurenetResponse.java

@@ -0,0 +1,171 @@
+package com.jzg.quotation.ansheng.crawler.entity.response;
+
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@NoArgsConstructor
+@Data
+public class AnShengCrawlerComprehensiveQueryInsurenetResponse {
+
+    @JsonProperty("code")
+    private Integer code;
+    @JsonProperty("simpleMessage")
+    private String simpleMessage;
+    @JsonProperty("message")
+    private String message;
+    @JsonProperty("data")
+    private DataDTO data;
+
+    @NoArgsConstructor
+    @Data
+    public static class DataDTO {
+        @JsonProperty("pageNum")
+        private Integer pageNum;
+        @JsonProperty("pageSize")
+        private Integer pageSize;
+        @JsonProperty("size")
+        private Integer size;
+        @JsonProperty("startRow")
+        private Integer startRow;
+        @JsonProperty("endRow")
+        private Integer endRow;
+        @JsonProperty("total")
+        private Integer total;
+        @JsonProperty("pages")
+        private Integer pages;
+        @JsonProperty("list")
+        private List<ListDTO> list;
+        @JsonProperty("firstPage")
+        private Integer firstPage;
+        @JsonProperty("prePage")
+        private Integer prePage;
+        @JsonProperty("nextPage")
+        private Integer nextPage;
+        @JsonProperty("lastPage")
+        private Integer lastPage;
+        @JsonProperty("isFirstPage")
+        private Boolean isFirstPage;
+        @JsonProperty("isLastPage")
+        private Boolean isLastPage;
+        @JsonProperty("hasPreviousPage")
+        private Boolean hasPreviousPage;
+        @JsonProperty("hasNextPage")
+        private Boolean hasNextPage;
+        @JsonProperty("navigatePages")
+        private Integer navigatePages;
+        @JsonProperty("navigatepageNums")
+        private List<Integer> navigatepageNums;
+
+        @NoArgsConstructor
+        @Data
+        public static class ListDTO {
+            @JsonProperty("createdBy")
+            private String createdBy;
+            @JsonProperty("updatedBy")
+            private String updatedBy;
+            @JsonProperty("page")
+            private Integer page;
+            @JsonProperty("pageSize")
+            private Integer pageSize;
+            @JsonProperty("transactionNo")
+            private String transactionNo;
+            @JsonProperty("policyConciseDetails")
+            private List<PolicyConciseDetailsDTO> policyConciseDetails;
+
+            @NoArgsConstructor
+            @Data
+            public static class PolicyConciseDetailsDTO {
+                @JsonProperty("createdBy")
+                private String createdBy;
+                @JsonProperty("createdDate")
+                private String createdDate;
+                @JsonProperty("updatedBy")
+                private String updatedBy;
+                @JsonProperty("updatedDate")
+                private String updatedDate;
+                @JsonProperty("page")
+                private Integer page;
+                @JsonProperty("pageSize")
+                private Integer pageSize;
+                @JsonProperty("transactionNo")
+                private String transactionNo;
+                @JsonProperty("temporaryId")
+                private String temporaryId;
+                @JsonProperty("applyPolicyNo")
+                private String applyPolicyNo;
+                @JsonProperty("policyNo")
+                private String policyNo;
+                @JsonProperty("planCode")
+                private String planCode;
+                @JsonProperty("productCode")
+                private String productCode;
+                @JsonProperty("departmentCode")
+                private String departmentCode;
+                @JsonProperty("targetType")
+                private String targetType;
+                @JsonProperty("underwriteMark")
+                private String underwriteMark;
+                @JsonProperty("applicantName")
+                private String applicantName;
+                @JsonProperty("insuranerName")
+                private String insuranerName;
+                @JsonProperty("saleAgentName")
+                private String saleAgentName;
+                @JsonProperty("inputByName")
+                private String inputByName;
+                @JsonProperty("businessType")
+                private String businessType;
+                @JsonProperty("paymentType")
+                private String paymentType;
+                @JsonProperty("vehicleLicenceCode")
+                private String vehicleLicenceCode;
+                @JsonProperty("engineNo")
+                private String engineNo;
+                @JsonProperty("vehicleFrameNo")
+                private String vehicleFrameNo;
+                @JsonProperty("insuranceBeginTime")
+                private String insuranceBeginTime;
+                @JsonProperty("insuranceEndTime")
+                private String insuranceEndTime;
+                @JsonProperty("signTime")
+                private String signTime;
+                @JsonProperty("totalAgreePremium")
+                private String totalAgreePremium;
+                @JsonProperty("riskScore")
+                private Double riskScore;
+                @JsonProperty("departmentName")
+                private String departmentName;
+                @JsonProperty("agentCode")
+                private String agentCode;
+                @JsonProperty("underwriteMarkName")
+                private String underwriteMarkName;
+                @JsonProperty("underwriteName")
+                private String underwriteName;
+                @JsonProperty("personnelType")
+                private String personnelType;
+                @JsonProperty("checkRealNameMessage")
+                private Boolean checkRealNameMessage;
+                @JsonProperty("isBusinessChangePlatform")
+                private String isBusinessChangePlatform;
+                @JsonProperty("waitUnderwriteMark")
+                private String waitUnderwriteMark;
+                @JsonProperty("levelDepCode")
+                private String levelDepCode;
+                @JsonProperty("totalAgreePremiumSum")
+                private String totalAgreePremiumSum;
+                @JsonProperty("insuranerSize")
+                private Integer insuranerSize;
+                @JsonProperty("standarded")
+                private String standarded;
+                @JsonProperty("installmentPremium")
+                private Double installmentPremium;
+                @JsonProperty("autoPlan")
+                private Boolean autoPlan;
+            }
+        }
+    }
+}

+ 24 - 1
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/response/AnShengCrawlerFileUploadResponse.java

@@ -2,16 +2,19 @@ package com.jzg.quotation.ansheng.crawler.entity.response;
 
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.ansheng.crawler.entity.request.AnShengCrawlerApplyApplicationRequest;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 @NoArgsConstructor
 @Data
-public class AnShengCrawlerFileUploadResponse  implements Serializable, AnShengCrawlerBaseResponse{
+public class AnShengCrawlerFileUploadResponse implements Serializable, AnShengCrawlerBaseResponse {
 
     @Serial
     private static final long serialVersionUID = -2718527375138193717L;
@@ -28,6 +31,26 @@ public class AnShengCrawlerFileUploadResponse  implements Serializable, AnShengC
     @JsonProperty("data")
     private List<DataDTO> data;
 
+    public static List<AnShengCrawlerApplyApplicationRequest.ContractsDTO.PolicyAttachmentsDTO> toPolicyAttachmentsDTOList(List<DataDTO> data) {
+        return Optional.ofNullable(data)
+                .filter(x -> !x.isEmpty())
+                .orElse(new ArrayList<>())
+                .stream()
+                .map(AnShengCrawlerFileUploadResponse::toPolicyAttachmentsDTO)
+                .toList();
+    }
+
+    public static AnShengCrawlerApplyApplicationRequest.ContractsDTO.PolicyAttachmentsDTO toPolicyAttachmentsDTO(DataDTO dataDTO) {
+        AnShengCrawlerApplyApplicationRequest.ContractsDTO.PolicyAttachmentsDTO policyAttachmentsDTO = new AnShengCrawlerApplyApplicationRequest.ContractsDTO.PolicyAttachmentsDTO();
+        policyAttachmentsDTO.setAttachmentType(dataDTO.getAttachmentType());
+        policyAttachmentsDTO.setAttachmentName(dataDTO.getAttachmentName());
+        policyAttachmentsDTO.setUploadFileNo(dataDTO.getUploadFileNo());
+        policyAttachmentsDTO.setUploadFileType(dataDTO.getUploadFileType());
+        policyAttachmentsDTO.setUploadFileTypeName(dataDTO.getUploadFileTypeName());
+        return policyAttachmentsDTO;
+    }
+
+
     @NoArgsConstructor
     @Data
     public static class DataDTO {

+ 2 - 1
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/AnShengCrawlerQuoteProcessService.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.ansheng.crawler.service;
 
+import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
 import com.jzg.quotation.ansheng.crawler.entity.response.AnShengCrawlerGetUserDetailResponse;
 import org.springframework.http.HttpHeaders;
 
@@ -12,7 +13,7 @@ public interface AnShengCrawlerQuoteProcessService {
      * @param password 密码
      * @return 请求头
      */
-    HttpHeaders getHttpHeaders(String username, String password);
+    HttpHeaders getHttpHeaders(AttributionInformationVo attributionInformationVo);
 
 
     /**

+ 4 - 1
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/impl/AnShengCrawlerQuoteProcessServiceImpl.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.ansheng.crawler.service.impl;
 
+import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.quotation.ansheng.crawler.component.AnShengCrawlerCacheComponent;
@@ -30,8 +31,10 @@ public class AnShengCrawlerQuoteProcessServiceImpl implements AnShengCrawlerQuot
     private final RedissonComponent redissonComponent;
 
     @Override
-    public HttpHeaders getHttpHeaders(String username, String password) {
+    public HttpHeaders getHttpHeaders(AttributionInformationVo attributionInformationVo) {
         HttpHeaders httpHeaders = new HttpHeaders();
+        String username = attributionInformationVo.getUsername();
+        String password = attributionInformationVo.getPassword();
         String authorization = anShengCrawlerCacheComponent.getAuthorization(username);
         if (!StringUtils.hasText(authorization)) {
             try {

+ 61 - 36
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/impl/AnShengCrawlerRequestImpl.java

@@ -25,7 +25,7 @@ import org.springframework.http.HttpHeaders;
 import org.springframework.util.ObjectUtils;
 import org.springframework.util.StringUtils;
 
-import java.io.File;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -64,15 +64,14 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
         final String ordersNo = quoteVo.getOrder().getOrdersNo();
         // 请求头信息
         HttpHeaders httpHeaders = anShengCrawlerQuoteProcessService.getHttpHeaders(quoteVo.getOrder()
-                .getAttributionInformationVo()
-                .getUsername(), quoteVo.getOrder().getAttributionInformationVo().getPassword());
+                .getAttributionInformationVo());
         // 归属信息
         AnShengCrawlerGetUserDetailResponse.DataDTO.AgentDefineDTO userDetailResponse = anShengCrawlerQuoteProcessService.getUserDetailResponse(quoteVo.getOrder()
                 .getAgreementId(), httpHeaders);
 
         DepartmentPlanCode departmentPlanCode = DepartmentPlanCode.PLAN_109;
         // 新能源
-        if(quoteVo.getCarInfoVo().isNewEnergyMark()){
+        if (quoteVo.getCarInfoVo().isNewEnergyMark()) {
             departmentPlanCode = DepartmentPlanCode.PLAN_113;
         }
 
@@ -89,13 +88,12 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
         AnShengCrawlerCalculatePremiumApplyMessage crawlerCalculatePremiumApply = new AnShengCrawlerCalculatePremiumApplyMessage(quoteVo, dataDTO, userDetailResponse, departmentPlanCode, checkVehicleCodeSecretGenerate);
         AnShengCrawlerCalculatePremiumApplyResponse calculatePremiumApply = anShengCrawlerRequestComponent.calculatePremiumApply(crawlerCalculatePremiumApply, httpHeaders);
         // 缓存报价信息
-        AnShengCrawlerCalculatePremiumApplyMessage crawlerCalculatePremiumApplyMessage = new AnShengCrawlerCalculatePremiumApplyMessage();
+        AnShengCrawlerApplyApplicationRequest autoSpecialPromiseRequest = new AnShengCrawlerApplyApplicationRequest();
         // 拷贝结果数据
-        BeanUtil.copyProperties(calculatePremiumApply, crawlerCalculatePremiumApplyMessage, COPY_OPTIONS);
-        // 拷贝报价数据
-        BeanUtil.copyProperties(crawlerCalculatePremiumApply, crawlerCalculatePremiumApplyMessage, COPY_OPTIONS);
+        BeanUtil.copyProperties(calculatePremiumApply, autoSpecialPromiseRequest, COPY_OPTIONS);
+
         // 缓存数据
-        anShengCrawlerCacheComponent.cacheQuoteRequest(ordersNo, crawlerCalculatePremiumApplyMessage);
+        anShengCrawlerCacheComponent.cacheQuoteRequest(ordersNo, autoSpecialPromiseRequest);
         // 构造返回参数
         return AnShengCrawlerQuoteResultsVoBuild.buildQuoteResultsVo(ordersNo, quoteVo, calculatePremiumApply);
     }
@@ -104,25 +102,24 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
     public UnderwritingResultsVo underwriting(UnderwritingVo underwritingVo) {
         String ordersNo = underwritingVo.getOrder().getOrdersNo();
         // 获取报价信息
-        AnShengCrawlerCalculatePremiumApplyMessage quoteResponse = anShengCrawlerCacheComponent.getQuoteResponse(ordersNo);
+        AnShengCrawlerApplyApplicationRequest applicationRequest = anShengCrawlerCacheComponent.getQuoteResponse(ordersNo);
+        // 获取图片上传信息
+        List<AnShengCrawlerApplyApplicationRequest.ContractsDTO.PolicyAttachmentsDTO> imagesInfo = anShengCrawlerCacheComponent.getImagesInfo(underwritingVo.getOrder()
+                .getOrdersNo());
 
-        HttpHeaders httpHeaders = new HttpHeaders();
+        HttpHeaders httpHeaders = anShengCrawlerQuoteProcessService.getHttpHeaders(underwritingVo.getOrder()
+                .getAttributionInformationVo());
         // 获取特别约定
-        AnShengCrawlerAutoSpecialPromiseRequest autoSpecialPromiseRequest = new AnShengCrawlerAutoSpecialPromiseRequest();
-        BeanUtil.copyProperties(quoteResponse, autoSpecialPromiseRequest, COPY_OPTIONS);
-        AnShengCrawlerAutoSpecialPromiseResponse autoSpecialPromiseResponse = anShengCrawlerRequestComponent.autoSpecialPromise(autoSpecialPromiseRequest, httpHeaders);
-
+        AnShengCrawlerAutoSpecialPromiseResponse autoSpecialPromiseResponse = anShengCrawlerRequestComponent.autoSpecialPromise(applicationRequest, httpHeaders);
         Map<String, AnShengCrawlerAutoSpecialPromiseResponse.DataDTO> stringDataDTOMap = autoSpecialPromiseResponse.getData()
                 .stream()
                 .collect(Collectors.toMap(AnShengCrawlerAutoSpecialPromiseResponse.DataDTO::getPlanCode, x -> x));
 
-        // 提交核保
-        AnShengCrawlerApplyApplicationRequest applicationRequest = new AnShengCrawlerApplyApplicationRequest("");
-        BeanUtil.copyProperties(quoteResponse, applicationRequest);
         applicationRequest.getContracts().forEach(contract -> {
             AnShengCrawlerAutoSpecialPromiseResponse.DataDTO dataDTO = stringDataDTOMap.get(contract.getPolicyBase()
                     .getPlanCode());
-            contract.getPolicyBase().setAlterableSpecialPromise(contract.getPolicyBase().getFixedSpecialPromise());
+            contract.getPolicyBase().setAlterableSpecialPromise(dataDTO.getAlterableSpecialPromise());
+            contract.setPolicyAttachments(imagesInfo);
         });
 
         AnShengCrawlerApplyApplicationResponse applyApplicationResponse = anShengCrawlerRequestComponent.applyApplication(applicationRequest, httpHeaders);
@@ -132,7 +129,10 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
 
     @Override
     public PaymentLinkResultsVo getPaymentLink(PaymentLinkVo paymentLinkVo) {
-        HttpHeaders httpHeaders = new HttpHeaders();
+        HttpHeaders httpHeaders = anShengCrawlerQuoteProcessService.getHttpHeaders(paymentLinkVo.getOrder()
+                .getAttributionInformationVo()
+        );
+
         AnShengCrawlerPaymentRequest anShengCrawlerPaymentRequest = new AnShengCrawlerPaymentRequest();
         anShengCrawlerRequestComponent.payment(anShengCrawlerPaymentRequest, httpHeaders);
         return null;
@@ -140,39 +140,57 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
 
     @Override
     public void uploadImage(InsuranceUploadImageVo insuranceUploadImageVo) {
-        HttpHeaders httpHeaders = new HttpHeaders();
+        // 请求头信息
+        HttpHeaders httpHeaders = anShengCrawlerQuoteProcessService.getHttpHeaders(insuranceUploadImageVo.getOrder()
+                .getAttributionInformationVo()
+        );
 
+        List<AnShengCrawlerFileUploadResponse.DataDTO> dataDTOS = new ArrayList<>();
         insuranceUploadImageVo.getImageVoList().forEach(image -> {
-            AnShengCrawlerFileUploadRequest anShengCrawlerFileUploadRequest = new AnShengCrawlerFileUploadRequest();
-            anShengCrawlerRequestComponent.fileUpload(anShengCrawlerFileUploadRequest, new File(""), httpHeaders);
+            AnShengCrawlerFileUploadRequest anShengCrawlerFileUploadRequest = new AnShengCrawlerFileUploadRequest(image.getInsuranceImageType(), image.getInsuranceImageCode());
+            image.getImageBase64List().forEach(imageDTO -> {
+                AnShengCrawlerFileUploadResponse.DataDTO dataDTO = anShengCrawlerRequestComponent.fileUpload(anShengCrawlerFileUploadRequest, imageDTO.getImageByte(), imageDTO.getImageName(), httpHeaders);
+                dataDTOS.add(dataDTO);
+            });
         });
+
+        if (dataDTOS.isEmpty()) {
+            return;
+        }
+
+        List<AnShengCrawlerApplyApplicationRequest.ContractsDTO.PolicyAttachmentsDTO> policyAttachmentsDTOList = AnShengCrawlerFileUploadResponse.toPolicyAttachmentsDTOList(dataDTOS);
+        anShengCrawlerCacheComponent.cacheImagesInfo(insuranceUploadImageVo.getOrder()
+                .getOrdersNo(), policyAttachmentsDTOList);
     }
 
     @Override
     public DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo downloadPolicyVo) {
-        HttpHeaders httpHeaders = new HttpHeaders();
+        DownloadPolicyResultVo downloadPolicyResultVo = new DownloadPolicyResultVo();
+
+        HttpHeaders httpHeaders = anShengCrawlerQuoteProcessService.getHttpHeaders(downloadPolicyVo.getOrder()
+                .getAttributionInformationVo());
         AnShengCrawlerOrder anShengCrawlerOrder = anShengCrawlerOrderService.getById(downloadPolicyVo.getOrder()
                 .getOrdersNo());
 
         Optional.ofNullable(anShengCrawlerOrder.getCiPolicyNo())
                 .ifPresent(policyNo -> {
-                    AnShengCrawlerQueryPrintPdfRequest queryPrintPdfCi = new AnShengCrawlerQueryPrintPdfRequest(policyNo, "");
-                    anShengCrawlerRequestComponent.queryPrintPdf(queryPrintPdfCi, "", httpHeaders);
+                    AnShengCrawlerQueryPrintPdfRequest queryPrintPdfCi = new AnShengCrawlerQueryPrintPdfRequest(policyNo, "6");
+                    downloadPolicyResultVo.setJqUrl(anShengCrawlerRequestComponent.queryPrintPdf(queryPrintPdfCi, httpHeaders));
 
-                    AnShengCrawlerQueryPrintPdfRequest queryPrintPdfCiBz = new AnShengCrawlerQueryPrintPdfRequest(policyNo, "");
-                    anShengCrawlerRequestComponent.queryPrintPdf(queryPrintPdfCiBz, "", httpHeaders);
+                    AnShengCrawlerQueryPrintPdfRequest queryPrintPdfCiBz = new AnShengCrawlerQueryPrintPdfRequest(policyNo, "2");
+                    downloadPolicyResultVo.setJqFlagUrl(anShengCrawlerRequestComponent.queryPrintPdf(queryPrintPdfCiBz, httpHeaders));
                 });
 
         Optional.ofNullable(anShengCrawlerOrder.getBiPolicyNo())
                 .ifPresent(policyNo -> {
-                    AnShengCrawlerQueryPrintPdfRequest queryPrintPdfCi = new AnShengCrawlerQueryPrintPdfRequest(policyNo, "");
-                    anShengCrawlerRequestComponent.queryPrintPdf(queryPrintPdfCi, "", httpHeaders);
+                    AnShengCrawlerQueryPrintPdfRequest queryPrintPdfCi = new AnShengCrawlerQueryPrintPdfRequest(policyNo, "6");
+                    downloadPolicyResultVo.setSyUrl(anShengCrawlerRequestComponent.queryPrintPdf(queryPrintPdfCi, httpHeaders));
                 });
 
         anShengCrawlerOrder.getNiInfos().forEach(niInfo -> {
             Optional.ofNullable(niInfo.getNiPolicyNumber())
                     .ifPresent(policyNo -> {
-                        anShengCrawlerRequestComponent.downloadPdf("", policyNo, httpHeaders);
+                        anShengCrawlerRequestComponent.downloadPdf( policyNo, httpHeaders);
                     });
         });
         return null;
@@ -180,13 +198,20 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
 
     @Override
     public OrderStatusResultVo queryOrderState(OrderStatusVo orderStatusVo) {
-
+        // 获取订单信息
         AnShengCrawlerOrder anShengCrawlerOrder = anShengCrawlerOrderService.getById(orderStatusVo.getOrder()
                 .getOrdersNo());
-
-        HttpHeaders httpHeaders = new HttpHeaders();
-        AnShengCrawlerQueryDocumentsInformationRequest queryDocumentsInformationRequest = new AnShengCrawlerQueryDocumentsInformationRequest("", "", anShengCrawlerOrder.getOrderNo(), anShengCrawlerOrder.getRecordingTime());
-        AnShengCrawlerQueryDocumentsInformationResponse queryDocumentsInformationResponse = anShengCrawlerRequestComponent.queryDocumentsInformation(queryDocumentsInformationRequest, httpHeaders);
+        // 获取请求头
+        HttpHeaders httpHeaders = anShengCrawlerQuoteProcessService.getHttpHeaders(orderStatusVo.getOrder()
+                .getAttributionInformationVo());
+        // 归属信息
+        AnShengCrawlerGetUserDetailResponse.DataDTO.AgentDefineDTO userDetailResponse = anShengCrawlerQuoteProcessService.getUserDetailResponse(orderStatusVo.getOrder()
+                .getAgreementId(), httpHeaders);
+        // 查询订单状态
+        AnShengCrawlerComprehensiveQueryInsurenetRequest crawlerComprehensiveQueryInsurenet = new AnShengCrawlerComprehensiveQueryInsurenetRequest(userDetailResponse.getAgentCode(), userDetailResponse.getDepartmentCode(), anShengCrawlerOrder.getOrderNo(), anShengCrawlerOrder.getRecordingTime());
+        AnShengCrawlerComprehensiveQueryInsurenetResponse queryDocumentsInformationResponse = anShengCrawlerRequestComponent.comprehensiveQueryInsurenet(crawlerComprehensiveQueryInsurenet, httpHeaders);
+        List<AnShengCrawlerComprehensiveQueryInsurenetResponse.DataDTO.ListDTO> list = queryDocumentsInformationResponse.getData()
+                .getList();
 
         return null;
     }