Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

wanghao 3 месяцев назад
Родитель
Сommit
5484ff0d49
12 измененных файлов с 418 добавлено и 163 удалено
  1. 202 67
      tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/service/impl/ChengTaiApiRequestImpl.java
  2. 11 6
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKSimpleService.java
  3. 88 87
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/impl/TKQuotationBaseServiceImpl.java
  4. 15 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/component/ZiJinCrawlerRequestComponent.java
  5. 32 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/request/ZiJinCrawlerRecognizeCodesRequest.java
  6. 45 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/response/ZiJinCrawlerRecognizeCodesResponse.java
  7. 2 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/enums/RequestUrl.java
  8. 1 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/enums/ResponseCode.java
  9. 21 2
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/impl/ZiJinCrawlerRequestImpl.java
  10. 0 0
      tenant/insurance/quotation-zijin/src/main/resources/js/auto.js
  11. 1 1
      tenant/insurance/quotation-zijin/src/main/resources/js/content.js
  12. 0 0
      tenant/insurance/quotation-zijin/src/main/resources/js/tsssss.js

+ 202 - 67
tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/service/impl/ChengTaiApiRequestImpl.java

@@ -39,6 +39,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.math.BigDecimal;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.regex.Matcher;
@@ -130,11 +131,16 @@ public class ChengTaiApiRequestImpl implements ChengTaiApiRequest {
      */
     private String extractEndDate(PremiumCalculationResponse response) {
         String targetText = response.getHead().getErrorMessage();
-        Pattern pattern = Pattern.compile("终保日期 (\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2})");
+        Pattern pattern = Pattern.compile("终保日期[:\\s]+(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}(?::\\d{2})?)");
         Matcher matcher = pattern.matcher(targetText);
         if (matcher.find()) {
             String dateStr = matcher.group(1);
-            return dateStr + ":00";
+            // 已经包含秒(以 :数字数字 结尾),不拼接
+            if (dateStr.length() == 16) {
+                return dateStr + ":00";
+            } else {
+                return dateStr;
+            }
         }
         return null;
     }
@@ -146,82 +152,211 @@ public class ChengTaiApiRequestImpl implements ChengTaiApiRequest {
      */
     private PremiumCalculationResponse getResponse(PremiumCalculationRequest premiumCalculationRequest, QuoteVo quoteVo,BigDecimal carActualValue,
                     ChengTaiApiParameters parameters, CarModelQueryResponse.vehicle vehicle, String apiUrl) throws Exception {
+        int index = 0;
+        PremiumCalculationResponse premiumCalculationResponse = new PremiumCalculationResponse();
+        String ciQuestion = null,biQuestion = null;
+        while(true) {
+            if(index >=5){
+                break;
+            }
+            premiumCalculationResponse = chengTaiRequestApiComponent.premiumCalculation(premiumCalculationRequest,apiUrl);
+            index++;
 
-        PremiumCalculationResponse premiumCalculationResponse = chengTaiRequestApiComponent.premiumCalculation(premiumCalculationRequest,apiUrl);
-        if (!premiumCalculationResponse.getHead().getErrorMessage().equals("成功")) {
-            /**
-             * 重复投保
-             */
-            // 获取新起保时间 终保时间
-            final String startDate = extractEndDate(premiumCalculationResponse);
-            String endDate;
-            if (startDate != null){
-                if (startDate.endsWith("00:00:00")) {
-                    endDate = TimeProcessing.minusOneSecondAfterYear(startDate);
-                } else {
-                    endDate = TimeProcessing.plusOneYearToString(startDate);
-                }
-                final String formatStartDate = startDate;
-                final String formatEndDate = endDate;
-                PremiumCalculationResponse finalPremiumCalculationResponse = premiumCalculationResponse;
-                if (quoteVo.getCiRiskInfoVo() != null && finalPremiumCalculationResponse.getHead().getErrorMessage().contains("交强")) {
-                    quoteVo.getCiRiskInfoVo().setStartDate(startDate);
-                    quoteVo.getCiRiskInfoVo().setEndDate(endDate);
+            // 如果返回出现问题
+            if (!premiumCalculationResponse.getHead().getResponseCode().equals("0000")){
+                // 是否是校验码有误
+                if(premiumCalculationResponse.getHead().getErrorMessage().contains("校验码有误")){
+                    if(Objects.nonNull(ciQuestion)){
+                        if(Objects.isNull(premiumCalculationResponse.getCompRisk())){
+                            premiumCalculationResponse.setCompRisk(new PremiumCalculationResponse.compRisk());
+                        }
+                        if(Objects.isNull(premiumCalculationResponse.getCompRisk().getBasePart())){
+                            premiumCalculationResponse.getCompRisk().setBasePart(new PremiumCalculationResponse.compRisk.basePart());
+                        }
+                        premiumCalculationResponse.getCompRisk().getBasePart().setQuestion(ciQuestion);
+                    }
+
+                    if(Objects.nonNull(biQuestion)){
+                        if(Objects.isNull(premiumCalculationResponse.getCommRisk())){
+                            premiumCalculationResponse.setCommRisk(new PremiumCalculationResponse.commRisk());
+                        }
+                        if(Objects.isNull(premiumCalculationResponse.getCommRisk().getBasePart())){
+                            premiumCalculationResponse.getCommRisk().setBasePart(new PremiumCalculationResponse.commRisk.basePart());
+                        }
+                        premiumCalculationResponse.getCommRisk().getBasePart().setQuestion(biQuestion);
+                    }
+                    break;
                 }
-                // 处理商业险的即时起保
-                if (quoteVo.getBiRiskInfoVo() != null) {
-                    if (!formatStartDate.endsWith("00:00:00")) {
-                        String start, end = "";
-                        end = TimeProcessing.tomorrowDateTime(formatEndDate);
-                        quoteVo.getBiRiskInfoVo().setStartDate(formatStartDate);
-                        quoteVo.getBiRiskInfoVo().setEndDate(end);
+            }
+
+            if (!premiumCalculationResponse.getHead().getErrorMessage().equals("成功")) {
+                /**
+                 * 重复投保
+                 */
+                // 获取新起保时间 终保时间
+                //判断出现两次起保日期
+                boolean hasTwoStartDates = premiumCalculationResponse.getHead().getErrorMessage() != null
+                        && premiumCalculationResponse.getHead().getErrorMessage().indexOf("起保日期") != -1          // 第一次出现
+                        && premiumCalculationResponse.getHead().getErrorMessage().indexOf("起保日期",
+                        premiumCalculationResponse.getHead().getErrorMessage().indexOf("起保日期") + 1) != -1; // 第二次出现
+
+                final String startDate = extractEndDate(premiumCalculationResponse);
+                String endDate;
+                if (startDate != null) {
+
+                    //如果出现起保日期两次 就是 交强商业都重复投保了
+                    if (hasTwoStartDates) {
+                        String jqEndDate, syEndDate = "";
+                        List<String> timeList = multipleStartDate(premiumCalculationResponse);
+                        for (int i = 0; i < timeList.size(); i++) {
+                            timeList.set(i, addOneYear(timeList.get(i)));
+                        }
+                        if (timeList.size() < 2) {
+                            throw new SystemException("处理重复投保时间异常");
+                        }
+                        if (timeList.get(0).endsWith("00:00:00")) {
+                            jqEndDate = TimeProcessing.minusOneSecondAfterYear(timeList.get(0));
+                        } else {
+                            jqEndDate = TimeProcessing.plusOneYearToString(timeList.get(0));
+                        }
+                        if (timeList.get(1).endsWith("00:00:00")) {
+                            syEndDate = TimeProcessing.minusOneSecondAfterYear(timeList.get(1));
+                        } else {
+                            syEndDate = TimeProcessing.plusOneYearToString(timeList.get(1));
+                        }
+                        String jqFinalEndDate = jqEndDate;
+                        String syFinalEndDate = syEndDate;
+                        if (quoteVo.getCiRiskInfoVo() != null) {
+                            quoteVo.getCiRiskInfoVo().setStartDate(timeList.get(0));
+                            quoteVo.getCiRiskInfoVo().setEndDate(jqFinalEndDate);
+                        }
+
+                        // 处理商业险的即时起保
+                        if (quoteVo.getBiRiskInfoVo() != null) {
+                            quoteVo.getBiRiskInfoVo().setStartDate(timeList.get(1));
+                            quoteVo.getBiRiskInfoVo().setEndDate(syFinalEndDate);
+                        }
                     } else {
-                        quoteVo.getBiRiskInfoVo().setStartDate(startDate);
-                        quoteVo.getBiRiskInfoVo().setEndDate(endDate);
+                        if (startDate.endsWith("00:00:00")) {
+                            endDate = TimeProcessing.minusOneSecondAfterYear(startDate);
+                        } else {
+                            endDate = TimeProcessing.plusOneYearToString(startDate);
+                        }
+                        final String formatStartDate = startDate;
+                        final String formatEndDate = endDate;
+                        PremiumCalculationResponse finalPremiumCalculationResponse = premiumCalculationResponse;
+
+                        if (quoteVo.getCiRiskInfoVo() != null && finalPremiumCalculationResponse.getHead().getErrorMessage().contains("交强")) {
+                            quoteVo.getCiRiskInfoVo().setStartDate(formatStartDate);
+                            quoteVo.getCiRiskInfoVo().setEndDate(formatEndDate);
+                        }
+
+                        // 处理商业险的即时起保
+                        if (quoteVo.getBiRiskInfoVo() != null && finalPremiumCalculationResponse.getHead().getErrorMessage().contains("商业险")) {
+                            quoteVo.getBiRiskInfoVo().setStartDate(formatStartDate);
+                            quoteVo.getBiRiskInfoVo().setEndDate(formatEndDate);
+                        }
                     }
+                    premiumCalculationRequest = new PremiumCalculationRequest(quoteVo, carActualValue, parameters, vehicle, null);
+
+                } else if (premiumCalculationResponse.getHead().getErrorMessage().contains("重复投保")) {
+                    throw new SystemException(premiumCalculationResponse.getHead().getErrorMessage());
+                }
+
+            }else{
+                // 转保车处理
+                ciQuestion = premiumCalculationResponse.getCompRisk() != null
+                        ? premiumCalculationResponse.getCompRisk().getBasePart().getQuestion()
+                        : null;
+                biQuestion = premiumCalculationResponse.getCommRisk() != null
+                        ? premiumCalculationResponse.getCommRisk().getBasePart().getQuestion()
+                        : null;
+                // 订单号
+                if (ciQuestion != null || biQuestion != null) {
+                    String orderNumber = premiumCalculationResponse.getCompRisk() != null
+                            ? premiumCalculationResponse.getCompRisk().getFtrno().getOrderNumber()
+                            : premiumCalculationResponse.getCommRisk().getFtrno().getOrderNumber();
+                    Map<String, String> bodyMap = new HashMap<>();
+                    if (Objects.nonNull(ciQuestion)) {
+                        bodyMap.put("jqImage", ciQuestion);
+                    }
+                    if (Objects.nonNull(biQuestion)) {
+                        bodyMap.put("syImage", biQuestion);
+                    }
+                    String sendBody = JSON.toJSONString(bodyMap);
+                    if (!"{}".equals(sendBody)) {
+                        String ocrStr = HttpUtil.sendPost("http://39.98.41.104:8088/getres", sendBody);
+                        CheckCodeResp resp = JSONUtil.toBean(ocrStr, CheckCodeResp.class);
+                        if(StringUtils.isNotEmpty(resp.getJqImageCode())){
+                            quoteVo.setCiTransferCode(resp.getJqImageCode().replace("0", "O"));
+                        }
+                        if(StringUtils.isNotEmpty(resp.getSyImageCode())){
+                            quoteVo.setBiTransferCode(resp.getSyImageCode().replace("0", "O"));
+                        }
+                        premiumCalculationRequest = new PremiumCalculationRequest(quoteVo, carActualValue, parameters, vehicle, orderNumber);
+
+                    }
+                }else{
+                    break;
                 }
-                premiumCalculationRequest = new PremiumCalculationRequest(quoteVo,carActualValue,parameters,vehicle,null);
-                premiumCalculationResponse = chengTaiRequestApiComponent.premiumCalculation(premiumCalculationRequest, apiUrl);
-            }
-        }
-        // 转保车处理
-        String ciQuestion = null;
-        String biQuestion = null;
-        if (premiumCalculationResponse.getCompRisk() != null && premiumCalculationResponse.getCompRisk().getBasePart() != null){
-            ciQuestion = premiumCalculationResponse.getCompRisk().getBasePart().getQuestion();
-        }
-        if (premiumCalculationResponse.getCommRisk() != null && premiumCalculationResponse.getCommRisk().getBasePart() != null){
-            biQuestion = premiumCalculationResponse.getCommRisk().getBasePart().getQuestion();
-        }
-        // 订单号
-        if (ciQuestion!= null || biQuestion != null) {
-            String orderNumber = premiumCalculationResponse.getCompRisk() != null
-                    ? premiumCalculationResponse.getCompRisk().getFtrno().getOrderNumber()
-                    : premiumCalculationResponse.getCommRisk().getFtrno().getOrderNumber();
-            Map<String, String> bodyMap = new HashMap<>();
-            if (Objects.nonNull(ciQuestion)) {
-                bodyMap.put("jqImage", ciQuestion);
             }
-            if (Objects.nonNull(biQuestion)) {
-                bodyMap.put("syImage", biQuestion);
+            //处理订单号
+            if( premiumCalculationResponse.getCompRisk() != null && premiumCalculationResponse.getCompRisk().getFtrno() != null){
+                premiumCalculationRequest.getBasePart().setOrderNumber(premiumCalculationResponse.getCompRisk().getFtrno().getOrderNumber());
             }
-            String sendBody = JSON.toJSONString(bodyMap);
-            if (!"{}".equals(sendBody)) {
-                // 获取图片中的二维码
-                String ocrStr = HttpUtil.sendPost("http://39.98.41.104:8088/getres", sendBody);
-                CheckCodeResp resp = JSONUtil.toBean(ocrStr, CheckCodeResp.class);
-                if(StringUtils.isNotEmpty(resp.getJqImageCode())){
-                     quoteVo.setCiTransferCode(resp.getJqImageCode().replace("0", "O"));
-                }
-                if(StringUtils.isNotEmpty(resp.getSyImageCode())){
-                      quoteVo.setBiTransferCode(resp.getSyImageCode().replace("0", "O"));
-                }
-                premiumCalculationRequest = new PremiumCalculationRequest(quoteVo,carActualValue,parameters,vehicle,orderNumber);
-                premiumCalculationResponse = chengTaiRequestApiComponent.premiumCalculation(premiumCalculationRequest, apiUrl);
+            if( premiumCalculationResponse.getCommRisk() != null && premiumCalculationResponse.getCommRisk().getFtrno() != null){
+                premiumCalculationRequest.getBasePart().setOrderNumber(premiumCalculationResponse.getCommRisk().getFtrno().getOrderNumber());
             }
         }
         return premiumCalculationResponse;
     }
+    private List<String> multipleStartDate(PremiumCalculationResponse response) {
+        List<String> timeList = new ArrayList<>();
+        if (response == null || response.getHead() == null) {
+            return timeList;
+        }
+
+        String errorMsg = response.getHead().getErrorMessage();
+        if (errorMsg == null || errorMsg.isEmpty()) {
+            return timeList;
+        }
+
+        // 正则匹配:起保日期 + 日期时间(兼容所有格式)
+        Pattern pattern = Pattern.compile("起保日期[\\s:]+([\\d\\s:-]+)");
+        Matcher matcher = pattern.matcher(errorMsg);
+
+        while (matcher.find() && timeList.size() < 2) {
+            String rawDate = matcher.group(1).trim();
+            String formattedDate = formatToStandardDateTime(rawDate);
+            timeList.add(formattedDate);
+        }
+
+        return timeList;
+    }
+    private String formatToStandardDateTime(String raw) {
+        if (raw == null || raw.isEmpty()) return "";
+
+        // 提取所有数字
+        List<String> nums = new ArrayList<>();
+        Matcher m = Pattern.compile("\\d+").matcher(raw);
+        while (m.find()) nums.add(m.group());
+
+        if (nums.size() < 3) return raw;
+
+        String ymd = nums.get(0) + "-" + nums.get(1) + "-" + nums.get(2);
+        String hh = nums.size() >= 4 ? nums.get(3) : "00";
+        String mm = nums.size() >= 5 ? nums.get(4) : "00";
+        String ss = nums.size() >= 6 ? nums.get(5) : "00";
+
+        return ymd + " " + hh + ":" + mm + ":" + ss;
+    }
+    private String addOneYear(String dateStr) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        LocalDateTime dateTime = LocalDateTime.parse(dateStr, formatter);
+        // 加 1 年
+        LocalDateTime nextYear = dateTime.plusYears(1);
+        return nextYear.format(formatter);
+    }
 
     @Override
     public UnderwritingResultsVo underwriting(UnderwritingVo underwritingVo) throws Exception {

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

@@ -999,10 +999,10 @@ public class TKSimpleService {
             if (CollectionUtils.isEmpty(commonQuoteVo.getKindInfoVo())) {
                 flag.setCiFlag("0");
             }
-            // 无驾意险
-            if (CollectionUtils.isEmpty(commonQuoteVo.getAccidentalDrivings())) {
-                flag.setIsAccidentInsureFlag("0");
-            }
+            // 无驾意险,经测试这个值无驾意险的时候请求还是传1,不用改变
+            // if (CollectionUtils.isEmpty(commonQuoteVo.getAccidentalDrivings())) {
+            //     flag.setIsAccidentInsureFlag("0");
+            // }
         }
 
         // 其他参数
@@ -1117,8 +1117,9 @@ public class TKSimpleService {
         {
             // 同步驾意险, 系统有选择驾意险进行匹配覆盖(泰康要求必须有驾意险)
             Map<String, TKCarPlanInfo> carPlanInfoMap = Optional.ofNullable(preciseInitParam.getDriverAccidentVo().getCarPlanInfoList()).orElseGet(Collections::emptyList).stream().collect(Collectors.toMap(TKCarPlanInfo::getPlanCode, Function.identity()));
-            TKDriverAccidentVo driverAccidentVo = preciseInitParam.getDriverAccidentVo();
-            List<AccidentalDrivingVo> accidentalDrivings = commonQuoteVo.getAccidentalDrivings();
+            TKDriverAccidentVo driverAccidentVo = preciseInitParam.getDriverAccidentVo();// 泰康系统默认的驾意险信息
+            List<AccidentalDrivingVo> accidentalDrivings = commonQuoteVo.getAccidentalDrivings(); // 公司系统的驾意险参数
+            // 公司系统的驾意险参数为空证明没有选择驾意险
             if (CollectionUtils.isNotEmpty(accidentalDrivings)) {
                 for (AccidentalDrivingVo accidentalDriving : accidentalDrivings) {
                     if (carPlanInfoMap.isEmpty() || accidentalDriving.getRiskCode() == null) {
@@ -1130,6 +1131,10 @@ public class TKSimpleService {
                     driverAccidentVo.setQuoteAmountCN(tkCarPlanInfo.getPlanName());
                     driverAccidentVo.setPremium(new BigDecimal(tkCarPlanInfo.getSumPremium()));
                 }
+            } else {
+                driverAccidentVo.setIsSelect("0");
+                driverAccidentVo.setQuantity(0);
+                driverAccidentVo.setQuantityCname("不投保");
             }
         }
 

Разница между файлами не показана из-за своего большого размера
+ 88 - 87
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/impl/TKQuotationBaseServiceImpl.java


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

@@ -254,6 +254,21 @@ public class ZiJinCrawlerRequestComponent {
         return post.getBody();
     }
 
+    /**
+     * 验证码(报价出现转保标志)
+     *
+     * @param ziJinCrawlerRecognizeCodesRequest
+     * @return ZiJinCrawlerRecognizeCodesResponse
+     */
+    public ZiJinCrawlerRecognizeCodesResponse recognizeCodes(List<ZiJinCrawlerRecognizeCodesRequest> ziJinCrawlerRecognizeCodesRequest) throws IOException {
+        //设置headers
+        HttpHeaders httpHeaders = setHttpHeaders();
+        String jsonString = JSON.toJSONString(ziJinCrawlerRecognizeCodesRequest);
+        log.info("ziJinCrawlerRecognizeCodesRequest请求参数的值:{}", jsonString);
+        ResponseEntity<ZiJinCrawlerRecognizeCodesResponse> post = requestComponent.post(RequestUrl.SKIP_SING.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()), jsonString, ZiJinCrawlerRecognizeCodesResponse.class, httpHeaders);
+        return post.getBody();
+    }
+
     /**
      * 保存报价信息
      *

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

@@ -0,0 +1,32 @@
+package com.jzg.quotation.zijin.crawler.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 紫金保司验证码请求参数实体类
+ */
+@NoArgsConstructor
+@Data
+public class ZiJinCrawlerRecognizeCodesRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 7427030740879200532L;
+
+    /**
+     * 图片base64编码
+     */
+    @JsonProperty("base64")
+    private String base64;
+
+    /**
+     * 图片序列号
+     */
+    @JsonProperty("serialNo")
+    private String serialNo;
+
+}

+ 45 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/response/ZiJinCrawlerRecognizeCodesResponse.java

@@ -0,0 +1,45 @@
+package com.jzg.quotation.zijin.crawler.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @description:
+ * @author: wangrq
+ * @date: 2026/6/4 17:21
+ **/
+@NoArgsConstructor
+@Data
+public class ZiJinCrawlerRecognizeCodesResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -5489561233132767139L;
+
+    @JsonProperty("rtnCode")
+    private String rtnCode;
+
+    @JsonProperty("rtnMsg")
+    private String rtnMsg;
+
+    @JsonProperty("results")
+    private Results results;
+
+    @NoArgsConstructor
+    @Data
+    public static class Results implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -387691987089999421L;
+
+        @JsonProperty("serialNo")
+        private String serialNo;
+
+        @JsonProperty("result")
+        private String result;
+
+    }
+}

+ 2 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/enums/RequestUrl.java

@@ -23,6 +23,8 @@ public enum RequestUrl implements CrawlerRequestUrlStandard {
     GET_ACTUAL_VALUE("/api/v1/insurance/public/vehicle-proposal/vehicleModel/getActualValue", "获取车辆实际价值"),
     PRICE("/api/v1/vehicle/proposal-process/premium-calculation", "计算保费"),
     SAVE_QUOTE_INFORMATION("/dpgateway/insurance-order/order/save", "保存报价信息"),
+    // 报价提示转保标志,紫金系统调用该接口自动输入验证码跳过转保标志继续报价(二维码是报价接口失败返回:basePart.question)
+    SKIP_SING("/egg/controller/common/recognizeCodes", "跳过转保标志"),
     SAVE_PROPOSAL_ORDER("/kscd-frontend/order/saveProposal", "保存投保单"),
     // 税务登记证号
     GET_TAX_REGISTRY_NUMBER("/temp/api/v1/insurance/public/taxInfo/getTaxRegistryNumber", "获取税务登记证号"),

+ 1 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/enums/ResponseCode.java

@@ -13,6 +13,7 @@ import lombok.Getter;
 public enum ResponseCode {
 
     R_0000("0000", "成功"),
+    R_0001("9980", "转保标志!"),
     R_Z00002("Z00002", "再次调用此接口确认");
 
     private final String code;

+ 21 - 2
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/impl/ZiJinCrawlerRequestImpl.java

@@ -12,7 +12,6 @@ import com.jzg.commons.entity.quote.vo.base.LoginBase;
 import com.jzg.commons.entity.quote.vo.base.OrderBase;
 import com.jzg.commons.entity.quote.vo.image.InsuranceImageVo;
 import com.jzg.commons.exception.SystemException;
-import com.jzg.commons.util.ObjectUtil;
 import com.jzg.quotation.commons.annotation.QuoteCrawlerService;
 import com.jzg.quotation.commons.client.PlatformClient;
 import com.jzg.quotation.commons.constant.InsuranceCode;
@@ -202,6 +201,17 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
             // 设置紫金财险爬虫订单号,后面保存到数据库中
             ziJinCrawlerQuotationResponse.setOrderNo(ziJinCrawlerGetOrderNoResponse.getOrderNo());
 
+            // 转保标志
+            if (ResponseCode.R_0001.getCode().equals(ziJinCrawlerQuotationResponse.getRtnCode())) {
+                if (ziJinCrawlerQuotationResponse.getBasePart() != null) {
+                    ZiJinCrawlerRecognizeCodesResponse ziJinCrawlerRecognizeCodesResponse = ziJinCrawlerRequestComponent.recognizeCodes(buildRecognizeCodesRequests(ziJinCrawlerQuotationResponse));
+                    log.info("ziJinCrawlerRecognizeCodesResponse参数的值:{}", JSON.toJSONString(ziJinCrawlerRecognizeCodesResponse));
+                    // 再次调用报价接口
+                    if (ResponseCode.R_0000.getCode().equals(ziJinCrawlerRecognizeCodesResponse.getRtnCode())) {
+                        ziJinCrawlerQuotationResponse = ziJinCrawlerRequestComponent.quotation(ziJinCrawlerQuotationRequest, headers);
+                    }
+                }
+            }
             // 4.0 处理报价失败
             if (!ResponseCode.R_0000.getCode().equals(ziJinCrawlerQuotationResponse.getRtnCode())) {
                 ziJinCrawlerOrderService.save(quoteVo, ziJinCrawlerQuotationResponse, false);
@@ -231,6 +241,15 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
         }
     }
 
+    private ArrayList<ZiJinCrawlerRecognizeCodesRequest> buildRecognizeCodesRequests(ZiJinCrawlerQuotationResponse ziJinCrawlerQuotationResponse) {
+        ArrayList<ZiJinCrawlerRecognizeCodesRequest> ziJinCrawlerRecognizeCodesRequests = new ArrayList<>();
+        ZiJinCrawlerRecognizeCodesRequest ziJinCrawlerRecognizeCodesRequest = new ZiJinCrawlerRecognizeCodesRequest();
+        ziJinCrawlerRecognizeCodesRequest.setBase64(ziJinCrawlerQuotationResponse.getBasePart().getQuestion());
+        ziJinCrawlerRecognizeCodesRequest.setSerialNo("question");
+        ziJinCrawlerRecognizeCodesRequests.add(ziJinCrawlerRecognizeCodesRequest);
+        return ziJinCrawlerRecognizeCodesRequests;
+    }
+
     /**
      * 核保
      *
@@ -1034,7 +1053,7 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
         CarInfoVo carInfoVo = quoteVo.getCarInfoVo();
 
         // 获取税务登记证号
-        String taxRegistryNumber = "";
+        String taxRegistryNumber = "91140100MAE72CK690";
         // try {
         //     ZiJinCrawlerGetTaxRegistryNumberResponse taxResponse = ziJinCrawlerRequestComponent.getTaxRegistryNumber(comCode, headers);
         //     if (taxResponse != null && StringUtils.hasLength(taxResponse.getData())) {

Разница между файлами не показана из-за своего большого размера
+ 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 ="fyI0z7E7jY2CkcJmCEv9pRg73QvOr2ZN7hBoiBI9hdIBM8tvt6Qe850wRmo.lW0y40RLrX8KSEBrFvclREHplomQfhE9GrsXFqJo8_12_LAEAIrm9PG4KB_JLJ.g183AEHrlWewOMYlh_uPBevFbn7xxT5Pbvqt2vqEfSpqedNrdshoeVhncrwPZHn_XTxa16d_zDLL4yQ7";
+___content ="_hYQ6AavokJoelEcr.GeRau9ukUCvnxAejeXOVsqAfh28FWjXbBEv88GeZcKnM8wiUFA.fIx0Pfjsgy0kJCZWgTF7H7Qf39EnkQ8dbBgGdIdPeU.hb30zgA9Jzl_KG9IAQv5xGSMC.HSm4xPhK2SH0lWNuENucw64L3hNeA7xGHWsD3C3Tto_BJB3ajs4j6FlNsQoNvGHOG";

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
tenant/insurance/quotation-zijin/src/main/resources/js/tsssss.js


Некоторые файлы не были показаны из-за большого количества измененных файлов