From 4108fd24ac888934a23e9b9129c4392baa2ffb94 Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Tue, 23 Nov 2021 15:27:43 +0800
Subject: [PATCH] 设备掉线,小时和昨日邮件发送
---
src/main/java/com/moral/task/OffLineDevicesTask.java | 60 ++++++++++++++++++++++++++++++
src/main/resources/mapper/DeviceMapper.xml | 9 ++++
src/main/java/com/moral/mapper/HistoryHourlyMapper.java | 4 +
src/main/java/com/moral/mapper/DeviceMapper.java | 2 +
src/main/resources/mapper/HistoryHourlyMapper.xml | 6 +++
5 files changed, 80 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/moral/mapper/DeviceMapper.java b/src/main/java/com/moral/mapper/DeviceMapper.java
index b48bfb7..37de662 100644
--- a/src/main/java/com/moral/mapper/DeviceMapper.java
+++ b/src/main/java/com/moral/mapper/DeviceMapper.java
@@ -44,4 +44,6 @@
List<Map<String, Object>> getOfflineDeviceOfDiseaseCenter(String orgId);
+ List<Map<String, Object>> getAllDeviceByOrg(String orgId);
+
}
\ No newline at end of file
diff --git a/src/main/java/com/moral/mapper/HistoryHourlyMapper.java b/src/main/java/com/moral/mapper/HistoryHourlyMapper.java
index e63ce6e..f6a898b 100644
--- a/src/main/java/com/moral/mapper/HistoryHourlyMapper.java
+++ b/src/main/java/com/moral/mapper/HistoryHourlyMapper.java
@@ -15,6 +15,8 @@
int insertHistoryO3Hourly(@Param("list") List<Map<String, Object>> list);
- List<Map<String,Object>> getBeamByMacs(Map<String,Object> params);
+ List<Map<String, Object>> getBeamByMacs(Map<String, Object> params);
+
+ int selectCountByMac(Map<String, Object> params);
}
diff --git a/src/main/java/com/moral/task/OffLineDevicesTask.java b/src/main/java/com/moral/task/OffLineDevicesTask.java
index 4f559c3..a202f90 100644
--- a/src/main/java/com/moral/task/OffLineDevicesTask.java
+++ b/src/main/java/com/moral/task/OffLineDevicesTask.java
@@ -1,16 +1,23 @@
package com.moral.task;
+import java.time.LocalDateTime;
+import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import com.alibaba.fastjson.JSON;
import com.moral.mapper.DeviceMapper;
+import com.moral.mapper.HistoryHourlyMapper;
import com.moral.util.AlarmUtils_2;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
@@ -22,6 +29,9 @@
@Resource
private DeviceMapper deviceMapper;
+
+ @Resource
+ private HistoryHourlyMapper historyHourlyMapper;
@XxlJob("OffLineDevices")
public ReturnT OffLineAlarm(String params) {
@@ -69,4 +79,54 @@
}
return new ReturnT(500, "���������������,���������������");
}
+
+ @XxlJob("hourOffLine")
+ public ReturnT hourOffLine(String params) {
+ //������������
+ Map<String, Object> map = JSON.parseObject(params, Map.class);
+ for (Map.Entry<String, Object> entry : map.entrySet()) {
+ String orgId = entry.getKey();
+ List<String> emails = (List<String>) entry.getValue();
+ //������������������������������
+ List<Map<String, Object>> devices = deviceMapper.getOfflineDeviceOfDiseaseCenter(orgId);
+ List<String> devicesInfo = devices.stream()
+ .map(device -> device.get("name").toString())
+ .collect(Collectors.toList());
+ if (!ObjectUtils.isEmpty(devicesInfo)) {
+ emails.forEach(email -> AlarmUtils_2.sendMail(email, "������-���������������������������", devicesInfo + "���������������"));
+ }
+ }
+ return new ReturnT(200, "���������������������������������");
+ }
+
+ @XxlJob("dayOffLine")
+ public ReturnT dayOffLine(String params) {
+ LocalDateTime now = LocalDateTime.now();
+ LocalDateTime end = now.truncatedTo(ChronoUnit.DAYS);
+ LocalDateTime start = now.minusDays(1);
+ Map<String, Object> hashMap = new HashMap<>();
+ hashMap.put("start", start);
+ hashMap.put("end", end);
+ //������������
+ Map<String, Object> map = JSON.parseObject(params, Map.class);
+ for (Map.Entry<String, Object> entry : map.entrySet()) {
+ String orgId = entry.getKey();
+ List<String> emails = (List<String>) entry.getValue();
+ //������������������������������
+ List<Map<String, Object>> devices = deviceMapper.getAllDeviceByOrg(orgId);
+ List<String> devicesInfo = new ArrayList<>();
+ devices.forEach(device -> {
+ hashMap.put("mac", device.get("mac").toString());
+ int count = historyHourlyMapper.selectCountByMac(hashMap);
+ if (count == 0) {
+ devicesInfo.add(device.get("name").toString());
+ }
+ });
+
+ if (!ObjectUtils.isEmpty(devicesInfo)) {
+ emails.forEach(email -> AlarmUtils_2.sendMail(email, "������-���������������������������", devicesInfo + "���������������"));
+ }
+ }
+ return new ReturnT(200, "���������������������������������");
+ }
}
diff --git a/src/main/resources/mapper/DeviceMapper.xml b/src/main/resources/mapper/DeviceMapper.xml
index a455140..6d0b4d4 100644
--- a/src/main/resources/mapper/DeviceMapper.xml
+++ b/src/main/resources/mapper/DeviceMapper.xml
@@ -318,4 +318,13 @@
SELECT id FROM monitor_point WHERE organization_id=#{orgId}
);
</select>
+
+ <select id="getAllDeviceByOrg" resultType="java.util.Map">
+ SELECT name,mac
+ FROM `device`
+ WHERE is_delete=0
+ and monitor_point_id in(
+ SELECT id FROM monitor_point WHERE organization_id=#{orgId}
+ );
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/HistoryHourlyMapper.xml b/src/main/resources/mapper/HistoryHourlyMapper.xml
index f9a4473..04e408d 100644
--- a/src/main/resources/mapper/HistoryHourlyMapper.xml
+++ b/src/main/resources/mapper/HistoryHourlyMapper.xml
@@ -96,4 +96,10 @@
group by h.time
</select>
+ <select id="selectCountByMac" resultType="java.lang.Integer">
+ SELECT count(1) FROM history_hourly
+ WHERE mac = #{mac}
+ AND `time` >= #{start}
+ AND `time` <![CDATA[<]]> #{end}
+ </select>
</mapper>
\ No newline at end of file
--
Gitblit v1.8.0