jinpengyong
2021-11-23 4108fd24ac888934a23e9b9129c4392baa2ffb94
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) {
@@ -35,7 +45,7 @@
        }
        if (list.size() != 0) {
            try {
                AlarmUtils_2.sendMail("276999030@qq.com", "设备掉线警报!", list.toString() + "设备掉线!");
                AlarmUtils_2.sendMail("chenxi18913261648@163.com", "设备掉线警报!", list.toString() + "设备掉线!");
                return new ReturnT(200, "执行成功!有邮件发送!");
            } catch (Exception e) {
                XxlJobLogger.log("OffLineDevices:" + e.getMessage());
@@ -45,4 +55,78 @@
        }
        return new ReturnT(500, "无掉线设备,不发送邮件");
    }
    @XxlJob("OffLineDiseaseDevices")
    public ReturnT OffLineDiseaseDevicesAlarm(String params) {
        String orgId = "174";
        List<Map<String, Object>> devices = deviceMapper.getOfflineDeviceOfDiseaseCenter(orgId);
        List<String> list = new ArrayList<>();
        for (Map<String, Object> device : devices) {
            String name = device.get("name").toString();
            String mac = device.get("mac").toString();
            String s = name + "(" + mac + ")";
            list.add(s);
        }
        if (list.size() != 0) {
            try {
                AlarmUtils_2.sendMail("vliliv@163.com", "设备掉线警报!", list.toString() + ",共" + list.size() + "台设备掉线!");
                return new ReturnT(200, "执行成功!有邮件发送!" + list.size());
            } catch (Exception e) {
                XxlJobLogger.log("OffLineDevices:" + e.getMessage());
                logger.error(e.getMessage());
                e.printStackTrace();
            }
        }
        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, "执行成功!有邮件发送!");
    }
}