From 6d1d123f7dc9747f7951d25d3fe167a172b47a27 Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Thu, 30 Apr 2020 09:30:34 +0800 Subject: [PATCH] update --- src/main/java/com/moral/controller/ScreenController.java | 175 ++++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 108 insertions(+), 67 deletions(-) diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java index 93fe8e5..fea81f7 100644 --- a/src/main/java/com/moral/controller/ScreenController.java +++ b/src/main/java/com/moral/controller/ScreenController.java @@ -17,6 +17,7 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; +import org.apache.commons.lang.StringUtils; import org.apache.commons.net.ftp.FTPClient; import org.apache.log4j.Logger; import org.dom4j.Document; @@ -842,19 +843,8 @@ parameters.put("sensors", Arrays.asList(sensorKeys)); parameters.put("sensors2", s); List<Map<String, Object>> monitorList = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters); - for (Map<String, Object> monitorMap : monitorList) { - String time = monitorMap.get("time").toString(); - time = time.substring(time.length() - 2); - monitorMap.put("time", Integer.valueOf(time)); - } - Integer maxTime = 0; - Integer max1 = 0; - if (monitorList.size() != 0) { - Map<String, Object> monitorMap = monitorList.get(monitorList.size() - 1); - max1 = Integer.valueOf(monitorMap.get("time").toString()); - } else { - max1 = 0; - } + String type = parameters.get("type").toString(); + ArrayList<Map<String, Object>> resultList = new ArrayList<>(); String sensorKey1 = s; switch (s) { case "e1": @@ -889,80 +879,131 @@ areaList = historyMinutelyService.getAreaAvgDataByAreaCode(parameters); } - for (Map<String, Object> areaMap : areaList) { - String time = areaMap.get("time").toString(); - time = time.substring(time.length() - 2); - areaMap.put("time", Integer.valueOf(time)); - } - - ArrayList<Map<String, Object>> resultList = new ArrayList<>(); - if (areaList.isEmpty()) { + if (areaList.isEmpty() && monitorList.isEmpty()) { + return new ResultBean<List<Map<String, Object>>>(resultList); + } else if (areaList.isEmpty()) { resultList.addAll(monitorList); - for (Map<String, Object> map : monitorList) { - ArrayList<String> values = new ArrayList<>(); - values.add(null); - values.add(map.remove(s).toString()); - map.put("values", values); + for (Map<String, Object> resultMap : resultList) { + String time = resultMap.get("time").toString(); + time = time.substring(time.length() - 2); + resultMap.put("time", Integer.valueOf(time)); + List<String> values = new ArrayList<>(); + values.add(""); + values.add(resultMap.remove(s).toString()); + resultMap.put("values", values); } return new ResultBean<List<Map<String, Object>>>(resultList); + } else if (monitorList.isEmpty()) { + resultList.addAll(areaList); + for (Map<String, Object> resultMap : resultList) { + String time = resultMap.get("time").toString(); + time = time.substring(time.length() - 2); + resultMap.put("time", Integer.valueOf(time)); + List<String> values = new ArrayList<>(); + values.add(resultMap.remove(s).toString()); + values.add(""); + resultMap.put("values", values); + } + return new ResultBean<List<Map<String, Object>>>(resultList); + } + + for (Map<String, Object> map : areaList) { + String time = map.get("time").toString(); + time = time.substring(time.length() - 2); + map.put("time", Integer.valueOf(time)); } - Integer max = 0; - if (areaList.size() != 0) { - Map<String, Object> areaMap = areaList.get(areaList.size() - 1); - max = Integer.valueOf(areaMap.get("time").toString()); + for (Map<String, Object> m : monitorList) { + String time = m.get("time").toString(); + time = time.substring(time.length() - 2); + m.put("time", Integer.valueOf(time)); + } + + Integer maxTime = 0; + Map<String, Object> areaMap = areaList.get(areaList.size() - 1); + Integer areaMax = Integer.valueOf(areaMap.get("time").toString()); + Map<String, Object> monitorMap = monitorList.get(monitorList.size() - 1); + Integer monitorMax = Integer.valueOf(monitorMap.get("time").toString()); + + if (type.equals("day")) { + if (areaMax >= monitorMax) { + maxTime = areaMax + 1; + } else { + maxTime = monitorMax + 1; + } } else { - max = 0; + if (areaMax >= monitorMax) { + maxTime = areaMax; + } else { + maxTime = monitorMax; + } } - if (max1 >= max) { - maxTime = max1; - } else { - maxTime = max; - } - - for (int i = 0; i <= maxTime; i++) { + for (int i = 0; i < maxTime; i++) { resultList.add(null); } - for (Map<String, Object> areaMap : areaList) { - Integer time = Integer.valueOf(areaMap.get("time").toString()); - resultList.set(time, areaMap); + for (Map<String, Object> map : areaList) { + Integer time = Integer.valueOf(map.get("time").toString()); + if (type.equals("day")) { + resultList.set(time, map); + } else { + resultList.set(time - 1, map); + } + } - for (Map<String, Object> resultMap : resultList) { - for (Map<String, Object> monitorMap : monitorList) { - ArrayList<String> values = new ArrayList<>(); - String monitorTime = monitorMap.get("time").toString(); - if (resultMap != null) { - String resultTime = resultMap.get("time").toString(); - if (resultTime.equals(monitorTime)) { - String value = resultMap.remove(s).toString(); - String value1 = monitorMap.get(s).toString(); - values.add(value); - values.add(value1); - resultMap.put("values", values); - } - } else { - String value1 = monitorMap.get(s).toString(); - values.add(null); - values.add(value1); + if (type.equals("day")) { + for (int i = 0; i < resultList.size(); i++) { + if (resultList.get(i) == null) { + Map<String, Object> hashMap = new HashMap<>(); + hashMap.put("time", i); + hashMap.put(s, ""); + resultList.set(i, hashMap); + } + } + } else { + for (int i = 0; i < resultList.size(); i++) { + if (resultList.get(i) == null) { + Map<String, Object> hashMap = new HashMap<>(); + hashMap.put("time", i + 1); + hashMap.put(s, ""); + resultList.set(i, hashMap); } } } - resultList.removeAll(Collections.singleton(null)); - - for (Map<String, Object> resultMap : resultList) { - if (resultMap.containsKey(s)) { - ArrayList<String> values = new ArrayList<>(); - values.add(resultMap.remove(s).toString()); - values.add(null); - resultMap.put("values", values); + for (Map<String, Object> map : resultList) { + List<Object> values = new ArrayList<>(); + for (Map<String, Object> map1 : monitorList) { + if (map.get("time").toString().equals(map1.get("time").toString())) { + values.add(map.remove(s)); + values.add(map1.remove(s)); + map.put("values", values); + } } } - return new ResultBean<List<Map<String, Object>>>(resultList); + + for (Map<String, Object> map : resultList) { + List<Object> values = new ArrayList<>(); + if (map.containsKey(s)) { + values.add(map.remove(s)); + values.add(""); + map.put("values", values); + } + } + List<Map<String, Object>> mapList = new ArrayList<>(); + for (Map<String, Object> map : resultList) { + String values = map.get("values").toString(); + String string = StringUtils.strip(values, "[]"); + String[] strings = string.split(","); + if (!strings[0].equals("") || !strings[1].equals(" ")) { + mapList.add(map); + } + } + + return new ResultBean<List<Map<String, Object>>>(mapList); } @GetMapping("getmpoint-byid") -- Gitblit v1.8.0