Levi преди 3 години
родител
ревизия
68e72d7160

+ 1 - 0
pom.xml

@@ -106,6 +106,7 @@
     </dependencies>
 
     <build>
+        <finalName>screen</finalName>
         <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>

+ 1 - 1
src/main/java/com/ebei/screen/common/config/CorsConfig.java

@@ -14,7 +14,7 @@ public class CorsConfig implements WebMvcConfigurer {
     public void addCorsMappings(CorsRegistry registry) {
         registry.addMapping("/**")
                 .allowedOrigins("*")
-                .allowCredentials(false)
+                .allowCredentials(true)
                 .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                 .exposedHeaders("access-control-allow-headers",
                         "access-control-allow-methods",

+ 2 - 2
src/main/java/com/ebei/screen/common/task/ScreenTask.java

@@ -48,12 +48,12 @@ public class ScreenTask {
     /**
      * 每3秒处理6条数据
      */
-    @Scheduled(cron = "*/5 * * * * ?")
+    @Scheduled(cron = "*/3 * * * * ?")
     public void exec() {
         try {
             log.info("开始处理数据 开始时间:{}", DateUtil.now());
             // 获取10条进行处理
-            boolean result = parkSystemService.taskExec(10);
+            boolean result = parkSystemService.taskExec(6);
             log.info("数据处理结束 结束时间:{} 处理结果:{}", DateUtil.now(), result);
         } catch (Exception e) {
             log.error("定时任务执行出现错误:", e);

+ 14 - 26
src/main/java/com/ebei/screen/common/util/EbaUtils.java

@@ -60,17 +60,11 @@ public class EbaUtils {
     }
 
     public static List<Map> getEmptyTemplate() {
-        // 初始化模板
-        List<Map> monthList = new ArrayList<>();
-        Integer monthDays = LeviUtils.getMonthDays(LocalDateTime.now().getMonthValue());
-        for (int b = 1; b <= monthDays; b++) {
-            List<Map> dayList = new ArrayList<>();
-            for (int c = 0; c <= 23; c++) {
-                dayList.add(Levi.by("hour", c).set("data", new ArrayList<>()));
-            }
-            monthList.add(Levi.by("day", b).set("data", dayList));
+        List<Map> dayList = new ArrayList<>();
+        for (int c = 0; c <= 23; c++) {
+            dayList.add(Levi.by("hour", c).set("data", new ArrayList<>()));
         }
-        return monthList;
+        return dayList;
     }
 
     /**
@@ -124,14 +118,12 @@ public class EbaUtils {
         int day = now.getDayOfMonth();
         int hour = now.getHour();
         List<Map> objList = (List<Map>) obj;
-        Map monthMap = mongoTemplate.findById(pkId + "_" + year + "_" + month, Map.class, collectionName);
-        if (MapUtil.isEmpty(monthMap)) {
-            monthMap = Levi.by("_id", pkId + "_" + year + "_" + month).set("data", getEmptyTemplate());
+        Map monthDayMap = mongoTemplate.findById(pkId + "_" + year + "_" + month + "_" + day, Map.class, collectionName);
+        if (MapUtil.isEmpty(monthDayMap)) {
+            monthDayMap = Levi.by("_id", pkId + "_" + year + "_" + month + "_" + day).set("data", getEmptyTemplate());
         }
-        List<Map> dayList = (List<Map>) monthMap.get("data");
-        Map dayMap = dayList.get(day - 1);
-        List<Map> hourList = (List<Map>) dayMap.get("data");
-        Map hourMap = hourList.get(hour);
+        List<Map> dayHourList = (List<Map>) monthDayMap.get("data");
+        Map hourMap = dayHourList.get(hour);
         List<Map> dataList = (List<Map>) hourMap.get("data");
         if (CollUtil.isNotEmpty(dataList) && !flag) {
             dataList.addAll(objList);
@@ -140,26 +132,22 @@ public class EbaUtils {
             for (Map x : dataList) {
                 String projectId = x.get("ProjectId").toString();
                 hourMap.put(key + "_" + projectId, addCount(hourMap, size, key + "_" + projectId));
-                dayMap.put(key + "_" + projectId, addCount(dayMap, size, key + "_" + projectId));
-                monthMap.put(key + "_" + projectId, addCount(monthMap, size, key + "_" + projectId));
+                monthDayMap.put(key + "_" + projectId, addCount(monthDayMap, size, key + "_" + projectId));
             }
             hourMap.put(key, addCount(hourMap, size, key));
-            dayMap.put(key, addCount(dayMap, size, key));
-            monthMap.put(key, addCount(monthMap, size, key));
+            monthDayMap.put(key, addCount(monthDayMap, size, key));
         } else {
             hourMap.put("data", obj);
             int size = objList.size();
             for (Map x : objList) {
                 String projectId = x.get("ProjectId").toString();
                 hourMap.put(key + "_" + projectId, addCount(hourMap, size, key + "_" + projectId) - dataList.size());
-                dayMap.put(key + "_" + projectId, addCount(dayMap, size, key + "_" + projectId) - dataList.size());
-                monthMap.put(key + "_" + projectId, addCount(monthMap, size, key + "_" + projectId) - dataList.size());
+                monthDayMap.put(key + "_" + projectId, addCount(monthDayMap, size, key + "_" + projectId) - dataList.size());
             }
             hourMap.put(key, addCount(hourMap, size, key) - dataList.size());
-            dayMap.put(key, addCount(dayMap, size, key) - dataList.size());
-            monthMap.put(key, addCount(monthMap, size, key) - dataList.size());
+            monthDayMap.put(key, addCount(monthDayMap, size, key) - dataList.size());
         }
-        return monthMap;
+        return monthDayMap;
     }
 
     private static Integer addCount(Map a, Integer b, String key) {

+ 34 - 19
src/main/java/com/ebei/screen/service/impl/EbaSystemServiceImpl.java

@@ -32,6 +32,7 @@ import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -342,7 +343,7 @@ public class EbaSystemServiceImpl implements EbaSystemService {
         List<Map> huojing = contentList.stream().filter(x -> ((x.get("AlarmType") == null ? -1 : (Integer) x.get("AlarmType")) == 1)).collect(Collectors.toList());
         List<Map> guzhang = contentList.stream().filter(x -> ((x.get("AlarmType") == null ? -1 : (Integer) x.get("AlarmType")) == 2)).collect(Collectors.toList());
         Query query = new Query();
-        query.addCriteria(Criteria.where("_id").is(messageCode + "_" + LocalDateTime.now().getYear() + "_" + LocalDateTime.now().getMonthValue()));
+        query.addCriteria(Criteria.where("_id").is(messageCode + "_" + LocalDateTime.now().getYear() + "_" + LocalDateTime.now().getMonthValue() + "_" + LocalDateTime.now().getDayOfMonth()));
         Update update = new Update();
         Map hjMap = EbaUtils.setDataFieldCount("hjCount", huojing, messageCode, "realTimeList", false);
         update.set("data", hjMap.get("data"));
@@ -429,14 +430,15 @@ public class EbaSystemServiceImpl implements EbaSystemService {
         int year = now.getYear();
         int month = now.getMonthValue();
         int day = now.getDayOfMonth();
-        Map monthMap = mongoTemplate.findById(EbaMessageCode.D.getCode() + "_" + year + "_" + month, Map.class, "realTimeList");
-        if (MapUtil.isEmpty(monthMap)) {
+        int hour = now.getHour();
+        Query queryNow = new Query(Criteria.where("_id").regex("^" + EbaMessageCode.D.getCode() + "_" + year + "_" + month + "_"));
+        List<Map> nowMonthDayList = mongoTemplate.find(queryNow, Map.class, "realTimeList");
+        Map monthDayMap = mongoTemplate.findById(EbaMessageCode.D.getCode() + "_" + year + "_" + month + "_" + day, Map.class, "realTimeList");
+        if (MapUtil.isEmpty(monthDayMap)) {
             return ResponseBuilder.ok("暂无实时火警和预警信息");
         }
-        List<Map> dayList = (List<Map>) monthMap.get("data");
-        Map dayMap = dayList.get(day - 1);
-        List<Map> hourList = (List<Map>) dayMap.get("data");
-        List<Map> filterList = hourList.stream().filter(x -> {
+        List<Map> dayHourList = (List<Map>) monthDayMap.get("data");
+        List<Map> filterList = dayHourList.stream().filter(x -> {
             List<Map> dataList = (List<Map>) x.get("data");
             return dataList.size() > 0;
         }).collect(Collectors.toList());
@@ -466,23 +468,36 @@ public class EbaSystemServiceImpl implements EbaSystemService {
                 }
             });
         });
-        Integer hjDayCount = flag ? (Integer) dayMap.get("hjCount_" + projectId) : (Integer) dayMap.get("hjCount");
-        Integer hjMonthCount = flag ? (Integer) monthMap.get("hjCount_" + projectId) : (Integer) monthMap.get("hjCount");
-        Integer gzDayCount = flag ? (Integer) dayMap.get("gzCount_" + projectId) : (Integer) dayMap.get("gzCount");
-        Integer gzMonthCount = flag ? (Integer) monthMap.get("gzCount_" + projectId) : (Integer) monthMap.get("gzCount");
+        AtomicReference<Integer> nowHjCount = new AtomicReference<>(0);
+        AtomicReference<Integer> nowGzCount = new AtomicReference<>(0);
+        nowMonthDayList.forEach(nowDay -> {
+            Integer hjDayNow = flag ? (Integer) nowDay.get("hjCount_" + projectId) : (Integer) nowDay.get("hjCount");
+            Integer gzDayNow = flag ? (Integer) nowDay.get("gzCount_" + projectId) : (Integer) nowDay.get("gzCount");
+            nowHjCount.updateAndGet(v -> v + hjDayNow);
+            nowGzCount.updateAndGet(v -> v + gzDayNow);
+        });
+
+        Integer hjDayCount = flag ? (Integer) monthDayMap.get("hjCount_" + projectId) : (Integer) monthDayMap.get("hjCount");
+        Integer gzDayCount = flag ? (Integer) monthDayMap.get("gzCount_" + projectId) : (Integer) monthDayMap.get("gzCount");
         // 获取去年同时间数据
         LocalDateTime previousYear = now.minus(1, ChronoUnit.YEARS);
-        Map oldMonthMap = mongoTemplate.findById(EbaMessageCode.D.getCode() + "_" + previousYear.getYear() + "_" + previousYear.getMonthValue(), Map.class, "realTimeList");
-        if (MapUtil.isEmpty(oldMonthMap)) {
-            return ResponseBuilder.ok(Levi.by("huojing", huojing).set("guzhang", guzhang).set("hjDayCount", hjDayCount).set("hjMonthCount", hjMonthCount).set("gzDayCount", gzDayCount).set("gzMonthCount", gzMonthCount).set("hjDayTb", "100%").set("hjMonthTb", "100%").set("gzDayTb", "100%").set("gzMonthTb", "100%"));
+        Query queryOld = new Query(Criteria.where("_id").regex("^" + EbaMessageCode.D.getCode() + "_" + previousYear.getYear() + "_" + previousYear.getMonthValue() + "_"));
+        List<Map> oldMonthDayList = mongoTemplate.find(queryOld, Map.class, "realTimeList");
+        if (CollUtil.isEmpty(oldMonthDayList)) {
+            return ResponseBuilder.ok(Levi.by("huojing", huojing).set("guzhang", guzhang).set("hjDayCount", hjDayCount).set("hjMonthCount", nowHjCount.get()).set("gzDayCount", gzDayCount).set("gzMonthCount", nowGzCount.get()).set("hjDayTb", "100%").set("hjMonthTb", "100%").set("gzDayTb", "100%").set("gzMonthTb", "100%"));
         }
-        List<Map> oldDayList = (List<Map>) oldMonthMap.get("data");
-        Map oldDayMap = oldDayList.get(day - 1);
+        Map oldDayMap = mongoTemplate.findById(EbaMessageCode.D.getCode() + "_" + previousYear.getYear() + "_" + previousYear.getMonthValue() + "_" + previousYear.getDayOfMonth(), Map.class, "realTimeList");
+        AtomicReference<Integer> oldHjCount = new AtomicReference<>(0);
+        AtomicReference<Integer> oldGzCount = new AtomicReference<>(0);
+        oldMonthDayList.forEach(oldDay -> {
+            Integer hjDayOld = flag ? (Integer) oldDay.get("hjCount_" + projectId) : (Integer) oldDay.get("hjCount");
+            Integer gzDayOld = flag ? (Integer) oldDay.get("gzCount_" + projectId) : (Integer) oldDay.get("gzCount");
+            oldHjCount.updateAndGet(v -> v + hjDayOld);
+            oldGzCount.updateAndGet(v -> v + gzDayOld);
+        });
         Integer hjDayCountOld = flag ? (Integer) oldDayMap.get("hjCount_" + projectId) : (Integer) oldDayMap.get("hjCount");
-        Integer hjMonthCountOld = flag ? (Integer) oldMonthMap.get("hjCount_" + projectId) : (Integer) oldMonthMap.get("hjCount");
         Integer gzDayCountOld = flag ? (Integer) oldDayMap.get("gzCount_" + projectId) : (Integer) oldDayMap.get("gzCount");
-        Integer gzMonthCountOld = flag ? (Integer) oldMonthMap.get("gzCount_" + projectId) : (Integer) oldMonthMap.get("gzCount");
-        return ResponseBuilder.ok(Levi.by("huojing", huojing).set("guzhang", guzhang).set("hjDayCount", hjDayCount).set("hjMonthCount", hjMonthCount).set("gzDayCount", gzDayCount).set("gzMonthCount", gzMonthCount).set("hjDayTb", EbaUtils.getTongBi(hjDayCountOld, hjDayCount)).set("hjMonthTb", EbaUtils.getTongBi(hjMonthCountOld, hjMonthCount)).set("gzDayTb", EbaUtils.getTongBi(gzDayCountOld, gzDayCount)).set("gzMonthTb", EbaUtils.getTongBi(gzMonthCountOld, gzMonthCount)));
+        return ResponseBuilder.ok(Levi.by("huojing", huojing).set("guzhang", guzhang).set("hjDayCount", hjDayCount).set("hjMonthCount", nowHjCount.get()).set("gzDayCount", gzDayCount).set("gzMonthCount", nowGzCount.get()).set("hjDayTb", EbaUtils.getTongBi(hjDayCountOld, hjDayCount)).set("hjMonthTb", EbaUtils.getTongBi(oldHjCount.get(), nowHjCount.get())).set("gzDayTb", EbaUtils.getTongBi(gzDayCountOld, gzDayCount)).set("gzMonthTb", EbaUtils.getTongBi(oldGzCount.get(), nowGzCount.get())));
     }
 
     /**