From 9b2e4fa2c1b8374d3496f56535547558efa61d30 Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Thu, 21 May 2020 16:41:42 +0800 Subject: [PATCH] alarm_daily表统计任务update --- src/main/java/com/moral/service/impl/AlarmServiceImpl.java | 128 +++++++++++++++++++++++++++++++++++++++++- 1 files changed, 125 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/moral/service/impl/AlarmServiceImpl.java b/src/main/java/com/moral/service/impl/AlarmServiceImpl.java index df9dd46..09440e9 100644 --- a/src/main/java/com/moral/service/impl/AlarmServiceImpl.java +++ b/src/main/java/com/moral/service/impl/AlarmServiceImpl.java @@ -1,14 +1,23 @@ package com.moral.service.impl; +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import javax.annotation.Resource; import org.springframework.stereotype.Service; +import com.alibaba.druid.support.json.JSONUtils; import com.moral.mapper.AlarmMapper; import com.moral.service.AlarmService; +import com.moral.service.DeviceService; +import com.moral.service.SensorService; @Service @@ -17,9 +26,123 @@ @Resource private AlarmMapper alarmMapper; + @Resource + private SensorService sensorService; + + @Resource + private DeviceService deviceService; + @Override - public List<Map<String, Object>> getAvgAlarmData(Map<String, Object> devices) { - return alarmMapper.getAvgAlarmData(devices); + public List<Map<String, Object>> getAlarmData() { + LocalDateTime time = LocalDateTime.now(); + LocalDateTime endTime = time.truncatedTo(ChronoUnit.DAYS); + LocalDateTime startTime = endTime.minusDays(1); + List<String> sensorKeys = sensorService.getSensorKeys(); + List<String> macs = deviceService.getMacs(); + String year = startTime.getYear() + ""; + String month = null; + int monthValue = startTime.getMonthValue(); + if (monthValue < 10) { + month = "0" + monthValue; + } else { + month = monthValue + ""; + } + String yearAndMonth = year + month; + Map<String, Object> devices = new HashMap<>(); + devices.put("sensorKeys", sensorKeys); + devices.put("start", startTime); + devices.put("end", endTime); + devices.put("macs", macs); + devices.put("yearAndMonth", yearAndMonth); + List<Map<String, Object>> list = alarmMapper.getAlarmData(devices); + for (Map<String, Object> map : list) { + ArrayList<String> list1 = new ArrayList<>(); + ArrayList<String> list2 = new ArrayList<>(); + ArrayList<String> list3 = new ArrayList<>(); + for (String key : map.keySet()) { + if (!key.equals("mac")) { + String value = map.get(key).toString().substring(1, 2); + if (value.equals("1")) { + list1.add(key); + } else if (value.equals("2")) { + list2.add(key); + } else if (value.equals("3")) { + list3.add(key); + } + } + } + map.put("1", list1); + map.put("2", list2); + map.put("3", list3); + } + + for (Map<String, Object> map : list) { + Iterator<String> iter = map.keySet().iterator(); + while (iter.hasNext()) { + String next = iter.next(); + if (!(next.equals("mac")) && !(next.equals("1")) && !(next.equals("2")) && !(next.equals("3"))) { + iter.remove(); + } + } + } + + for (int i = list.size() - 1; i >= 0; i--) { + for (int j = i - 1; j >= 0; j--) { + Map<String, Object> map1 = list.get(i); + Map<String, Object> map2 = list.get(j); + if (map1.get("mac").equals(map2.get("mac"))) { + List<String> frontList1 = (ArrayList<String>) map1.get("1"); + List<String> frontList2 = (ArrayList<String>) map1.get("2"); + List<String> frontList3 = (ArrayList<String>) map1.get("3"); + List<String> backList1 = (ArrayList<String>) map2.get("1"); + List<String> backList2 = (ArrayList<String>) map2.get("2"); + List<String> backList3 = (ArrayList<String>) map2.get("3"); + backList1.addAll(frontList1); + backList2.addAll(frontList2); + backList3.addAll(frontList3); + list.remove(map1); + List<String> list1 = backList1.stream().distinct().collect(Collectors.toList()); + List<String> list2 = backList2.stream().distinct().collect(Collectors.toList()); + List<String> list3 = backList3.stream().distinct().collect(Collectors.toList()); + map2.put("1", list1); + map2.put("2", list2); + map2.put("3", list3); + } + } + } + + for (Map<String, Object> map : list) { + List<String> list1 = (ArrayList<String>) map.get("1"); + List<String> list2 = (ArrayList<String>) map.get("2"); + List<String> list3 = (ArrayList<String>) map.get("3"); + if (list1.size() == 0) { + map.remove("1"); + } + if (list2.size() == 0) { + map.remove("2"); + } + if (list3.size() == 0) { + map.remove("3"); + } + } + + List<Map<String, Object>> resultList = new ArrayList<>(); + for (Map<String, Object> map : list) { + for (int i = 0; i < map.keySet().size() - 1; i++) { + Map<String, Object> hashMap = new HashMap<>(); + Map<String, Object> jsonMap = new HashMap<>(); + hashMap.put("mac", map.get("mac").toString()); + hashMap.put("state", i + 1); + hashMap.put("time", startTime); + ArrayList<String> arrayList = (ArrayList<String>) map.get(i + 1 + ""); + for (String sensorKey : arrayList) { + jsonMap.put(sensorKey, 1); + } + hashMap.put("json", JSONUtils.toJSONString(jsonMap)); + resultList.add(hashMap); + } + } + return resultList; } @Override @@ -31,5 +154,4 @@ public void createTable(String yearAndMonth) { alarmMapper.createTable(yearAndMonth); } - } -- Gitblit v1.8.0