|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | private SensorMapper sensorMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // volatile | 
|---|
|  |  |  | private Set<String> sensorKeys = new HashSet<String>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public Map<String, Object> getDayAQIByDevice(Map<String, Object> parameters) { | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | dataList.add(doubleMap); | 
|---|
|  |  |  | String part = parameters.get("part").toString(); | 
|---|
|  |  |  | resultMap.put("data" + part, dataList); | 
|---|
|  |  |  | resultMap.put("sensors" + part, new ArrayList<Object>(sensors)); | 
|---|
|  |  |  | return resultMap; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | parameters.put("sensorKeyColumn", sensorKeyColumn); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | sensorKeys.clear(); | 
|---|
|  |  |  | //sensorKeys.clear(); | 
|---|
|  |  |  | // 监控点平均值 | 
|---|
|  |  |  | if (!parameters.containsKey("mac")) { | 
|---|
|  |  |  | resul = new ArrayList<Map<String,Object>>(); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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") ) { | 
|---|
|  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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"); | 
|---|
|  |  |  | 
|---|
|  |  |  | sensorKeyColumn += " ,"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | sensorKeys.add(sensorKey + "-" + name + "-" + unit ); | 
|---|
|  |  |  | parameters.put("sensors", sensorKeys); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return sensorKeyColumn; | 
|---|
|  |  |  | } | 
|---|