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 | 335 +++++++++++++++++++++++++++++++++----------------------
1 files changed, 201 insertions(+), 134 deletions(-)
diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index 3920b26..269c6a1 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -463,7 +463,7 @@
@GetMapping("month-sensor-average")
public Map<String, Object> getMonthAverageBySensor(HttpServletRequest request) {
Map<String, Object> parameters = getParametersStartingWith(request, null);
- return historyMinutelyService.getMonthAverageBySensor(parameters);
+ return historyMinutelyService.getAverageBySensor(parameters);
}
@GetMapping("check-activate")
@@ -823,139 +823,150 @@
return new ResultBean<List<Map<String, Object>>>(list);
}
- @GetMapping("report_avg_AreaData")
- @ApiOperation(value = "������������������������������������������", notes = "������������������������������������������")
- @ApiImplicitParams(value = {
- @ApiImplicitParam(name = "monitorPoint", value = "���������id", required = true, paramType = "query", dataType = "String"),
- @ApiImplicitParam(name = "mac", value = "������mac", required = false, paramType = "query", dataType = "String"),
- @ApiImplicitParam(name = "areaCode", value = "������������", required = true, paramType = "query", dataType = "String"),
- @ApiImplicitParam(name = "sensorKey", value = "���������key", required = true, paramType = "query", dataType = "String"),
- @ApiImplicitParam(name = "time", value = "������,������(���������2018-03)", required = true, paramType = "query", dataType = "String"),})
- public ResultBean<List<Map<String, Object>>> getAreaAvgDataByAreaCode(HttpServletRequest request)
- throws Exception {
- Map<String, Object> parameters = getParametersStartingWith(request, null);
- ParameterUtils.getTimeType4Time(parameters);
- parameters.put("monitorPointId", parameters.remove("monitorPoint"));
- parameters.put("areaCode", parameters.remove("areaCode"));
- String[] sensorKeys = parameters.remove("sensorKey").toString().split(",");
- String s=sensorKeys[0];
- 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 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;
- }
+ @GetMapping("report_avg_AreaData")
+ @ApiOperation(value = "������������������������������������������", notes = "������������������������������������������")
+ @ApiImplicitParams(value = {
+ @ApiImplicitParam(name = "monitorPoint", value = "���������id", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "mac", value = "������mac", required = false, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "areaCode", value = "������������", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "sensorKey", value = "���������key", required = true, paramType = "query", dataType = "String"),
+ @ApiImplicitParam(name = "time", value = "������,������(���������2018-03)", required = true, paramType = "query", dataType = "String"),})
+ public ResultBean<List<Map<String, Object>>> getAreaAvgDataByAreaCode(HttpServletRequest request)
+ throws Exception {
+ Map<String, Object> parameters = getParametersStartingWith(request, null);
+ ParameterUtils.getTimeType4Time(parameters);
+ 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);
- parameters.put("sensors1", sensorKey1);
+ ArrayList<Map<String, Object>> resultList = new ArrayList<>();
- 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);
- }
+ List<Map<String, Object>> monitorList = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters);
+ List<Map<String, Object>> areaList = hangzhouAqiService.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));
- }
-
- Integer max = 0;
- if (areaList.size() != 0) {
- Map<String, Object> areaMap = areaList.get(areaList.size() - 1);
- max = Integer.valueOf(areaMap.get("time").toString());
- } else {
- max = 0;
- }
-
- if (max1 >= max) {
- maxTime = max1;
- } else {
- maxTime = max;
- }
-
- ArrayList<Map<String, Object>> resultList = new ArrayList<>();
-
- 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> 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.remove(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 (areaList.isEmpty() && monitorList.isEmpty()) {
+ return new ResultBean<List<Map<String, Object>>>(resultList);
+ } else if (areaList.isEmpty()) {
+ resultList.addAll(monitorList);
+ 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));
+ }
+
+ 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;
+ 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 {
+ if (areaMax >= monitorMax) {
+ maxTime = areaMax;
+ } else {
+ maxTime = monitorMax;
+ }
+ }
+
+ for (int i = 0; i < maxTime; i++) {
+ resultList.add(null);
+ }
+
+ 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 (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);
+ }else {
+ hashMap.put("time", i + 1);
+ }
+ hashMap.put(s, "");
+ resultList.set(i, hashMap);
+ }
+ }
+
+ 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) {
+ if (map.containsKey(s)) {
+ ArrayList<String> values = new ArrayList<>();
+ values.add(map.remove(s).toString());
+ values.add("");
+ map.put("values",values);
+ }
+ }
+
+ 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);
}
-
- 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);
- }
- }
-
- return new ResultBean<List<Map<String, Object>>>(resultList);
-
- }
@GetMapping("getmpoint-byid")
@ApiOperation(value = "���������������������", notes = "���������������������,���������������������������������������������")
@@ -1342,7 +1353,12 @@
String et = parameters.get("endTime").toString();
String endYearAndDay = et.substring(0, et.lastIndexOf("-"));
String endHour = et.substring(et.lastIndexOf("-") + 1);
- String endTime = endYearAndDay + " " + endHour + ":00:00";
+ 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();
@@ -1463,7 +1479,7 @@
@GetMapping("/carTrajectory")
@ApiOperation(value = "���������������������", notes = "���������������������")
@ApiImplicitParams(value = {
- @ApiImplicitParam(name = "mac", value = "������mac������������p5dnd7a0392082���", required = true, paramType = "query", dataType = "String"),
+ @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")
})
@@ -1474,9 +1490,13 @@
String startHour = st.substring(st.lastIndexOf("-") + 1);
String startTime = startYearAndDay + " " + startHour + ":00:00";
String et = parameters.get("endTime").toString();
- String endYearAndDay = et.substring(0, et.lastIndexOf("-"));
String endHour = et.substring(et.lastIndexOf("-") + 1);
- String endTime = endYearAndDay + " " + endHour + ":00:00";
+ 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();
@@ -1493,6 +1513,54 @@
String paramsJson = params.toJSONString();
model.addObject("carTrajectoryParams", paramsJson);
model.setViewName("cartrajectory");
+ return model;
+ } else {
+ StringBuilder msg = new StringBuilder();
+ msg.append(" param[0] mac:");
+ msg.append(mac);
+ log.warn(msg);
+ model.setViewName("403");
+ return model;
+ }
+ }
+
+ @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();
@@ -1530,5 +1598,4 @@
}
return new ResultBean<List<Map<String, Object>>>(list);
}
-
}
--
Gitblit v1.8.0