Преглед изворни кода

save: 华农财险 报价 上传影像

wks пре 1 година
родитељ
комит
4dd34381e6
12 измењених фајлова са 510 додато и 155 уклоњено
  1. 1 1
      commons/src/main/java/com/jzg/commons/entity/quote/vo/CarInfoVo.java
  2. 46 25
      tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/component/HuaNongCrawlerRequestComponent.java
  3. 2 2
      tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/constant/enums/RequestUrl.java
  4. 4 0
      tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/entity/HuaNongCrawlerConfigureParameters.java
  5. 2 2
      tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/entity/request/HuaNongCrawlerActualValueRequest.java
  6. 174 0
      tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/entity/request/HuaNongCrawlerFileSubmitRequest.java
  7. 181 111
      tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/entity/request/HuaNongCrawlerQuotedPriceRequest.java
  8. 53 2
      tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/entity/request/HuaNongCrawlerSaveRequest.java
  9. 27 0
      tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/entity/response/HuaNongCrawlerFileSubmitResponse.java
  10. 0 1
      tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/entity/response/HuaNongCrawlerQuotedPriceResponse.java
  11. 9 4
      tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/service/impl/HuaNongCrawlerQuoteProcessServiceImpl.java
  12. 11 7
      tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/service/impl/HuaNongCrawlerRequestImpl.java

+ 1 - 1
commons/src/main/java/com/jzg/commons/entity/quote/vo/CarInfoVo.java

