xuqiang пре 1 година
родитељ
комит
39d2a7a640
17 измењених фајлова са 201 додато и 89 уклоњено
  1. 7 0
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/api/component/HuaTaiRequestApiComponent.java
  2. 42 33
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/api/component/HuiTaiUploadImageComponent.java
  3. 1 1
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/api/constant/TimeConstants.java
  4. 1 1
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/api/entity/request/HuaTaiQuotedPriceRequest.java
  5. 1 1
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/api/entity/request/HuaTaiSubmitRequest.java
  6. 33 9
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/api/entity/response/HuaTaiImageInitParamResponse.java
  7. 42 18
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/api/service/Impl/HuaTaiApiRequestImpl.java
  8. 6 0
      tenant/insurance/quotation-summary/pom.xml
  9. 19 4
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/CarModelController.java
  10. 27 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/entity/po/ModelsQueryQueryVo.java
  11. 1 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/CarModelService.java
  12. 6 5
      tenant/insurance/quotation-summary/src/main/resources/application.yaml
  13. 4 6
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/Request/ZmCrawlerModelQueryRequest.java
  14. 4 4
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/Request/ZmCrawlerNetpointQueryRequest.java
  15. 2 2
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/Response/ZmCrawlerNetpointQueryResponse.java
  16. 3 3
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/dto/SaleInfoDTO.java
  17. 2 2
      tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/crawler/entity/Response/ZmCrawlerModelQueryResponse.java

+ 7 - 0
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/api/component/HuaTaiRequestApiComponent.java

@@ -2,6 +2,7 @@ package com.jzg.quotation.huatai.api.component;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.alibaba.fastjson2.JSONObject;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.quotation.commons.component.RequestComponent;
 import com.jzg.quotation.huatai.api.entity.request.*;
