jinpengyong
2021-11-23 4108fd24ac888934a23e9b9129c4392baa2ffb94
设备掉线,小时和昨日邮件发送
5 files modified
81 ■■■■■ changed files
src/main/java/com/moral/mapper/DeviceMapper.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/HistoryHourlyMapper.java 4 ●●● patch | view | raw | blame | history
src/main/java/com/moral/task/OffLineDevicesTask.java 60 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/DeviceMapper.xml 9 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/HistoryHourlyMapper.xml 6 ●●●●● patch | view | raw | blame | history
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);
}
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);
}
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, "执行成功!有邮件发送!");
    }
}
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>
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>