xufei 9 bulan lalu
induk
melakukan
0e6d82c6b2

+ 127 - 0
src/main/java/com/winhc/bigdata/bean/BaseCaseInfo.java

@@ -0,0 +1,127 @@
+package com.winhc.bigdata.bean;
+
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 输出实体类
+ */
+public class BaseCaseInfo {
+    private String flag;
+    private String detail_id;
+    private JSONArray yg_name;
+    private JSONArray bg_name;
+    private String case_no;
+    private String case_reason;
+    private JSONArray party_title;
+
+
+    public BaseCaseInfo() {
+
+    }
+
+    public BaseCaseInfo(String flag, String detail_id, JSONArray yg_name, JSONArray bg_name, String case_no, String case_reason, JSONArray party_title) {
+        this.flag = flag;
+        this.detail_id = detail_id;
+        this.yg_name = yg_name;
+        this.bg_name = bg_name;
+        this.case_no = case_no;
+        this.case_reason = case_reason;
+        this.party_title = party_title;
+    }
+
+    public String getFlag() {
+        return flag;
+    }
+
+    public void setFlag(String flag) {
+        this.flag = flag;
+    }
+
+    public String getDetail_id() {
+        return detail_id;
+    }
+
+    public void setDetail_id(String detail_id) {
+        this.detail_id = detail_id;
+    }
+
+    public JSONArray getYg_name() {
+        return yg_name;
+    }
+
+    public void setYg_name(JSONArray yg_name) {
+        this.yg_name = yg_name;
+    }
+
+    public JSONArray getBg_name() {
+        return bg_name;
+    }
+
+    public void setBg_name(JSONArray bg_name) {
+        this.bg_name = bg_name;
+    }
+
+    public String getCase_no() {
+        return case_no;
+    }
+
+    public void setCase_no(String case_no) {
+        this.case_no = case_no;
+    }
+
+    public String getCase_reason() {
+        return case_reason;
+    }
+
+    public void setCase_reason(String case_reason) {
+        this.case_reason = case_reason;
+    }
+
+    public JSONArray getParty_title() {
+        return party_title;
+    }
+
+    public void setParty_title(JSONArray party_title) {
+        this.party_title = party_title;
+    }
+
+    @Override
+    public String toString() {
+        return "CaseInfo{" +
+                "flag='" + flag + '\'' +
+                ", detail_id='" + detail_id + '\'' +
+                ", yg_name='" + yg_name + '\'' +
+                ", bg_name='" + bg_name + '\'' +
+                ", case_no='" + case_no + '\'' +
+                ", case_reason='" + case_reason + '\'' +
+                ", party_title='" + party_title + '\'' +
+                '}';
+    }
+
+
+    public static final List<String> keywords = Arrays.asList("某", "*", "*", "x", "ⅹ", "x", "X", "×");
+
+    public Integer getWeightV2() {
+        int w = 0;
+        if (yg_name != null && !yg_name.isEmpty()) {
+            w = w + 1;
+        }
+        if (bg_name != null && !bg_name.isEmpty()) {
+            w = w + 1;
+        }
+        w = w + nameWeigth(yg_name, bg_name);
+        return w;
+    }
+
+    public Integer nameWeigth(JSONArray yg_name, JSONArray bg_name) {
+        boolean b = StrUtil.containsAny(JSON.toJSONString(yg_name) + JSON.toJSONString(bg_name), keywords.toArray(new CharSequence[0]));
+        return b ? 0 : 1;
+
+    }
+
+}

+ 79 - 0
src/main/java/com/winhc/bigdata/bean/CaseInfo.java

