From 52303c8868a7d63238e5ac579c85721306e51a40 Mon Sep 17 00:00:00 2001
From: xufenglei <xufenglei>
Date: Wed, 07 Mar 2018 08:52:27 +0800
Subject: [PATCH] 报表 优化
---
src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java | 39 +++++++++++++++++++++++++++------------
1 files changed, 27 insertions(+), 12 deletions(-)
diff --git a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
index 97b5c1f..4ee5b0f 100644
--- a/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
@@ -9,6 +9,7 @@
import java.time.temporal.TemporalAdjusters;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
@@ -59,7 +60,6 @@
private SensorMapper sensorMapper;
// volatile
- private Set<String> sensorKeys = new HashSet<String>();
@Override
public Map<String, Object> getDayAQIByDevice(Map<String, Object> parameters) {
@@ -184,15 +184,27 @@
dataList.add(cs.take().get());
}
Map[] maps = new HashMap[list.size()];
+ 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", "")));
+ }
+ });
for (Object object : dataList) {
Map<String, Object> map = (Map<String, Object>)object;
for (String key : map.keySet()) {
- int index = Integer.valueOf(key.replace("data", ""));
- maps[index] = map;
+ if (key.startsWith("data")) {
+ int index = Integer.valueOf(key.replace("data", ""));
+ maps[index] = map;
+ }
+ if (key.startsWith("sensors")) {
+ sensors.addAll((List<String>) map.get(key));
+ }
}
}
- resultMap.put("time", timeList);
- resultMap.put("data", Arrays.asList(maps));
+ resultMap.put("times", timeList);
+ resultMap.put("datas", Arrays.asList(maps));
+ resultMap.put("sensors", new ArrayList<Object>(sensors));
return resultMap;
}
@@ -246,6 +258,7 @@
dataList.add(doubleMap);
String part = parameters.get("part").toString();
resultMap.put("data" + part, dataList);
+ resultMap.put("sensors" + part, new ArrayList<Object>(sensors));
return resultMap;
}
@@ -285,7 +298,7 @@
parameters.put("sensorKeyColumn", sensorKeyColumn);
}
- sensorKeys.clear();
+ //sensorKeys.clear();
// ������������������
if (!parameters.containsKey("mac")) {
resul = new ArrayList<Map<String,Object>>();
@@ -302,9 +315,8 @@
Integer deviceVersionId = (Integer) map.get("deviceVersionId");
if (!parameter.containsKey("sensorKeyColumn")) {
List<Map<String, Object>> sensors = sensorMapper.getSensorsByDeviceVersionId(deviceVersionId);
- String sensorKeyColumn = getSensorKeyColumnBySensors(sensors);
+ String sensorKeyColumn = getSensorKeyColumnBySensors(sensors, parameters);
parameter.put("sensorKeyColumn", sensorKeyColumn);
- parameters.put("sensors", sensorKeys);
}
List<String> macs = deviceMapper.getDeviceMacByMonitorPointAndDeviceVersion(monitorPointId, deviceVersionId);
if (ObjectUtils.isEmpty(macs) || macs.contains("null") ) {
@@ -365,9 +377,8 @@
device.setMac(mac);
device = deviceMapper.selectOne(device);
List<Map<String, Object>> sensors = sensorMapper.getSensorsByDeviceVersionId(device.getDeviceVersionId());
- String sensorKeyColumn = getSensorKeyColumnBySensors(sensors);
+ String sensorKeyColumn = getSensorKeyColumnBySensors(sensors,parameters);
parameters.put("sensorKeyColumn", sensorKeyColumn);
- parameters.put("sensors", sensorKeys);
}
resul = historyMinutelyMapper.getMonitorPointOrDeviceAvgData(parameters);
@@ -375,9 +386,12 @@
return resul;
}
- private String getSensorKeyColumnBySensors(List<Map<String, Object>> sensors) {
+ private String getSensorKeyColumnBySensors(List<Map<String, Object>> sensors,Map<String, Object> parameters) {
String sensorKeyColumn = "";
-
+ Set<String> sensorKeys = new HashSet<String>();
+ if (parameters.containsKey("sensors")) {
+ sensorKeys = (Set<String>) parameters.get("sensors");
+ }
for (int i = 0; i < sensors.size(); i++) {
String sensorKey = (String) sensors.get(i).get("sensor_key");
String name = (String) sensors.get(i).get("name");
@@ -387,6 +401,7 @@
sensorKeyColumn += " ,";
}
sensorKeys.add(sensorKey + "-" + name + "-" + unit );
+ parameters.put("sensors", sensorKeys);
}
return sensorKeyColumn;
}
--
Gitblit v1.8.0