ソースを参照

最多同时查询20个频道

吴志根 3 年 前
コミット
07888a83f5
1 ファイル変更13 行追加2 行削除
  1. 13 2
      src/dsb/com/cnd3b/service/GetPolyvAnalysisData.java

+ 13 - 2
src/dsb/com/cnd3b/service/GetPolyvAnalysisData.java

@@ -12,6 +12,7 @@ import com.cnd3b.common.websocket.WebClientSocket;
 import com.cnd3b.utility.polyv.Polyv;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 
 /**
@@ -43,8 +44,18 @@ public class GetPolyvAnalysisData extends BaseClass implements Runnable {
         String[] channelids = channelRows.toArray("channelid");
         RowsMap map = channelRows.toRowsMap("channelid");
         Polyv polyv = new Polyv();
-        HashMap<String, String> livestatusMap = polyv.getLiveStatuses(channelids);
-        System.err.println("*******"+livestatusMap+"*******");
+        HashMap<String, String> livestatusMap = new HashMap<>();
+        //×î¶àͬʱ²éѯ20¸öƵµÀ
+        if (channelids.length > 20) {
+            int size = channelids.length % 20;
+            for (int i = 0; i < size; i++) {
+                livestatusMap.putAll(polyv.getLiveStatuses(Arrays.copyOfRange(channelids, i * 20, (i + 1) * 20 - 1)));
+            }
+            livestatusMap.putAll(polyv.getLiveStatuses(Arrays.copyOfRange(channelids, size * 20, channelids.length - 1)));
+        } else {
+            livestatusMap = polyv.getLiveStatuses(channelids);
+        }
+
         ArrayList<String> sqllist = new ArrayList<>();
         for (String channelid : livestatusMap.keySet()) {
             String livestatus = livestatusMap.get(channelid);