@@ -0,0 +1,79 @@
+package com.winhc.bigdata.bean;
+
+
+public class CaseInfo {
+    private String flag;
+    private String detail_id;
+    private String yg_name;
+    private String bg_name;
+    private String case_no;
+    private String case_reason;
+    private String party_title;
+
+
+    public CaseInfo(String flag, String detail_id, String yg_name, String bg_name, String case_no, String case_reason, String party_title) {
+        this.flag = flag;
+        this.detail_id = detail_id;
+        this.yg_name = yg_name;
+        this.bg_name = bg_name;
+        this.case_no = case_no;
+        this.case_reason = case_reason;
+        this.party_title = party_title;
+    }
+
+    public String getFlag() {
+        return flag;
+    }
+
+    public void setFlag(String flag) {
+        this.flag = flag;
+    }
+
+    public String getDetail_id() {
+        return detail_id;
+    }
+
+    public void setDetail_id(String detail_id) {
+        this.detail_id = detail_id;
+    }
+
+    public String getYg_name() {
+        return yg_name;
+    }
+
+    public void setYg_name(String yg_name) {
+        this.yg_name = yg_name;
+    }
+
+    public String getBg_name() {
+        return bg_name;
+    }
+
+    public void setBg_name(String bg_name) {
+        this.bg_name = bg_name;
+    }
+
+    public String getCase_no() {
+        return case_no;
+    }
+
+    public void setCase_no(String case_no) {
+        this.case_no = case_no;
+    }
+
+    public String getCase_reason() {
+        return case_reason;
+    }
+
+    public void setCase_reason(String case_reason) {
+        this.case_reason = case_reason;
+    }
+
+    public String getParty_title() {
+        return party_title;
+    }
+
+    public void setParty_title(String party_title) {
+        this.party_title = party_title;
+    }
+}

+ 42 - 0
src/main/java/com/winhc/bigdata/bean/CaseInfoName.java

@@ -0,0 +1,42 @@
+package com.winhc.bigdata.bean;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 输出实体类
+ */
+public class CaseInfoName {
+
+    private List<JSONObject> yg_name = new ArrayList<>();
+    private List<JSONObject> bg_name = new ArrayList<>();
+
+
+    public CaseInfoName() {
+
+    }
+
+    public CaseInfoName(List<JSONObject> yg_name, List<JSONObject> bg_name) {
+        this.yg_name = yg_name;
+        this.bg_name = bg_name;
+    }
+
+    public List<JSONObject> getYg_name() {
+        return yg_name;
+    }
+
+    public void setYg_name(List<JSONObject> yg_name) {
+        this.yg_name = yg_name;
+    }
+
+    public List<JSONObject> getBg_name() {
+        return bg_name;
+    }
+
+    public void setBg_name(List<JSONObject> bg_name) {
+        this.bg_name = bg_name;
+    }
+}

File diff ditekan karena terlalu besar
+ 6 - 3
src/main/java/com/winhc/bigdata/udf/Name2Lawyer.java


+ 4 - 3
src/main/java/com/winhc/bigdata/udf/case_title.java

