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