xufei 5 月之前
父節點
當前提交
7470725db2
共有 1 個文件被更改,包括 13 次插入8 次删除
  1. 13 8
      src/main/java/com/winhc/data/push/service/impl/OdpsServiceImpl.java

+ 13 - 8
src/main/java/com/winhc/data/push/service/impl/OdpsServiceImpl.java

@@ -1,19 +1,17 @@
 package com.winhc.data.push.service.impl;
 
-import cn.cocowwy.dingtalk.DingTalkGroupApi;
+import com.aliyun.odps.Column;
 import com.aliyun.odps.Instance;
 import com.aliyun.odps.Odps;
 import com.aliyun.odps.data.Record;
 import com.aliyun.odps.task.SQLTask;
-import com.winhc.data.push.service.DingTalkService;
+import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils;
 import com.winhc.data.push.service.OdpsService;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -29,17 +27,24 @@ public class OdpsServiceImpl implements OdpsService {
     private final Odps odps;
 
     @Override
-    public List<String> query(String sql,String ds) {
+    public List<String> query(String sql, String ds) {
         Instance i;
         try {
-            i = SQLTask.run(odps, sql.replaceAll("@ds",ds));
+            i = SQLTask.run(odps, sql.replaceAll("@ds", ds));
             i.waitForSuccess();
             List<Record> records = SQLTask.getResult(i);
-            return records.
+            List<String> ds_list = records.
                     stream()
                     .map(x -> x.get(0).toString().split("tn=")[1])
                     .distinct()
                     .collect(Collectors.toList());
+            if (!records.isEmpty()) {
+                String head = Arrays.stream(records.get(0).getColumns()).map(Column::getName).findFirst().orElse("");
+                if (StringUtils.isNotBlank(head)) {
+                    ds_list.add(head.split("tn=")[1]);
+                }
+            }
+            return ds_list;
         } catch (Exception e) {
             e.printStackTrace();
             return new ArrayList<>();