|
@@ -0,0 +1,215 @@
|
|
|
+package com.winhc.bigdata.udf;
|
|
|
+
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.alibaba.fastjson.TypeReference;
|
|
|
+import com.aliyun.odps.udf.UDF;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
+
|
|
|
+import static com.winhc.bigdata.udf.get_names.LABOR_DISPUTES_REASON;
|
|
|
+import static com.winhc.bigdata.udf.get_names.getTitleV2;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Author: π
|
|
|
+ * @Description: 所有阶段案件身份
|
|
|
+ */
|
|
|
+public class AllNameTitle extends UDF {
|
|
|
+
|
|
|
+
|
|
|
+ public String evaluate(String titles, String allNames) {
|
|
|
+ if (StringUtils.isBlank(titles) || StringUtils.isBlank(allNames)) {
|
|
|
+ return allNames;
|
|
|
+ }
|
|
|
+ Map<String, Set<String>> tt = JSON.parseObject(titles, new TypeReference<HashMap<String, Set<String>>>() {
|
|
|
+ });
|
|
|
+ List<JSONObject> out = JSON.parseArray(allNames).toJavaList(JSONObject.class).stream().peek(x -> {
|
|
|
+ String name = x.getString("name");
|
|
|
+ Set<String> res = tt.getOrDefault(name, new HashSet<>());
|
|
|
+ x.fluentPut("title", res);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ return JSON.toJSONString(out);
|
|
|
+ }
|
|
|
+
|
|
|
+ public String evaluate(String infos) {
|
|
|
+ if (StringUtils.isBlank(infos)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ HashMap<String, Set<String>> m = new HashMap<>();
|
|
|
+
|
|
|
+ try {
|
|
|
+ Arrays.stream(infos.split("@@")).forEach(x -> {
|
|
|
+ JSON.parseArray(x).toJavaList(JSONObject.class).forEach(y -> {
|
|
|
+ String name = y.getString("name");
|
|
|
+ String stage = y.getString("stage");
|
|
|
+ String title = y.getString("title");
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(name) && StringUtils.isNotBlank(stage) && StringUtils.isNotBlank(title)) {
|
|
|
+ Set<String> j = m.getOrDefault(name, new HashSet<>());
|
|
|
+ j.add(stage + title);
|
|
|
+ m.put(name, j);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ } catch (Exception e) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ return JSON.toJSONString(m);
|
|
|
+ }
|
|
|
+
|
|
|
+ public String evaluate(String yg_name, String bg_name, String case_no) {
|
|
|
+// if (StringUtils.isBlank(yg_name) || StringUtils.isBlank(bg_name) || StringUtils.isBlank(case_no)) {
|
|
|
+// return null;
|
|
|
+// }
|
|
|
+
|
|
|
+ String case_no_par = JSON.parseArray(case_no).toJavaList(String.class).stream().findFirst().orElse(null);
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(case_no_par)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ //案件阶段
|
|
|
+ String stage = caseStageV2(case_no_par);
|
|
|
+ //原被告称谓
|
|
|
+ String yg_title_v2 = getTitleV2("0", case_no_par, JSON.parseArray(yg_name));
|
|
|
+ String bg_title_v2 = getTitleV2("1", case_no_par, JSON.parseArray(bg_name));
|
|
|
+
|
|
|
+ List<JSONObject> yg_r1 = extracted(yg_name, stage, yg_title_v2);
|
|
|
+ List<JSONObject> bg_r1 = extracted(bg_name, stage, bg_title_v2);
|
|
|
+
|
|
|
+ List<JSONObject> rr = Stream.concat(yg_r1.stream(), bg_r1.stream()).collect(Collectors.toList());
|
|
|
+ return JSON.toJSONString(rr);
|
|
|
+ }
|
|
|
+
|
|
|
+ private static List<JSONObject> extracted(String yg_name, String stage, String title) {
|
|
|
+ List<JSONObject> collect = JSON.parseArray(yg_name).toJavaList(JSONObject.class).stream().map(x -> {
|
|
|
+ JSONObject j = new JSONObject()
|
|
|
+ .fluentPut("name", x.getString("name"))
|
|
|
+ .fluentPut("litigant_id", x.getString("litigant_id"))
|
|
|
+ .fluentPut("stage", stage)
|
|
|
+ .fluentPut("title", title);
|
|
|
+ return j;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ return collect;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String caseStageV2(String caseNo) {
|
|
|
+ if (org.apache.commons.lang3.StringUtils.isNotBlank(caseNo)) {
|
|
|
+ if (StrUtil.containsAny(caseNo, "民") && StrUtil.containsAny(caseNo, "初")) { //特殊
|
|
|
+ return "一审";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "保")) {
|
|
|
+ return "财产保全";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "执恢")) {
|
|
|
+ return "恢复执行";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "执异")) {
|
|
|
+ return "执行异议";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "执复")) {
|
|
|
+ return "执行复议";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "司救执")) {
|
|
|
+ return "执行司法救助";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "司救民")) {
|
|
|
+ return "司法救助";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "执监")) {
|
|
|
+ return "执行监督";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "执他")) {
|
|
|
+ return "其他执行";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "执")) {
|
|
|
+ return "首次执行";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "刑初")) {
|
|
|
+ return "一审";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "民终")) {
|
|
|
+ return "二审";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "特")) {
|
|
|
+ return "特别程序";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "民申")) {
|
|
|
+ return "申请再审审查";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "刑终")) {
|
|
|
+ return "二审";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "行终")) {
|
|
|
+ return "二审";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "行初")) {
|
|
|
+ return "一审";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "民辖终")) {
|
|
|
+ return "管辖上诉";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "民辖")) {
|
|
|
+ return "管辖";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "民再")) {
|
|
|
+ return "再审";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "诉前调")) {
|
|
|
+ return "诉前调解";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "刑更")) {
|
|
|
+ return "刑罚与执行变更";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "行审复")) {
|
|
|
+ return "非诉行政行为申请执行审查复议";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "行审")) {
|
|
|
+ return "非诉行政行为申请执行审查";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "民督")) {
|
|
|
+ return "申请支付令审查";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "行申")) {
|
|
|
+ return "申请再审审查";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "刑再")) {
|
|
|
+ return "审判监督";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "行赔初")) {
|
|
|
+ return "赔偿一审";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "行赔终")) {
|
|
|
+ return "赔偿二审";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "行赔申")) {
|
|
|
+ return "赔偿申请再审审查";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "刑辖")) {
|
|
|
+ return "管辖";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "司惩")) {
|
|
|
+ return "司法制裁审查";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "民监")) {
|
|
|
+ return "依职权再审审查";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "刑他")) {
|
|
|
+ return "其他刑事";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "民抗")) {
|
|
|
+ return "抗诉再审审查";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "民催")) {
|
|
|
+ return "催告";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "民他")) {
|
|
|
+ return "其他民事";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "行辖")) {
|
|
|
+ return "管辖";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "民撤")) {
|
|
|
+ return "第三人撤销之诉";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "行再")) {
|
|
|
+ return "再审";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "委赔监")) {
|
|
|
+ return "司法赔偿监督审查";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "委赔")) {
|
|
|
+ return "赔偿委员会审理赔偿";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "刑医")) {
|
|
|
+ return "强制医疗";
|
|
|
+ } else if (StrUtil.containsAny(caseNo, "法赔")) {
|
|
|
+ return "法院作为赔偿义务机关自赔";
|
|
|
+ } else {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public static void main(String[] args) {
|
|
|
+ String yg_name = "[{\"name\":\"鄢进勇\",\"party_title\":\"原告\",\"litigant_id\":\"\"}]";
|
|
|
+ String bg_name = "[{\"name\":\"贵州鬼能投资股份有限公司织金县三塘镇四季春煤矿\",\"party_title\":\"被告\",\"litigant_id\":\"\"}]";
|
|
|
+ String case_no = "[\"(2021)黔0524民初8946号1号\"]";
|
|
|
+ AllNameTitle dd = new AllNameTitle();
|
|
|
+ String r1 = dd.evaluate(yg_name, bg_name, case_no);
|
|
|
+ System.out.println(r1);
|
|
|
+
|
|
|
+ String s2 = "[{\"stage\":\"二审\",\"name\":\"鄢进勇\",\"litigant_id\":\"\",\"title\":\"原告\"},{\"stage\":\"二审\",\"name\":\"贵州鬼能投资股份有限公司织金县三塘镇四季春煤矿\",\"litigant_id\":\"\",\"title\":\"被告\"}]";
|
|
|
+
|
|
|
+ String tmp_res = dd.evaluate(r1 + "@@" + s2);
|
|
|
+ System.out.println(tmp_res);
|
|
|
+ System.out.println(dd.evaluate("[{\"stage\":\"催告\",\"name\":\"关涵月\",\"litigant_id\":\"\"}]"));
|
|
|
+
|
|
|
+ System.out.println(dd.evaluate(tmp_res, yg_name));
|
|
|
+
|
|
|
+ }
|
|
|
+}
|