@@ -142,7 +142,7 @@ public class CarInfoVo implements Serializable {
     /**
      * 商业险过户
      */
-    private boolean ciTransfer;
+    private boolean biTransfer;
     /**
      * 是否贷款车 true 贷款车
      */

+ 46 - 25
tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/component/HuaNongCrawlerRequestComponent.java

@@ -9,22 +9,26 @@ import com.jzg.quote.huanong.crawler.entity.request.*;
 import com.jzg.quote.huanong.crawler.entity.response.*;
 import com.jzg.quote.huanong.crawler.properties.HuaNongCrawlerProperties;
 import com.jzg.quote.huanong.crawler.utils.RequestEncryptor;
-import jakarta.servlet.http.HttpServletRequest;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.ResponseEntity;
+import org.springframework.http.client.MultipartBodyBuilder;
 import org.springframework.stereotype.Component;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
 import org.springframework.util.StringUtils;
-import org.springframework.web.reactive.function.client.WebClient;
 
+import java.io.File;
 import java.net.URI;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
 
+import static com.jzg.quote.huanong.crawler.constant.enums.RequestUrl.*;
+
 
 /**
  * @description: 华农请求基类
@@ -58,7 +62,7 @@ public class HuaNongCrawlerRequestComponent {
      * @return 验证码信息
      */
     public HuaNongCrawlerVerificationCodeResponse verificationCode(HuaNongCrawlerVerificationCodeRequest request, HttpHeaders headers) {
-        return post(RequestUrl.VERIFICATION_CODE, request, HuaNongCrawlerVerificationCodeResponse.class, headers);
+        return post(VERIFICATION_CODE, request, HuaNongCrawlerVerificationCodeResponse.class, headers);
     }
 
     /**
@@ -69,7 +73,7 @@ public class HuaNongCrawlerRequestComponent {
      * @return 登录后的信息
      */
     public HuaNongCrawlerLoginResponse login(HuaNongCrawlerLoginRequest request, HttpHeaders headers) {
-        return post(RequestUrl.LOGIN, request, HuaNongCrawlerLoginResponse.class, headers);
+        return post(LOGIN, request, HuaNongCrawlerLoginResponse.class, headers);
     }
 
     /**
@@ -80,7 +84,7 @@ public class HuaNongCrawlerRequestComponent {
      * @return 归属信息
      */
     public HuaNongCrawlerComInfoQueryResponse comInfoQuery(HuaNongCrawlerComInfoQueryRequest request, HttpHeaders headers) {
-        return post(RequestUrl.COM_INFO_QUERY, request, HuaNongCrawlerComInfoQueryResponse.class, headers);
+        return post(COM_INFO_QUERY, request, HuaNongCrawlerComInfoQueryResponse.class, headers);
     }
 
     /**
@@ -91,7 +95,7 @@ public class HuaNongCrawlerRequestComponent {
      * @return 验证码信息
      */
     public HuaNongCrawlerUserTypeAndProxyInfoQueryResponse userTypeAndProxyInfoQuery(HuaNongCrawlerUserTypeAndProxyInfoQueryRequest request, HttpHeaders headers) {
-        return post(RequestUrl.USER_TYPE_AND_PROXY_INFO_QUERY, request, HuaNongCrawlerUserTypeAndProxyInfoQueryResponse.class, headers);
+        return post(USER_TYPE_AND_PROXY_INFO_QUERY, request, HuaNongCrawlerUserTypeAndProxyInfoQueryResponse.class, headers);
     }
 
     /**
@@ -102,7 +106,7 @@ public class HuaNongCrawlerRequestComponent {
      * @return 报价信息
      */
     public HuaNongCrawlerModelsQueryResponse modelsQuery(HuaNongCrawlerModelsQueryRequest request, HttpHeaders headers) {
-        return post(RequestUrl.MODELS_QUERY, request, HuaNongCrawlerModelsQueryResponse.class, headers);
+        return post(MODELS_QUERY, request, HuaNongCrawlerModelsQueryResponse.class, headers);
     }
 
     /**
@@ -113,7 +117,7 @@ public class HuaNongCrawlerRequestComponent {
      * @return 折旧价
      */
     public String actualValue(HuaNongCrawlerActualValueRequest request, HttpHeaders headers) {
-        HuaNongCrawlerActualValueResponse response = post(RequestUrl.ACTUAL_VALUE, request, HuaNongCrawlerActualValueResponse.class, headers);
+        HuaNongCrawlerActualValueResponse response = post(ACTUAL_VALUE, request, HuaNongCrawlerActualValueResponse.class, headers);
         return response.getActualValue();
     }
 
@@ -125,7 +129,7 @@ public class HuaNongCrawlerRequestComponent {
      * @return 报价信息
      */
     public HuaNongCrawlerQuotedPriceResponse quotedPrice(HuaNongCrawlerQuotedPriceRequest request, HttpHeaders headers) {
-        return post(RequestUrl.QUOTED_PRICE, request, HuaNongCrawlerQuotedPriceResponse.class, headers);
+        return post(QUOTED_PRICE, request, HuaNongCrawlerQuotedPriceResponse.class, headers);
     }
 
     /**
@@ -136,7 +140,7 @@ public class HuaNongCrawlerRequestComponent {
      * @return 保存订单信息
      */
     public void save(HuaNongCrawlerSaveRequest request, HttpHeaders headers) {
-        HuaNongCrawlerSaveResponse response = post(RequestUrl.SAVE, request, HuaNongCrawlerSaveResponse.class, headers);
+        HuaNongCrawlerSaveResponse response = post(SAVE, request, HuaNongCrawlerSaveResponse.class, headers);
 
     }
 
@@ -148,7 +152,7 @@ public class HuaNongCrawlerRequestComponent {
      * @return 跳转页面需要的data
      */
     public String newImageQuery(HuaNongCrawlerNewImageQueryRequest request, HttpHeaders headers) {
-        HuaNongCrawlerNewImageQueryResponse response = post(RequestUrl.SAVE, request, HuaNongCrawlerNewImageQueryResponse.class, headers);
+        HuaNongCrawlerNewImageQueryResponse response = post(NEW_IMAGE_QUERY, request, HuaNongCrawlerNewImageQueryResponse.class, headers);
         return response.getData();
     }
 
@@ -162,7 +166,7 @@ public class HuaNongCrawlerRequestComponent {
     public String bizUpload(String data, HttpHeaders headers) {
         MultiValueMap<String, Object> parts = new LinkedMultiValueMap<>();
         parts.add("data", data);
-        String url = properties.getUploadUrl() + RequestUrl.BIZ_UPLOAD;
+        String url = properties.getUploadUrl() + BIZ_UPLOAD;
         ResponseEntity<String> response = requestComponent.formData(url, parts, String.class, headers);
         String fragment = Optional.ofNullable(response)
                 .map(ResponseEntity::getHeaders)
@@ -196,25 +200,42 @@ public class HuaNongCrawlerRequestComponent {
      * @param headers 请求头
      * @return 上传影像响应
      */
-    public HuaNongCrawlerFileUploadResponse fileUpload(HttpHeaders headers) {
+    public HuaNongCrawlerFileUploadResponse fileUpload(String accessToken, File file, HttpHeaders headers) {
         MultiValueMap<String, Object> parts = new LinkedMultiValueMap<>();
-        String url = properties.getUploadUrl() + RequestUrl.FILE_UPLOAD;
+        parts.add("file", new FileSystemResource(file));
+        String url = properties.getUploadUrl() + String.format(FILE_UPLOAD.getUri(), accessToken, "");
         ResponseEntity<HuaNongCrawlerFileUploadResponse> responseEntity = requestComponent.formData(url, parts, HuaNongCrawlerFileUploadResponse.class, headers);
         return responseEntity.getBody();
     }
 
+    /**
+     * 提交影像
+     *
+     * @param request     请求头
+     * @param accessToken accessToken
+     * @param headers     请求头
+     */
+    public void fileSubmit(HuaNongCrawlerFileSubmitRequest request, String accessToken, HttpHeaders headers) {
+        String url = properties.getUploadUrl() + String.format(FILE_SUBMIT.getUri(), accessToken, System.currentTimeMillis());
+        ResponseEntity<HuaNongCrawlerFileUploadResponse> responseEntity = requestComponent.objectPost(url, request, HuaNongCrawlerFileUploadResponse.class, headers);
+    }
+
     /**
      * 查询上传目录
      *
-     * @param request 上传目录请求
-     * @param headers 请求头
+     * @param accessToken accessToken
+     * @param bizNo       投保单号
+     * @param headers     请求头
      * @return 上传目录响应
      */
-    public HuaNongCrawlerCatalogQueryResponse catalogQuery(HttpServletRequest request, HttpHeaders headers) {
-        MultiValueMap<String, Object> parts = new LinkedMultiValueMap<>();
-        String url = properties.getUploadUrl() + RequestUrl.CATALOG_QUERY;
-        ResponseEntity<HuaNongCrawlerCatalogQueryResponse> responseEntity = requestComponent.formData(url, parts, HuaNongCrawlerCatalogQueryResponse.class, headers);
-        return responseEntity.getBody();
+    public HuaNongCrawlerCatalogQueryResponse catalogQuery(String accessToken, String bizNo, HttpHeaders headers) {
+        Map<String, Object> parts = new HashMap<>();
+        parts.put("accessToken", accessToken);
+        parts.put("bizNo", bizNo);
+        parts.put("appCode", "UW_13");
+        parts.put("time", System.currentTimeMillis());
+        String url = properties.getUploadUrl() + CATALOG_QUERY.getUri();
+        return requestComponent.get(url, parts, CATALOG_QUERY.getDescription(), HuaNongCrawlerCatalogQueryResponse.class, headers);
     }
 
     /**
@@ -225,7 +246,7 @@ public class HuaNongCrawlerRequestComponent {
      * @return 提交核保信息
      */
     public HuaNongCrawlerSubmitResponse submit(HuaNongCrawlerSubmitRequest request, HttpHeaders headers) {
-        return post(RequestUrl.SUBMIT, request, HuaNongCrawlerSubmitResponse.class, headers);
+        return post(SUBMIT, request, HuaNongCrawlerSubmitResponse.class, headers);
     }
 
     /**
@@ -236,7 +257,7 @@ public class HuaNongCrawlerRequestComponent {
      * @return 保单链接
      */
     public String ftpDownload(HuaNongCrawlerFtpDownloadRequest request, HttpHeaders headers) {
-        HuaNongCrawlerFtpDownloadResponse response = post(RequestUrl.FTP_DOWNLOAD, request, HuaNongCrawlerFtpDownloadResponse.class, headers);
+        HuaNongCrawlerFtpDownloadResponse response = post(FTP_DOWNLOAD, request, HuaNongCrawlerFtpDownloadResponse.class, headers);
         return response.getDowloadURL().get(0).getDowloadURL();
     }
 
@@ -248,7 +269,7 @@ public class HuaNongCrawlerRequestComponent {
      * @return 非车保单下载链接
      */
     public String documentsPrint(HuaNongCrawlerDocumentsPrintRequest request, HttpHeaders headers) {
-        HuaNongCrawlerDocumentsPrintResponse response = post(RequestUrl.DOCUMENTS_PRINT, request, HuaNongCrawlerDocumentsPrintResponse.class, headers);
+        HuaNongCrawlerDocumentsPrintResponse response = post(DOCUMENTS_PRINT, request, HuaNongCrawlerDocumentsPrintResponse.class, headers);
         String fileUrl = response.getFileUrl();
         return fileUrl.replace(properties.getDocumentsPrintUrl(), properties.getFtpDownloadUrl());
     }
@@ -261,7 +282,7 @@ public class HuaNongCrawlerRequestComponent {
      * @return 订单列表
      */
     public HuaNongCrawlerFindBusinessesResponse findBusinesses(HuaNongCrawlerFindBusinessesRequest request, HttpHeaders headers) {
-        return post(RequestUrl.FIND_BUSINESSES, request, HuaNongCrawlerFindBusinessesResponse.class, headers);
+        return post(FIND_BUSINESSES, request, HuaNongCrawlerFindBusinessesResponse.class, headers);
     }
 
     /**

+ 2 - 2
tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/constant/enums/RequestUrl.java

@@ -30,8 +30,8 @@ public enum RequestUrl implements CrawlerRequestUrlStandard {
 
     BIZ_UPLOAD("/tianying/api/biz/upload", "上传影像地址", ""),
     CATALOG_QUERY("/tianying/api/doc/catalogQuery", "影像目录查询", ""),
-    FILE_UPLOAD("/tianying/api/doc/fileUpload", "上传影像", ""),
-    FILE_SUBMIT("/tianying/api/doc/fileSubmit", "提交影像", ""),
+    FILE_UPLOAD("/tianying/api/doc/fileUpload?accessToken=%s&tempId=%s", "上传影像", ""),
+    FILE_SUBMIT("/tianying/api/doc/fileSubmit??accessToken=%s&time=%d", "提交影像", ""),
 
     // 提交核保
     SUBMIT("Submit", "提交核保", "Submit"),

+ 4 - 0
tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/entity/HuaNongCrawlerConfigureParameters.java

@@ -18,6 +18,10 @@ public class HuaNongCrawlerConfigureParameters implements ConfigureParameters {
      * 团队名称
      */
     private String teamName;
+    /**
+     * 登录机构
+     */
+    private String loginComCode;
     /**
      * 归属机构编码
      */

+ 2 - 2
tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/entity/request/HuaNongCrawlerActualValueRequest.java

@@ -51,7 +51,7 @@ public class HuaNongCrawlerActualValueRequest implements Serializable, HuaNongHe
     private String energyType;
 
     public HuaNongCrawlerActualValueRequest(String token,
-                                            String comCode,
+                                            String loginCom,
                                             HuaNongCrawlerModelsQueryResponse.CarModelDTO carModelDTO,
                                             CarInfoVo carInfoVo) {
         this.head = new HuaNongCrawlerRequestBaseHead(token);
@@ -62,7 +62,7 @@ public class HuaNongCrawlerActualValueRequest implements Serializable, HuaNongHe
         this.motorUsageTypeCode = carInfoVo.getVehicleUseCode();
         this.motorTypeCode = carInfoVo.getCarKindCode();
         this.registerDate = carInfoVo.getRegisterDate();
-        this.loginCom = comCode;
+        this.loginCom = loginCom;
         this.isNewEnergyFlag = false;
         this.energyType = "";
     }

+ 174 - 0
tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/entity/request/HuaNongCrawlerFileSubmitRequest.java

@@ -0,0 +1,174 @@
+package com.jzg.quote.huanong.crawler.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @description: 华农财险 提交影像
+ * @author: wenks
+ * @date: 2025/3/27 15:58
+ **/
+@NoArgsConstructor
+@Data
+public class HuaNongCrawlerFileSubmitRequest {
+
+    @JsonProperty("vtree")
+    private List<VtreeDTO> vtree;
+
+    @NoArgsConstructor
+    @Data
+    public static class VtreeDTO {
+
+        @JsonProperty("appCode")
+        private String appCode;
+
+        @JsonProperty("appName")
+        private String appName;
+
+        @JsonProperty("bizNo")
+        private String bizNo;
+
+        @JsonProperty("version")
+        private Integer version;
+
+        @JsonProperty("nodes")
+        private List<NodesDTO> nodes;
+
+        @NoArgsConstructor
+        @Data
+        public static class NodesDTO {
+
+            @JsonProperty("id")
+            private Object id;
+
+            @JsonProperty("right")
+            private String right;
+
+            @JsonProperty("nodeCode")
+            private String nodeCode;
+
+            @JsonProperty("nodeName")
+            private String nodeName;
+
+            @JsonProperty("pid")
+            private String pid;
+            @JsonProperty("newNodeFlag")
+            private Integer newNodeFlag;
+            @JsonProperty("docNum")
+            private Integer docNum;
+            @JsonProperty("nodeLevel")
+            private Integer nodeLevel;
+            @JsonProperty("pages")
+            private Object pages;
+            @JsonProperty("resize")
+            private String resize;
+            @JsonProperty("childFlag")
+            private Integer childFlag;
+            @JsonProperty("sortNo")
+            private Integer sortNo;
+            @JsonProperty("bizNo")
+            private String bizNo;
+            @JsonProperty("appCode")
+            private String appCode;
+            @JsonProperty("appName")
+            private String appName;
+            @JsonProperty("icon")
+            private String icon;
+            @JsonProperty("label")
+            private String label;
+            @JsonProperty("children")
+            private List<ChildrenDTO> children;
+            @JsonProperty("pagesNew")
+            private List<PagesNewDTO> pagesNew;
+
+            @NoArgsConstructor
+            @Data
+            public static class ChildrenDTO {
+                @JsonProperty("id")
+                private Object id;
+                @JsonProperty("right")
+                private String right;
+                @JsonProperty("nodeCode")
+                private String nodeCode;
+                @JsonProperty("nodeName")
+                private String nodeName;
+                @JsonProperty("pid")
+                private String pid;
+                @JsonProperty("newNodeFlag")
+                private Integer newNodeFlag;
+                @JsonProperty("docNum")
+                private Integer docNum;
+                @JsonProperty("nodeLevel")
+                private Integer nodeLevel;
+                @JsonProperty("pages")
+                private Object pages;
+                @JsonProperty("resize")
+                private String resize;
+                @JsonProperty("childFlag")
+                private Integer childFlag;
+                @JsonProperty("sortNo")
+                private Integer sortNo;
+                @JsonProperty("bizNo")
+                private String bizNo;
+                @JsonProperty("appCode")
+                private String appCode;
+                @JsonProperty("appName")
+                private String appName;
+                @JsonProperty("icon")
+                private String icon;
+                @JsonProperty("label")
+                private String label;
+            }
+
+            @NoArgsConstructor
+            @Data
+            public static class PagesNewDTO {
+                @JsonProperty("thumbUrl")
+                private String thumbUrl;
+                @JsonProperty("imageUrl")
+                private String imageUrl;
+                @JsonProperty("progressStatl")
+                private Integer progressStatl;
+                @JsonProperty("originalName")
+                private String originalName;
+                @JsonProperty("pageFormat")
+                private String pageFormat;
+                @JsonProperty("id")
+                private String id;
+                @JsonProperty("nodeId")
+                private String nodeId;
+                @JsonProperty("newFileFlag")
+                private Integer newFileFlag;
+                @JsonProperty("noSubmitFileFlag")
+                private Integer noSubmitFileFlag;
+                @JsonProperty("appCode")
+                private String appCode;
+                @JsonProperty("bizNo")
+                private String bizNo;
+                @JsonProperty("type")
+                private String type;
+                @JsonProperty("createUserName")
+                private String createUserName;
+                @JsonProperty("createUser")
+                private String createUser;
+                @JsonProperty("uploadOrg")
+                private String uploadOrg;
+                @JsonProperty("createTime")
+                private String createTime;
+                @JsonProperty("pageName")
+                private String pageName;
+                @JsonProperty("tempId")
+                private String tempId;
+                @JsonProperty("exif")
+                private String exif;
+                @JsonProperty("pageDesc")
+                private String pageDesc;
+                @JsonProperty("sortNo")
+                private Integer sortNo;
+            }
+        }
+    }
+}

+ 181 - 111
tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/entity/request/HuaNongCrawlerQuotedPriceRequest.java

@@ -4,8 +4,10 @@ import cn.hutool.core.codec.Base64;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.jzg.commons.entity.quote.vo.CarInfoVo;
 import com.jzg.commons.entity.quote.vo.CustomerInfoVo;
+import com.jzg.commons.entity.quote.vo.KindInfoVo;
 import com.jzg.commons.entity.quote.vo.RiskInfoVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.quote.huanong.crawler.entity.HuaNongCrawlerConfigureParameters;
 import com.jzg.quote.huanong.crawler.entity.response.HuaNongCrawlerComInfoQueryResponse;
 import com.jzg.quote.huanong.crawler.entity.response.HuaNongCrawlerModelsQueryResponse;
 import com.jzg.quote.huanong.crawler.entity.response.HuaNongCrawlerUserTypeAndProxyInfoQueryResponse;
@@ -18,6 +20,7 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.stream.Collectors;
 
 
 /**
@@ -50,13 +53,18 @@ public class HuaNongCrawlerQuotedPriceRequest implements Serializable, HuaNongHe
     @JsonProperty("businessData")
     private BusinessDataDTO businessData;
 
-    public HuaNongCrawlerQuotedPriceRequest(String token, String username, QuoteVo quoteVo, HuaNongCrawlerModelsQueryResponse.CarModelDTO carModelDTO, String actualValue) {
+    public HuaNongCrawlerQuotedPriceRequest(String token,
+                                            String username,
+                                            QuoteVo quoteVo,
+                                            HuaNongCrawlerModelsQueryResponse.CarModelDTO carModelDTO,
+                                            HuaNongCrawlerConfigureParameters huaNongCrawlerConfigureParameter,
+                                            String actualValue) {
         this.head = new HuaNongCrawlerRequestBaseHead(token);
-        this.loginCom = loginCom;
+        this.loginCom = huaNongCrawlerConfigureParameter.getLoginComCode();
         this.userCode = username;
-        this.comeCode = comeCode;
+        this.comeCode = huaNongCrawlerConfigureParameter.getComCode();
         this.agentCode = "";
-        this.businessData = new BusinessDataDTO(quoteVo, carModelDTO, "", "");
+        this.businessData = new BusinessDataDTO(quoteVo, carModelDTO, huaNongCrawlerConfigureParameter.getLoginComCode(), huaNongCrawlerConfigureParameter.getComCode(), actualValue);
     }
 
     @NoArgsConstructor
@@ -90,21 +98,9 @@ public class HuaNongCrawlerQuotedPriceRequest implements Serializable, HuaNongHe
         @JsonProperty("threeMountFlag")
         private Boolean threeMountFlag;
 
-        @JsonProperty("amountListData")
-        private List<AmountListDataDTO> amountListData;
-
         @JsonProperty("newEnergyAmountListData")
         private List<NewEnergyAmountListDataDTO> newEnergyAmountListData;
 
-        @JsonProperty("BListData")
-        private List<ListDataDTO> bListData;
-
-        @JsonProperty("D3ListData")
-        private List<ListDataDTO> d3ListData;
-
-        @JsonProperty("D4ListData")
-        private List<ListDataDTO> d4ListData;
-
         @JsonProperty("ocrFlag")
         private String ocrFlag;
 
@@ -154,19 +150,13 @@ public class HuaNongCrawlerQuotedPriceRequest implements Serializable, HuaNongHe
         private List<Object> glassInfo;
 
 
-        public BusinessDataDTO(QuoteVo quoteVo, HuaNongCrawlerModelsQueryResponse.CarModelDTO carModelDTO, String loginCom, String comeCode) {
+        public BusinessDataDTO(QuoteVo quoteVo, HuaNongCrawlerModelsQueryResponse.CarModelDTO carModelDTO, String loginCom, String comeCode,  String actualValue) {
             this.businessMain = new BusinessMainDTO(loginCom, comeCode);
-            this.insuredObject = new InsuredObjectDTO(carModelDTO.getFullCarData(), quoteVo.getCarInfoVo());
-
-            this.saleInfo = new SaleInfoDTO();
+            this.insuredObject = new InsuredObjectDTO(carModelDTO, quoteVo.getCarInfoVo(), quoteVo.getOwnersInfo(), actualValue);
             this.platFormMessageNvehBean = new PlatFormMessageNvehBeanDTO("");
             this.sum = 0;
             this.threeMountFlag = false;
-            this.amountListData = new ArrayList<>();
             this.newEnergyAmountListData = new ArrayList<>();
-            this.bListData = ListDataDTO.getListBDataDTO();
-            this.d3ListData = ListDataDTO.getListDDataDTO();
-            this.d4ListData = ListDataDTO.getListDDataDTO();
             this.nvehInfo = new ArrayList<>();
             this.homeInfo = new ArrayList<>();
             this.glassInfo = new ArrayList<>();
@@ -181,7 +171,7 @@ public class HuaNongCrawlerQuotedPriceRequest implements Serializable, HuaNongHe
             this.centerFlag = "";
             this.centerText = "";
             // 险种
-            this.contract = ContractDTO.build(quoteVo.getCiRiskInfoVo(), quoteVo.getBiRiskInfoVo());
+            this.contract = ContractDTO.build(quoteVo.getCiRiskInfoVo(), quoteVo.getBiRiskInfoVo(), quoteVo.getKindInfoVo());
             // 人员
             this.customer = CustomerDTO.build(quoteVo.getPolicyHolderInfo(), quoteVo.getInsuredPersonInfo(), quoteVo.getOwnersInfo());
         }
@@ -298,7 +288,7 @@ public class HuaNongCrawlerQuotedPriceRequest implements Serializable, HuaNongHe
                 this.isRunFlag = isRunFlag;
                 this.bjLogId = "";
                 this.lastPolicyNos = Collections.emptyList();
-                this.isAloneInsureNveh = isAloneInsureNveh;
+                this.isAloneInsureNveh = 0;
             }
         }
 
@@ -315,16 +305,12 @@ public class HuaNongCrawlerQuotedPriceRequest implements Serializable, HuaNongHe
             private SimpleStadarCarDTO simpleStadarCar;
             @JsonProperty("specializedDevice")
             private List<Object> specializedDevice;
-            @JsonProperty("violation")
-            private List<Object> violation;
 
-            public InsuredObjectDTO(HuaNongCrawlerModelsQueryResponse.CarModelDTO.FullCarDataDTO fullCarDataDTO, CarInfoVo carInfoVo) {
-                this.chargingPostInfos = chargingPostInfos;
-                this.platformCar = platformCar;
-                this.policyCar = policyCar;
-                this.simpleStadarCar = new SimpleStadarCarDTO(fullCarDataDTO, carInfoVo.getSeatCount(), carInfoVo.getCompleteKerbMass(), carInfoVo.getLimitLoad());
-                this.specializedDevice = specializedDevice;
-                this.violation = violation;
+            public InsuredObjectDTO(HuaNongCrawlerModelsQueryResponse.CarModelDTO carModelDTO, CarInfoVo carInfoVo, CustomerInfoVo ownersInfo, String actualValue) {
+                this.chargingPostInfos = Collections.emptyList();
+                this.platformCar = new PlatformCarDTO(carModelDTO.getPlatFormCar());
+                this.policyCar = new PolicyCarDTO(carInfoVo, ownersInfo, carModelDTO.getFullCarData(), actualValue);
+                this.simpleStadarCar = new SimpleStadarCarDTO(carModelDTO.getFullCarData(), carInfoVo.getSeatCount(), carInfoVo.getCompleteKerbMass(), carInfoVo.getLimitLoad());
             }
 
             @NoArgsConstructor
@@ -356,6 +342,23 @@ public class HuaNongCrawlerQuotedPriceRequest implements Serializable, HuaNongHe
                 private String series;
                 @JsonProperty("tradeNmae")
                 private String tradeNmae;
+
+
+                public PlatformCarDTO(HuaNongCrawlerModelsQueryResponse.CarModelDTO.PlatFormCarDTO platFormCar) {
+                    this.basicRateCode = "";
+                    this.brand = "";
+                    this.carName = platFormCar.getCarName();
+                    this.categoryCode = platFormCar.getCategoryCode();
+                    this.categoryName = platFormCar.getCategoryName();
+                    this.configType = platFormCar.getConfigType();
+                    this.deptCode = platFormCar.getDeptCode();
+                    this.deptName = platFormCar.getDeptName();
+                    this.modelCodeHX = "";
+                    this.modelIdCode = "";
+                    this.noticeType = "";
+                    this.series = "";
+                    this.tradeNmae = "";
+                }
             }
 
             @NoArgsConstructor
@@ -392,7 +395,7 @@ public class HuaNongCrawlerQuotedPriceRequest implements Serializable, HuaNongHe
                 @JsonProperty("consultValue")
                 private String consultValue;
                 @JsonProperty("contrastFlag")
-                private Boolean contrastFlag;
+                private String contrastFlag;
                 @JsonProperty("contrastPrice")
                 private Integer contrastPrice;
                 @JsonProperty("damagedFactorGrade")
@@ -440,9 +443,9 @@ public class HuaNongCrawlerQuotedPriceRequest implements Serializable, HuaNongHe
                 @JsonProperty("newCarSign")
                 private Boolean newCarSign;
                 @JsonProperty("noDamageYears")
-                private Integer noDamageYears;
+                private String noDamageYears;
                 @JsonProperty("noLicenseFlag")
-                private Boolean noLicenseFlag;
+                private String noLicenseFlag;
                 @JsonProperty("otherEnergyTypeDesc")
                 private String otherEnergyTypeDesc;
                 @JsonProperty("pickUpCarFlag")
@@ -466,7 +469,7 @@ public class HuaNongCrawlerQuotedPriceRequest implements Serializable, HuaNongHe
                 @JsonProperty("runArea")
                 private String runArea;
                 @JsonProperty("runMiles")
-                private Integer runMiles;
+                private String runMiles;
                 @JsonProperty("siChuanUsageType")
                 private String siChuanUsageType;
                 @JsonProperty("specialFlag")
@@ -474,7 +477,7 @@ public class HuaNongCrawlerQuotedPriceRequest implements Serializable, HuaNongHe
                 @JsonProperty("taxInclued")
                 private Boolean taxInclued;
                 @JsonProperty("topSpeed")
-                private Integer topSpeed;
+                private String topSpeed;
                 @JsonProperty("transferDate")
                 private String transferDate;
                 @JsonProperty("transferMark")
@@ -484,7 +487,7 @@ public class HuaNongCrawlerQuotedPriceRequest implements Serializable, HuaNongHe
                 @JsonProperty("useYears")
                 private String useYears;
                 @JsonProperty("useYearsDetail")
-                private Double useYearsDetail;
+                private String useYearsDetail;
                 @JsonProperty("vIN")
                 private String vIN;
                 @JsonProperty("vehicleStatusJG")
@@ -497,6 +500,78 @@ public class HuaNongCrawlerQuotedPriceRequest implements Serializable, HuaNongHe
                 private Boolean otherCarFlag;
                 @JsonProperty("certificateDate")
                 private String certificateDate;
+
+                public PolicyCarDTO(CarInfoVo carInfoVo, CustomerInfoVo ownersInfo, HuaNongCrawlerModelsQueryResponse.CarModelDTO.FullCarDataDTO fullCarDataDTO,  String actualValue) {
+                    this.actualValue = actualValue;
+                    this.bankCode = "";
+                    this.bankName = "";
+                    this.beiJingUsageType = "";
+                    this.carCheckReason = "";
+                    this.carCheckStatus = "";
+                    this.carChecker = "";
+                    this.carDetails = "";
+                    this.carInjury = "";
+                    this.carKind = fullCarDataDTO.getCarKind();
+                    this.carRenewalFlagBI = "0";
+                    this.carRenewalFlagCI = "0";
+                    this.certificateNo = "";
+                    this.certificateType = "";
+                    this.consultValue = actualValue;
+                    this.contrastFlag = "";
+                    this.contrastPrice = 0;
+                    this.damagedFactorGrade = "";
+                    this.ecdemicVehicleFlag = false;
+                    this.endorseTransferFlag = false;
+                    this.engine = carInfoVo.getEngineNo();
+                    this.firstBeneMan = "";
+                    this.fleetNo = "";
+                    this.hKFlag = false;
+                    this.hfcode = fullCarDataDTO.getHfcode();
+                    this.hfname = fullCarDataDTO.getHfname();
+                    this.insCarClass = fullCarDataDTO.getInsCarClass();
+                    this.isNewEnergyFlag = fullCarDataDTO.getDisPlayFlag();
+                    this.issueDate = carInfoVo.getIssueDate();
+                    this.lfDate = "";
+                    this.lkxcFlag = false;
+                    this.loanStatus = false;
+                    this.loanVehicleFlag = false;
+                    this.model = fullCarDataDTO.getModelName();
+                    this.monthDepRate = 0.01;
+                    this.motorUsageTypeCode = carInfoVo.getVehicleUseCode();
+                    this.motorTypeCode = carInfoVo.getCarKindCode();
+                    this.motorUsageTypeCodeJG = "";
+                    this.newCarSign = false;
+                    this.noDamageYears = "";
+                    this.noLicenseFlag = "";
+                    this.otherEnergyTypeDesc = "";
+                    this.pickUpCarFlag = false;
+                    this.plateColorCode = "";
+                    this.plateNo = carInfoVo.getLicenseNo();
+                    this.plateType = "";
+                    this.platformOwnerName = ownersInfo.getName();
+                    this.pmQueryNo = "";
+                    this.precisionServiceSearch = false;
+                    this.pureRange = 0;
+                    this.registerDate = carInfoVo.getRegisterDate();
+                    this.runArea = "";
+                    this.runMiles = "";
+                    this.siChuanUsageType = "0";
+                    this.specialFlag = false;
+                    this.taxInclued = false;
+                    this.topSpeed = "";
+                    this.transferDate = carInfoVo.getTransferDate();
+                    this.transferMark = carInfoVo.isTransfer();
+                    this.transferMarkBi = carInfoVo.isBiTransfer();
+                    this.useYears = "";
+                    this.useYearsDetail = "";
+                    this.vIN = carInfoVo.getVinNo();
+                    this.vehicleStatusJG = "";
+                    this.vehicleType = carInfoVo.getCarTypeCode();
+                    this.checkFlag = "1";
+                    this.otherCarFlag = true;
+                    this.certificateDate = "";
+                }
+
             }
 
             @NoArgsConstructor
@@ -920,6 +995,8 @@ public class HuaNongCrawlerQuotedPriceRequest implements Serializable, HuaNongHe
             @NoArgsConstructor
             @Data
             public static class ContractMainDTO {
+                @JsonProperty("contractNo")
+                private String contractNo;
                 @JsonProperty("expenseRate")
                 private Integer expenseRate;
                 @JsonProperty("productionDate")
@@ -1122,24 +1199,6 @@ public class HuaNongCrawlerQuotedPriceRequest implements Serializable, HuaNongHe
             }
         }
 
-        @NoArgsConstructor
-        @Data
-        public static class AmountListDataDTO {
-            @JsonProperty("amountList")
-            private List<AmountListDTO> amountList;
-            @JsonProperty("kindCode")
-            private String kindCode;
-
-            @NoArgsConstructor
-            @Data
-            public static class AmountListDTO {
-                @JsonProperty("code")
-                private String code;
-                @JsonProperty("value")
-                private String value;
-            }
-        }
-
         @NoArgsConstructor
         @Data
         public static class NewEnergyAmountListDataDTO {
@@ -1158,49 +1217,6 @@ public class HuaNongCrawlerQuotedPriceRequest implements Serializable, HuaNongHe
             }
         }
 
-        @AllArgsConstructor
-        @NoArgsConstructor
-        @Data
-        public static class ListDataDTO {
-
-            @JsonProperty("code")
-            private String code;
-
-            @JsonProperty("value")
-            private String value;
-
-            public static List<ListDataDTO> getListBDataDTO() {
-                List<ListDataDTO> list = new ArrayList<>();
-                list.add(new ListDataDTO("100000", "10万元"));
-                list.add(new ListDataDTO("150000", "15万元"));
-                list.add(new ListDataDTO("200000", "20万元"));
-                list.add(new ListDataDTO("300000", "30万元"));
-                list.add(new ListDataDTO("500000", "50万元"));
-                list.add(new ListDataDTO("1000000", "100万元"));
-                list.add(new ListDataDTO("1500000", "150万元"));
-                list.add(new ListDataDTO("2000000", "200万元"));
-                list.add(new ListDataDTO("3000000", "300万元"));
-                list.add(new ListDataDTO("4000000", "400万元"));
-                list.add(new ListDataDTO("5000000", "500万元"));
-                return list;
-            }
-
-            public static List<ListDataDTO> getListDDataDTO() {
-                List<ListDataDTO> list = new ArrayList<>();
-                list.add(new ListDataDTO("5000", "0.5万元"));
-                list.add(new ListDataDTO("10000", "1万元"));
-                list.add(new ListDataDTO("20000", "2万元"));
-                list.add(new ListDataDTO("30000", "3万元"));
-                list.add(new ListDataDTO("50000", "5万元"));
-                list.add(new ListDataDTO("100000", "10万元"));
-                list.add(new ListDataDTO("150000", "15万元"));
-                list.add(new ListDataDTO("200000", "20万元"));
-                list.add(new ListDataDTO("500000", "50万元"));
-                return list;
-            }
-
-        }
-
         @NoArgsConstructor
         @Data
         public static class ContractDTO {
@@ -1227,20 +1243,25 @@ public class HuaNongCrawlerQuotedPriceRequest implements Serializable, HuaNongHe
             @JsonProperty("coverage")
             private List<CoverageDTO> coverage;
 
-            public static ContractDTO getCiContractDTO(RiskInfoVo ciRiskInfoVo) {
+            private static ContractDTO getCiContractDTO(RiskInfoVo ciRiskInfoVo) {
                 ContractDTO contractDTO = new ContractDTO();
                 contractDTO.setContractMain(new ContractMainDTO());
 
                 return new ContractDTO();
             }
 
-            public static ContractDTO getBiContractDTO(RiskInfoVo biRiskInfoVo) {
+            private static ContractDTO getBiContractDTO(RiskInfoVo biRiskInfoVo, List<KindInfoVo> kindInfoVo) {
+                ContractDTO contractDTO = new ContractDTO();
+
+                List<CoverageDTO> coverageDTOS = kindInfoVo.stream().map(kind -> new CoverageDTO(biRiskInfoVo, kind)).toList();
+                contractDTO.setCoverage(coverageDTOS);
 
                 return new ContractDTO();
             }
 
-            public static List<ContractDTO> build(RiskInfoVo ciRiskInfoVo, RiskInfoVo biRiskInfoVo) {
-                return List.of(getCiContractDTO(ciRiskInfoVo), getBiContractDTO(biRiskInfoVo));
+
+            private static List<ContractDTO> build(RiskInfoVo ciRiskInfoVo, RiskInfoVo biRiskInfoVo, List<KindInfoVo> kindInfoVo) {
+                return List.of(getCiContractDTO(ciRiskInfoVo), getBiContractDTO(biRiskInfoVo, kindInfoVo));
             }
 
             @NoArgsConstructor
@@ -1730,15 +1751,15 @@ public class HuaNongCrawlerQuotedPriceRequest implements Serializable, HuaNongHe
                 @JsonProperty("commission")
                 private Integer commission;
                 @JsonProperty("coverageAdjustRate")
-                private Integer coverageAdjustRate;
+                private String coverageAdjustRate;
                 @JsonProperty("coveragePremium")
-                private Integer coveragePremium;
+                private String coveragePremium;
                 @JsonProperty("coveragePremiumRange")
-                private Integer coveragePremiumRange;
+                private String coveragePremiumRange;
                 @JsonProperty("coverageRiskPremium")
-                private Integer coverageRiskPremium;
+                private String coverageRiskPremium;
                 @JsonProperty("coverageStandardPremium")
-                private Integer coverageStandardPremium;
+                private String coverageStandardPremium;
                 @JsonProperty("deductible")
                 private Integer deductible;
                 @JsonProperty("deductibleRate")
@@ -1815,6 +1836,55 @@ public class HuaNongCrawlerQuotedPriceRequest implements Serializable, HuaNongHe
                 private Integer optNotDeductibleFlag;
                 @JsonProperty("ductibleRate")
                 private String ductibleRate;
+
+                private CoverageDTO(RiskInfoVo biRiskInfoVo, KindInfoVo kind) {
+                    this.amount = kind.getAmount();
+                    this.basePremium = 0;
+                    this.commission = 0;
+                    this.coverageAdjustRate = "";
+                    this.coveragePremium = "";
+                    this.coveragePremiumRange = "";
+                    this.coverageRiskPremium = "";
+                    this.coverageStandardPremium = "";
+                    this.deductible = 0;
+                    this.deductibleRate = 0;
+                    this.dutyCode = "";
+                    this.dutyName = "";
+                    this.eachDamageLimitAmount = 0;
+                    this.enndorFormual = "";
+                    this.expiryDate = biRiskInfoVo.getEndDate();
+                    this.flag = "";
+                    this.kindCode = kind.getKindCode();
+                    this.kindName = kind.getKindName();
+                    this.kindNo = 0;
+                    this.kindType = "";
+                    this.modeCode = "";
+                    this.modeName = "";
+                    this.noTaxPremium = 0;
+                    this.noTaxPremiumChg = 0;
+                    this.perRate = 0;
+                    this.perRateExt = 0;
+                    this.profitRate = 0;
+                    this.quantity = Integer.valueOf(kind.getQuantity());
+                    this.rate = 0;
+                    this.returnPremium = 0;
+                    this.seatCount = "";
+                    this.serviceTimes = "";
+                    this.shortRate = 0;
+                    this.shortRateType = "";
+                    this.surrenderPremium = 0;
+                    this.term = "";
+                    this.unitAmount = kind.getUnitAmount();
+                    this.unitPremium = 0;
+                    this.validDate = biRiskInfoVo.getStartDate();
+                    this.vat = 0;
+                    this.vatChg = 0;
+                    this.calculateFlag1 = "";
+                    this.choosed = false;
+                    this.notDeductibleFlag = false;
+                    this.optNotDeductibleFlag = 0;
+                    this.ductibleRate = "";
+                }
             }
         }
 

+ 53 - 2
tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/entity/request/HuaNongCrawlerSaveRequest.java

@@ -1,22 +1,25 @@
 package com.jzg.quote.huanong.crawler.entity.request;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quote.huanong.enums.dictionary.Risk;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
- * @version
  * @description: 华农财险 保存订单 请求
  * @author: wenks
  * @date: 2025/3/20 11:21
  **/
 @NoArgsConstructor
 @Data
-public class HuaNongCrawlerSaveRequest  implements Serializable, HuaNongHead  {
+public class HuaNongCrawlerSaveRequest implements Serializable, HuaNongHead {
 
     @Serial
     private static final long serialVersionUID = 5383273187105919255L;
@@ -28,6 +31,16 @@ public class HuaNongCrawlerSaveRequest  implements Serializable, HuaNongHead  {
     @JsonProperty("loginCom")
     private String loginCom;
 
+
+    public HuaNongCrawlerSaveRequest(List<HuaNongCrawlerQuotedPriceRequest.BusinessDataDTO.ContractDTO> contract,
+                                     List<HuaNongCrawlerQuotedPriceRequest.BusinessDataDTO.ContractAccidentDTO> contractAccident,
+                                     String token, String loginCom) {
+        this.head = new HuaNongCrawlerRequestBaseHead(token);
+        this.businessData = new BusinessDataDTO(contract, contractAccident);
+        this.loginCom = loginCom;
+    }
+
+
     @NoArgsConstructor
     @Data
     public static class BusinessDataDTO {
@@ -48,6 +61,27 @@ public class HuaNongCrawlerSaveRequest  implements Serializable, HuaNongHead  {
         @JsonProperty("ocrIdentityInfoId")
         private List<Object> ocrIdentityInfoId;
 
+        public BusinessDataDTO(List<HuaNongCrawlerQuotedPriceRequest.BusinessDataDTO.ContractDTO> contract,
+                               List<HuaNongCrawlerQuotedPriceRequest.BusinessDataDTO.ContractAccidentDTO> contractAccident) {
+            this.contract = new ArrayList<>();
+            contract.forEach(item -> {
+                String riskCode = item.getContractMain().getRiskCode();
+                if (Risk.RISK_0507.getRiskCode().equals(riskCode)) {
+                    this.ciDemandNo = item.getPlatFormMessage().getQuerySequenceNo();
+                } else {
+                    this.biDemandNo = item.getPlatFormMessage().getQuerySequenceNo();
+                }
+                this.contract.add(new ContractDTO(riskCode, item.getContractMain().getContractNo()));
+            });
+            this.contractGlass = Collections.emptyList();
+            this.contractHome = Collections.emptyList();
+            this.ocrCarInfoId = Collections.emptyList();
+            this.ocrIdentityInfoId = Collections.emptyList();
+            this.contractNveh = contractAccident.stream()
+                    .map(x -> new ContractNvehDTO(x.getContractMain()))
+                    .collect(Collectors.toList());
+        }
+
         @NoArgsConstructor
         @Data
         public static class ContractDTO {
@@ -63,6 +97,15 @@ public class HuaNongCrawlerSaveRequest  implements Serializable, HuaNongHead  {
             private String ocrId;
             @JsonProperty("peerComparisonFlag")
             private String peerComparisonFlag;
+
+            public ContractDTO(String riskCode, String contractNo) {
+                this.provisonalNo = contractNo;
+                this.relationProNo = contractNo;
+                this.proposalNo = "";
+                this.riskCode = riskCode;
+                this.ocrId = "";
+                this.peerComparisonFlag = "";
+            }
         }
 
         @NoArgsConstructor
@@ -76,6 +119,14 @@ public class HuaNongCrawlerSaveRequest  implements Serializable, HuaNongHead  {
             private String proposalNo;
             @JsonProperty("riskCode")
             private String riskCode;
+
+            public ContractNvehDTO(HuaNongCrawlerQuotedPriceRequest.BusinessDataDTO.ContractAccidentDTO.ContractMainDTO contractMain) {
+                this.provisonalNo = contractMain.getContractNo();
+                this.relationProNo = "";
+                this.proposalNo = "";
+                this.riskCode = contractMain.getNvehRiskCode();
+            }
         }
     }
 }
+

+ 27 - 0
tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/entity/response/HuaNongCrawlerFileSubmitResponse.java

@@ -0,0 +1,27 @@
+package com.jzg.quote.huanong.crawler.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @description: 华农财险 提交影像
+ * @author: wenks
+ * @date: 2025/3/27 16:00
+ **/
+@NoArgsConstructor
+@Data
+public class HuaNongCrawlerFileSubmitResponse {
+
+    @JsonProperty("code")
+    private String code;
+
+    @JsonProperty("message")
+    private String message;
+
+    @JsonProperty("data")
+    private List<String> data;
+
+}

+ 0 - 1
tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/entity/response/HuaNongCrawlerQuotedPriceResponse.java

@@ -16,7 +16,6 @@ import java.util.List;
 @Data
 public class HuaNongCrawlerQuotedPriceResponse {
 
-
     @JsonProperty("head")
     private HuaNongCrawlerBaseResponseHead head;
     @JsonProperty("businessData")

+ 9 - 4
tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/service/impl/HuaNongCrawlerQuoteProcessServiceImpl.java

@@ -15,6 +15,7 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Service;
 
+import java.io.File;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -92,8 +93,9 @@ public class HuaNongCrawlerQuoteProcessServiceImpl implements HuaNongCrawlerQuot
     @Override
     public HuaNongCrawlerQuotedPriceRequest.BusinessDataDTO.SaleInfoDTO attributionInformation(HuaNongCrawlerConfigureParameters huaNongCrawlerConfigureParameters, String username, String token) {
         HttpHeaders httpHeaders = new HttpHeaders();
+
         // 归属机构
-        HuaNongCrawlerComInfoQueryRequest huaNongCrawlerComInfoQueryRequest = new HuaNongCrawlerComInfoQueryRequest(huaNongCrawlerConfigureParameters.getComCode(), token);
+        HuaNongCrawlerComInfoQueryRequest huaNongCrawlerComInfoQueryRequest = new HuaNongCrawlerComInfoQueryRequest(huaNongCrawlerConfigureParameters.getLoginComCode(), token);
         HuaNongCrawlerComInfoQueryResponse huaNongCrawlerComInfoQueryResponse = huaNongCrawlerRequestComponent.comInfoQuery(huaNongCrawlerComInfoQueryRequest, httpHeaders);
         List<HuaNongCrawlerComInfoQueryResponse.ComListDTO> comList = huaNongCrawlerComInfoQueryResponse.getComList();
         Map<String, HuaNongCrawlerComInfoQueryResponse.ComListDTO> com = comList.stream()
@@ -130,12 +132,15 @@ public class HuaNongCrawlerQuoteProcessServiceImpl implements HuaNongCrawlerQuot
         HuaNongCrawlerNewImageQueryRequest huaNongCrawlerNewImageQueryRequest = new HuaNongCrawlerNewImageQueryRequest();
         String data = huaNongCrawlerRequestComponent.newImageQuery(huaNongCrawlerNewImageQueryRequest, new HttpHeaders());
         // 获取accessToken
-        String accessToken = huaNongCrawlerRequestComponent.bizUpload(data, new HttpHeaders());
+        HttpHeaders httpHeaders = new HttpHeaders();
+        String accessToken = huaNongCrawlerRequestComponent.bizUpload(data, httpHeaders);
         // 查询上传目录
-
+        huaNongCrawlerRequestComponent.catalogQuery(accessToken, "", httpHeaders);
         // 上传影像
-
+        huaNongCrawlerRequestComponent.fileUpload(accessToken, new File(""), httpHeaders);
         // 提交影像
+        HuaNongCrawlerFileSubmitRequest huaNongCrawlerFileSubmitRequest = new HuaNongCrawlerFileSubmitRequest();
+        huaNongCrawlerRequestComponent.fileSubmit(huaNongCrawlerFileSubmitRequest, accessToken, httpHeaders);
 
     }
 

+ 11 - 7
tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/service/impl/HuaNongCrawlerRequestImpl.java

@@ -30,6 +30,7 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
 import java.util.Optional;
 
 @Service(InsuranceCode.INSURANCE_HNIC)
@@ -51,7 +52,6 @@ public class HuaNongCrawlerRequestImpl implements HuaNongCrawlerRequest {
         huaNongCrawlerQuoteProcessService.login(loginBase.getUsername(), loginBase.getPassword(), true);
     }
 
-
     @Override
     public QuoteResultsVo quote(QuoteVo quoteVo) {
         HttpHeaders httpHeaders = new HttpHeaders();
@@ -60,24 +60,30 @@ public class HuaNongCrawlerRequestImpl implements HuaNongCrawlerRequest {
         String token = huaNongCrawlerGetToken.getToken(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
         // 归属信息
         HuaNongCrawlerQuotedPriceRequest.BusinessDataDTO.SaleInfoDTO saleInfoDTO = huaNongCrawlerQuoteProcessService.attributionInformation(huaNongCrawlerConfigureParameters, attributionInformationVo.getUsername(), token);
+        String loginComCode = huaNongCrawlerConfigureParameters.getLoginComCode();
 
         // 车型查询
         CarInfoVo carInfoVo = quoteVo.getCarInfoVo();
-        HuaNongCrawlerModelsQueryRequest huaNongCrawlerModelsQueryRequest = new HuaNongCrawlerModelsQueryRequest(token, huaNongCrawlerConfigureParameters.getComCode(), carInfoVo);
+        HuaNongCrawlerModelsQueryRequest huaNongCrawlerModelsQueryRequest = new HuaNongCrawlerModelsQueryRequest(token, loginComCode, carInfoVo);
         HuaNongCrawlerModelsQueryResponse huaNongCrawlerModelsQueryResponse = huaNongCrawlerRequestComponent.modelsQuery(huaNongCrawlerModelsQueryRequest, httpHeaders);
         HuaNongCrawlerModelsQueryResponse.CarModelDTO carModelDTO = CarModelsFilterUtils.to(huaNongCrawlerModelsQueryResponse.getCarModel(), carInfoVo);
 
         // 折旧价查询
-        HuaNongCrawlerActualValueRequest huaNongCrawlerActualValueRequest = new HuaNongCrawlerActualValueRequest(token, huaNongCrawlerConfigureParameters.getComCode(), carModelDTO, carInfoVo);
+        HuaNongCrawlerActualValueRequest huaNongCrawlerActualValueRequest = new HuaNongCrawlerActualValueRequest(token, loginComCode, carModelDTO, carInfoVo);
         String actualValue = huaNongCrawlerRequestComponent.actualValue(huaNongCrawlerActualValueRequest, httpHeaders);
 
         // 保费计算
-        HuaNongCrawlerQuotedPriceRequest huaNongCrawlerQuotedPriceRequest = new HuaNongCrawlerQuotedPriceRequest(token, attributionInformationVo.getUsername(), quoteVo, carModelDTO, actualValue);
+        HuaNongCrawlerQuotedPriceRequest huaNongCrawlerQuotedPriceRequest = new HuaNongCrawlerQuotedPriceRequest(token, attributionInformationVo.getUsername(), quoteVo, carModelDTO, huaNongCrawlerConfigureParameters, actualValue);
         huaNongCrawlerQuotedPriceRequest.getBusinessData().setSaleInfo(saleInfoDTO);
         HuaNongCrawlerQuotedPriceResponse huaNongCrawlerQuotedPriceResponse = huaNongCrawlerRequestComponent.quotedPrice(huaNongCrawlerQuotedPriceRequest, httpHeaders);
 
         // 保存
-        HuaNongCrawlerSaveRequest huaNongCrawlerSaveRequest = new HuaNongCrawlerSaveRequest();
+        List<HuaNongCrawlerQuotedPriceRequest.BusinessDataDTO.ContractDTO> contract = huaNongCrawlerQuotedPriceRequest.getBusinessData()
+                .getContract();
+        List<HuaNongCrawlerQuotedPriceRequest.BusinessDataDTO.ContractAccidentDTO> contractAccident = huaNongCrawlerQuotedPriceRequest.getBusinessData()
+                .getContractAccident();
+
+        HuaNongCrawlerSaveRequest huaNongCrawlerSaveRequest = new HuaNongCrawlerSaveRequest(contract, contractAccident, token, loginComCode);
         huaNongCrawlerRequestComponent.save(huaNongCrawlerSaveRequest, httpHeaders);
 
         return HuaNongCrawlerQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo.getOrder()
@@ -119,7 +125,6 @@ public class HuaNongCrawlerRequestImpl implements HuaNongCrawlerRequest {
         HuaNongCrawlerConfigureParameters huaNongCrawlerConfigureParameters = ConfigureParametersConversion.conversionEntity(HuaNongCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
         String token = huaNongCrawlerCacheComponent.getToken(attributionInformationVo.getUsername());
 
-
     }
 
     @Override
@@ -165,7 +170,6 @@ public class HuaNongCrawlerRequestImpl implements HuaNongCrawlerRequest {
         HuaNongCrawlerFindBusinessesRequest huaNongCrawlerFindBusinessesRequest = new HuaNongCrawlerFindBusinessesRequest();
         huaNongCrawlerRequestComponent.findBusinesses(huaNongCrawlerFindBusinessesRequest, httpHeaders);
 
-
     }