xufenglei
2018-03-07 52303c8868a7d63238e5ac579c85721306e51a40
报表 优化
1 files modified
39 ■■■■■ changed files
src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java 39 ●●●●● patch | view | raw | blame | history
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;
    }