From 6f08c72b1056c9e4b2bdf79bafbc49fcc3cdcaa1 Mon Sep 17 00:00:00 2001 From: xufenglei <xufenglei> Date: Sun, 08 Apr 2018 11:24:56 +0800 Subject: [PATCH] 报表优化 --- src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java | 70 +++++++++++++++++----------------- 1 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java index 86fd7a0..e71ff2a 100644 --- a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java +++ b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java @@ -53,7 +53,7 @@ import com.moral.service.HistoryMinutelyService; @Service -@SuppressWarnings({ "unchecked", "rawtypes", "unused" }) +@SuppressWarnings({ "unchecked", "unused" }) public class HistoryMinutelyServiceImpl implements HistoryMinutelyService { @Resource @@ -155,12 +155,12 @@ List<Object> timeList = new ArrayList<Object>(); for (int i = 0; i < timeLength; i++) { - timeList.add(i, String.format("%02d", "day".equals(type) || "hour".equals(type) ? i : i + 1)); + timeList.add(String.format("%02d", "day".equals(type) || "hour".equals(type) ? i : i + 1)); } parameters.put("timeList", timeList); ExecutorService threadPool = Executors.newCachedThreadPool(); - CompletionService<Map<String, List<Object>>> cs = new ExecutorCompletionService<Map<String, List<Object>>>(threadPool); + CompletionService<Map<String, Object>> cs = new ExecutorCompletionService<Map<String, Object>>(threadPool); for (int i = 0; i < list.size(); i++) { Map<String, Object> map = list.get(i); map.put("part", i); @@ -169,9 +169,9 @@ } map.put("time", map.remove("formatTime")); map.putAll(parameters); - cs.submit(new Callable<Map<String, List<Object>>>() { + cs.submit(new Callable<Map<String, Object>>() { @Override - public Map<String, List<Object>> call() throws Exception { + public Map<String, Object> call() throws Exception { return getMonitorPointOrDeviceAvgData4Compare(map); } }); @@ -181,7 +181,8 @@ for (Map<String, Object> map : list) { dataList.add(cs.take().get()); } - Map[] maps = new HashMap[list.size()]; + Object[] datas = new Object[list.size()]; + Object[] deviceCounts = new Object[list.size()]; Set<String> sensors = new TreeSet<String>(new Comparator<String>() { @Override public int compare(String o1, String o2) { @@ -193,7 +194,11 @@ for (String key : map.keySet()) { if (key.startsWith("data")) { int index = Integer.valueOf(key.replace("data", "")); - maps[index] = map; + datas[index] = map.get(key); + } + if (key.startsWith("deviceCount")) { + int index = Integer.valueOf(key.replace("deviceCount", "")); + deviceCounts[index] = map.get(key); } if (key.startsWith("sensors")) { sensors.addAll((List<String>) map.get(key)); @@ -201,27 +206,19 @@ } } resultMap.put("times", timeList); - resultMap.put("datas", Arrays.asList(maps)); + resultMap.put("datas", Arrays.asList(datas)); + resultMap.put("deviceCounts", Arrays.asList(deviceCounts)); resultMap.put("sensors", new ArrayList<Object>(sensors)); return resultMap; } - public Map<String, List<Object>> getMonitorPointOrDeviceAvgData4Compare(Map<String, Object> parameters) throws Exception { - Map<String, List<Object>> resultMap = new HashMap<String, List<Object>>(); - + public Map<String, Object> getMonitorPointOrDeviceAvgData4Compare(Map<String, Object> parameters) throws Exception { + Map<String, Object> resultMap = new HashMap<String, Object>(); List<Map<String, Object>> resultList = getMonitorPointOrDeviceAvgData(parameters); - List<Object> timeList = (List<Object>) parameters.get("timeList"); - - List<Object> dataList = new ArrayList<Object>(); - Set<String> sensors = new TreeSet<String>(new Comparator<String>() { - @Override - public int compare(String o1, String o2) { - return Integer.compare(Integer.valueOf(o1.split("-")[0].replace("e", "")), Integer.valueOf(o2.split("-")[0].replace("e", ""))); - } - }); - sensors.addAll((Set<String>)parameters.get("sensors")); + List<String> sensors = (List<String>) parameters.get("sensors"); + String part = parameters.get("part").toString(); Map<String, Double[]> doubleMap = new LinkedHashMap<String, Double[]>(); for (Map<String, Object> map : resultList) { String time = map.get("time").toString(); @@ -239,14 +236,20 @@ } doubles[index] = (Double) map.get(sensorKey); doubleMap.put(sensor, doubles); - } } } - dataList.add(doubleMap); - String part = parameters.get("part").toString(); - resultMap.put("data" + part, dataList); - resultMap.put("sensors" + part, new ArrayList<Object>(sensors)); + + Object deviceCount; + if (parameters.containsKey("deviceCount")) { + deviceCount = parameters.remove("deviceCount"); + } else { + deviceCount = deviceMapper.getDeviceCountByRegion(parameters); + } + + resultMap.put("deviceCount" + part, deviceCount); + resultMap.put("data" + part, doubleMap); + resultMap.put("sensors" + part, sensors); return resultMap; } @@ -272,28 +275,25 @@ parameters.put("end", end); List<String> sensorKeys = new ArrayList<String>(); - Set<String> sensorsSet = new HashSet<String>(); + List<String> sensors = new ArrayList<String>(); if (parameters.containsKey("sensors")) { - List<String> sensors; try { sensors = JSON.parseObject((String)parameters.get("sensors"), new TypeReference<List<String>>() {}); for (String sensor : sensors) { sensorKeys.add(sensor.split("-")[0]); } } catch (Exception e) { - sensors = (List<String>)parameters.remove("sensors"); - sensorKeys.addAll(sensors); + sensorKeys = sensors = (List<String>)parameters.remove("sensors"); } - sensorsSet.addAll(sensors); } else { - List<Sensor> sensors = sensorMapper.getSensorsByCriteria(parameters); - for (Sensor sensor : sensors) { + List<Sensor> sensorList = sensorMapper.getSensorsByCriteria(parameters); + for (Sensor sensor : sensorList) { sensorKeys.add(sensor.getSensorKey()); - sensorsSet.add(sensor.getSensorKey() + "-" + sensor.getName() + "-" + sensor.getUnit()); + sensors.add(sensor.getSensorKey() + "-" + sensor.getName() + "-" + sensor.getUnit()); } } parameters.put("sensorKeys", sensorKeys); - parameters.put("sensors", sensorsSet); + parameters.put("sensors", sensors); return historyMinutelyMapper.getMonitorPointOrDeviceAvgData(parameters); } -- Gitblit v1.8.0