|  |  |  | 
|---|
|  |  |  | // 今日00:00:00 | 
|---|
|  |  |  | parameters.put("end", localDate); | 
|---|
|  |  |  | String[] macKeys = { "e1", "e2", "e10", "e11", "e15", "e16" }; | 
|---|
|  |  |  | String sensorKeyColumn = ""; | 
|---|
|  |  |  | for (int i = 0; i < macKeys.length; i++) { | 
|---|
|  |  |  | sensorKeyColumn += "AVG(json -> '$." + macKeys[i] + "[0]') " + macKeys[i]; | 
|---|
|  |  |  | if (i != macKeys.length -1) { | 
|---|
|  |  |  | sensorKeyColumn += " ,"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | parameters.put("sensorKeyColumn", sensorKeyColumn); | 
|---|
|  |  |  | parameters.put("sensorKeys", Arrays.asList(macKeys)); | 
|---|
|  |  |  | Map<String, Double> average = historyMinutelyMapper.getSersionAvgByDevice(parameters); | 
|---|
|  |  |  | return getAQIByDataMap(average); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | parameters.put("start", start); | 
|---|
|  |  |  | parameters.put("end", end); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (parameters.containsKey("sensorKey")) { | 
|---|
|  |  |  | if (parameters.containsKey("sensorKeys")) { | 
|---|
|  |  |  | List<String> sensors; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | sensors = JSON.parseObject((String)parameters.get("sensors"), new TypeReference<List<String>>() {}); | 
|---|
|  |  |  | parameters.put("sensors", new HashSet<String>(sensors)); | 
|---|
|  |  |  | List<String> sensorKeys = new ArrayList<String>(); | 
|---|
|  |  |  | for (String sensor : sensors) { | 
|---|
|  |  |  | sensorKeys.add(sensor.split("-")[0]); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | parameters.put("sensorKeys", sensorKeys); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | sensors = new ArrayList<String>(); | 
|---|
|  |  |  | sensors.add((String)parameters.get("sensorKey")); | 
|---|
|  |  |  | sensors = (List<String>) parameters.get("sensorKeys"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String sensorKeyColumn = ""; | 
|---|
|  |  |  | for (int i = 0; i < sensors.size(); i++) { | 
|---|
|  |  |  | String sensorKey = sensors.get(i).split("-")[0]; | 
|---|
|  |  |  | sensorKeyColumn += "AVG(json -> '$." + sensorKey + "[0]') " + sensorKey; | 
|---|
|  |  |  | if (i != sensors.size() - 1) { | 
|---|
|  |  |  | sensorKeyColumn += " ,"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | parameters.put("sensorKeyColumn", sensorKeyColumn); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //sensorKeys.clear(); | 
|---|
|  |  |  | 
|---|
|  |  |  | public List<Map<String, Object>> call() throws Exception { | 
|---|
|  |  |  | Map<String, Object> parameter = new HashMap<String, Object>(parameters); | 
|---|
|  |  |  | Integer deviceVersionId = (Integer) map.get("deviceVersionId"); | 
|---|
|  |  |  | if (!parameter.containsKey("sensorKeyColumn")) { | 
|---|
|  |  |  | if (!parameter.containsKey("sensorKeys")) { | 
|---|
|  |  |  | List<Map<String, Object>> sensors = sensorMapper.getSensorsByDeviceVersionId(deviceVersionId); | 
|---|
|  |  |  | String sensorKeyColumn = getSensorKeyColumnBySensors(sensors, parameters); | 
|---|
|  |  |  | parameter.put("sensorKeyColumn", sensorKeyColumn); | 
|---|
|  |  |  | List<String> sensorKeys = getSensorKeyColumnBySensors(sensors, parameters); | 
|---|
|  |  |  | parameter.put("sensorKeys", sensorKeys); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<String> macs = deviceMapper.getDeviceMacByMonitorPointAndDeviceVersion(monitorPointId, deviceVersionId); | 
|---|
|  |  |  | if (ObjectUtils.isEmpty(macs) || macs.contains("null") ) { | 
|---|
|  |  |  | 
|---|
|  |  |  | // 设备 平均值 | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | // 所有传感器 | 
|---|
|  |  |  | if (!parameters.containsKey("sensorKeyColumn")) { | 
|---|
|  |  |  | if (!parameters.containsKey("sensorKeys")) { | 
|---|
|  |  |  | String mac = (String) parameters.get("mac"); | 
|---|
|  |  |  | Device device = new Device(); | 
|---|
|  |  |  | device.setMac(mac); | 
|---|
|  |  |  | device = deviceMapper.selectOne(device); | 
|---|
|  |  |  | List<Map<String, Object>> sensors = sensorMapper.getSensorsByDeviceVersionId(device.getDeviceVersionId()); | 
|---|
|  |  |  | String sensorKeyColumn = getSensorKeyColumnBySensors(sensors,parameters); | 
|---|
|  |  |  | parameters.put("sensorKeyColumn", sensorKeyColumn); | 
|---|
|  |  |  | List<String> sensorKeys = getSensorKeyColumnBySensors(sensors,parameters); | 
|---|
|  |  |  | parameters.put("sensorKeys", sensorKeys); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | resultList = historyMinutelyMapper.getMonitorPointOrDeviceAvgData(parameters); | 
|---|
|  |  |  | 
|---|
|  |  |  | return resultList; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private String getSensorKeyColumnBySensors(List<Map<String, Object>> sensors,Map<String, Object> parameters) { | 
|---|
|  |  |  | String sensorKeyColumn = ""; | 
|---|
|  |  |  | Set<String> sensorKeys = new HashSet<String>(); | 
|---|
|  |  |  | private List<String> getSensorKeyColumnBySensors(List<Map<String, Object>> sensors,Map<String, Object> parameters) { | 
|---|
|  |  |  | Set<String> sensorSet = new HashSet<String>(); | 
|---|
|  |  |  | List<String> sensorKeys = new ArrayList<String>(); | 
|---|
|  |  |  | if (parameters.containsKey("sensors")) { | 
|---|
|  |  |  | sensorKeys = (Set<String>) parameters.get("sensors"); | 
|---|
|  |  |  | sensorSet = (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"); | 
|---|
|  |  |  | String unit = (String) sensors.get(i).get("unit"); | 
|---|
|  |  |  | sensorKeyColumn += "AVG(json -> '$." + sensorKey + "[0]') " + sensorKey; | 
|---|
|  |  |  | if (i != sensors.size() - 1) { | 
|---|
|  |  |  | sensorKeyColumn += " ,"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | sensorKeys.add(sensorKey + "-" + name + "-" + unit ); | 
|---|
|  |  |  | parameters.put("sensors", sensorKeys); | 
|---|
|  |  |  | for (Map<String, Object> sensor : sensors) { | 
|---|
|  |  |  | String sensorKey = (String) sensor.get("sensor_key"); | 
|---|
|  |  |  | String name = (String) sensor.get("name"); | 
|---|
|  |  |  | String unit = (String) sensor.get("unit"); | 
|---|
|  |  |  | sensorSet.add(sensorKey + "-" + name + "-" + unit ); | 
|---|
|  |  |  | sensorKeys.add(sensorKey); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return sensorKeyColumn; | 
|---|
|  |  |  | parameters.put("sensors", sensorSet); | 
|---|
|  |  |  | return  sensorKeys; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | parameters.put("start", start); | 
|---|
|  |  |  | parameters.put("end", end); | 
|---|
|  |  |  | String sensorKey = (String) parameters.get("macKey"); | 
|---|
|  |  |  | String sensorKeyColumn = "AVG(json -> '$." + sensorKey + "[0]') " + sensorKey; | 
|---|
|  |  |  | parameters.put("sensorKeyColumn", sensorKeyColumn); | 
|---|
|  |  |  | String sensorKey = (String) parameters.remove("macKey"); | 
|---|
|  |  |  | List<String> sensorKeys = new ArrayList<String>(); | 
|---|
|  |  |  | sensorKeys.add(sensorKey); | 
|---|
|  |  |  | parameters.put("sensorKeys", sensorKeys); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Map<String, Double> average = historyMinutelyMapper.getSersionAvgByDevice(parameters); | 
|---|
|  |  |  | if (isEmpty(average)) { | 
|---|