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

fix: 添加case_no_party_title_parse函数

许家凯 1 год назад
Родитель
Сommit
6e45fb67b4

+ 12 - 4
src/main/java/com/winhc/bigdata/udf/justice/CaseNoPartyTitleParseUtil.java

@@ -20,15 +20,21 @@ import java.util.*;
 /**
  * @Author: XuJiakai
  * 2023/10/25 9:49
- *
+ * <p>
  * 依据案号生成展示当事人字段
- *
+ * <p>
  * case_no_party_title_parse
  */
 public class CaseNoPartyTitleParseUtil extends UDF {
     private Map<String, Set<CaseNoTitleEntity>> caseNoMap = null;
     private List<String> caseNoSet = null;
 
+    private static Set<String> DEFAULT_CASE_NO_KEYWORD = new HashSet<String>() {{
+        add("民再");
+        add("刑再");
+        add("行再");
+    }};
+
     @Override
     public void setup(ExecutionContext ctx) throws UDFException, IOException {
         Entity<List<String>, Map<String, Set<CaseNoTitleEntity>>> caseNoKeyword = CaseNoPropertiesUtils.getCaseNoKeyword();
@@ -44,9 +50,11 @@ public class CaseNoPartyTitleParseUtil extends UDF {
             return null;
         }
         String caseNoKeyword = getCaseNoKeyword(case_no);
-        if (caseNoKeyword == null) {
+        if (caseNoKeyword == null || DEFAULT_CASE_NO_KEYWORD.contains(caseNoKeyword)) {
             return getPartyTitleDefault(plaintiff_info, defendant_info);
         }
+
+
         Set<CaseNoTitleEntity> caseNoTitleEntities = caseNoMap.get(caseNoKeyword);
 
         Iterator<CaseNoTitleEntity> it = caseNoTitleEntities.iterator();
@@ -129,7 +137,7 @@ public class CaseNoPartyTitleParseUtil extends UDF {
     public static void main(String[] args) throws UDFException, IOException {
         CaseNoPartyTitleParseUtil caseNoPartyTitleParseUtil = new CaseNoPartyTitleParseUtil();
         caseNoPartyTitleParseUtil.setup(null);
-        String evaluate = caseNoPartyTitleParseUtil.evaluate("(2022)鲁0214执保303号", "[{\"name\":\"杨云\",\"litigant_id\":\"\"}]", "[{\"name\":\"李久倩\",\"litigant_id\":\"pb95466c950ea6164f3ce90c234d365a5\"},{\"name\":\"陈全英\",\"litigant_id\":\"p05b849d9da746669f0414d1dd07ad9c4\"},{\"name\":\"江秀波\",\"litigant_id\":\"\"},{\"name\":\"青岛智力高通信息科技有限公司\",\"litigant_id\":\"66b0b993e2ce10f35b63b44c7d3f70f7\"}]");
+        String evaluate = caseNoPartyTitleParseUtil.evaluate("{2021)渝0103民初16256号", "[{\"name\": \"冯忠袁\", \"litigant_id\": \"\"}]", "[]");
         System.out.println(evaluate);
     }
 

+ 2 - 2
src/main/java/com/winhc/bigdata/utils/BaseUtils.java

@@ -1,6 +1,7 @@
 package com.winhc.bigdata.utils;
 
 import cn.hutool.core.io.file.FileReader;
+import cn.hutool.core.io.resource.ResourceUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.serializer.SerializerFeature;
 
@@ -11,8 +12,7 @@ import com.alibaba.fastjson.serializer.SerializerFeature;
 public class BaseUtils {
 
     public static String readeResourceFile(String pathFromSourceRoot) {
-        FileReader fileReader = new FileReader(pathFromSourceRoot);
-        return fileReader.readString();
+        return ResourceUtil.readUtf8Str(pathFromSourceRoot);
     }
 
     public static String toString(Object o) {

+ 6 - 3
src/main/java/com/winhc/bigdata/utils/CaseNoPropertiesUtils.java

@@ -31,7 +31,7 @@ public class CaseNoPropertiesUtils {
             JSONObject item = ((JSONObject) o);
             recursion(item, null, caseNoMap, caseNoSet);
         }
-        List<String> collect = caseNoSet.stream().sorted(Comparator.comparingInt(String::length).reversed()).collect(Collectors.toList());
+        List<String> collect = caseNoSet.stream().filter(Objects::nonNull).sorted(Comparator.comparingInt(String::length).reversed()).collect(Collectors.toList());
         return Entity.of(collect, caseNoMap);
     }
 
@@ -41,7 +41,11 @@ public class CaseNoPropertiesUtils {
         if (item.containsKey("party_title")) {
             thisPartyTitle = item.getObject("party_title", CaseNoTitleEntity.class);
         }
-        if (item.containsKey("sub_case_type")) {
+        if (item.containsKey("case_no_keyword")) {
+            String caseNoKeyword = item.getString("case_no_keyword");
+            caseNoSet.add(caseNoKeyword);
+        }
+        if (item.containsKey("sub_case_type")&&!item.getJSONArray("sub_case_type").isEmpty()) {
             JSONArray sub_case_type = item.getJSONArray("sub_case_type");
             for (Object o : sub_case_type) {
                 recursion(((JSONObject) o), thisPartyTitle, caseNoMap, caseNoSet);
@@ -49,7 +53,6 @@ public class CaseNoPropertiesUtils {
         } else {
             if (item.containsKey("case_no_keyword")) {
                 String caseNoKeyword = item.getString("case_no_keyword");
-                caseNoSet.add(caseNoKeyword);
                 if (thisPartyTitle != null) {
                     if (caseNoMap.containsKey(caseNoKeyword)) {
                         Set<CaseNoTitleEntity> caseNoTitleEntities = caseNoMap.get(caseNoKeyword);