@@ -18,15 +18,16 @@ import java.util.stream.Collectors;
 public class case_title extends UDF {
 
 
-    public String evaluate(String ygNameList, String bgNameList, String labelList, String caseReason, String caseNoList) {
+    public String evaluate(String ygNameList, String bgNameList, String labelList, String caseReason, String caseNoList, String allNameList) {
 
 
         List<String> yg1 = convertNameList(ygNameList);
         List<String> bg1 = convertNameList(bgNameList);
+        List<String> all1 = convertNameList(allNameList);
         List<String> label1 = toList(labelList);
         List<String> caseno1 = toList(caseNoList);
 
-        String title = TitleUtil.convertTitle(yg1, bg1, label1, caseReason, caseno1);
+        String title = TitleUtil.convertTitle(yg1, bg1, label1, caseReason, caseno1, all1);
 
         return title;
 
@@ -61,7 +62,7 @@ public class case_title extends UDF {
         String caseReason = "金融借款合同纠纷";
         String caseNoList = "[\"(2021)粤0117民初8876号\",\"(2023)粤0117执4323号\"]";
         case_title n = new case_title();
-        System.out.println(n.evaluate(ygNameList, bgNameList, labelList, caseReason, caseNoList));
+        System.out.println(n.evaluate(ygNameList, bgNameList, labelList, caseReason, caseNoList, bgNameList));
         System.out.println();
 
     }

File diff ditekan karena terlalu besar
+ 51 - 0
src/main/java/com/winhc/bigdata/udf/get_json_object_v2.java


File diff ditekan karena terlalu besar
+ 344 - 0
src/main/java/com/winhc/bigdata/udf/get_names.java


+ 177 - 0
src/main/java/com/winhc/bigdata/udf/justice/CaseNoPartyTitleParseUtilCopy.java

@@ -0,0 +1,177 @@
+package com.winhc.bigdata.udf.justice;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.aliyun.odps.udf.ExecutionContext;
+import com.aliyun.odps.udf.UDF;
+import com.aliyun.odps.udf.UDFException;
+import com.winhc.bigdata.bean.Entity;
+import com.winhc.bigdata.bean.case_no.CaseNoTitleEntity;
+import com.winhc.bigdata.bean.case_no.LitigantInfo;
+import com.winhc.bigdata.bean.case_no.PartyInfo;
+import com.winhc.bigdata.utils.BaseUtils;
+import com.winhc.bigdata.utils.CaseNoPropertiesUtils;
+import org.apache.commons.lang3.StringUtils;
+
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * @Author: XuJiakai
+ * 2023/10/25 9:49
+ * <p>
+ * 依据案号生成展示当事人字段
+ * <p>
+ * case_no_party_title_parse
+ */
+public class CaseNoPartyTitleParseUtilCopy{
+    private  static  Map<String, Set<CaseNoTitleEntity>> caseNoMap = null;
+    private static List<String> caseNoSet = null;
+
+    private static Set<String> DEFAULT_CASE_NO_KEYWORD = new HashSet<String>() {{
+        add("民再");
+        add("刑再");
+        add("行再");
+        add("行抗");
+        add("行赔抗");
+        add("司惩");
+        add("刑他");
+    }};
+
+    static {
+            setup();
+    }
+
+
+    public static void setup(){
+        Entity<List<String>, Map<String, Set<CaseNoTitleEntity>>> caseNoKeyword = CaseNoPropertiesUtils.getCaseNoKeyword();
+        caseNoMap = caseNoKeyword._2;
+        caseNoSet = caseNoKeyword._1;
+    }
+
+    public static String  evaluate(String case_no, String plaintiff_info,
+                           String defendant_info) {
+
+        if (StringUtils.isEmpty(case_no)) {
+            return getPartyTitleDefault(plaintiff_info, defendant_info);
+        }
+        String caseNoKeyword = getCaseNoKeyword(case_no);
+        if (caseNoKeyword == null || DEFAULT_CASE_NO_KEYWORD.contains(caseNoKeyword)) {
+            return getPartyTitleDefault(plaintiff_info, defendant_info);
+        }
+
+
+        Set<CaseNoTitleEntity> caseNoTitleEntities = caseNoMap.get(caseNoKeyword);
+
+        if (caseNoTitleEntities == null) {
+            return getPartyTitleDefault(plaintiff_info, defendant_info);
+        }
+
+        Iterator<CaseNoTitleEntity> it = caseNoTitleEntities.iterator();
+        CaseNoTitleEntity caseNoTitleEntity = it.hasNext() ? it.next() : null;
+
+        assert caseNoTitleEntity != null;
+
+        ArrayList<PartyInfo> result = new ArrayList<>();
+        List<String> core = caseNoTitleEntity.getCore();
+        if (core.get(0) != null) {
+            PartyInfo partyInfo = new PartyInfo();
+            partyInfo.setTitle_std(core.get(0));
+            partyInfo.setTitle_original(core.get(0));
+            partyInfo.setShow_level(0);
+            List<LitigantInfo> litigantInfos = parseLitigant(plaintiff_info);
+            partyInfo.setParty_info(litigantInfos);
+
+            if (litigantInfos != null && !litigantInfos.isEmpty()) {
+                result.add(partyInfo);
+            }
+        }
+
+        if (core.get(1) != null) {
+            PartyInfo partyInfo = new PartyInfo();
+            partyInfo.setTitle_std(core.get(1));
+            partyInfo.setTitle_original(core.get(1));
+            partyInfo.setShow_level(1);
+            List<LitigantInfo> litigantInfos = parseLitigant(defendant_info);
+            partyInfo.setParty_info(litigantInfos);
+            if (litigantInfos != null && !litigantInfos.isEmpty()) {
+                result.add(partyInfo);
+            }
+        }
+        return BaseUtils.toString(result);
+    }
+
+    private static String getPartyTitleDefault(String plaintiff_info,
+                                               String defendant_info) {
+        List<PartyInfo> party_info_new = new ArrayList<>();
+        Set<String> tmpSet = new HashSet<>();
+
+        ArrayList<LitigantInfo> list = new ArrayList<>();
+        List<LitigantInfo> litigantInfos = parseLitigant(plaintiff_info);
+        if (litigantInfos != null) {
+            for (LitigantInfo litigantInfo : litigantInfos) {
+                if (!tmpSet.contains(litigantInfo.getName())) {
+                    list.add(litigantInfo);
+                    tmpSet.add(litigantInfo.getName());
+                }
+            }
+        }
+
+        List<LitigantInfo> litigantInfos2 = parseLitigant(defendant_info);
+        if (litigantInfos2 != null) {
+            for (LitigantInfo litigantInfo : litigantInfos2) {
+                if (!tmpSet.contains(litigantInfo.getName())) {
+                    list.add(litigantInfo);
+                    tmpSet.add(litigantInfo.getName());
+                }
+            }
+        }
+
+
+        PartyInfo partyInfo = new PartyInfo();
+        partyInfo.setShow_level(0);
+        partyInfo.setTitle_std("当事人");
+        partyInfo.setTitle_original("当事人");
+        partyInfo.setParty_info(list);
+
+        party_info_new.add(partyInfo);
+        return BaseUtils.toString(party_info_new);
+    }
+
+
+    private static List<LitigantInfo> parseLitigant(String litigant_info) {
+        if (StringUtils.isEmpty(litigant_info)) {
+            return null;
+        }
+        JSONArray objects = JSON.parseArray(litigant_info);
+        ArrayList<LitigantInfo> list = new ArrayList<>();
+        for (Object object : objects) {
+            JSONObject j = ((JSONObject) object);
+            LitigantInfo litigantInfo = j.toJavaObject(LitigantInfo.class);
+            list.add(litigantInfo);
+        }
+        return list;
+    }
+
+
+    private static String getCaseNoKeyword(String caseNo) {
+        for (String s : caseNoSet) {
+            if (caseNo.contains(s)) {
+                return s;
+            }
+        }
+        return null;
+    }
+
+
+    public static void main(String[] args) throws UDFException, IOException {
+        String evaluate = CaseNoPartyTitleParseUtilCopy.evaluate("{2021)渝0103民初16256号","[]", null);
+        System.out.println(evaluate);
+
+        String evaluate1 = CaseNoPartyTitleParseUtilCopy.evaluate("{2021)渝0103民初16256号", "", "[{\"name\": \"冯忠袁\", \"litigant_id\": \"\"},{\"name\": \"冯忠袁22\", \"litigant_id\": \"\"}]");
+        System.out.println(evaluate1);
+    }
+
+
+}

+ 53 - 0
src/main/java/com/winhc/bigdata/udf/name_compare.java

@@ -0,0 +1,53 @@
+package com.winhc.bigdata.udf;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.aliyun.odps.udf.UDF;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+/**
+ * @Author: π
+ * @Description: 结果比较
+ */
+public class name_compare extends UDF {
+
+
+    public String evaluate(String yg_name1, String yg_name2, String bg_name1, String bg_name2) {
+        return compare(extracted(yg_name1), extracted(yg_name2)) + compare(extracted(bg_name1), extracted(bg_name2));
+    }
+
+    private static String compare(List<String> name1, List<String> name2) {
+        if (CollectionUtils.isEmpty(name1) && CollectionUtils.isEmpty(name2)) {
+            return "0";
+        }
+
+        Collection intersection = CollectionUtils.intersection(name1, name2);
+
+        if (intersection.size() == name1.size() && intersection.size() == name2.size()) {
+            return "0";
+        }
+        return "1";
+    }
+
+    private static List<String> extracted(String name) {
+        List<String> list = JSON.parseArray(name).toJavaList(JSONObject.class)
+                .stream()
+                .map(x -> x.getString("name"))
+                .filter(StringUtils::isNotBlank)
+                .distinct().collect(Collectors.toList());
+        return list;
+    }
+
+    public static void main(String[] args) {
+        String res = new name_compare().evaluate("", "", "", "");
+        System.out.println(res);
+
+    }
+}

+ 54 - 0
src/main/java/com/winhc/bigdata/udf/name_contains.java

@@ -0,0 +1,54 @@
+package com.winhc.bigdata.udf;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.aliyun.odps.udf.UDF;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @Author: π
+ * @Description: 名称包含
+ */
+public class name_contains extends UDF {
+
+
+    public String evaluate(String yg_name1, String bg_name1) {
+        return compare(extracted(yg_name1), extracted(bg_name1));
+    }
+
+    private static String compare(List<String> name1, List<String> name2) {
+        if (CollectionUtils.isEmpty(name1) || CollectionUtils.isEmpty(name2)) {
+            return "0";
+        }
+
+        Collection intersection = CollectionUtils.intersection(name1, name2);
+
+        if (intersection.size() > 0) {
+            return "1";
+        }
+        return "0";
+    }
+
+    private static List<String> extracted(String name) {
+        if(StringUtils.isBlank(name)){
+            return new ArrayList<>();
+        }
+        List<String> list = JSON.parseArray(name).toJavaList(JSONObject.class)
+                .stream()
+                .map(x -> x.getString("name"))
+                .filter(StringUtils::isNotBlank)
+                .distinct().collect(Collectors.toList());
+        return list;
+    }
+
+    public static void main(String[] args) {
+
+
+    }
+}

+ 17 - 6
src/main/java/com/winhc/bigdata/utils/TitleUtil.java

@@ -4,6 +4,7 @@ import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @Description: TitleUtil
@@ -13,9 +14,10 @@ import java.util.*;
 public class TitleUtil {
 
     /**
-     *  案件类型 map
+     * 案件类型 map
      */
     private static final Map<String, String> CASE_TYPE_MAP = new HashMap<>();
+
     static {
         CASE_TYPE_MAP.put("辖", "管辖案件");
         CASE_TYPE_MAP.put("民", "民事案件");
@@ -26,16 +28,16 @@ public class TitleUtil {
     }
 
     /**
-     *  label list
+     * label list
      */
     private static final List<String> LABEL_LIST = new ArrayList<>(Arrays.asList("裁判文书", "开庭公告", "法院公告", "送达公告", "立案信息"));
 
     /**
-     *  特殊四个标签
+     * 特殊四个标签
      */
     private static final List<String> SPECIAL_LABEL_LIST = new ArrayList<>(Arrays.asList("失信人", "被执行人", "限制高消费", "终本案件"));
 
-    public static String convertTitle(List<String> ygNameList, List<String> bgNameList, List<String> labelList, String caseReason, List<String> caseNoList) {
+    public static String convertTitle(List<String> ygNameList, List<String> bgNameList, List<String> labelList, String caseReason, List<String> caseNoList, List<String> allNameList) {
         StringBuilder stringBuilder = new StringBuilder();
         // format yg,bg
         String ygName = convertNameList(ygNameList);
@@ -49,6 +51,13 @@ public class TitleUtil {
         // c: 如果非失信、被执行人、限高、终本,有原告被告 && 没有案由显示xx、xx 民事案件(根据案号判断是什么类型的案件)
         // d:如果只有案由,没有原被告,显示案由
         if (CollectionUtils.isEmpty(ygNameList) && CollectionUtils.isEmpty(bgNameList)) {
+            //没有原被告取all_name
+            if (CollectionUtils.isNotEmpty(allNameList)) {
+                if (allNameList.size() > 3) {
+                    return allNameList.stream().limit(3).collect(Collectors.joining("、")) + "等" + caseReason;
+                }
+                return allNameList.stream().limit(3).collect(Collectors.joining("、")) + caseReason;
+            }
             // 直接返回案由
             return caseReason;
         }
@@ -57,7 +66,7 @@ public class TitleUtil {
         // 移除特殊案件标签和普通标签
         List<String> localList = new ArrayList<>(labelList);
         CASE_TYPE_MAP.forEach((key, value) -> localList.remove(value));
-        LABEL_LIST.forEach(localList :: remove);
+        LABEL_LIST.forEach(localList::remove);
         if (StringUtils.isBlank(ygName)) {
             boolean contain = true;
             // 无原告, 由特殊标签
@@ -96,6 +105,7 @@ public class TitleUtil {
 
     /**
      * 格式化原被告name
+     *
      * @param list 1
      * @return java.util.List<java.lang.String>
      * @Author: xda
@@ -106,13 +116,14 @@ public class TitleUtil {
             return "";
         }
         if (list.size() > 3) {
-            return String.format("%s等", String.join("、", list.subList(0,3)));
+            return String.format("%s等", String.join("、", list.subList(0, 3)));
         }
         return String.join("、", list);
     }
 
     /**
      * 根据案号获取案件类型
+     *
      * @param caseNoList 1
      * @return java.lang.String
      * @Author: xda