Selaa lähdekoodia

Merge remote-tracking branch 'origin/master'

Qchen 3 kuukautta sitten
vanhempi
commit
d4e4b9c1a2
15 muutettua tiedostoa jossa 595 lisäystä ja 264 poistoa
  1. 2 0
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKHttpAPIService.java
  2. 5 3
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKSimpleService.java
  3. 0 0
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/impl/TKQuotationBaseServiceImpl.java
  4. 141 15
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/build/ZiJinCrawlerQuoteResultsVoBuild.java
  5. 26 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/component/ZiJinCrawlerCacheComponent.java
  6. 15 18
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/component/ZiJinCrawlerRequestComponent.java
  7. 42 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/request/ZiJinCrawlerQuotationRequest.java
  8. 3 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/request/ZiJinCrawlerSaveQuoteInfoRequest.java
  9. 1 1
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/response/ZiJinCrawlerQuotationResponse.java
  10. 1 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/impl/ZiJinCrawlerOrderServiceImpl.java
  11. 329 226
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/impl/ZiJinCrawlerRequestImpl.java
  12. 29 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/util/Base64ImageExtractor.java
  13. 0 0
      tenant/insurance/quotation-zijin/src/main/resources/js/auto.js
  14. 1 1
      tenant/insurance/quotation-zijin/src/main/resources/js/content.js
  15. 0 0
      tenant/insurance/quotation-zijin/src/main/resources/js/tsssss.js

+ 2 - 0
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKHttpAPIService.java

