From 4428fd50d5e8216d5d7bd63a7fc2e1bb8e239d9d Mon Sep 17 00:00:00 2001
From: ZhuDongming <773644075@qq.com>
Date: Wed, 13 May 2020 13:58:13 +0800
Subject: [PATCH] update大屏地图跳转定位问题

---
 src/main/java/com/moral/controller/ScreenController.java |  158 ++++++++++++++++++++++++++++------------------------
 1 files changed, 84 insertions(+), 74 deletions(-)

diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index fea81f7..269c6a1 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -17,7 +17,6 @@
 
 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;
@@ -839,45 +838,15 @@
         parameters.put("monitorPointId", parameters.remove("monitorPoint"));
         parameters.put("areaCode", parameters.remove("areaCode"));
         String[] sensorKeys = parameters.remove("sensorKey").toString().split(",");
+        String type = parameters.get("type").toString();
         String s = sensorKeys[0];
         parameters.put("sensors", Arrays.asList(sensorKeys));
         parameters.put("sensors2", s);
-        List<Map<String, Object>> monitorList = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters);
-        String type = parameters.get("type").toString();
-        ArrayList<Map<String, Object>> resultList = new ArrayList<>();
-        String sensorKey1 = s;
-        switch (s) {
-            case "e1":
-                sensorKey1 = "PM2_5";
-                break;
-            case "e2":
-                sensorKey1 = "PM10";
-                break;
-            case "e10":
-                sensorKey1 = "CO";
-                break;
-            case "e11":
-                sensorKey1 = "SO2";
-                break;
-            case "e15":
-                sensorKey1 = "O3";
-                break;
-            case "e16":
-                sensorKey1 = "NO2";
-                break;
-            default:
-                break;
-        }
 
-        parameters.put("sensors1", sensorKey1);
-        List<Map<String, Object>> areaList = historyMinutelyService.getAreaAvgDataByAreaCode(parameters);
-        if (areaList.isEmpty()) {
-            Integer areaCode = Integer.valueOf(request.getParameter("areaCode"));
-            areaCode = hangzhouAqiService.queryCityCode(areaCode);
-            parameters.remove("areaCode");
-            parameters.put("areaCode", String.valueOf(areaCode));
-            areaList = historyMinutelyService.getAreaAvgDataByAreaCode(parameters);
-        }
+        ArrayList<Map<String, Object>> resultList = new ArrayList<>();
+
+        List<Map<String, Object>> monitorList = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters);
+        List<Map<String, Object>> areaList = hangzhouAqiService.getAreaAvgDataByAreaCode(parameters);
 
         if (areaList.isEmpty() && monitorList.isEmpty()) {
             return new ResultBean<List<Map<String, Object>>>(resultList);
@@ -911,7 +880,6 @@
             String time = map.get("time").toString();
             time = time.substring(time.length() - 2);
             map.put("time", Integer.valueOf(time));
-
         }
 
         for (Map<String, Object> m : monitorList) {
@@ -920,7 +888,7 @@
             m.put("time", Integer.valueOf(time));
         }
 
-        Integer maxTime = 0;
+        Integer maxTime;
         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);
@@ -951,59 +919,53 @@
             } else {
                 resultList.set(time - 1, map);
             }
-
         }
 
