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

Merge branch 'master' of http://39.101.143.165:8090/785834757/jzg

lipf пре 2 месеци
родитељ
комит
7431ab9198

+ 33 - 3
tenant/insurance/quotation-renbaonew/src/main/java/com/jzg/quotation/renbaonew/crawler/service/impl/RenBaoNewCrawlerRequestImpl.java

@@ -46,6 +46,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.UUID;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * 人保车险爬虫服务实现 * 
@@ -63,6 +65,8 @@ public class RenBaoNewCrawlerRequestImpl implements RenBaoNewCrawlerRequest {
     private final RenBaoNewCrawlerCacheComponent cacheComponent;
     private final RenBaoNewCrawlerProperties properties;
     private final RenBaoNewCrawlerRequestBuilder requestBuilder;
+    // 匹配PDAA、PDZA保单号正则
+    private static final Pattern POLICY_NO_PATTERN = Pattern.compile("(PDAA|PDZA)\\d+");
 
     /**
      * 登录方法
@@ -169,8 +173,8 @@ public class RenBaoNewCrawlerRequestImpl implements RenBaoNewCrawlerRequest {
                 String validate0 = response.getStatusText();
                 String validate1 = "/bizSave/caculatePremium";
                 log.error("检测到滑块: statusText={}, {}", validate0, JSONUtil.toJsonStr(response));
-                if (hkcs < 2) {
-                    while (hkcs < 2) {
+                if (hkcs < 3) {
+                    while (hkcs < 3) {
                         hkcs++;
                         passSpilderMainRes = passSpilderMain(headers, username, validate0, validate1);
                         if (passSpilderMainRes) {
@@ -758,9 +762,20 @@ public class RenBaoNewCrawlerRequestImpl implements RenBaoNewCrawlerRequest {
         resultsVo.setBiRiskInfoVo(biRisk);
 
         //获取转续保标识
-        resultsVo.getScoreVo().setJqRenewal("3");
+        String error = quoteResponse.getData().getError();
         resultsVo.getScoreVo().setSyRenewal("3");
+        resultsVo.getScoreVo().setJqRenewal("3");
+        if(error.contains("此单符合续保条件,已按照续保流程处理")){
+            List<String> policyNoList = extractPolicyNos(error);
+            for (String policyNo : policyNoList) {
+                if (policyNo.startsWith("PDAA")) {
+                    resultsVo.getScoreVo().setSyRenewal("2");
+                } else if (policyNo.startsWith("PDZA")) {
+                    resultsVo.getScoreVo().setJqRenewal("2");
+                }
+            }
 
+        }
 
         String proposalNoDAA = "";
         String proposalNoDZA = "";
@@ -922,6 +937,21 @@ public class RenBaoNewCrawlerRequestImpl implements RenBaoNewCrawlerRequest {
         return resultsVo;
     }
 
+    /**
+     * 提取所有上年保单号
+     */
+    public static List<String> extractPolicyNos(String text) {
+        List<String> list = new ArrayList<>();
+        if (text == null || text.isBlank()) {
+            return list;
+        }
+        Matcher matcher = POLICY_NO_PATTERN.matcher(text);
+        while (matcher.find()) {
+            list.add(matcher.group());
+        }
+        return list;
+    }
+
     /**
      * 核保方法
      *