From 5e67c5cac614907b32c059c1c059007ac1062ff1 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期日, 12 十一月 2023 23:27:33 +0800
Subject: [PATCH] 实时数据
---
ycl-smoke/src/main/java/com/ycl/smoke/task/ScheduledTask.java | 247 +++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 225 insertions(+), 22 deletions(-)
diff --git a/ycl-smoke/src/main/java/com/ycl/smoke/task/ScheduledTask.java b/ycl-smoke/src/main/java/com/ycl/smoke/task/ScheduledTask.java
index 3f0f48c..0a3bd26 100644
--- a/ycl-smoke/src/main/java/com/ycl/smoke/task/ScheduledTask.java
+++ b/ycl-smoke/src/main/java/com/ycl/smoke/task/ScheduledTask.java
@@ -1,26 +1,32 @@
package com.ycl.smoke.task;
import com.alibaba.fastjson.JSON;
+import com.aliyuncs.utils.StringUtils;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.ycl.service.redis.RedisService;
import com.ycl.smoke.entity.*;
import com.ycl.smoke.dto.*;
import com.ycl.smoke.remote.service.ISmokeDetectionService;
import com.ycl.smoke.service.*;
+import com.ycl.smoke.utils.HttpUtil;
import com.ycl.utils.redis.RedisKey;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
+import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
@Component
public class ScheduledTask {
-
+ private final String host = "http://116.62.234.187:8120";
ISmokeDetectionService smokeDetectionService;
IOdsAlarmMsgService alarmMsgService;
@@ -31,6 +37,8 @@
IOdsInTimeService inTimeService;
+ IOdsInTimeCountService iOdsInTimeCountService;
+
IOdsLocaleService localeService;
IOdsCustomerService customerService;
@@ -39,12 +47,20 @@
IOdsCurAlarmService curAlarmService;
+ IOdsStatisticsService odsStatisticsService;
+ IOdsLocaleDocumentService localeDocumentService;
+
@Resource
private RedisService redisService;
@Autowired
public void setSmokeDetectionService(ISmokeDetectionService smokeDetectionService) {
this.smokeDetectionService = smokeDetectionService;
+ }
+
+ @Autowired
+ public void setIOdsInTimeCountService(IOdsInTimeCountService iOdsInTimeCountService) {
+ this.iOdsInTimeCountService = iOdsInTimeCountService;
}
@Autowired
@@ -87,6 +103,16 @@
this.detectorDailyService = detectorDailyService;
}
+ @Autowired
+ public void setOdsStatisticsService(IOdsStatisticsService odsStatisticsService) {
+ this.odsStatisticsService = odsStatisticsService;
+ }
+
+ @Autowired
+ public void setLocaleDocumentService(IOdsLocaleDocumentService localeDocumentService) {
+ this.localeDocumentService = localeDocumentService;
+ }
+
@Scheduled(cron = "0 0 1 * * ?") // 姣忓ぉ闆剁偣鎵ц
// @Scheduled(cron = "0/1 * * * * ?") // 姣忕鎵ц
public void alarmMsgTask() {
@@ -98,7 +124,7 @@
if (responseDto.getStatus() == 200) {
AlarmMsgResponseDto dto = JSON.parseObject(responseDto.getData().toString(), AlarmMsgResponseDto.class);
List<OdsAlarmMsg> list = dto.getContent();
- System.out.println(list.size());
+ // System.out.println(list.size());
list.forEach(o -> {
try {
alarmMsgService.save(o);
@@ -108,7 +134,6 @@
});
// alarmMsgService.saveBatch(list);
} else if (responseDto.getStatus() == 114) {
- login();
alarmMsgTask();
} else {
System.out.printf(responseDto.getData().toString());
@@ -143,7 +168,6 @@
});
// alarmMsgService.saveBatch(list);
} else if (responseDto.getStatus() == 114) {
- login();
queryDataDetectorDaily2Task();
} else {
System.out.printf(responseDto.getData().toString());
@@ -174,7 +198,6 @@
});
// alarmMsgService.saveBatch(list);
} else if (responseDto.getStatus() == 114) {
- login();
queryDataDetectorDaily2Task();
} else {
System.out.printf(responseDto.getData().toString());
@@ -184,29 +207,64 @@
}
}
+ @Scheduled(cron = "0 */30 * * * ?") // 姣�30鍒嗛挓鎵ц
+ public void loginTask() {
+ login();
+ }
- @Scheduled(cron = "0 0 1 * * ?") // 姣忓ぉ闆剁偣鎵ц
-// @Scheduled(cron = "0/1 * * * * ?") // 姣忕鎵ц
- public void listDataIntime() {
+ // @Scheduled(cron = "0 0 1 * * ?") // 姣忓ぉ闆剁偣鎵ц
+ @Scheduled(cron = "0 */5 * * * ?") // 姣�5鍒嗛挓鎵ц
+ public void listDataInTime() {
+ DataIntimeParamDto paramDto = DataIntimeParamDto.builder().build();
+ // {"StartAt":0,"Size":20,"Typ":2,"SortBy":"status","SortMode":"asc","Param":{"StatusOfRecord":"NORMAL"}}
+ paramDto.setSize(20);
+ paramDto.setStartAt(0);
+ paramDto.setTyp(2);
+ paramDto.setSortBy("status");
+ paramDto.setSortMode("asc");
+
+ DataIntimeParamChildDto paramChildDto = new DataIntimeParamChildDto();
+ paramChildDto.setStatusOfRecord("NORMAL");
+ paramDto.setParam(paramChildDto);
+
+ getInTimeData(paramDto);
+
+ paramDto.setTyp(1);
+ getInTimeData(paramDto);
+ }
+
+ private void getInTimeData(DataIntimeParamDto paramDto) {
try {
- DataIntimeParamDto paramDto = DataIntimeParamDto.builder().build();
-
String json = smokeDetectionService.listDataIntime(paramDto, redisService.get(RedisKey.SMOKE_TOKEN).toString());
SmokeResultResponseDto responseDto = JSON.parseObject(json, SmokeResultResponseDto.class);
if (responseDto.getStatus() == 200) {
DataIntimeResponseDto dataIntimeResponseDto = JSON.parseObject(responseDto.getData().toString(), DataIntimeResponseDto.class);
List<OdsInTime> list = dataIntimeResponseDto.getContent();
+
+ OdsInTimeCount odsInTimeCount = new OdsInTimeCount();
+ LambdaQueryWrapper<OdsInTimeCount> queryWrapper = new LambdaQueryWrapper<OdsInTimeCount>().eq(OdsInTimeCount::getType, paramDto.getTyp());
+ List<OdsInTimeCount> countList = iOdsInTimeCountService.list(queryWrapper);
+ if (countList.size() > 0) {
+ odsInTimeCount = countList.get(0);
+ }
+ odsInTimeCount.setDeviceNum(dataIntimeResponseDto.getDeviceNum());
+ odsInTimeCount.setLocaleNum(dataIntimeResponseDto.getLocaleNum());
+ odsInTimeCount.setOnlineNum(dataIntimeResponseDto.getOnlineNum());
+ odsInTimeCount.setTotal(dataIntimeResponseDto.getTotal());
+ iOdsInTimeCountService.saveOrUpdate(odsInTimeCount);
+
list.forEach(o -> {
try {
- inTimeService.save(o);
+ o.setModifyTime(LocalDateTime.now());
+ o.setTyp(paramDto.getTyp());
+ inTimeService.saveOrUpdate(o);
} catch (Exception ex) {
System.out.printf(ex.getMessage());
}
});
// alarmMsgService.saveBatch(list);
} else if (responseDto.getStatus() == 114) {
- login();
queryDataDetectorDaily2Task();
} else {
System.out.printf(responseDto.getData().toString());
@@ -238,7 +296,6 @@
});
// alarmMsgService.saveBatch(list);
} else if (responseDto.getStatus() == 114) {
- login();
queryDataDetectorDaily2Task();
} else {
System.out.printf(responseDto.getData().toString());
@@ -273,7 +330,6 @@
});
// alarmMsgService.saveBatch(list);
} else if (responseDto.getStatus() == 114) {
- login();
queryDataDetectorDaily2Task();
} else {
System.out.printf(responseDto.getData().toString());
@@ -305,7 +361,6 @@
});
// alarmMsgService.saveBatch(list);
} else if (responseDto.getStatus() == 114) {
- login();
queryDataDetectorDaily2Task();
} else {
System.out.printf(responseDto.getData().toString());
@@ -315,11 +370,20 @@
}
}
+ /**
+ * 鐩戞祴鎶ヨ缁熻 杩愮淮鎯呭喌鎶ヨ〃
+ */
@Scheduled(cron = "0 0 1 * * ?") // 姣忓ぉ闆剁偣鎵ц
// @Scheduled(cron = "0/1 * * * * ?") // 姣忕鎵ц
public void listCurAlarm() {
try {
- CurAlarmParamDto paramDto = CurAlarmParamDto.builder().Typ(2).build();
+ CurAlarmParamDto paramDto = CurAlarmParamDto.builder().StartAt(0).Size(20).SortBy("status").SortMode("asc").Typ(2).build();
+ CurAlarmParamChildDto childDto = CurAlarmParamChildDto.builder().build();
+ Long[] dates = getTodayAndLastMonth();
+ childDto.setStartAt(dates[0]);
+ childDto.setEndAt(dates[1]);
+ childDto.setLocaleWithDevice(true);
+ paramDto.setParam(childDto);
String json = smokeDetectionService.getListCurAlarm(paramDto, redisService.get(RedisKey.SMOKE_TOKEN).toString());
SmokeResultResponseDto responseDto = JSON.parseObject(json, SmokeResultResponseDto.class);
@@ -329,15 +393,14 @@
List<OdsCurAlarm> list = responseDataDto.getContent();
list.forEach(o -> {
try {
- curAlarmService.save(o);
+ curAlarmService.saveByLocalId(o);
} catch (Exception ex) {
System.out.printf(ex.getMessage());
}
});
// alarmMsgService.saveBatch(list);
} else if (responseDto.getStatus() == 114) {
- login();
- queryDataDetectorDaily2Task();
+ listCurAlarm();
} else {
System.out.printf(responseDto.getData().toString());
}
@@ -346,8 +409,148 @@
}
}
+ /**
+ * 妫�娴嬩华鎬讳綋鎯呭喌鎶ヨ〃
+ */
+ @Scheduled(cron = "0 0 1 * * ?") // 姣忓ぉ闆剁偣鎵ц
+// @Scheduled(cron = "0/1 * * * * ?") // 姣忕鎵ц
+ public void listDataDetectorDailyStats() {
+ try {
+ DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
+ Calendar calendar = Calendar.getInstance();
+ String dateEnd = df.format(calendar.getTime());
+
+ calendar.add(Calendar.MONTH, -1);
+ String dateBegin = df.format(calendar.getTime());
+
+ DataDetectorDailyStatsParamDto paramDto = DataDetectorDailyStatsParamDto.builder().Typ(1).WithAreaLocaleReport(false)
+ .AcquitDateBegin(dateBegin).AcquitDateEnd(dateEnd).build();
+ String json = smokeDetectionService.getListDataDetectorDailyStats(paramDto, redisService.get(RedisKey.SMOKE_TOKEN).toString());
+ SmokeResultResponseDto responseDto = JSON.parseObject(json, SmokeResultResponseDto.class);
+
+ if (responseDto.getStatus() == 200) {
+ LambdaUpdateWrapper<OdsStatistics> update = new LambdaUpdateWrapper<OdsStatistics>()
+ .eq(OdsStatistics::getTypeName, "listDataDetectorDailyStats")
+ .set(OdsStatistics::getContent, responseDto.getData().toString());
+
+ odsStatisticsService.update(update);
+ } else if (responseDto.getStatus() == 114) {
+ listDataDetectorDailyStats();
+ } else {
+ System.out.printf(responseDto.getData().toString());
+ }
+ } catch (Exception ex) {
+ System.out.printf(ex.getMessage());
+ }
+ }
+
+ /**
+ * 娌圭儫鍑忔帓缁熻
+ */
+ @Scheduled(cron = "0 0 1 * * ?") // 姣忓ぉ闆剁偣鎵ц
+// @Scheduled(cron = "0/1 * * * * ?") // 姣忕鎵ц
+ public void listDetectorDaily() {
+ try {
+ CurAlarmParam2Dto paramDto = CurAlarmParam2Dto.builder().StartAt(0).Size(20).build();
+ CurAlarmParamChild2Dto childDto = CurAlarmParamChild2Dto.builder().build();
+
+ Long[] dates = getTodayAndLastMonth();
+ childDto.setStartAt(dates[0]);
+ childDto.setEndAt(dates[1]);
+ paramDto.setParam(childDto);
+ // {"StartAt":0,"Size":20,"Param":{"startAt":1697040000,"endAt":1699631999}}:
+ String json = smokeDetectionService.getListDetectorDaily(paramDto, redisService.get(RedisKey.SMOKE_TOKEN).toString());
+ SmokeResultResponseDto responseDto = JSON.parseObject(json, SmokeResultResponseDto.class);
+
+ if (responseDto.getStatus() == 200) {
+ LambdaUpdateWrapper<OdsStatistics> update = new LambdaUpdateWrapper<OdsStatistics>()
+ .eq(OdsStatistics::getTypeName, "listDetectorDaily")
+ .set(OdsStatistics::getContent, responseDto.getData().toString());
+
+ odsStatisticsService.update(update);
+ } else if (responseDto.getStatus() == 114) {
+ login();
+ listDetectorDaily();
+ } else {
+ System.out.printf(responseDto.getData().toString());
+ }
+ } catch (Exception ex) {
+ System.out.printf(ex.getMessage());
+ }
+ }
+
+ /**
+ * 瀹炴椂妗f
+ */
+ @Scheduled(cron = "0 */10 * * * ?") // 姣�10鍒嗛挓鎵ц
+// @Scheduled(cron = "0/1 * * * * ?") // 姣忕鎵ц
+ public void listLocaleDocument() {
+ String auth = redisService.get(RedisKey.SMOKE_TOKEN).toString();
+ String host = "http://116.62.234.187:8120";
+ try {
+ List<OdsLocale> odsLocales = localeService.list();
+ for (OdsLocale locale : odsLocales) {
+ if (!StringUtils.isEmpty(locale.getMnLast())) {
+ Long[] dates = getTodayAndLastMonth();
+ String detectorDailySumDayJson = "{\"LocaleId\":\"" + locale.getId() + "\",\"AcquitAtBegin\":" + dates[1] + ",\"AcquitAtEnd\":" + (dates[1] + 86400) + "}";
+ String detectorDailySumDays = HttpUtil.HttpPostWithJson(host + "/admin/listDataDetectorDailySumDaysByLocaleId", detectorDailySumDayJson, auth);
+
+ String listLocaleJson = "{\"Param\":{\"id\":\"" + locale.getId() + "\"}}";
+ String listLocale = HttpUtil.HttpPostWithJson(host + "/admin/listLocale", listLocaleJson, auth);
+
+ String detectorDailyJson = "{\"LocaleId\":\"" + locale.getId() + "\",\"AcquitAtBegin\":" + dates[1] + ",\"AcquitAtEnd\":" + (dates[1] + 86400) + "}";
+ String detectorDaily = HttpUtil.HttpPostWithJson(host + "/admin/queryDataDetectorDaily", detectorDailyJson, auth);
+
+ String listIntimeDataJson = "{\"StartAt\":0,\"Size\":20,\"mn\":\"" + locale.getMnLast() + "\",\"typ\":2,\"at\":0}";
+ String listIntimeData = HttpUtil.HttpPostWithJson(host + "/admin/listIntimeData", listIntimeDataJson, auth);
+
+ String listTenMinDataJson = "{\"mn\":\"" + locale.getMnLast() + "\",\"at\":" + dates[1] + "}";
+ String listTenMinData = HttpUtil.HttpPostWithJson(host + "/admin/listTenMinData", listTenMinDataJson, auth);
+
+ Map<String, Object> tenHourMap = new HashMap<>();
+ tenHourMap.put("at", dates[1]);
+ tenHourMap.put("mn", locale.getMnLast());
+ String listTenHourData = HttpUtil.doGet(host + "/admin/listTenHourData", tenHourMap, auth);
+
+ String devicesJson = "{\"LocaleId\":\"" + locale.getId() + "\",\"AcquitAtBegin\":" + dates[1] + ",\"AcquitAtEnd\":" + (dates[1] + 86400) + "}";
+ String devices = HttpUtil.HttpPostWithJson(host + "/admin/getDevicesOfLocale", devicesJson, auth);
+
+ String maintenanceJson = "{\"StartAt\":0,\"Size\":20,\"FormType\":1,\"Param\":{\"maintenance.locale_id\":{\"S\":2,\"V\":\"cg1uk9j1lf29c3qf3gvg\"}}}";
+ String maintenance = HttpUtil.HttpPostWithJson(host + "/admin/listMaintenance", maintenanceJson, auth);
+
+ OdsLocaleDocument document = OdsLocaleDocument.builder().localeId(locale.getId()).mn(locale.getMnLast())
+ .detectorDailySumDays(detectorDailySumDays).detectorDaily(detectorDaily).listLocale(listLocale)
+ .intimeData(listIntimeData).tenMinData(listTenMinData).tenHourData(listTenHourData)
+ .devices(devices).maintenance(maintenance).build();
+
+ localeDocumentService.saveByLocaleId(document);
+ }
+ }
+ } catch (Exception ex) {
+ System.out.printf(ex.getMessage());
+ }
+ }
+
+ private Long[] getTodayAndLastMonth() {
+ Calendar calendar = Calendar.getInstance();
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ calendar.add(Calendar.DAY_OF_MONTH, -1);
+ long todayZero = calendar.getTimeInMillis();
+
+ calendar.add(Calendar.DAY_OF_MONTH, 1);
+ calendar.add(Calendar.MONTH, -1);
+ long lastMonthZero = calendar.getTimeInMillis();
+ Long[] dates = new Long[2];
+ dates[0] = lastMonthZero / 1000;
+ dates[1] = todayZero / 1000;
+ return dates;
+ }
+
void login() {
- LoginParamDto loginParamDto = LoginParamDto.builder().username("connect_test2").password("test@234").noCode(true).build();
+ LoginParamDto loginParamDto = LoginParamDto.builder().username("閬傛槍鍩庣灞�").password("123456").noCode(true).build();
String json = smokeDetectionService.loginAction(loginParamDto);
SmokeResultResponseDto responseDto = JSON.parseObject(json, SmokeResultResponseDto.class);
if (responseDto.getStatus() == 200) {
--
Gitblit v1.8.0