|
@@ -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())));
|
|
|
}
|
|
|
|
|
|
/**
|