xufei 3 years ago
parent
commit
ea9654db66

+ 49 - 0
src/main/java/com/winhc/bigdata/udf/CompareName2.java

@@ -0,0 +1,49 @@
+package com.winhc.bigdata.udf;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONPath;
+import com.aliyun.odps.udf.UDF;
+import org.apache.commons.lang.StringUtils;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @Author: π
+ * @Date: 2020/5/14 16:26
+ * @Description: 比较两个字符串数组包含关系(company_id 字符串集合)
+ */
+public class CompareName2 extends UDF {
+
+    public Boolean evaluate(String ygName, String bgName) {
+        if (StringUtils.isBlank(ygName) || StringUtils.isBlank(bgName)) {
+            return false;
+        }
+        //原告 //被告
+        List<String> list1 = toList(ygName);
+        List<String> list2 = toList(bgName);
+        if (list1.isEmpty() || list2.isEmpty()) {
+            return false;
+        }
+        List<String> intersection = list1.stream().filter(list2::contains).collect(Collectors.toList());
+        return intersection.isEmpty();
+    }
+
+    public List<String> toList(String bgName) {
+        List<String> list = Arrays.stream(bgName.split(",", -1))
+                .filter(StringUtils::isNotBlank).distinct().collect(Collectors.toList());
+        return list;
+    }
+
+    public static void main(String[] args) {
+        String yg_name = "11,22,,33,55";
+        String bg_name = "12,,54,77";
+        CompareName2 c = new CompareName2();
+        System.out.println(c.evaluate(yg_name, bg_name));
+    }
+}
+
+

+ 55 - 0
src/main/java/com/winhc/bigdata/udf/find_name.java

@@ -0,0 +1,55 @@
+package com.winhc.bigdata.udf;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONPath;
+import com.aliyun.odps.udf.UDF;
+import com.aliyun.odps.utils.StringUtils;
+
+import java.util.*;
+
+/**
+ * @Author: π
+ * @Description: 获取json里value
+ */
+public class find_name extends UDF {
+
+    public String evaluate(String jsons, String id) {
+        if (StringUtils.isBlank(jsons) || StringUtils.isBlank(id)) {
+            return "";
+        }
+        try {
+            String[] jsonArr = jsons.split("&");
+            for (String json : jsonArr) {
+                String name = parse(json, id);
+                if (StringUtils.isNotBlank(name)) {
+                    return name;
+                }
+            }
+            return "";
+        } catch (Exception e) {
+            return "";
+        }
+    }
+
+    public String parse(String json, String litigant_id) {
+        List<Map> list = JSON.parseArray(json, Map.class);
+        for (Map m : list) {
+            if (m.containsKey("litigant_id") && m.get("litigant_id").equals(litigant_id)) {
+                return (String) m.get("name");
+            }
+        }
+        return "";
+    }
+
+
+    public static void main(String[] args) {
+        String jsons = "[{\"name\":\"张海林\",\"litigant_id\":\"\"},{\"name\":\"招商银行股份有限公司信用卡中心\",\"litigant_id\":\"cc45eeb0634f73531ba54ad55ba152a6\"}]&[{\"name\":\"上海浦东发展银行静安支行\",\"litigant_id\":\"c2c57fcc6398cfd49393c1a2d3c35a4c\"}]";
+        String json_path = "c2c57fcc6398cfd49393c1a2d3c35a4c";
+        find_name n = new find_name();
+        System.out.println(n.evaluate(jsons, json_path));
+    }
+
+}
+
+

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

@@ -27,6 +27,7 @@ public class split_names extends UDF {
             for (String json : jsonArr) {
                 parse(json, json_path, set);
             }
+
             return new ArrayList<>(set);
         } catch (Exception e) {
             return new ArrayList<>();
@@ -35,14 +36,16 @@ public class split_names extends UDF {
 
     public void parse(String json, String json_path, Set set) {
         JSONArray jsonArray = ((JSONArray) JSONPath.eval(JSON.parse(json), json_path));
-        for (Object o : jsonArray) {
-            set.add(o);
+        for (Object s : jsonArray) {
+            if (s != null && s.toString().length() > 0) {
+                set.add(s);
+            }
         }
     }
 
     public static void main(String[] args) {
         String jsons = "[{\"name\":\"张海林\",\"litigant_id\":\"\"},{\"name\":\"招商银行股份有限公司信用卡中心\",\"litigant_id\":\"cc45eeb0634f73531ba54ad55ba152a6\"}]&[{\"name\":\"上海浦东发展银行静安支行\",\"litigant_id\":\"c2c57fcc6398cfd49393c1a2d3c35a4c\"}]";
-        String json_path = "$.name";
+        String json_path = "$.litigant_id";
         split_names n = new split_names();
         System.out.println(n.evaluate(jsons, json_path));
     }