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; import com.xxl.job.core.log.XxlJobLogger; @Component public class OffLineDevicesTask { private static transient Logger logger = LoggerFactory.getLogger(OffLineAlarmTask.class); @Resource private DeviceMapper deviceMapper; @Resource private HistoryHourlyMapper historyHourlyMapper; @XxlJob("OffLineDevices") public ReturnT OffLineAlarm(String params) { List> devices = deviceMapper.getOfflineDevice(); List list = new ArrayList<>(); for (Map 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("chenxi18913261648@163.com", "设备掉线警报!", list.toString() + "设备掉线!"); return new ReturnT(200, "执行成功!有邮件发送!"); } catch (Exception e) { XxlJobLogger.log("OffLineDevices:" + e.getMessage()); logger.error(e.getMessage()); e.printStackTrace(); } } return new ReturnT(500, "无掉线设备,不发送邮件"); } @XxlJob("OffLineDiseaseDevices") public ReturnT OffLineDiseaseDevicesAlarm(String params) { String orgId = "174"; List> devices = deviceMapper.getOfflineDeviceOfDiseaseCenter(orgId); List list = new ArrayList<>(); for (Map 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 map = JSON.parseObject(params, Map.class); for (Map.Entry entry : map.entrySet()) { String orgId = entry.getKey(); List emails = (List) entry.getValue(); //获取该组织下离线设备 List> devices = deviceMapper.getOfflineDeviceOfDiseaseCenter(orgId); List 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 hashMap = new HashMap<>(); hashMap.put("start", start); hashMap.put("end", end); //获取参数 Map map = JSON.parseObject(params, Map.class); for (Map.Entry entry : map.entrySet()) { String orgId = entry.getKey(); List emails = (List) entry.getValue(); //获取该组织下所有设备 List> devices = deviceMapper.getAllDeviceByOrg(orgId); List 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, "执行成功!有邮件发送!"); } }