@@ -104,6 +105,12 @@ public class HuaTaiRequestApiComponent {
         String aseDecryptStr = AESUtilsWithDataBase.decryptECBPK5Base64(encryptRes.getBusiContent(), resAccessToken);
         //3.使用Base64解密最终返回报文
         String text = Base64Utils.getBase64Decode(aseDecryptStr);
+        if (StringUtils.isNotBlank(text)){
+            JSONObject jsonObject = JSONObject.parseObject(text);
+            if (StringUtils.equals("-1",String.valueOf(jsonObject.get("returnCode")))){
+                throw new SystemException(String.valueOf(jsonObject.get("returnMessage")));
+            }
+        }
         // ------解密ending---------
 //        InsuranceLog.infoLog(InsuranceEnum.HTIC.getPinyin(), "\n\t---------> {}:{}", "响应参数", text);
         S t = JSON.parseObject(text, tClass);

+ 42 - 33
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/api/component/HuiTaiUploadImageComponent.java

@@ -10,11 +10,17 @@ import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.core.io.ByteArrayResource;
 import org.springframework.http.*;
 import org.springframework.stereotype.Component;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
 import org.springframework.web.client.RestTemplate;
 
-import java.io.*;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.*;
@@ -29,9 +35,9 @@ import java.util.*;
 @Slf4j
 public class HuiTaiUploadImageComponent {
     private final RestTemplate restTemplate;
-    private static final String INIT_PARAM = "/h5img/app/ImgManager/initParam.cmd?t=";
-    private static final String FILE_UPLOAD = "/h5img/fileupload";
-    private static final String SAVE_FILE_IDX = "/h5img/app/ImgManager/saveFileIdx.cmd";
+    private static final String INIT_PARAM = "/h5img/app/ImgManager/initParam.cdo?t=";
+    private static final String FILE_UPLOAD = "/h5img/app/ImgFileUpload/upload.do";
+    private static final String SAVE_FILE_IDX = "/h5img/app/ImgManager/saveFileIdx.cdo";
 
     private final InsImagesUploadCacheComponent insImagesUploadCacheComponent;
 
@@ -58,9 +64,8 @@ public class HuiTaiUploadImageComponent {
                 token = pair[1];
             }
         }
-
         HuaTaiImageInitParamResponse initParamResponse = initParam(domain, token);
-        List<HuaTaiImageInitParamResponse.TypeSelectVosDTO.ChildrenDTO> childrenDTO = initParamResponse.getChildrenDTO();
+        List<HuaTaiImageInitParamResponse.TypeTreeNodeVoDTO.ChildrenDTO> childrenDTO = initParamResponse.getChildrenDTO();
         // 使用map 存储上传类型和图片
         Map<String, List<String>> map = new HashMap<>();
         for (InsuranceImageVo insuranceImageVo : imageVoList) {
@@ -78,7 +83,7 @@ public class HuiTaiUploadImageComponent {
                             HuaTaiImageInitParamResponse.TypeSelectVosDTO.ChildrenDTO childrenDTO1 =
                                     HuaTaiImageInitParamResponse.filteringTypeCode(childrenDTO, fileTypeEnum.getCode());
 
-                            FileuploadResult fileupload = fileupload(domain, token, initParamResponse, imageDTO.getImageBase64Str(), file);
+                            FileUploadResult fileupload = fileupload(domain, token, initParamResponse, imageDTO.getImageByte(), file,childrenDTO1);
                             saveFileIdx(domain, token, initParamResponse, fileupload, fileName, childrenDTO1);
                             imageIds.add(imageDTO.getImageId());
                         } catch (Exception e) {
@@ -91,7 +96,6 @@ public class HuiTaiUploadImageComponent {
             }
             map.put(insuranceImageVo.getImageCode(), imageIds);
         }
-
         insImagesUploadCacheComponent.setUploadImageCache(companyId, map);
     }
 
@@ -104,9 +108,9 @@ public class HuiTaiUploadImageComponent {
      */
     private HuaTaiImageInitParamResponse initParam(String domain, String token) {
         HttpHeaders httpHeaders = new HttpHeaders();
-        // token
-        httpHeaders.set("Cookie", "token=" + token);
-        String initParamUrl = domain + INIT_PARAM + System.currentTimeMillis();
+        httpHeaders.setContentType(MediaType.APPLICATION_JSON);
+        httpHeaders.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
+        String initParamUrl = domain + INIT_PARAM + System.currentTimeMillis() + "&token=" + token;
         HttpEntity<Object> httpEntity = new HttpEntity<>(null, httpHeaders);
         ResponseEntity<HuaTaiImageInitParamResponse> response = restTemplate.exchange(initParamUrl, HttpMethod.GET, httpEntity,
                 HuaTaiImageInitParamResponse.class);
@@ -118,26 +122,32 @@ public class HuiTaiUploadImageComponent {
      *
      * @return 文件路径
      */
-    private FileuploadResult fileupload(String domain, String token, HuaTaiImageInitParamResponse initParamResponse, String imageBase64Str,
-                                        String fileName) {
-        byte[] bytes = Base64.getDecoder().decode(imageBase64Str);
-        double v = (double) bytes.length / 1024;
+    private FileUploadResult fileupload(String domain, String token, HuaTaiImageInitParamResponse initParamResponse, byte[] imageBase64Str,
+                                        String fileName, HuaTaiImageInitParamResponse.TypeSelectVosDTO.ChildrenDTO childrenDTO1) {
+        // 请求参数
+        MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
+        ByteArrayResource byteArrayResource = new ByteArrayResource(imageBase64Str) {
+            @Override
+            public String getFilename() {
+                return fileName;
+            }
+        };
+        HttpHeaders httpHeadersFile = new HttpHeaders();
+        httpHeadersFile.setContentType(MediaType.IMAGE_JPEG);
+        body.set("file", new HttpEntity<>(byteArrayResource, httpHeadersFile));
+        body.set("token", token);
+        body.set("bussModule", childrenDTO1.getBussType());
+        body.set("bussNo", childrenDTO1.getBussNo());
+        body.set("fileName", fileName);
+        body.set("saveFileName", null);
+        body.set("bucket", initParamResponse.getStorageType());
+        body.set("storageType", initParamResponse.getStorageType());
+        // 请求头
         HttpHeaders httpHeaders = new HttpHeaders();
-        httpHeaders.setAccept(Collections.singletonList(MediaType.MULTIPART_FORM_DATA));
-        httpHeaders.set("Bucket", initParamResponse.getStorageType());
-        httpHeaders.set("Bussmodule", initParamResponse.getBussType());
-        httpHeaders.set("Bussno", initParamResponse.getBussNo());
-
-        // token
-        httpHeaders.set("Token", token);
-        // 文件名称
-        httpHeaders.set("Filename", fileName);
-        httpHeaders.setContentType(MediaType.IMAGE_JPEG);
-        HttpEntity<byte[]> httpEntity = new HttpEntity<>(bytes, httpHeaders);
-
-        String fileuploadUrl = domain + FILE_UPLOAD;
-        ResponseEntity<String> response = restTemplate.postForEntity(fileuploadUrl, httpEntity, String.class);
-        return new FileuploadResult(response.getBody(), v);
+        httpHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
+        HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(body, httpHeaders);
+        ResponseEntity<String> response = restTemplate.postForEntity(domain + FILE_UPLOAD, httpEntity, String.class);
+        return new FileUploadResult(response.getBody().substring(1, response.getBody().length() - 1), (double) imageBase64Str.length / 1024);
     }
 
 
@@ -149,7 +159,7 @@ public class HuiTaiUploadImageComponent {
      * @param fileName    文件名称
      * @param childrenDTO 上传的文件类型
      */
-    private void saveFileIdx(String domain, String token, HuaTaiImageInitParamResponse response, FileuploadResult fileupload,
+    private void saveFileIdx(String domain, String token, HuaTaiImageInitParamResponse response, FileUploadResult fileupload,
                              String fileName,
                              HuaTaiImageInitParamResponse.TypeSelectVosDTO.ChildrenDTO childrenDTO) {
         HuaTaiSaveFileIdxRequest huaTaiSaveFileIdxRequest = new HuaTaiSaveFileIdxRequest(token, response, fileupload, fileName,
@@ -157,7 +167,6 @@ public class HuiTaiUploadImageComponent {
         huaTaiSaveFileIdxRequest.getFileIdxVo().setImgId(System.currentTimeMillis());
         HttpHeaders httpHeaders = new HttpHeaders();
         httpHeaders.setContentType(MediaType.APPLICATION_JSON);
-        httpHeaders.set("Cookie", "token=" + token);
         HttpEntity<HuaTaiSaveFileIdxRequest> httpEntity = new HttpEntity<>(huaTaiSaveFileIdxRequest, httpHeaders);
         String saveFileIdxUrl = domain + SAVE_FILE_IDX;
         restTemplate.postForEntity(saveFileIdxUrl, httpEntity, String.class);
@@ -166,7 +175,7 @@ public class HuiTaiUploadImageComponent {
 
     @AllArgsConstructor
     @Data
-    public static class FileuploadResult {
+    public static class FileUploadResult {
 
         private String filePath;
 

+ 1 - 1
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/api/constant/TimeConstants.java

@@ -13,5 +13,5 @@ public class TimeConstants {
 
     public static final String START_TIME = "00:00:00";
 
-    public static final String END_TIME = "00:00:00";
+    public static final String END_TIME = "23:59:59";
 }

+ 1 - 1
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/api/entity/request/HuaTaiQuotedPriceRequest.java

@@ -797,7 +797,7 @@ public class HuaTaiQuotedPriceRequest extends HuaTaiBaseRequest {
             int randomNum = new Random().nextInt(HuaTaiBaseCode.getOccupation().size());
             this.occupationCode = HuaTaiBaseCode.getOccupation().get(randomNum);//后续需要根据接口维护返参到表里
             this.identifyValidDate = customerInfoVo.getIdentifyValidDate() + " " + TimeConstants.START_TIME;
-            this.identifyValidEndDate = customerInfoVo.getIdentifyValidEndDate() + " " + TimeConstants.END_TIME;
+            this.identifyValidEndDate = customerInfoVo.getIdentifyValidEndDate() + " " + TimeConstants.START_TIME;
             if ("2".equals(role)) {
                 this.carInsuredRelation = "1";
             }

+ 1 - 1
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/api/entity/request/HuaTaiSubmitRequest.java

@@ -434,7 +434,7 @@ public class HuaTaiSubmitRequest extends HuaTaiBaseRequest {
             this.type = "1";
             this.occupationCode = "20114";//后续需要根据接口维护返参到表里
             this.identifyValidDate = customerInfoVo.getIdentifyValidDate() + " " + TimeConstants.START_TIME;
-            this.identifyValidEndDate = customerInfoVo.getIdentifyValidEndDate() + " " + TimeConstants.END_TIME;
+            this.identifyValidEndDate = customerInfoVo.getIdentifyValidEndDate() + " " + TimeConstants.START_TIME;
             this.addr = customerInfoVo.getAddr();
             this.email = "123@qq.com";
             if (StringUtils.isNotEmpty(customerInfoVo.getEmail())) {

+ 33 - 9
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/api/entity/response/HuaTaiImageInitParamResponse.java

@@ -1,8 +1,11 @@
 package com.jzg.quotation.huatai.api.entity.response;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
 
 import java.util.List;
 import java.util.stream.Collectors;
@@ -12,6 +15,7 @@ import java.util.stream.Collectors;
  * @author: shenwd
  * @date: 2025/3/12 09:42
  **/
+@Slf4j
 @NoArgsConstructor
 @Data
 public class HuaTaiImageInitParamResponse {
@@ -50,7 +54,7 @@ public class HuaTaiImageInitParamResponse {
     private String comName;
 
     @JsonProperty("docId")
-    private Integer docId;
+    private Long docId;
 
     @JsonProperty("documentFile")
     private String documentFile;
@@ -133,12 +137,32 @@ public class HuaTaiImageInitParamResponse {
     @JsonProperty("viewType")
     private String viewType;
 
-    public List<TypeSelectVosDTO.ChildrenDTO> getChildrenDTO() {
-        return this.getTypeSelectVos().stream().map(TypeSelectVosDTO::getChildren).flatMap(List::stream).collect(Collectors.toList());
+    public List<TypeTreeNodeVoDTO.ChildrenDTO> getChildrenDTO() {
+        return this.getTypeTreeNodeVo().getChildren();
+        //return this.getTypeSelectVos().stream().map(TypeSelectVosDTO::getChildren).flatMap(List::stream).collect(Collectors.toList());
     }
 
-    public static TypeSelectVosDTO.ChildrenDTO filteringTypeCode(List<TypeSelectVosDTO.ChildrenDTO> list, String typeCode){
-        return list.stream().filter(x -> x.getTypeCode().equals(typeCode)).collect(Collectors.toList()).get(0);
+    public static TypeSelectVosDTO.ChildrenDTO filteringTypeCode(List<TypeTreeNodeVoDTO.ChildrenDTO> list, String typeCode){
+       try {
+           // 检查输入参数是否为空,避免空指针异常
+           if (list == null || typeCode == null) {
+               log.warn("输入参数为空,list: {}, typeCode: {}", list, typeCode);
+               return null;
+           }
+           List<JSONObject> parsed = JSONObject.parseObject(JSONObject.toJSONString(
+                   list.stream().filter(v -> ObjectUtils.isNotEmpty(v.getChildren()))
+                           .flatMap(s -> JSONObject.parseObject(JSONObject.toJSONString(s.getChildren()), List.class).stream())
+                           .collect(Collectors.toList())
+           ), List.class);
+           JSONObject jsonObject = parsed.stream().filter(v -> ObjectUtils.isNotEmpty(v.get("typeCode")) && v.get("typeCode").equals(typeCode)).findAny().orElse(new JSONObject());
+           log.info("parsed: {}", jsonObject);
+           TypeSelectVosDTO.ChildrenDTO childrenDTO = JSONObject.parseObject(JSONObject.toJSONString(jsonObject), TypeSelectVosDTO.ChildrenDTO.class);
+           return childrenDTO;
+       }catch (Exception e){
+           e.printStackTrace();
+           log.warn("过滤失败,typeCode: {}", typeCode);
+           return new TypeSelectVosDTO.ChildrenDTO();
+       }
     }
 
     @NoArgsConstructor
@@ -174,7 +198,7 @@ public class HuaTaiImageInitParamResponse {
         @JsonProperty("count")
         private Integer count;
         @JsonProperty("docId")
-        private Integer docId;
+        private Long docId;
         @JsonProperty("docMaxSize")
         private Integer docMaxSize;
         @JsonProperty("label")
@@ -226,7 +250,7 @@ public class HuaTaiImageInitParamResponse {
             @JsonProperty("count")
             private Integer count;
             @JsonProperty("docId")
-            private Object docId;
+            private Long docId;
             @JsonProperty("docMaxSize")
             private Integer docMaxSize;
             @JsonProperty("label")
@@ -280,7 +304,7 @@ public class HuaTaiImageInitParamResponse {
         @JsonProperty("count")
         private Integer count;
         @JsonProperty("docId")
-        private Integer docId;
+        private Long docId;
         @JsonProperty("docMaxSize")
         private Integer docMaxSize;
         @JsonProperty("label")
@@ -332,7 +356,7 @@ public class HuaTaiImageInitParamResponse {
             @JsonProperty("count")
             private Integer count;
             @JsonProperty("docId")
-            private Integer docId;
+            private Long docId;
             @JsonProperty("docMaxSize")
             private Integer docMaxSize;
             @JsonProperty("label")

+ 42 - 18
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/api/service/Impl/HuaTaiApiRequestImpl.java

@@ -2,15 +2,16 @@ package com.jzg.quotation.huatai.api.service.Impl;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson2.JSONObject;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.entity.quote.vo.AccidentalDrivingVo;
+import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
+import com.jzg.commons.entity.quote.vo.CarInfoVo;
+import com.jzg.commons.entity.quote.vo.RiskInfoVo;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.quotation.commons.constant.InsuranceCode;
 import com.jzg.quotation.commons.entity.vo.aggregated.*;
 import com.jzg.quotation.commons.entity.vo.base.OrderBase;
-import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
-import com.jzg.commons.entity.quote.vo.CarInfoVo;
-import com.jzg.commons.entity.quote.vo.RiskInfoVo;
 import com.jzg.quotation.commons.filter.CarModelsFilterUtils;
 import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
 import com.jzg.quotation.huatai.api.build.HuaTaiApiQuoteResultsVoBuild;
@@ -150,6 +151,10 @@ public class HuaTaiApiRequestImpl implements HuaTaiApiRequest {
         HuaTaiSubmitRequest submitRequest = new HuaTaiSubmitRequest(huaTaiApiOrder, huaTaiParameters, engageList);
         HuaTaiSubmitResponse submitResponse = huataiRequestApiComponent.submit(submitRequest, HuaTaiSubmitResponse.class, huaTaiParameters.getInsuredCode());
 
+       // String str = "{\"appliResult\":[{\"contractNo\":\"B2781250425MM000003\",\"notion\":[{\"uWNotion\":\"交强险:2278110022025000020 投保预确认失败 \\n原因:投保业务:投保业务:中国银保信车险平台友情提示:投保(预)确认时间应早于或等于保险起期。\",\"uWResult\":\"您的业务无法正常生成订单,请联系店主15175223697咨询\",\"uWType\":\"CI\"}],\"status\":\"6\"}],\"head\":{\"returnCode\":\"0\",\"returnMessage\":\"成功\",\"token\":\"\",\"transCode\":\"SAVE\",\"transType\":\"RES\"}}";
+
+
+        log.info("提交保单返回信息:{}", JSONObject.toJSONString(submitResponse));
         if ("-1".equals(submitResponse.getHead().getReturnCode())) {
             throw new SystemException(submitResponse.getHead().getReturnMessage());
         }
@@ -218,16 +223,30 @@ public class HuaTaiApiRequestImpl implements HuaTaiApiRequest {
                 totalStatus = "0";
             }
         }
-
+        UnderwritingResultsVo underwritingResultsVo = new UnderwritingResultsVo();
         if ("4".equals(totalStatus)) {
+            underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
             //再调用缴费接口获取缴费链接
             //return getPayURL(insAreaCompany, huaTaiConfigureParameters);
         } else if ("1".equals(totalStatus)) {
+            //人工核保
+            underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.STAFF_PROCESS);
+            underwritingResultsVo.setUnderwritingResult("人工处理");
             //调用提交核保接口
             HuaTaiSubmitStatusQueryResponse huaTaiSubmitStatusQueryResponse = submitStatus(huaTaiApiOrder, huaTaiParameters, "1");
 
+        }else {
+            //核保退回
+            StringBuilder sb = new StringBuilder();
+            for (HuaTaiSubmitResponse.AppliResult appliResult : submitResponse.getAppliResult()) {
+                for (HuaTaiSubmitResponse.Notion notion : appliResult.getNotion()) {
+                    sb.append(StringUtils.equals("C1",notion.getUWType()) ? "交强险提示信息:s%" : " 商业险提示信息:s%").append(notion.getUWNotion());
+                }
+            }
+            underwritingResultsVo.setUnderwritingResult(sb.toString());
+            underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
         }
-        UnderwritingResultsVo underwritingResultsVo = new UnderwritingResultsVo();
+
         return underwritingResultsVo;
     }
 
@@ -264,19 +283,24 @@ public class HuaTaiApiRequestImpl implements HuaTaiApiRequest {
      */
     @Override
     public void uploadImage(InsuranceUploadImageVo insuranceUploadImageVo) {
-        OrderBase orderBase = insuranceUploadImageVo.getOrder();
-        AttributionInformationVo attributionInformationVo = orderBase.getAttributionInformationVo();
-        //配置信息
-        HuaTaiConfigureParameters huaTaiParameters = ConfigureParametersConversion.conversionEntity(HuaTaiConfigureParameters.class, attributionInformationVo.getConfigInfo());
-
-        HuaTaiApiOrder huaTaiApiOrder = huaTaiApiOrderService.findByOrdersNo(orderBase.getOrdersNo());
-        HuaTaiUploadImageRequest uploadImageRequest = new HuaTaiUploadImageRequest(huaTaiApiOrder, huaTaiParameters);
-        uploadImageRequest.setHead(new HuaTaiBaseRequestHead(huaTaiParameters));
-        //返回影像上传url
-        HuaTaiUploadImageResponse huaTaiUploadImageResponse = huataiRequestApiComponent.uploadImage(uploadImageRequest, HuaTaiUploadImageResponse.class, huaTaiParameters.getInsuredCode());
-
-        //爬虫方式进行图片上传
-        huiTaiUploadImageComponent.uploadImage(orderBase.getInsuranceCompanyCode(), huaTaiUploadImageResponse.getUrl(), insuranceUploadImageVo.getImageVoList());
+        try {
+            OrderBase orderBase = insuranceUploadImageVo.getOrder();
+            AttributionInformationVo attributionInformationVo = orderBase.getAttributionInformationVo();
+            //配置信息
+            HuaTaiConfigureParameters huaTaiParameters = ConfigureParametersConversion.conversionEntity(HuaTaiConfigureParameters.class, attributionInformationVo.getConfigInfo());
+
+            HuaTaiApiOrder huaTaiApiOrder = huaTaiApiOrderService.findByOrdersNo(orderBase.getOrdersNo());
+            HuaTaiUploadImageRequest uploadImageRequest = new HuaTaiUploadImageRequest(huaTaiApiOrder, huaTaiParameters);
+            uploadImageRequest.setHead(new HuaTaiBaseRequestHead(huaTaiParameters));
+            //返回影像上传url
+            HuaTaiUploadImageResponse huaTaiUploadImageResponse = huataiRequestApiComponent.uploadImage(uploadImageRequest, HuaTaiUploadImageResponse.class, huaTaiParameters.getInsuredCode());
+
+            //爬虫方式进行图片上传
+            huiTaiUploadImageComponent.uploadImage(orderBase.getInsuranceCompanyCode(), huaTaiUploadImageResponse.getUrl(), insuranceUploadImageVo.getImageVoList());
+        }catch (Exception e){
+            log.error("华泰影像上传失败",e.getMessage());
+            throw new RuntimeException("华泰影像上传失败");
+        }
     }
 
     /**

+ 6 - 0
tenant/insurance/quotation-summary/pom.xml

@@ -33,6 +33,12 @@
 <!--            <artifactId>quotation-zijin</artifactId>-->
 <!--            <version>1.0-SNAPSHOT</version>-->
 <!--        </dependency>-->
+
+        <dependency>
+            <groupId>com.jzg</groupId>
+            <artifactId>quotation-zhongmei</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
         <dependency>
             <groupId>com.jzg</groupId>
             <artifactId>quotation-commons</artifactId>

+ 19 - 4
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/CarModelController.java

@@ -3,13 +3,12 @@ package com.jzg.quotation.summary.controller;
 import com.alibaba.fastjson.JSONObject;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.vo.CarModelDTO;
+import com.jzg.quotation.summary.entity.po.ModelsQueryQueryVo;
 import com.jzg.quotation.summary.service.CarModelService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.Comparator;
 import java.util.List;
@@ -41,4 +40,20 @@ public class  CarModelController {
         JSONObject jsonObject = carModelService.licenseSearch(licenseNo);
         return HttpResult.ok(jsonObject);
     }
+
+
+    @PostMapping(value = "/modelsQuery")
+    @Operation(description = "车型查询接口")
+    public HttpResult<List<CarModelDTO>> modelsQuery(@RequestBody ModelsQueryQueryVo modelsQueryQueryVo) {
+        List<CarModelDTO> map = carModelService.modelsQuery(modelsQueryQueryVo.getModelName());
+        List<CarModelDTO> carModelDTOS =
+                map.stream().sorted(Comparator.comparing(CarModelDTO::getReplacementValue)).collect(Collectors.toList());
+        if (!StringUtils.isEmpty(modelsQueryQueryVo.getMarketYear())) {
+            List<CarModelDTO> collect = carModelDTOS.stream().filter(x -> !StringUtils.isEmpty(x.getMarketYear()) && x.getMarketYear().startsWith(modelsQueryQueryVo.getMarketYear())).collect(Collectors.toList());
+            return HttpResult.ok(collect);
+        }
+        return HttpResult.ok(carModelDTOS);
+    }
+
+
 }

+ 27 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/entity/po/ModelsQueryQueryVo.java

@@ -0,0 +1,27 @@
+package com.jzg.quotation.summary.entity.po;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * 品牌型号
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ModelsQueryQueryVo implements Serializable {
+
+    private static final long serialVersionUID = -1276536546447504673L;
+
+    @Schema(description = "品牌型号")
+    private String modelName;
+
+    @Schema(description = "年款")
+    private String marketYear;
+
+}

+ 1 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/CarModelService.java

@@ -11,4 +11,5 @@ public interface CarModelService {
 
     JSONObject licenseSearch(String licenseNo);
 
+    List<CarModelDTO> modelsQuery(String modelName);
 }

+ 6 - 5
tenant/insurance/quotation-summary/src/main/resources/application.yaml

@@ -135,13 +135,14 @@ guoren:
 huatai:
   api:
     sourceCode: '016'
-    baseUrl: https://gears.pc.ehuatai.com:9040/interFaces/common/AutoInsuranceQuotation.do
-    selfPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBOtXf1T/no13LOuy5ti+/d+SADHns8hAv3+LjhDFsQRbHk3tHhnUNX7I8b25576AVmgraefS7jnpyB299f58PK8WkWZN+UB6pcyEpktrtqOnKcaQSTbkQzaseCW4sCRdoea0alzSXUuXC2FN0pHAE3JkT07e5doX3IHas2GJAkwIDAQAB
-    selfPrivateKey: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAME61d/VP+ejXcs67Lm2L7935IAMeezyEC/f4uOEMWxBFseTe0eGdQ1fsjxvbnnvoBWaCtp59LuOenIHb31/nw8rxaRZk35QHqlzISmS2u2o6cpxpBJNuRDNqx4JbiwJF2h5rRqXNJdS5cLYU3SkcATcmRPTt7l2hfcgdqzYYkCTAgMBAAECgYAwAAWRDNBLInHyQjj8CR3jWk0Q4giHq7oJqnwaOIRud9zIxwIgym3ZXKRSDvxKnhQOSa3Yh+MblFEmcmJnsoQ4OedLq7FVOw1eur/nw6jMcROT6ZiP512ZGgKZI1OdkQDpjCqM9Vg1brrFuGdV2RwI9ak2bjKbi7vs6slvd4r3AQJBAOqU+5xkyuaupg9cO/7TIxMgnTQH8W7IC1uDcx3f28QdkP+udJYfU/n1dYyGuhkW66KVANSqz4dsrEiAmfhvydECQQDS304+LEvPi4j8YmNlOXrs1o8H0tPB69svC9ER2YbrTjZf49XvY9fuor11XAprXZhBp8yvJu07FuRWilrQ8FkjAkEAop1qmqzIdweE+ErxECJfQygtsd77v9cPAH5sM752Q0pXtNbD3TmUZkeBGExg/3mDGW5/Z+2M9Y0hFRWJJs6fsQJAO11mV5Z82Tb9H6BLPyoJczeMGLW/q65MjFgVSaMlmoTwRdqMVdKT7bifAbUhscwtmv40X3LkAmiVa8+TdZLUZQJACu2NgPZkw6gjKCZf5xOfvKaC3PqKlhPghq+ypyutzTih9y81+EBJ25emLWNcd5BtIZ/AXmr3UUiGg0zX4s5njA==
+    #    baseUrl: https://gears.pc.ehuatai.com:9003/interFaces/common/AutoInsuranceQuotation.do
+    baseUrl: https://hound_t.pc.ehuatai.com/third/interFaces/common/AutoInsuranceQuotation.do
+    selfPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYUuKVmeF5N66v6MQmOR8pt4o33yrio/ZrDf2ehk/kHJ2BYdI+xE9dLrZW5dm0y8yPpIHN39JaLuYOlWz5DVsWJTSPj9eaq0hOiY9BGAHJ3yMHdX3wygpcD11BVc5v4wbX/kyAhmatK69sb4zzAtEve1NS/YwZVuGch0CrkGw3YQIDAQAB
+    selfPrivateKey: MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAJhS4pWZ4Xk3rq/oxCY5Hym3ijffKuKj9msN/Z6GT+QcnYFh0j7ET10utlbl2bTLzI+kgc3f0lou5g6VbPkNWxYlNI+P15qrSE6Jj0EYAcnfIwd1ffDKClwPXUFVzm/jBtf+TICGZq0rr2xvjPMC0S97U1L9jBlW4ZyHQKuQbDdhAgMBAAECgYAktOyXYoK8RFfbWjtSfrdsxScQub3K6foq6C8y8Wj1LpQiJqGUsJfze5tDK5agA/CiuODy7LnzM5QK9aVSCw7k0r8EeGpHcYRdLYZM0vXVFK2gIQctFemK4c6sg5p0Bn1LNRbJG7rgMMEA/OxcF6vyQahhFtPVtAQwc+dT0PV51QJBANd66rfTuxSRvIC/RE4W6iqzed2YZtx+0kd7KiN78Y4X6spposFCH4ALf4jUeRRXZAm+Qu71cq21m2GsQZ8bZdMCQQC096ilZXEjmEuvopQR3JvPbgAF+MtItusyDDsMR1CWwXq9XGMmxi6GhFY7r7C8b40j1IchVAEY5BcwxJwfjql7AkAp5QYZs5reBu/FgGqBXEcvAjIheW4WVLoBl9q7h2+RlujZbexs8rQ5KwMi0VyxLcSPeGR/HU2spHCPbvRbQPJtAkBANK4tIHSnwFz6D6ChRbgyPEDd3YuiXOPNefFpRdQd6L93d9Pl6eKP71v5CTiXYqyczcaz2G4bOrHPp7IMsD0JAkBO/q3ZMT+Nj2jdMn2AR1h+ngn38JnK46PznU0WoRPx72YoWbLxvaGWpu8scZAhpYeq/n+52NHFfu8ayDRNWjP2
     huaTaiPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYyF2SBNzLOP5N5fFW2T2eQ5+iaI5wVpsedu+UY290TVuG152tkdtSuTXsx+8BKnd79/PF966/2aSP4EUm7vD9kvQUnX2EDUiMooorGvDTRxoHNXFGqOtxdMiUOuqx19HwNb4gOXZ1WdjWJwSmqC6ZP6OgxKIotCHJwe826Q/w8wIDAQAB
-    huaTaiKey: e1YF83DYB8sj7gEr8M
+    huaTaiKey: AdOdn409KE6Z9XvFsJ
     key: kFl5aiHALbZ6TMTqQDxghMMC
-    tokenUrl: https://vehpxy.pc.ehuatai.com/testsign
+    tokenUrl: https://vehpxy.pc.ehuatai.com/sign
 # 渤海财险
 bohai:
   api:

+ 4 - 6
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/crawler/entity/Request/ZmCrawlerModelQueryRequest.java → tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/Request/ZmCrawlerModelQueryRequest.java

@@ -1,14 +1,12 @@
-package com.jzg.quote.zhongmei.crawler.entity.Request;
+package com.jzg.quotation.zhongmei.crawler.entity.Request;
 
-import com.jzg.quote.zhongmei.api.constant.TransCode;
-import com.jzg.quote.zhongmei.api.entity.BaseRequestHead;
-import com.jzg.quote.zhongmei.api.entity.request.BaseRequest;
-import com.jzg.quote.zhongmei.crawler.entity.ZmCrawlerConfigureParameters;
+import com.jzg.quotation.zhongmei.api.constant.TransCode;
+import com.jzg.quotation.zhongmei.api.entity.BaseRequestHead;
+import com.jzg.quotation.zhongmei.api.entity.request.BaseRequest;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.io.Serial;
-import java.util.List;
 
 /**
  * @description: 中煤财险 车型查询

+ 4 - 4
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/crawler/entity/Request/ZmCrawlerNetpointQueryRequest.java → tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/Request/ZmCrawlerNetpointQueryRequest.java

@@ -1,8 +1,8 @@
-package com.jzg.quote.zhongmei.crawler.entity.Request;
+package com.jzg.quotation.zhongmei.crawler.entity.Request;
 
-import com.jzg.quote.zhongmei.api.constant.TransCode;
-import com.jzg.quote.zhongmei.api.entity.BaseRequestHead;
-import com.jzg.quote.zhongmei.api.entity.request.BaseRequest;
+import com.jzg.quotation.zhongmei.api.constant.TransCode;
+import com.jzg.quotation.zhongmei.api.entity.BaseRequestHead;
+import com.jzg.quotation.zhongmei.api.entity.request.BaseRequest;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 

+ 2 - 2
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/crawler/entity/Response/ZmCrawlerNetpointQueryResponse.java → tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/Response/ZmCrawlerNetpointQueryResponse.java

@@ -1,7 +1,7 @@
-package com.jzg.quote.zhongmei.crawler.entity.Response;
+package com.jzg.quotation.zhongmei.crawler.entity.Response;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.jzg.quote.zhongmei.api.entity.response.BaseResponse;
+import com.jzg.quotation.zhongmei.api.entity.response.BaseResponse;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 

+ 3 - 3
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/crawler/entity/dto/SaleInfoDTO.java → tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/dto/SaleInfoDTO.java

@@ -1,8 +1,8 @@
-package com.jzg.quote.zhongmei.crawler.entity.dto;
+package com.jzg.quotation.zhongmei.crawler.entity.dto;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.jzg.quote.zhongmei.crawler.entity.Response.ZmCrawlerNetpointQueryResponse;
-import com.jzg.quote.zhongmei.crawler.entity.ZmCrawlerConfigureParameters;
+import com.jzg.quotation.zhongmei.crawler.entity.Response.ZmCrawlerNetpointQueryResponse;
+import com.jzg.quotation.zhongmei.crawler.entity.ZmCrawlerConfigureParameters;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 

+ 2 - 2
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/crawler/entity/Response/ZmCrawlerModelQueryResponse.java

@@ -1,8 +1,8 @@
-package com.jzg.quote.zhongmei.crawler.entity.Response;
+package com.jzg.quotation.zhongmei.crawler.entity.Response;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.jzg.quotation.commons.filter.CarModelsFilter;
-import com.jzg.quote.zhongmei.api.entity.response.BaseResponse;
+import com.jzg.quotation.zhongmei.api.entity.response.BaseResponse;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;