Levi.u 4 anni fa
parent
commit
4ceed5f6fc

+ 12 - 3
src/main/java/com/ebei/screen/common/util/EbaUtils.java

@@ -11,9 +11,7 @@ import org.springframework.stereotype.Component;
 
 import java.text.NumberFormat;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * EBA大屏工具类
@@ -188,4 +186,15 @@ public class EbaUtils {
         JSONObject data = obj != null ? obj.getJSONObject("data") : new JSONObject();
         return data.getString(projectId);
     }
+
+    /**
+     * 获取项目ids
+     *
+     * @return
+     */
+    public static Set<String> getProjectIds() {
+        Set<String> sortSet = new TreeSet<>(Comparator.naturalOrder());
+        sortSet.addAll(project.keySet());
+        return sortSet;
+    }
 }

+ 3 - 1
src/main/java/com/ebei/screen/common/util/ScheduledUtils.java

@@ -4,6 +4,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.concurrent.BasicThreadFactory;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
 import java.util.concurrent.*;
 
 /**
@@ -24,7 +25,8 @@ public class ScheduledUtils {
         try {
             ScheduledFuture<?> schedule = scheduleService.schedule(() -> run.call(), time, TimeUnit.SECONDS);
             if (schedule != null) {
-                System.out.println(schedule.get());
+                List<String> list = (List<String>) schedule.get();
+                list.forEach(System.out::println);
             }
         } catch (Exception e) {
             log.error("Scheduled==>start:", e);

+ 8 - 3
src/main/java/com/ebei/screen/service/EbaSystemService.java

@@ -57,17 +57,22 @@ public interface EbaSystemService {
     /**
      * 初始化所有项目实时device信息到mongo
      */
-    void initRealDataDeviceList();
+    String initRealDataDeviceList(String key);
 
     /**
      * 初始化所有项目device信息到mongo
      */
-    void initMobjectList();
+    String initMobjectList(String key);
 
     /**
      * 初始化所有项目iot信息到mongo
      */
-    void initIotList();
+    String initIotList(String key);
+
+    /**
+     * 初始化楼上三个哥们
+     */
+    void initThreeBrothers();
 
     /**
      * 实时数据回调接口对查

+ 81 - 75
src/main/java/com/ebei/screen/service/impl/EbaSystemServiceImpl.java

@@ -54,7 +54,7 @@ public class EbaSystemServiceImpl implements EbaSystemService {
     @Value("${comm.getProjectList}")
     private String getProjectList;
 
-    private final long SECOND_TIME = 5L;
+    private final long SECOND_TIME = 3L;
 
 
     /**
@@ -69,9 +69,7 @@ public class EbaSystemServiceImpl implements EbaSystemService {
         initDeviceParamList();
         initDeviceAlarmTypeList();
         initFireDeviceTypeList();
-        initRealDataDeviceList();
-        initMobjectList();
-        initIotList();
+        initThreeBrothers();
         log.info("EBA数据全部初始化完毕");
     }
 
@@ -225,97 +223,105 @@ public class EbaSystemServiceImpl implements EbaSystemService {
      * 初始化所有项目实时device信息到mongo
      */
     @Override
