From d8310f6bc609440fa352c0e5a9436c7c78caa287 Mon Sep 17 00:00:00 2001
From: lizijie <lzjiiie@163.com>
Date: Mon, 29 Nov 2021 11:09:48 +0800
Subject: [PATCH] Merge branch 'master' of http://blit.7drlb.com:8888/r/screen_job
---
src/main/java/com/moral/service/DeviceService.java | 2
src/main/java/com/moral/task/OffLineDevicesTask.java | 62 ++++++++++++
src/main/resources/mapper/DeviceMapper.xml | 9 +
src/main/java/com/moral/mapper/HistoryHourlyMapper.java | 6 +
src/main/java/com/moral/task/SensorsAlarmTask.java | 28 +++++
src/main/java/com/moral/mapper/DeviceMapper.java | 2
src/main/resources/mapper/HistoryHourlyMapper.xml | 14 ++
src/main/java/com/moral/service/impl/DeviceServiceImpl.java | 121 +++++++++++++++++++++++
8 files changed, 239 insertions(+), 5 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..7fd71c7 100644
--- a/src/main/java/com/moral/mapper/HistoryHourlyMapper.java
+++ b/src/main/java/com/moral/mapper/HistoryHourlyMapper.java
@@ -15,6 +15,10 @@
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);
+
+ String selectDataByMac(Map<String, Object> params);
}
diff --git a/src/main/java/com/moral/service/DeviceService.java b/src/main/java/com/moral/service/DeviceService.java
index 7c76d7f..202b4b8 100644
--- a/src/main/java/com/moral/service/DeviceService.java
+++ b/src/main/java/com/moral/service/DeviceService.java
@@ -24,4 +24,6 @@
List<Map<String, Object>> getAllByMacList(List<String> macList);
Device getDeviceByID(int id);
+
+ void alarmSms(Map<String, Object> params);
}
diff --git a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
index e3dfd63..76e68e7 100644
--- a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
@@ -1,27 +1,48 @@
package com.moral.service.impl;
+import java.time.LocalDateTime;
+import java.time.temporal.ChronoUnit;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import com.alibaba.fastjson.JSONObject;
import com.moral.entity.Device;
+
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
import com.moral.mapper.DeviceMapper;
+import com.moral.mapper.HistoryHourlyMapper;
import com.moral.mapper.HistoryMapper;
import com.moral.service.DeviceService;
+import com.moral.util.AlarmUtils_2;
@Service
public class DeviceServiceImpl implements DeviceService {
public static Logger log = Logger.getLogger(DeviceServiceImpl.class);
- @Autowired
- DeviceMapper deviceMapper;
+ private static Double[] PM2_5 = {0d, 35d, 75d, 115d, 150d, 250d};
+ private static Double[] PM10 = {0d, 50d, 150d, 250d, 350d, 420d};
+ private static Double[] SO2 = {0d, 150d, 500d, 650d, 800d, 1600d};
+ private static Double[] NO2 = {0d, 100d, 200d, 700d, 1200d, 2340d};
+ private static Double[] CO = {0d, 5d, 10d, 35d, 60d, 90d};
+ private static Double[] O3 = {0d, 160d, 200d, 300d, 400d, 800d};
+ private static Double[] TVOC = {0d, 1.5d, 3d, 5d};
@Autowired
- HistoryMapper historyMapper;
+ private DeviceMapper deviceMapper;
+
+ @Autowired
+ private HistoryMapper historyMapper;
+
+ @Autowired
+ private HistoryHourlyMapper historyHourlyMapper;
@Override
public List<Map<String, Object>> getSensorData(Map<String, Object> parameters) {
@@ -68,4 +89,98 @@
Device result = deviceMapper.selectByPrimaryKey(id);
return result;
}
+
+ @Override
+ public void alarmSms(Map<String, Object> params) {
+ LocalDateTime time = LocalDateTime.now().truncatedTo(ChronoUnit.HOURS);
+ Map<String, Object> hashMap = new HashMap<>();
+ hashMap.put("time", time);
+ List<String> sensors = Arrays.asList("e1", "e2", "e11", "e16", "e10", "e15", "e17");
+ hashMap.put("sensorKeys", sensors);
+ for (Map.Entry<String, Object> entry : params.entrySet()) {
+ String orgId = entry.getKey();
+ List<String> emails = (List<String>) entry.getValue();
+ List<Map<String, Object>> devices = deviceMapper.getAllDeviceByOrg(orgId);
+ List<String> result = new ArrayList<>();
+ for (Map<String, Object> device : devices) {
+ String name = device.get("name").toString();
+ String mac = device.get("mac").toString();
+ hashMap.put("mac", mac);
+ Map<String, Object> data = JSONObject.parseObject(historyHourlyMapper.selectDataByMac(hashMap), Map.class);
+ List<String> alarmInfo = new ArrayList<>();
+ Double pm25Value = Double.parseDouble(((List) data.get("e1")).get(0).toString());
+ Double pm10Value = Double.parseDouble(((List) data.get("e2")).get(0).toString());
+ Double so2Value = Double.parseDouble(((List) data.get("e11")).get(0).toString());
+ Double no2Value = Double.parseDouble(((List) data.get("e16")).get(0).toString());
+ Double coValue = Double.parseDouble(((List) data.get("e10")).get(0).toString());
+ Double o3Value = Double.parseDouble(((List) data.get("e15")).get(0).toString());
+ Double tvocValue = Double.parseDouble(((List) data.get("e17")).get(0).toString());
+ String pm25 = alarmInfo("PM2.5", pm25Value, PM2_5);
+ String pm10 = alarmInfo("PM10", pm10Value, PM10);
+ String so2 = alarmInfo("SO2", so2Value, SO2);
+ String no2 = alarmInfo("NO2", no2Value, NO2);
+ String co = alarmInfo("CO", coValue, CO);
+ String o3 = alarmInfo("O3", o3Value, O3);
+ String tvoc = alarmInfo("TVOC", tvocValue, TVOC);
+ if (pm25 != null) {
+ alarmInfo.add(pm25);
+ }
+ if (pm10 != null) {
+ alarmInfo.add(pm10);
+ }
+ if (so2 != null) {
+ alarmInfo.add(so2);
+ }
+ if (no2 != null) {
+ alarmInfo.add(no2);
+ }
+ if (co != null) {
+ alarmInfo.add(co);
+ }
+ if (o3 != null) {
+ alarmInfo.add(o3);
+ }
+ if (tvoc != null) {
+ alarmInfo.add(tvoc);
+ }
+ if (!ObjectUtils.isEmpty(alarmInfo)) {
+ result.add(name + alarmInfo);
+ }
+ }
+
+ if (!ObjectUtils.isEmpty(result)) {
+ for (String email : emails) {
+ AlarmUtils_2.sendMail(email, "���������������������������������", result.toString());
+ }
+ }
+ }
+ }
+
+ private String alarmInfo(String sensorName, Double value, Double[] doubles) {
+ int state = 1;
+ for (int i = doubles.length - 1; i >= 0; i--) {
+ Double aDouble = doubles[i];
+ if (value >= aDouble) {
+ state = i + 1;
+ break;
+ }
+ }
+ if (state != 1) {
+ StringBuilder builder = new StringBuilder();
+ builder.append(sensorName).append("���������==").append(value).append("-->���������������");
+ if (state == 6) {
+ builder.append(doubles[5]);
+ } else if (state == 5) {
+ builder.append(doubles[4]);
+ } else if (state == 4) {
+ builder.append(doubles[3]);
+ } else if (state == 3) {
+ builder.append(doubles[2]);
+ } else if (state == 2) {
+ builder.append(doubles[1]);
+ }
+ return builder.toString();
+ }
+ return null;
+ }
}
diff --git a/src/main/java/com/moral/task/OffLineDevicesTask.java b/src/main/java/com/moral/task/OffLineDevicesTask.java
index 3fc979a..31928d2 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) {
@@ -59,7 +69,7 @@
}
if (list.size() != 0) {
try {
- AlarmUtils_2.sendMail("lili@nieh.chinacdc.cn", "���������������������", list.toString() + ",���" + list.size() + "������������������");
+ AlarmUtils_2.sendMail("vliliv@163.com", "���������������������", list.toString() + ",���" + list.size() + "������������������");
return new ReturnT(200, "���������������������������������" + list.size());
} catch (Exception e) {
XxlJobLogger.log("OffLineDevices:" + e.getMessage());
@@ -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 = end.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/java/com/moral/task/SensorsAlarmTask.java b/src/main/java/com/moral/task/SensorsAlarmTask.java
new file mode 100644
index 0000000..dc516a1
--- /dev/null
+++ b/src/main/java/com/moral/task/SensorsAlarmTask.java
@@ -0,0 +1,28 @@
+package com.moral.task;
+
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import com.alibaba.fastjson.JSON;
+
+import com.moral.service.DeviceService;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.annotation.XxlJob;
+
+@Component
+public class SensorsAlarmTask {
+
+
+ @Resource
+ private DeviceService deviceService;
+
+ @XxlJob("sensorsAlarm")
+ public ReturnT sensorsAlarm(String params) {
+ Map<String, Object> map = JSON.parseObject(params, Map.class);
+ deviceService.alarmSms(map);
+ 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..169573f 100644
--- a/src/main/resources/mapper/HistoryHourlyMapper.xml
+++ b/src/main/resources/mapper/HistoryHourlyMapper.xml
@@ -96,4 +96,18 @@
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>
+
+ <select id="selectDataByMac" resultType="java.lang.String">
+ select
+ json
+ from history_hourly
+ where mac = #{mac}
+ and `time` = #{time}
+ </select>
</mapper>
\ No newline at end of file
--
Gitblit v1.8.0