|
@@ -0,0 +1,48 @@
|
|
|
+package com.winhc.bigdata.udf;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.aliyun.odps.udf.UDF;
|
|
|
+import com.aliyun.odps.utils.StringUtils;
|
|
|
+
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author: π
|
|
|
+ * 2021/8/17 16:57
|
|
|
+ */
|
|
|
+public class merge_json extends UDF {
|
|
|
+ public String evaluate(String yg_name, String bg_name, String all_name) {
|
|
|
+ HashMap<String, Map<String, String>> m = new HashMap<>();
|
|
|
+ parse(yg_name, m);
|
|
|
+ parse(bg_name, m);
|
|
|
+ parse(all_name, m);
|
|
|
+ //System.out.println(m);
|
|
|
+ return JSON.toJSONString(m.values());
|
|
|
+ }
|
|
|
+
|
|
|
+ public void parse(String name, HashMap<String, Map<String, String>> m) {
|
|
|
+ if (StringUtils.isBlank(name)) return ;
|
|
|
+ List<Map> list = JSON.parseArray(name, Map.class);
|
|
|
+ for (Map s : list) {
|
|
|
+ String name1 = (String) s.getOrDefault("name", "");
|
|
|
+ String litigant_id1 = (String) s.getOrDefault("litigant_id", "");
|
|
|
+ if (StringUtils.isNotBlank(name1) && (StringUtils.isNotBlank(litigant_id1) || !m.containsKey(name1))) {
|
|
|
+ HashMap<String, String> m1 = new HashMap<>();
|
|
|
+ m1.put("name", name1);
|
|
|
+ m1.put("litigant_id", litigant_id1);
|
|
|
+ m.put(name1, m1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void main(String[] args) {
|
|
|
+ String n1 = "[{\"name\":\"n11\",\"litigant_id\":\"p11\",\"date\":\"2020-11-02 00:00:00\",\"exec_money\":\"111.1\"},{\"name\":\"n21\",\"litigant_id\":\"p22\",\"date\":\"2020-12-02 00:00:00\",\"exec_money\":\"188.1\"}]";
|
|
|
+ String n2 = "[{\"name\":\"n11\",\"litigant_id\":\"p22\",\"date\":\"2020-11-03 00:00:00\",\"exec_money\":\"111.1\"},{\"name\":\"n22\",\"litigant_id\":\"p22\",\"date\":\"2020-12-02 00:00:00\",\"exec_money\":\"188.1\"}]";
|
|
|
+ String n3 = null;
|
|
|
+ merge_json m = new merge_json();
|
|
|
+ System.out.println(m.evaluate(n1, n2, n3));
|
|
|
+ }
|
|
|
+
|
|
|
+}
|