Browse Source

feat: party_summary函数

许家凯 1 year ago
parent
commit
d76f641ef5
1 changed files with 109 additions and 0 deletions
  1. 109 0
      src/main/java/com/winhc/bigdata/udf/justice/PartySummaryUDF.java

+ 109 - 0
src/main/java/com/winhc/bigdata/udf/justice/PartySummaryUDF.java

@@ -0,0 +1,109 @@
+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.UDF;
+import com.winhc.bigdata.utils.BaseUtils;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author: XuJiakai
+ * 2024/1/15 15:54
+ * <p>
+ * function name: party_summary
+ */
+public class PartySummaryUDF extends UDF {
+    private static String getTitleClasses(String title) {
+        if (title.contains("被申请人")) {
+            return "被申请人";
+        }
+        if (title.contains("申请人")) {
+            return "申请人";
+        }
+        if (title.contains("申请执行人")) {
+            return "申请执行人";
+        }
+        if (title.contains("被执行人")) {
+            return "被执行人";
+        }
+        if (title.contains("被上诉人")) {
+            return "被上诉人";
+        }
+        if (title.contains("上诉人")) {
+            return "上诉人";
+        }
+        if (title.contains("原告")) {
+            return "原告";
+        }
+        if (title.contains("被告")) {
+            return "被告";
+        }
+        if (title.contains("第三人")) {
+            return "第三人";
+        }
+        return "其他";
+    }
+
+    private static List<String> partyList(String title_classes, JSONArray litigant_id) {
+        if (litigant_id == null || litigant_id.isEmpty()) {
+            return null;
+        }
+        List<String> result = new ArrayList<>();
+        for (int i = 0; i < litigant_id.size(); i++) {
+            JSONObject jsonObject = litigant_id.getJSONObject(i);
+            String name = jsonObject.getString("name");
+            String keyno = jsonObject.getString("litigant_id");
+            if (StringUtils.isNotEmpty(name) && StringUtils.isNotEmpty(keyno)) {
+                result.add(keyno + "_" + title_classes);
+            }
+        }
+        return result;
+    }
+
+    public static List<String> getPartySummary(String party_info_new) {
+        List<String> result = new ArrayList<>();
+        try {
+            if (StringUtils.isEmpty(party_info_new)) {
+                return result;
+            }
+            JSONArray jsonArray = JSONObject.parseArray(party_info_new);
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject item = jsonArray.getJSONObject(i);
+                String title_original = item.getString("title_original");
+                String titleClasses = getTitleClasses(title_original);
+                JSONArray party_info = item.getJSONArray("party_info");
+                List<String> strings = partyList(titleClasses, party_info);
+                if (strings != null && !strings.isEmpty()) {
+                    result.addAll(strings);
+                }
+            }
+        } catch (Exception e) {
+        }
+        return result;
+    }
+
+
+    public String evaluate(String party_info_new) {
+        if (StringUtils.isEmpty(party_info_new)) {
+            return null;
+        }
+        try {
+            List<String> partySummary = getPartySummary(party_info_new);
+            if (partySummary == null || partySummary.isEmpty()) {
+                return null;
+            }
+            return BaseUtils.toString(partySummary);
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    public static void main(String[] args) {
+        String res = new PartySummaryUDF().evaluate("[{\"party_info\":[{\"litigant_id\":\"c342f2593121441b04f8e7e40c6025a9\",\"name\":\"江西星森国际贸易有限公司\"}],\"show_level\":0,\"title_original\":\"原告\",\"title_std\":\"原告\"},{\"party_info\":[{\"litigant_id\":\"51cc7fece6c443b7ab6934eadd376405\",\"name\":\"深圳市颢赫科技有限公司\"},{\"litigant_id\":\"\",\"name\":\"蔡湘池\"}],\"show_level\":1,\"title_original\":\"被告\",\"title_std\":\"被告\"}]");
+        System.out.println(res);
+    }
+}