-    public void initRealDataDeviceList() {
-        Set<String> keys = EbaUtils.project.keySet();
+    public String initRealDataDeviceList(String key) {
         JSONObject data2 = new JSONObject();
-        keys.forEach(key -> ScheduledUtils.start(() -> {
-            String param = JSON.toJSONString(Levi.by("projectId", Integer.parseInt(key)));
-            String str = HttpRequest.post(EbaSystemConstants.getMobjectRealDataByProjectIdList)
-                    .header("token", EbaUtils.token)
-                    .body(param)
-                    .execute().body();
-            if (EbaUtils.isSuccess(str)) {
-                // 存入原始数据用于统计
-                Query query1 = new Query();
-                query1.addCriteria(Criteria.where("_id").is(key + "_" + LocalDateTime.now().getYear() + "_" + LocalDateTime.now().getMonthValue()));
-                Update update1 = new Update();
-                List<Map> map = LeviUtils.getJsonFieldMany(str, "data.realtimeDataList", Map.class);
-                map.removeAll(Collections.singleton(null));
-                update1.set("data", EbaUtils.setDataField(map, key, "realDataDeviceList", false));
-                mongoTemplate.upsert(query1, update1, "realDataDeviceList");
-                // 存入当前最新数据方便查询
-                JSONObject data1 = new JSONObject();
-                map.forEach(x -> data1.put(x.get("deviceId").toString() + "_" + x.get("paramId").toString(), x.get("paramValue").toString()));
-                data2.put(key, data1);
-            }
-            return str;
-        }, SECOND_TIME));
+        String param = JSON.toJSONString(Levi.by("projectId", Integer.parseInt(key)));
+        String str = HttpRequest.post(EbaSystemConstants.getMobjectRealDataByProjectIdList)
+                .header("token", EbaUtils.token)
+                .body(param)
+                .execute().body();
+        if (EbaUtils.isSuccess(str)) {
+            // 存入原始数据用于统计
+            Query query1 = new Query();
+            query1.addCriteria(Criteria.where("_id").is(key + "_" + LocalDateTime.now().getYear() + "_" + LocalDateTime.now().getMonthValue()));
+            Update update1 = new Update();
+            List<Map> map = LeviUtils.getJsonFieldMany(str, "data.realtimeDataList", Map.class);
+            map.removeAll(Collections.singleton(null));
+            update1.set("data", EbaUtils.setDataField(map, key, "realDataDeviceList", false));
+            mongoTemplate.upsert(query1, update1, "realDataDeviceList");
+            // 存入当前最新数据方便查询
+            JSONObject data1 = new JSONObject();
+            map.forEach(x -> data1.put(x.get("deviceId").toString() + "_" + x.get("paramId").toString(), x.get("paramValue").toString()));
+            data2.put(key, data1);
+        }
         Query query2 = new Query();
         query2.addCriteria(Criteria.where("_id").is("realDataDeviceList"));
         Update update2 = new Update();
         update2.set("data", data2);
         mongoTemplate.upsert(query2, update2, "ebaAuth");
         EbaUtils.realDataDevice = data2;
+        return str;
     }
 
     /**
      * 初始化所有项目device信息到mongo
      */
     @Override
-    public void initMobjectList() {
-        Set<String> keys = EbaUtils.project.keySet();
-        keys.forEach(key -> ScheduledUtils.start(() -> {
-            String param = JSON.toJSONString(Levi.by("projectId", Integer.parseInt(key)));
-            String str = HttpRequest.post(EbaSystemConstants.getMobjectList)
-                    .header("token", EbaUtils.token)
-                    .body(param)
-                    .execute().body();
-            if (EbaUtils.isSuccess(str)) {
-                Query query = new Query();
-                query.addCriteria(Criteria.where("_id").is("mobjectList"));
-                Update update = new Update();
-                List<Map> map = LeviUtils.getJsonFieldMany(str, "data.mObjectList", Map.class);
-                JSONObject obj = mongoTemplate.findById("mobjectList", JSONObject.class, "ebaAuth");
-                JSONObject data = obj != null ? obj.getJSONObject("data") : new JSONObject();
-                map.forEach(x -> {
-                    List<Map> list = (List<Map>) x.get("params");
-                    Integer deviceId = (Integer) x.get("deviceId");
-                    if (CollUtil.isNotEmpty(list)) {
-                        list.forEach(y -> y.put("paramValue", EbaUtils.realDataDevice.getJSONObject(key).getString(deviceId.toString() + "_" + y.get("paramId").toString())));
-                    }
-                });
-                data.put(key, map);
-                update.set("data", data);
-                mongoTemplate.upsert(query, update, "ebaAuth");
-            }
-            return str;
-        }, SECOND_TIME));
+    public String initMobjectList(String key) {
+        String param = JSON.toJSONString(Levi.by("projectId", Integer.parseInt(key)));
+        String str = HttpRequest.post(EbaSystemConstants.getMobjectList)
+                .header("token", EbaUtils.token)
+                .body(param)
+                .execute().body();
+        if (EbaUtils.isSuccess(str)) {
+            Query query = new Query();
+            query.addCriteria(Criteria.where("_id").is("mobjectList"));
+            Update update = new Update();
+            List<Map> map = LeviUtils.getJsonFieldMany(str, "data.mObjectList", Map.class);
+            map.removeAll(Collections.singleton(null));
+            JSONObject obj = mongoTemplate.findById("mobjectList", JSONObject.class, "ebaAuth");
+            JSONObject data = obj != null ? obj.getJSONObject("data") : new JSONObject();
+            map.forEach(x -> {
+                List<Map> list = (List<Map>) x.get("params");
+                Integer deviceId = (Integer) x.get("deviceId");
+                if (CollUtil.isNotEmpty(list)) {
+                    list.forEach(y -> y.put("paramValue", EbaUtils.realDataDevice.getJSONObject(key).getString(deviceId.toString() + "_" + y.get("paramId").toString())));
+                }
+            });
+            data.put(key, map);
+            update.set("data", data);
+            mongoTemplate.upsert(query, update, "ebaAuth");
+        }
+        return str;
     }
 
     /**
      * 初始化所有项目iot信息到mongo
      */
     @Override
-    public void initIotList() {
-        Set<String> keys = EbaUtils.project.keySet();
+    public String initIotList(String key) {
+        String param = JSON.toJSONString(Levi.by("projectId", Integer.parseInt(key)));
+        String str = HttpRequest.post(EbaSystemConstants.getIotList)
+                .header("token", EbaUtils.token)
+                .body(param)
+                .execute().body();
+        if (EbaUtils.isSuccess(str)) {
+            Query query = new Query();
+            query.addCriteria(Criteria.where("_id").is("iotList"));
+            JSONObject obj = mongoTemplate.findById("iotList", JSONObject.class, "ebaAuth");
+            JSONObject data = obj != null ? obj.getJSONObject("data") : new JSONObject();
+            Update update = new Update();
+            List<Map> map = LeviUtils.getJsonFieldMany(str, "data.datas", Map.class);
+            map.removeAll(Collections.singleton(null));
+            data.put(key, map);
+            update.set("data", data);
+            mongoTemplate.upsert(query, update, "ebaAuth");
+        }
+        return str;
+    }
+
+    /**
+     * 初始化楼上三个哥们
+     */
+    @Override
+    public void initThreeBrothers() {
+        Set<String> keys = EbaUtils.getProjectIds();
         keys.forEach(key -> ScheduledUtils.start(() -> {
-            String param = JSON.toJSONString(Levi.by("projectId", Integer.parseInt(key)));
-            String str = HttpRequest.post(EbaSystemConstants.getIotList)
-                    .header("token", EbaUtils.token)
-                    .body(param)
-                    .execute().body();
-            if (EbaUtils.isSuccess(str)) {
-                Query query = new Query();
-                query.addCriteria(Criteria.where("_id").is("iotList"));
-                JSONObject obj = mongoTemplate.findById("iotList", JSONObject.class, "ebaAuth");
-                JSONObject data = obj != null ? obj.getJSONObject("data") : new JSONObject();
-                Update update = new Update();
-                List<Map> map = LeviUtils.getJsonFieldMany(str, "data.datas", Map.class);
-                data.put(key, map);
-                update.set("data", data);
-                mongoTemplate.upsert(query, update, "ebaAuth");
-            }
-            return str;
+            log.info("当前执行的项目id:{}", key);
+            String s1 = initRealDataDeviceList(key);
+            String s2 = initMobjectList(key);
+            String s3 = initIotList(key);
+            return Arrays.asList(s1, s2, s3);
         }, SECOND_TIME));
     }