-        if (type.equals("day")) {
-            for (int i = 0; i < resultList.size(); i++) {
-                if (resultList.get(i) == null) {
-                    Map<String, Object> hashMap = new HashMap<>();
+        for (int i = 0; i <resultList.size() ; i++) {
+            if (resultList.get(i) == null) {
+                Map<String, Object> hashMap = new HashMap<>();
+                if(type.equals("day")){
                     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<>();
+                }else {
                     hashMap.put("time", i + 1);
-                    hashMap.put(s, "");
-                    resultList.set(i, hashMap);
                 }
+                hashMap.put(s, "");
+                resultList.set(i, hashMap);
             }
         }
 
-        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);
-                }
+        for (Map<String, Object> map1 : monitorList) {
+            ArrayList<String> values = new ArrayList<>();
+            Integer time = Integer.valueOf(map1.get("time").toString());
+            Map<String, Object> map;
+            if (type.equals("day")) {
+                map = resultList.get(time);
+            } else {
+                map = resultList.get(time - 1);
             }
+            values.add(map.remove(s).toString());
+            values.add(map1.get(s).toString());
+            map.put("values", values);
         }
 
         for (Map<String, Object> map : resultList) {
-            List<Object> values = new ArrayList<>();
             if (map.containsKey(s)) {
-                values.add(map.remove(s));
+                ArrayList<String> values = new ArrayList<>();
+                values.add(map.remove(s).toString());
                 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);
+                map.put("values",values);
             }
         }
 
-        return new ResultBean<List<Map<String, Object>>>(mapList);
+        Iterator<Map<String, Object>> it = resultList.iterator();
+        while(it.hasNext()){
+            Map<String, Object> next = it.next();
+            ArrayList<String> values = (ArrayList<String>)next.get("values");
+            if(values.get(0).equals("")&&values.get(1).equals("")){
+                it.remove();
+            }
+        }
+        return new ResultBean<List<Map<String, Object>>>(resultList);
     }
 
     @GetMapping("getmpoint-byid")
@@ -1562,6 +1524,54 @@
         }
     }
 
+    @GetMapping("/trajectoryDataShow")
+    @ApiOperation(value = "���������������", notes = "���������������")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "mac", value = "������mac������������p5dnd7a0392081���", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "startTime", value = "������������(���������2020-03-19-14)", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "endTime", value = "������������(���������2020-03-19-17)", required = true, paramType = "query", dataType = "String")
+    })
+    public ModelAndView trajectoryDataShow(ModelAndView model, HttpServletRequest request) throws Exception {
+        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+        String st = parameters.get("startTime").toString();
+        String startYearAndDay = st.substring(0, st.lastIndexOf("-"));
+        String startHour = st.substring(st.lastIndexOf("-") + 1);
+        String startTime = startYearAndDay + " " + startHour + ":00:00";
+        String et = parameters.get("endTime").toString();
+        String endHour = et.substring(et.lastIndexOf("-") + 1);
+        int endHourValue = Integer.valueOf(endHour);
+        int startHourValue = Integer.valueOf(startHour);
+        if (endHourValue <= startHourValue) {
+            endHourValue = startHourValue + 1;
+        }
+        String endTime = startYearAndDay + " " + endHourValue + ":00:00";
+        parameters.put("startTime", startTime);
+        parameters.put("endTime", endTime);
+        String mac = parameters.get("mac").toString();
+        if (mac != null && mac.length() != 0) {
+            List<List<Map<String, Object>>> sensorData = historyService.getCarSensorData(parameters);
+            Map<String, String> sensorsMap = sensorService.getSensorsMap(parameters);
+            List<Map<String, Object>> sensorList = new ArrayList<>();
+            if (sensorData.size() == 3) {
+                sensorList = sensorData.get(0);
+            }
+            JSONObject params = new JSONObject();
+            params.put("sensorInfo", sensorList);
+            params.put("sensorsMap", sensorsMap);
+            String paramsJson = params.toJSONString();
+            model.addObject("trajectoryParams", paramsJson);
+            model.setViewName("trajectorydatashow");
+            return model;
+        } else {
+            StringBuilder msg = new StringBuilder();
+            msg.append(" param[0] mac:");
+            msg.append(mac);
+            log.warn(msg);
+            model.setViewName("403");
+            return model;
+        }
+    }
+
     @GetMapping("device-excel")
     @ApiOperation(value = "������������������������", notes = "������������������������")
     @ApiImplicitParams(value = {

--
Gitblit v1.8.0