@@ -654,6 +654,8 @@ public class TKHttpAPIService {
         param.setOrderVersion("1");
         HttpHeaders httpHeaders = new HttpHeaders();
         httpHeaders.add("tkCarRequestToken", token);
+        httpHeaders.add("carinsurflowid", "carInsur1780302178294459227");
+        httpHeaders.add("carinsurorderid", orderId);
         StringResponse response = client.request(HttpURL.preciseInit, param, httpHeaders, StringResponse.class);
         checkResponseUnknownField(response);
         return decrypt(response, PreciseInitResult.class);

+ 5 - 3
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKSimpleService.java

@@ -793,11 +793,13 @@ public class TKSimpleService {
         // 其他信息
         SaveBasicInfoParam.OtherInfo otherInfo = new SaveBasicInfoParam.OtherInfo();
         otherInfo.setIsQueryVehicleFlag(false);
-        otherInfo.setShowEngineNoFlag("1"); // todo 抓到几个包,都是 0。看代码时发现是 1。
+        // 经测试:单交设置:1, 交强+商业设置:"0"
+        otherInfo.setShowEngineNoFlag(commonQuoteVo.getBiRiskInfoVo() == null ? "1" : "0");
         otherInfo.setJyQueryFlag(false);
         otherInfo.setOcrFlag(1);
         otherInfo.setNewCarFlag("0"); // todo
-        otherInfo.setKindLimitCode("1"); // 交强或商业,抓包查到没有值
+        // 经测试:单交设置:1, 交强+商业设置:""
+        otherInfo.setKindLimitCode(commonQuoteVo.getBiRiskInfoVo() == null ? "1" : "");
         otherInfo.setRetrospectId(UUID.randomUUID().toString()); // 可回溯ID ,好像不是很需要
 
 
@@ -1006,7 +1008,7 @@ public class TKSimpleService {
         // 其他参数
         {
             TKOther other = preciseInitParam.getOther();
-            if (other != null) {
+            if (other == null) {
                 other = new TKOther();
                 preciseInitParam.setOther(other);
             }

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/impl/TKQuotationBaseServiceImpl.java


+ 141 - 15
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/build/ZiJinCrawlerQuoteResultsVoBuild.java

@@ -1,11 +1,14 @@
 package com.jzg.quotation.zijin.crawler.build;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.nacos.common.utils.CollectionUtils;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.entity.quote.vo.KindInfoVo;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.quote.vo.RiskInfoVo;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteResultsVo;
+import com.jzg.commons.util.DateTimeUtils;
+import com.jzg.quotation.zijin.api.constant.enums.RiskCodeEnum;
 import com.jzg.quotation.zijin.crawler.entity.response.ZiJinCrawlerQuotationResponse;
 import lombok.extern.slf4j.Slf4j;
 
@@ -53,10 +56,28 @@ public class ZiJinCrawlerQuoteResultsVoBuild {
             quoteResultsVo.setCiRiskInfoVo(buildCiRiskInfoVo(ziJinCrawlerQuotationResponse));
             // 设置商业险信息
             quoteResultsVo.setBiRiskInfoVo(buildBiRiskInfoVo(ziJinCrawlerQuotationResponse));
+            // 设置驾意险信息
+            // quoteResultsVo.setJyRiskInfoVo(buildJyRiskInfoVo(ziJinCrawlerQuotationResponse));
+            // 设置险种明细列表
+            quoteResultsVo.setKindInfoVo(buildKindInfoVoList(ziJinCrawlerQuotationResponse));
         }
 
         // 交强保费 车船税 商业保费
         buildPremium(quoteResultsVo, ziJinCrawlerQuotationResponse);
+        
+        // 设置投保单号
+        // if (ziJinCrawlerQuotationResponse.getBasePart() != null) {
+        //     quoteResultsVo.setCiPolicyNumber(ziJinCrawlerQuotationResponse.getBasePart().getProposalCheckNo());
+        //     quoteResultsVo.setBiPolicyNumber(ziJinCrawlerQuotationResponse.getBasePart().getProposalCheckNo());
+        // }
+        
+        // 设置警告消息(预核保消息)
+        if (ziJinCrawlerQuotationResponse.getBasePart() != null) {
+            List<String> warnMessages = new java.util.ArrayList<>();
+            warnMessages.add(ziJinCrawlerQuotationResponse.getBasePart().getPreUnderwriteMessage());
+            quoteResultsVo.setWarnMessageList(warnMessages);
+        }
+        
         //设置报价状态:带核保
         quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.WAIT_AUDIT);
 
@@ -71,8 +92,9 @@ public class ZiJinCrawlerQuoteResultsVoBuild {
      */
     public static RiskInfoVo buildCiRiskInfoVo(ZiJinCrawlerQuotationResponse quotationResponse) {
         RiskInfoVo riskInfoVo = new RiskInfoVo();
-        riskInfoVo.setStartDate(quotationResponse.getBasePart().getStartDateCI());
-        riskInfoVo.setEndDate(quotationResponse.getBasePart().getEndDateCI());
+        ZiJinCrawlerQuotationResponse.BasePart basePart = quotationResponse.getBasePart();
+        riskInfoVo.setStartDate(basePart.getStartDateCI() == null ? null : DateTimeUtils.convertToDateTime(basePart.getStartDateCI(), basePart.getStartHourCI(), basePart.getStartMinuteCI()));
+        riskInfoVo.setEndDate(basePart.getEndDateCI() == null ? null : DateTimeUtils.convertToDateTime(basePart.getEndDateCI(), basePart.getEndHourCI(), basePart.getEndMinuteCI()));
         return riskInfoVo;
     }
 
@@ -83,32 +105,136 @@ public class ZiJinCrawlerQuoteResultsVoBuild {
      */
     public static RiskInfoVo buildBiRiskInfoVo(ZiJinCrawlerQuotationResponse quotationResponse) {
         RiskInfoVo riskInfoVo = new RiskInfoVo();
-        riskInfoVo.setStartDate(quotationResponse.getBasePart().getStartDate());
-        riskInfoVo.setEndDate(quotationResponse.getBasePart().getEndDate());
+        ZiJinCrawlerQuotationResponse.BasePart basePart = quotationResponse.getBasePart();
+        riskInfoVo.setStartDate(basePart.getStartDate() == null ? null : DateTimeUtils.convertToDateTime(basePart.getStartDate(), basePart.getStartHour(), basePart.getStartMinute()));
+        riskInfoVo.setEndDate(basePart.getEndDate() == null ? null : DateTimeUtils.convertToDateTime(basePart.getEndDate(), basePart.getEndHour(), basePart.getEndMinute()));
         return riskInfoVo;
     }
 
+    /**
+     * 处理驾意险数据
+     * @param quotationResponse
+     * @return RiskInfoVo
+     */
+    // public static RiskInfoVo buildJyRiskInfoVo(ZiJinCrawlerQuotationResponse quotationResponse) {
+    //     RiskInfoVo riskInfoVo = new RiskInfoVo();
+    //     riskInfoVo.setStartDate(quotationResponse.getBasePart().getStartDateJY());
+    //     riskInfoVo.setEndDate(quotationResponse.getBasePart().getEndDateJY());
+    //     return riskInfoVo;
+    // }
+
+    /**
+     * 处理险种明细列表
+     * @param quotationResponse
+     * @return List<KindInfoVo>
+     */
+    public static List<KindInfoVo> buildKindInfoVoList(ZiJinCrawlerQuotationResponse quotationResponse) {
+        List<KindInfoVo> kindInfoVoList = new java.util.ArrayList<>();
+        if (quotationResponse.getItemKindList() == null) {
+            return kindInfoVoList;
+        }
+        
+        for (ZiJinCrawlerQuotationResponse.ItemKindList item : quotationResponse.getItemKindList()) {
+            KindInfoVo kindInfoVo = new KindInfoVo();
+            kindInfoVo.setKindCode(item.getKindCode());
+            kindInfoVo.setKindName(item.getKindName());
+            kindInfoVo.setAmount(item.getAmount());
+            kindInfoVo.setUnitAmount(item.getUnitAmount());
+            kindInfoVo.setQuantity(item.getQuantity());
+            kindInfoVo.setPremium(item.getPremium());
+            kindInfoVoList.add(kindInfoVo);
+        }
+        
+        return kindInfoVoList;
+    }
+
     /**
      * 设置商业险,交强险保费
      * @param quoteResultsVo
      * @param quotationResponse
      */
     private static void buildPremium(QuoteResultsVo quoteResultsVo, ZiJinCrawlerQuotationResponse quotationResponse) {
-        // 设置交强险保费
-        if (Objects.nonNull(quotationResponse.getPlanList())) {
-            quoteResultsVo.getCosts().setCiPremium(String.valueOf(quotationResponse.getPlanList().get(1).getPlanFee()));
+        if (CollectionUtils.isEmpty(quotationResponse.getPlanList())) {
+            return;
         }
-        // 设置车船税
-        quoteResultsVo.getCosts().setVvTax(String.valueOf(quotationResponse.getPlanList().get(2).getPlanFee()));
-        // 设置商业险保费
-        if (Objects.nonNull(quotationResponse.getPlanList())){
-            quoteResultsVo.getCosts().setBiPremium(String.valueOf(quotationResponse.getPlanList().get(0).getPlanFee()));
+        
+        // 遍历 planList,根据 riskCode 或 planText 来识别不同类型的费用
+        for (ZiJinCrawlerQuotationResponse.PlanList plan : quotationResponse.getPlanList()) {
+            if (plan == null || plan.getPlanFee() == null) {
+                continue;
+            }
+            
+            String riskCode = plan.getRiskCode();
+            String planText = plan.getPlanText();
+            
+            // 根据 riskCode 判断类型
+            if (RiskCodeEnum.TRAFFIC_CODE.equals(riskCode)) {
+                // 交强险
+                quoteResultsVo.getCosts().setCiPremium(String.valueOf(plan.getPlanFee()));
+            } else if (RiskCodeEnum.ACCIDENT_CODE.equals(riskCode)) {
+                // 车船税
+                quoteResultsVo.getCosts().setVvTax(String.valueOf(plan.getPlanFee()));
+            } else {
+                // 商业险或其他险种
+                // 如果还没有设置商业险保费,则设置为商业险
+                if (quoteResultsVo.getCosts().getBiPremium() == null) {
+                    quoteResultsVo.getCosts().setBiPremium(String.valueOf(plan.getPlanFee()));
+                }
+            }
         }
+        
         // 设置非车险(驾意险)保费
-        ZiJinCrawlerQuotationResponse.CarPolicySubInfoList carPolicySubInfoList = quotationResponse.getCarPolicySubInfoList().get(0);
-        if (carPolicySubInfoList != null) {
-            quoteResultsVo.getCosts().setNiPremium(carPolicySubInfoList.getActualPremium());
+        if (quotationResponse.getCarPolicySubInfoList() != null && !quotationResponse.getCarPolicySubInfoList().isEmpty()) {
+            ZiJinCrawlerQuotationResponse.CarPolicySubInfoList carPolicySubInfoList = quotationResponse.getCarPolicySubInfoList().get(0);
+            if (carPolicySubInfoList != null && carPolicySubInfoList.getActualPremium() != null) {
+                quoteResultsVo.getCosts().setNiPremium(carPolicySubInfoList.getActualPremium());
+            }
         }
+        
+        // 计算总保费
+        // calculateSumPremium(quoteResultsVo);
+    }
+    
+    /**
+     * 计算总保费
+     * @param quoteResultsVo
+     */
+    private static void calculateSumPremium(QuoteResultsVo quoteResultsVo) {
+        double sumPremium = 0.0;
+        
+        if (quoteResultsVo.getCosts().getCiPremium() != null) {
+            try {
+                sumPremium += Double.parseDouble(quoteResultsVo.getCosts().getCiPremium());
+            } catch (NumberFormatException e) {
+                log.warn("交强险保费解析失败: {}", quoteResultsVo.getCosts().getCiPremium());
+            }
+        }
+        
+        if (quoteResultsVo.getCosts().getBiPremium() != null) {
+            try {
+                sumPremium += Double.parseDouble(quoteResultsVo.getCosts().getBiPremium());
+            } catch (NumberFormatException e) {
+                log.warn("商业险保费解析失败: {}", quoteResultsVo.getCosts().getBiPremium());
+            }
+        }
+        
+        if (quoteResultsVo.getCosts().getVvTax() != null) {
+            try {
+                sumPremium += Double.parseDouble(quoteResultsVo.getCosts().getVvTax());
+            } catch (NumberFormatException e) {
+                log.warn("车船税解析失败: {}", quoteResultsVo.getCosts().getVvTax());
+            }
+        }
+        
+        if (quoteResultsVo.getCosts().getNiPremium() != null) {
+            try {
+                sumPremium += Double.parseDouble(quoteResultsVo.getCosts().getNiPremium());
+            } catch (NumberFormatException e) {
+                log.warn("非车险保费解析失败: {}", quoteResultsVo.getCosts().getNiPremium());
+            }
+        }
+
+        quoteResultsVo.getCosts().setSumPremium(String.valueOf(sumPremium));
     }
 
 }

+ 26 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/component/ZiJinCrawlerCacheComponent.java

@@ -1,7 +1,9 @@
 package com.jzg.quotation.zijin.crawler.component;
 
 import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
+import com.jzg.quotation.zijin.crawler.entity.request.ZiJinCrawlerSaveQuoteInfoRequest;
 import com.jzg.quotation.zijin.crawler.entity.response.ZiJinCrawlerSaveResponse;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -12,6 +14,7 @@ import org.springframework.stereotype.Component;
 
 import java.time.Duration;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -43,6 +46,10 @@ public class ZiJinCrawlerCacheComponent {
 
     public static final String USER_CODE = "USER_CODE";
 
+    public static final String IMAGES_INFO = "zijin:images:info:";
+
+    public static final long IMAGES_INFO_TIME = 1L;
+
     /**
      * 缓存认证信息
      * @param token
@@ -104,4 +111,23 @@ public class ZiJinCrawlerCacheComponent {
         return (String) redissonClient.getMap(ZIJIN_AUTHORIZATION + username).get(AUTHORIZATION);
     }
 
+    /**
+     * 缓存图片信息
+     * @param orderNo 订单号
+     * @param dataDTOS 图片信息
+     */
+    public void cacheImagesInfo(String orderNo, List<ZiJinCrawlerSaveQuoteInfoRequest.ItemFileData.FileInfo> dataDTOS) {
+        String responseStr = JSONObject.toJSONString(dataDTOS);
+        redissonClient.getBucket(IMAGES_INFO + orderNo).set(responseStr, Duration.ofDays(IMAGES_INFO_TIME));
+    }
+
+    /**
+     * 获取图片信息
+     * @param orderNo 订单号
+     * @return 图片信息
+     */
+    public List<ZiJinCrawlerSaveQuoteInfoRequest.ItemFileData.FileInfo> getImagesInfo(String orderNo) {
+        String imagesInfo = (String) redissonClient.getBucket(IMAGES_INFO + orderNo).get();
+        return JSONArray.parseArray(imagesInfo, ZiJinCrawlerSaveQuoteInfoRequest.ItemFileData.FileInfo.class);
+    }
 }

+ 15 - 18
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/component/ZiJinCrawlerRequestComponent.java

@@ -2,28 +2,26 @@ package com.jzg.quotation.zijin.crawler.component;
 
 import com.alibaba.fastjson2.JSON;
 import com.google.zxing.NotFoundException;
-import com.jzg.quotation.commons.component.RequestComponent;
+import com.jzg.commons.exception.SystemException;
+import com.jzg.quotation.zijin.crawler.enums.RequestUrl;
 import com.jzg.quotation.zijin.crawler.entity.request.*;
 import com.jzg.quotation.zijin.crawler.entity.response.*;
-import com.jzg.quotation.zijin.crawler.enums.RequestUrl;
 import com.jzg.quotation.zijin.crawler.properties.ZiJinCrawlerProperties;
-import com.jzg.quotation.zijin.crawler.util.CaptchaUtil;
-import com.jzg.quotation.zijin.crawler.util.DESEncryption;
-import com.jzg.quotation.zijin.crawler.util.RS6Item;
+import com.jzg.quotation.zijin.crawler.util.*;
+import com.jzg.quotation.commons.component.RequestComponent;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
+import org.springframework.util.StringUtils;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @description: 紫金财险爬虫请求组件
@@ -231,15 +229,14 @@ public class ZiJinCrawlerRequestComponent {
      * @param headers 请求头
      * @return ZiJinCrawlerGetTaxRegistryNumberResponse
      */
-//    public ZiJinCrawlerGetTaxRegistryNumberResponsexRegistryNumberResponse getTaxRegistryNumber(String comCode, HttpHeaders headers) throws IOException {
-//        HttpHeaders httpHeaders = setHttpHeaders();
-//        String url = RequestUrl.GET_TAX_REGISTRY_NUMBER.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()) + "?comCode=" + comCode;
-//        log.info("获取税务登记证号请求URL:{}", url);
-//        ResponseEntity<ZiJinCrawlerGetTaxRegistryNumberResponse> responseEntity = requestComponent.post(url, null, ZiJinCrawlerGetTaxRegistryNumberResponse.class, httpHeaders);
-//        ZiJinCrawlerGetTaxRegistryNumberResponse response = responseEntity.getBody();
-//        log.info("获取税务登记证号响应:{}", JSON.toJSONString(response));
-//        return response;
-//    }
+    public ZiJinCrawlerGetTaxRegistryNumberResponse getTaxRegistryNumber(String comCode, HttpHeaders headers) throws IOException {
+        HttpHeaders httpHeaders = setHttpHeaders();
+        String url = RequestUrl.GET_TAX_REGISTRY_NUMBER.getRequestUrl(ziJinCrawlerProperties.getBaseUrl());
+        log.info("获取税务登记证号请求URL:{}", url);
+        ZiJinCrawlerGetTaxRegistryNumberResponse response = requestComponent.get(url, new LinkedMultiValueMap<>(), "", ZiJinCrawlerGetTaxRegistryNumberResponse.class, httpHeaders);
+        log.info("获取税务登记证号响应:{}", JSON.toJSONString(response));
+        return response;
+    }
 
     /**
      * 报价

+ 42 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/request/ZiJinCrawlerQuotationRequest.java

@@ -345,6 +345,12 @@ public class ZiJinCrawlerQuotationRequest implements Serializable {
          */
         @JsonProperty("calculateFlag")
         private String calculateFlag;
+
+        /**
+         * 续保标志
+         */
+        @JsonProperty("renewalFlag")
+        private String renewalFlag;
     }
 
     /**
@@ -493,6 +499,36 @@ public class ZiJinCrawlerQuotationRequest implements Serializable {
          */
         @JsonProperty("completeKerbMass")
         private String completeKerbMass;
+
+        /**
+         *  减税扩展字段2
+         */
+        @JsonProperty("extendChar2")
+        private String extendChar2;
+
+        /**
+         *  减税扩展字段1
+         */
+        @JsonProperty("freeRateText")
+        private String freeRateText;
+
+        /**
+         *  减税原因
+         */
+        @JsonProperty("relifReason")
+        private String relifReason;
+
+        /**
+         *  减税
+         */
+        @JsonProperty("taxRelief")
+        private String taxRelief;
+
+        /**
+         *  报税企业名称
+         */
+        @JsonProperty("taxComName")
+        private String taxComName;
     }
 
     /**
@@ -916,6 +952,12 @@ public class ZiJinCrawlerQuotationRequest implements Serializable {
          */
         @JsonProperty("printModelName")
         private String printModelName;
+
+        /**
+         *  车身颜色代码 02-黑色
+         */
+        @JsonProperty("colorCode")
+        private String colorCode;
     }
 
     /**

+ 3 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/request/ZiJinCrawlerSaveQuoteInfoRequest.java

@@ -736,6 +736,9 @@ public class ZiJinCrawlerSaveQuoteInfoRequest implements Serializable {
         @JsonProperty("currentTaxDue")
         private CurrentTaxDue currentTaxDue;
 
+        @JsonProperty("delinquentTaxDueList")
+        private List<CurrentTaxDue> delinquentTaxDueList;
+
         /**
          * 当期应缴税款信息内部类
          */

+ 1 - 1
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/response/ZiJinCrawlerQuotationResponse.java

@@ -784,7 +784,7 @@ public class ZiJinCrawlerQuotationResponse implements  Serializable {
          * 欠缴税款列表
          */
         @JsonProperty("delinquentTaxDueList")
-        private List<String> delinquentTaxDueList;
+        private List<CurrentTaxDue> delinquentTaxDueList;
 
         /**
          * 当前应缴税款

+ 1 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/impl/ZiJinCrawlerOrderServiceImpl.java

@@ -31,6 +31,7 @@ public class ZiJinCrawlerOrderServiceImpl implements ZiJinCrawlerOrderService {
     public void save(QuoteVo quoteVo, ZiJinCrawlerQuotationResponse ziJinCrawlerQuotationResponse, boolean success) {
         ZiJinCrawlerOrder order = new ZiJinCrawlerOrder();
         order.setOrdersNo(quoteVo.getOrder().getOrdersNo());
+        order.setOrderNo(ziJinCrawlerQuotationResponse.getOrderNo());
         /*order.setOrderNo(ziJinCrawlerQuotationResponse.getData().getBusUniqueId());
         order.setBusUniqueId(ziJinCrawlerQuotationResponse.getData().getBusUniqueId());
         order.setQuoteSuccess(success);

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 329 - 226
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/impl/ZiJinCrawlerRequestImpl.java


+ 29 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/util/Base64ImageExtractor.java

@@ -4,6 +4,7 @@ import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 import org.jsoup.select.Elements;
+import org.springframework.util.StringUtils;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.regex.Matcher;
@@ -64,6 +65,34 @@ public class Base64ImageExtractor {
         return null;
     }
 
+    /**
+     * 根据图片名称获取MIME类型
+     *
+     * @param imageName 图片名称
+     * @return MIME类型前缀
+     */
+    public static String getImageMimeType(String imageName) {
+        if (!StringUtils.hasLength(imageName)) {
+            return "data:image/png;base64,";
+        }
+
+        String lowerName = imageName.toLowerCase();
+        if (lowerName.endsWith(".jpg") || lowerName.endsWith(".jpeg")) {
+            return "data:image/jpeg;base64,";
+        } else if (lowerName.endsWith(".png")) {
+            return "data:image/png;base64,";
+        } else if (lowerName.endsWith(".gif")) {
+            return "data:image/gif;base64,";
+        } else if (lowerName.endsWith(".bmp")) {
+            return "data:image/bmp;base64,";
+        } else if (lowerName.endsWith(".webp")) {
+            return "data:image/webp;base64,";
+        } else {
+            // 默认使用PNG格式
+            return "data:image/png;base64,";
+        }
+    }
+
     // 测试方法
     public static void main(String[] args) {
         String html = "<html>\n" +

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
tenant/insurance/quotation-zijin/src/main/resources/js/auto.js


+ 1 - 1
tenant/insurance/quotation-zijin/src/main/resources/js/content.js

@@ -1 +1 @@
-___content ="dXa0UnQNdekLRE1Oy9ZtSINKqg_W8PGq7NaV3IwX7cTZ1qVwXTTqny0jFVQTc8l3EOj_ec4bTuzB9Q.wuoVrvvRx33iroOZoe.XRBlUQvg6hdvqDJY7midp_w2.sfiTC4X.ovFfLRk.0eoSfCVp6SF57wwGs30adiYO7k5zYinX08Qqv14Vg8odw_EpIQKA104Q4dGsmlUL";
+___content ="fyI0z7E7jY2CkcJmCEv9pRg73QvOr2ZN7hBoiBI9hdIBM8tvt6Qe850wRmo.lW0y40RLrX8KSEBrFvclREHplomQfhE9GrsXFqJo8_12_LAEAIrm9PG4KB_JLJ.g183AEHrlWewOMYlh_uPBevFbn7xxT5Pbvqt2vqEfSpqedNrdshoeVhncrwPZHn_XTxa16d_zDLL4yQ7";

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
tenant/insurance/quotation-zijin/src/main/resources/js/tsssss.js


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä