xufei 7 ヶ月 前
コミット
4284ec5136

+ 215 - 0
src/main/java/com/winhc/bigdata/udf/AllNameTitle.java

@@ -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));
+
+    }
+}

+ 92 - 0
src/main/java/com/winhc/bigdata/udf/CourtAnnouncement.java

@@ -0,0 +1,92 @@
+package com.winhc.bigdata.udf;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.aliyun.odps.udf.UDF;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+import static com.winhc.bigdata.udf.GetCompanyChangeInfo.splitDate;
+import static com.winhc.bigdata.udf.GetConstructionBidInfo.md5;
+import static com.winhc.bigdata.udf.GetConstructionPermitInfo.concatws;
+import static com.winhc.bigdata.utils.CompanyUtils.cleanup;
+
+/**
+ * @author: 主键规则
+ * 2021/8/30 16:57
+ */
+public class CourtAnnouncement extends UDF {
+
+    private static final Pattern pattern = Pattern.compile("[^\\u4e00-\\u9fa5a-zA-Z\\(\\)().]");
+
+    public List<String> evaluate(String case_no, String announcement_type, String publish_date, String court_name, String plaintiff, String litigant, String plaintiff_info, String litigant_info) {
+
+        String r1 = md5(cleanup(concatws("", case_no, announcement_type, splitDate(publish_date), court_name, plaintiff, litigant)));
+
+        List<String> pl = split(plaintiff);
+        List<String> li = split(litigant);
+        pl.sort(Collections.reverseOrder());
+        li.sort(Collections.reverseOrder());
+
+        String r2 = md5(cleanup(concatws("", case_no, announcement_type, splitDate(publish_date), court_name,
+                String.join(",", pl), String.join(",", li))));
+
+
+        List<String> pl2 = split(plaintiff);
+        List<String> li2 = split(litigant);
+        Collections.sort(pl2);
+        Collections.sort(li2);
+
+        String r3 = md5(cleanup(concatws("", case_no, announcement_type, splitDate(publish_date), court_name,
+                String.join(",", pl2), String.join(",", li2))));
+
+        List<String> list1 = Optional.ofNullable(JSON.parseArray(plaintiff_info)).
+                orElse(new JSONArray())
+                .toJavaList(JSONObject.class).stream()
+                .map(x -> x.getString("name"))
+                .filter(StringUtils::isNotBlank).sorted().collect(Collectors.toList());
+
+        List<String> list2 = Optional.ofNullable(JSON.parseArray(litigant_info)).
+                orElse(new JSONArray())
+                .toJavaList(JSONObject.class).stream()
+                .map(x -> x.getString("name"))
+                .filter(StringUtils::isNotBlank).sorted().collect(Collectors.toList());
+        String r4 = md5(cleanup(concatws("", case_no, announcement_type, splitDate(publish_date), court_name,
+                String.join(",", list1), String.join(",", list2))));
+
+
+        return Arrays.asList(r1, r2, r3, r4);
+    }
+
+    public List<String> split(String str) {
+        if (StringUtils.isBlank(str)) return new ArrayList<>();
+        String[] res = pattern.split(str);
+        return Arrays.asList(res);
+    }
+
+    public static void main(String[] args) {
+        CourtAnnouncement j = new CourtAnnouncement();
+        String case_no = "(2023)浙0602民初9753号";
+        String announcement_type = "裁判文书";
+        String publish_date = "2024-01-23";
+        String court_name = "绍兴市越城区人民法院";
+        String plaintiff = "深圳农村商业银行股份有限公司广西柳江支行";
+        String litigant = "杨国万,李指妹,李满妹";
+        String plaintiff_info = "[{\"name\":\"张志祥\",\"litigant_id\":\"\"}]";
+
+        String litigant_info = "[{\"name\":\"陈学翔\",\"litigant_id\":\"\"},{\"name\":\"中国人民财产保险股份有限公司绍兴市分公司\",\"litigant_id\":\"a7c335d0e597b01e727b4747a8a5727c\"}]";
+        System.out.println(j.evaluate(case_no, announcement_type, publish_date, court_name, plaintiff, litigant, plaintiff_info, litigant_info));
+        System.out.println(j.split("JONAH CHONGHO HONG,JINGNAN JIANG"));
+        System.out.println(j.split("陈华辉,何李红,陈贵亮,陈赐容,陈凤群"));
+        System.out.println(j.split("施兴成、罗粉扣"));
+        System.out.println(j.split("倪金坤、倪阿美、倪俊意、江春豪、沈伟忠、顾美珍、倪东林、戴长芹、沈富明、沈益民"));
+        System.out.println();
+
+    }
+
+}

+ 85 - 10
src/main/java/com/winhc/bigdata/udf/get_names.java

@@ -63,9 +63,84 @@ public class get_names extends UDF {
         return Arrays.asList(JSON.toJSONString(yg_name), JSON.toJSONString(bg_name));
     }
 
+    public static List<String> LABOR_DISPUTES_REASON = Arrays.asList(
+            "劳动合同纠纷",
+            "生育保险待遇纠纷",
+            "人事争议",
+            "辞职争议",
+            "福利待遇纠纷",
+            "劳动争议、人事争议",
+            "集体合同纠纷",
+            "确认劳动关系纠纷",
+            "聘任、聘用合同争议",
+            "竞业限制纠纷",
+            "养老保险待遇纠纷",
+            "追索劳动报酬纠纷",
+            "养老金纠纷",
+            "辞退争议",
+            "工伤保险待遇纠纷",
+            "劳动争议",
+            "社会保险纠纷",
+            "失业保险待遇纠纷",
+            "聘用合同争议",
+            "经济补偿金纠纷",
+            "非全日制用工纠纷",
+            "社会保险纠纷",
+            "劳务派遣合同纠纷",
+            "医疗费、医疗保险待遇纠纷",
+            "医疗费",
+            "医疗保险待遇纠纷");
+
     public CaseInfoName getNames(List<BaseCaseInfo> datas) {
         CaseInfoName outName = new CaseInfoName();
 
+        //劳动争议优先 (被执人当被告,如果所有当事人去除被执差集一个人,取差集当原告)
+        List<BaseCaseInfo> reasons = datas.stream()
+                .filter(c -> c.getCase_reason() != null
+                        && LABOR_DISPUTES_REASON.contains(c.getCase_reason())
+                )
+                .collect(Collectors.toList());
+
+        if (reasons.size() > 0) {
+            //被告
+            //有执行阶段-被告取集合
+            JSONArray allBgNames = mergeAllName(datas.stream()
+                    .filter(c -> c.getCase_no() != null && c.getCase_no().contains("执"))
+                    .map(BaseCaseInfo::getBg_name)
+                    .filter(Objects::nonNull)
+                    .collect(Collectors.toList()));
+
+            outName.setBg_name(allBgNames.toJavaList(JSONObject.class));
+
+            //被告names
+            List<String> bg_names = allBgNames.toJavaList(JSONObject.class)
+                    .stream()
+                    .map(x -> x.getString("name"))
+                    .filter(org.apache.commons.lang3.StringUtils::isNotBlank)
+                    .distinct()
+                    .collect(Collectors.toList());
+
+            //所有当事人
+            List<JSONArray> concat = Stream.concat(
+                            datas.stream().map(BaseCaseInfo::getYg_name),
+                            datas.stream().map(BaseCaseInfo::getBg_name)
+                    )
+                    .collect(Collectors.toList());
+            JSONArray allNames = mergeAllName(concat);
+
+            List<JSONObject> allYgNamesTmp = allNames
+                    .toJavaList(JSONObject.class)
+                    .stream()
+                    .filter(x -> org.apache.commons.lang3.StringUtils.isNotBlank(x.getString("name")) && !bg_names.contains(x.getString("name")))
+                    .collect(Collectors.toList());
+
+            //所有当事人剔除被告后为1,则为原告
+            if (allYgNamesTmp.size() == 1) {
+                outName.setYg_name(allYgNamesTmp);
+            }
+            return outName;
+        }
+
         //一审优先
         BaseCaseInfo case1 = datas.stream()
                 .filter(c -> c.getCase_no() != null && c.getCase_no().contains("初"))
@@ -132,16 +207,16 @@ public class get_names extends UDF {
 
         }
 
-        List<BaseCaseInfo> reasons = datas.stream()
-                .filter(c -> c.getCase_reason() != null
-                        && (c.getCase_reason().contains("劳动争议")
-                        || c.getCase_reason().contains("人事争议")))
-                .collect(Collectors.toList());
-
-        //如果没有文书,排除劳动争议
-        if (reasons.size() > 0) {
-            return outName;
-        }
+//        List<BaseCaseInfo> reasons = datas.stream()
+//                .filter(c -> c.getCase_reason() != null
+//                        && (c.getCase_reason().contains("劳动争议")
+//                        || c.getCase_reason().contains("人事争议")))
+//                .collect(Collectors.toList());
+//
+//        //如果没有文书,排除劳动争议
+//        if (reasons.size() > 0) {
+//            return outName;
+//        }
 
         //有执行阶段-原被告取集合
         List<BaseCaseInfo> zxr_list = datas.stream()

+ 31 - 0
src/main/java/com/winhc/bigdata/udf/is_labor_reason.java

@@ -0,0 +1,31 @@
+package com.winhc.bigdata.udf;
+
+import com.aliyun.odps.udf.UDF;
+import org.apache.commons.lang.StringUtils;
+
+import static com.winhc.bigdata.udf.get_names.LABOR_DISPUTES_REASON;
+
+/**
+ * @Author: π
+ * @Description: 劳动案由判断
+ */
+public class is_labor_reason extends UDF {
+
+
+    public Boolean evaluate(String case_reason) {
+        if (StringUtils.isBlank(case_reason)) {
+            return false;
+        }
+        if (LABOR_DISPUTES_REASON.contains(case_reason)) {
+            return true;
+        }
+        return false;
+    }
+
+    public static void main(String[] args) {
+        String str1 = "人事争议";
+        is_labor_reason dd = new is_labor_reason();
+        System.out.println(dd.evaluate(str1));
+
+    }
+}

+ 93 - 0
src/main/java/com/winhc/bigdata/udf/name_compare_v2.java

@@ -0,0 +1,93 @@
+package com.winhc.bigdata.udf;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.aliyun.odps.udf.UDF;
+import com.winhc.bigdata.utils.CompanyUtils;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static com.winhc.bigdata.utils.CompanyUtils.cleanup;
+
+/**
+ * @Author: π
+ * @Description: 历史名称比较名称包含
+ */
+public class name_compare_v2 extends UDF {
+
+
+    public List<String> yhcNames(String names) {
+        Set<String> set = new HashSet<>();
+
+        if (org.apache.commons.lang3.StringUtils.isNotBlank(names)) {
+            set.addAll(Arrays.stream(names.split("\t;\t"))
+                    .filter(org.apache.commons.lang3.StringUtils::isNotBlank).collect(Collectors.toSet()));
+        }
+        return set.stream()
+                .filter(org.apache.commons.lang3.StringUtils::isNotBlank)
+                .map(x -> x.replaceAll("\t;", "")
+                        .replaceAll("[(]", "(")
+                        .replaceAll("[)]", ")")
+                        .trim())
+                .map(CompanyUtils::cleanup)
+                .filter(org.apache.commons.lang3.StringUtils::isNotBlank)
+                .distinct()
+                .collect(Collectors.toList());
+    }
+    public List<String> qxbNames(String names) {
+        Set<String> set = new HashSet<>();
+
+        if (org.apache.commons.lang3.StringUtils.isBlank(names)) {
+            return new ArrayList<>(set);
+        }
+        String[] split = names.replaceAll("\\[", "").replaceAll("\\]", "").split(", ");
+
+        if(split.length>0){
+            List<String> tt_res = Arrays.stream(split)
+                    .filter(StringUtils::isNotBlank)
+                    .map(CompanyUtils::cleanup)
+                    .filter(StringUtils::isNotBlank)
+                    .distinct().collect(Collectors.toList());
+            set.addAll(tt_res);
+        }
+        return new ArrayList<>(set);
+    }
+    public String evaluate(String names_yhc, String names_qxb) {
+        List<String> list1 = yhcNames(names_yhc);
+        List<String> list2 = qxbNames(names_qxb);
+
+        return compare(list1, list2);
+    }
+
+    private static String compare(List<String> name1, List<String> name2) {
+
+        if (name1.size() != name2.size()) {
+            return "1";
+        }
+
+        List<String> reduce1 = name1.stream().filter(item -> !name2.contains(item)).collect(Collectors.toList());
+
+        List<String> reduce2 = name2.stream().filter(item -> !name1.contains(item)).collect(Collectors.toList());
+
+
+        if (reduce1.size() > 0 || reduce2.size() > 0) {
+            return "1";
+        }
+
+        return "0";
+    }
+
+
+
+    public static void main(String[] args) {
+
+        name_compare_v2 v1 = new name_compare_v2();
+        String evaluate = v1.evaluate("陕西圆周率文教科技有限公司\t;\t西安风韵艺术文化传播有限公司", "[西安风韵艺术文化传播有限公司, 陕西圆周率文教科技有限公司1]");
+        String evaluate1 = v1.evaluate("高通盛融(北京)投资基金管理有限公司", "[高通盛融(北京)投资基金管理有限公司]");
+        System.out.println(evaluate);
+        System.out.println(evaluate1);
+
+    }
+}

+ 33 - 3
src/main/java/com/winhc/bigdata/udf/split_names.java

@@ -34,9 +34,39 @@ public class split_names extends UDF {
         }
     }
 
+    public List<String> evaluate(String supplier_info, String purchaser_info, String winner_candidate, String wtbamt_info, String json_path) {
+        List<String> list1 = toList(supplier_info, json_path, "_supplier");
+        List<String> list2 = toList(purchaser_info, json_path, "_purchaser");
+        List<String> list3 = toList(winner_candidate, json_path, "_winner");
+        List<String> list4 = toList(wtbamt_info, json_path, "_wtbamt");
+        ArrayList<String> list = new ArrayList<>();
+        list.addAll(list1);
+        list.addAll(list2);
+        list.addAll(list3);
+        list.addAll(list4);
+        return list;
+    }
+
+    public List<String> toList(String jsons, String json_path, String suff) {
+        if (StringUtils.isBlank(jsons)) {
+            return new ArrayList<>();
+        }
+        try {
+            String[] jsonArr = jsons.split("&");
+            HashSet<String> set = new HashSet<>();
+            for (String json : jsonArr) {
+                parse(json, json_path, set);
+            }
+            return new ArrayList<>(set).stream().map(s -> s + suff)
+                    .collect(Collectors.toList());
+        } catch (Exception e) {
+            return new ArrayList<>();
+        }
+    }
+
     public void parse(String json, String json_path, Set<String> set) {
-        List<Object> eval = (List)JSONPath.eval(JSON.parse(json), json_path);
-        if(eval == null || eval.isEmpty()){
+        List<Object> eval = (List) JSONPath.eval(JSON.parse(json), json_path);
+        if (eval == null || eval.isEmpty()) {
             return;
         }
         JSONArray jsonArray = ((JSONArray) eval);
@@ -55,7 +85,7 @@ public class split_names extends UDF {
         //String jsons = "[\"肖毅\",\"赵磊\"]";
         //String json_path = "$[*]";
         split_names n = new split_names();
-        System.out.println(n.evaluate(jsons, json_path));
+        System.out.println(n.evaluate(jsons, jsons, jsons, jsons, json_path));
     }
 
 }