diff --git a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/ClearCacheTask.java b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/ClearCacheTask.java index ab63f46..4d5a523 100644 --- a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/ClearCacheTask.java +++ b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/ClearCacheTask.java @@ -11,8 +11,10 @@ import java.util.HashMap; @Service public class ClearCacheTask { - public static HashMap warnMap = new HashMap<>(); + public static HashMap reportCountMap = new HashMap<>(); + public static HashMap activityMap = new HashMap<>(); public static HashMap heartbeatMap = new HashMap<>(); + public static HashMap lowVoltMap = new HashMap<>(); @Resource NewCacheService newCacheService; @@ -24,13 +26,15 @@ public class ClearCacheTask { @Scheduled(cron = "0 0 9 * * MON-FRI") private void clearWarnMap() { - warnMap.clear(); + reportCountMap.clear(); + activityMap.clear(); heartbeatMap.clear(); } @Scheduled(cron = "0 0 10 * * ?") private void clearFubin() { PulliceModel.fubinDoneMap.clear(); + lowVoltMap.clear(); } } diff --git a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/MntnCheckTask.java b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/MntnCheckTask.java index 7608418..890a15d 100644 --- a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/MntnCheckTask.java +++ b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/MntnCheckTask.java @@ -28,6 +28,7 @@ public class MntnCheckTask { private int maxCount = 50; private int maxDay = 3; private int lostPer = 10; + private float lowVolt = 15; public HashMap lostingMap = new HashMap<>(); private HashMap _lostMap; @@ -97,38 +98,57 @@ public class MntnCheckTask { MntnRawReportsExample.Criteria criteria = example.createCriteria(); criteria.andTermIdEqualTo(termId); criteria.andCreateTimeGreaterThan(time); - if (shutdown == 0) { - long count = rawReportsMapper.countByExample(example); - if (count > maxCount) { - this.sendWarningCount(term, count); - } else if (count <= 0) { - example = new MntnRawReportsExample(); - criteria = example.createCriteria(); - criteria.andTermIdEqualTo(termId); - example.setOrderByClause("create_time desc"); - PageHelper.startPage(1, 1); - List list = rawReportsMapper.selectByExample(example); - if (!CollectionUtils.isEmpty(list)) { - Long lasttime = list.get(0).getCreateTime(); - long days = (System.currentTimeMillis() / 1000 - lasttime) / 60 / 60 / 24; - if (days >= maxDay) { - _lostMap.put(termId, days); + if (shutdown == 1) { + return; + } + long count = rawReportsMapper.countByExample(example); + if (count > maxCount) { + this.sendWarningCount(term, count); + } + + example = new MntnRawReportsExample(); + criteria = example.createCriteria(); + criteria.andTermIdEqualTo(termId); + example.setOrderByClause("create_time desc"); + PageHelper.startPage(1, 1); + List list = rawReportsMapper.selectByExample(example); + if (!CollectionUtils.isEmpty(list)) { + MntnRawReports last = list.get(0); + Long lasttime = last.getCreateTime(); + long days = (System.currentTimeMillis() / 1000 - lasttime) / 60 / 60 / 24; + if (days >= maxDay) { + _lostMap.put(termId, days); + } else { + last.makeRawReport(); + try { + Object chargeVolt = last.getReportMap().get("batteryChargingVoltage"); + float volt = Float.parseFloat(chargeVolt.toString()); + if (volt < lowVolt) { +// this.sendWarningLowVolt(term, chargeVolt); } + } catch (Exception ignore) { } } } } + private void sendWarningLowVolt(Terminals term, Object chargeVolt) { + String str = "装置" + term.getCmdid() + "最新充电电压" + chargeVolt + + "V, 低于设定的阈值" + lowVolt + "V;"; + + if (!ClearCacheTask.lowVoltMap.containsKey(term.getId())) { + ClearCacheTask.lowVoltMap.put(term.getId(), 1L); + log.warn(str); + DingTalkPushUtil.alertYW.add(str); + } + } + private void sendWarningCount(Terminals term, long count) { String str = "装置" + term.getCmdid() + "最近" + minutes + "分钟内,运维报送次数:" + count + "次, 超过设定的阈值" + maxCount + "次;"; - if (ClearCacheTask.warnMap.containsKey(term.getId())) { - Long cnt = ClearCacheTask.warnMap.get(term.getId()); - cnt++; - ClearCacheTask.warnMap.put(term.getId(), cnt); - } else { - ClearCacheTask.warnMap.put(term.getId(), 1L); + if (!ClearCacheTask.reportCountMap.containsKey(term.getId())) { + ClearCacheTask.reportCountMap.put(term.getId(), 1L); log.warn(str); DingTalkPushUtil.alertYW.add(str); } @@ -139,8 +159,8 @@ public class MntnCheckTask { + maxDay + "天的有" + lostCount + "台,超过设定的阈值" + lostPer + "%;"; int id = activity.getId() - 100000; - if (!ClearCacheTask.warnMap.containsKey(id)) { - ClearCacheTask.warnMap.put(id, 1L); + if (!ClearCacheTask.activityMap.containsKey(id)) { + ClearCacheTask.activityMap.put(id, 1L); log.warn(str); DingTalkPushUtil.alertYW.add(str); }