From 321a114af75d62f66bd5d46f01a44c955cbde286 Mon Sep 17 00:00:00 2001
From: ZhuDongming <zdm773644075@hotmail.com>
Date: Mon, 02 Sep 2019 23:43:47 +0800
Subject: [PATCH] 更新污染传播接口

---
 src/main/java/com/moral/controller/ScreenController.java |  186 +++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 173 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index 43d6ef5..68612a4 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -1,13 +1,12 @@
 package com.moral.controller;
 
-import static com.moral.common.util.ResourceUtil.getValue;
-import static com.moral.common.util.WebUtils.getParametersStartingWith;
-
 import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.text.DecimalFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -17,9 +16,6 @@
 import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
 
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.net.ftp.FTPClient;
@@ -65,6 +61,7 @@
 import com.moral.entity.MapBounds;
 import com.moral.entity.MonitorPoint;
 import com.moral.entity.Organization;
+import com.moral.entity.Point;
 import com.moral.entity.Region;
 import com.moral.entity.alarm.AlarmConfig;
 import com.moral.entity.alarm.AlarmConfigValue;
@@ -80,6 +77,7 @@
 import com.moral.service.DictionaryDataService;
 import com.moral.service.HangzhouAqiService;
 import com.moral.service.HistoryDailyService;
+import com.moral.service.HistoryHourlyService;
 import com.moral.service.HistoryMinutelyService;
 import com.moral.service.HistoryService;
 import com.moral.service.MachineActivateService;
@@ -90,12 +88,17 @@
 import com.moral.service.SensorService;
 import com.moral.service.SensorUnitService;
 import com.moral.service.WeatherService;
+import com.moral.util.AQICalculation;
 import com.moral.util.TempAllocationUtils;
-
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+import static com.moral.common.util.ResourceUtil.getValue;
+import static com.moral.common.util.WebUtils.getParametersStartingWith;
 
 /**
  * The Class ScreenController.������������
@@ -138,6 +141,9 @@
      */
     @Resource
     private DeviceService deviceService;
+
+    @Resource
+    private HistoryHourlyService historyHourlyService;
 
     @Resource
     private HistoryMinutelyService historyMinutelyService;
@@ -361,6 +367,16 @@
     public Map<String, Object> getDayAQIByDevice(HttpServletRequest request) {
         Map<String, Object> parameters = getParametersStartingWith(request, null);
         return historyMinutelyService.getDayAQIByDevice(parameters);
+    }
+    
+    @GetMapping("hour-aqi")
+    @ApiOperation(value = "���������������AQI", notes = "���������������AQI")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "mac", value = "������mac������", required = true, paramType = "query", dataType = "String")
+    })
+    public Map<String, Object> getHourAQIByDevice(HttpServletRequest request) {
+    	Map<String, Object> parameters = getParametersStartingWith(request, null);
+    	return historyService.gitHourlyAQIByMacAndTimeslot(parameters);
     }
 
     /**
@@ -851,7 +867,9 @@
             @ApiImplicitParam(name = "organizationId", defaultValue = "5", value = "���������������������id", required = true, paramType = "query", dataType = "Integer"),
             @ApiImplicitParam(name = "time", defaultValue = "2019", value = "���������������", required = true, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "sensorKey", defaultValue = "e27", value = "������������������������key", required = true, paramType = "query", dataType = "String"),
-            @ApiImplicitParam(name = "regionCode", defaultValue = "130000", value = "���������", required = true, paramType = "query", dataType = "String")})
+            @ApiImplicitParam(name = "regionCode", defaultValue = "130000", value = "���������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "monitorPointId", value = "���������id", required = false, paramType = "query", dataType = "int"),
+            @ApiImplicitParam(name = "mac", value = "������mac", required = false, paramType = "query", dataType = "String")})
     public ResultBean<List<Map<String, Object>>> getemissionsData(HttpServletRequest request) throws Exception {
         Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
         List<Map<String, Object>> result = historyDailyService.getEmissionsData(parameters);
@@ -973,6 +991,50 @@
         List<Map<String, Object>> map = sensorUnitService.getSensorsByMonitPointId2(monitor_point_id);
         return new ResultBean<List<Map<String, Object>>>(map);
     }
+    
+    @GetMapping("getSensorByDeviceId")
+	@ApiOperation(value = "������������������������", notes = "������������������������")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "id", value = "������id", required = true, paramType = "query", dataType = "String")
+	})
+	public ResultBean<List<Map<String, Object>>> getSensorByDeviceId(HttpServletRequest request) throws Exception {
+		Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+		String id = (String) parameters.get("id");
+		List<Map<String, Object>> list = sensorService.getSensorByDeviceId(id);
+		Map<String,Object> map = list.get(0);
+		String monitor_point_id = map.get("monitor_point_id").toString();
+		List<Map<String, Object>> sensorUnitList = sensorUnitService.getSensorsByMonitPointId2(monitor_point_id);
+		System.out.println(sensorUnitList);
+		for (Map<String, Object> sensorMap : list) {
+			for (Map<String, Object> sensorUnitMap : sensorUnitList) {
+				if (sensorUnitMap.get("sensor_key").equals(sensorMap.get("sensor_key"))) {
+					sensorMap.put("unit", sensorUnitMap.get("name"));
+				}
+			}
+		}
+		return new ResultBean<List<Map<String, Object>>>(list);
+	}
+	
+	@GetMapping("getSensorWithUnitByMonitorPointId")
+	@ApiOperation(value = "������������������������", notes = "������������������������")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "monitor_point_id", value = "������id", required = true, paramType = "query", dataType = "String")
+	})
+	public ResultBean<List<Map<String, Object>>> getSensorWithUnitByMonitorPointId(HttpServletRequest request) throws Exception {
+		Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+		String monitor_point_id = (String) parameters.get("monitor_point_id");
+		List<Map<String, Object>> list = sensorService.getSensorByMonitorPointId(monitor_point_id);
+		List<Map<String, Object>> sensorUnitList = sensorUnitService.getSensorsByMonitPointId2(monitor_point_id);
+		System.out.println(sensorUnitList);
+		for (Map<String, Object> sensorMap : list) {
+			for (Map<String, Object> sensorUnitMap : sensorUnitList) {
+				if (sensorUnitMap.get("sensor_key").equals(sensorMap.get("sensor_key"))) {
+					sensorMap.put("unit", sensorUnitMap.get("name"));
+				}
+			}
+		}
+		return new ResultBean<List<Map<String, Object>>>(list);
+	}
 
     @GetMapping("AIForecast")
     @ApiOperation(value = "AI������", notes = "AI������")
@@ -1110,21 +1172,43 @@
     @ApiOperation(value = "���������������������������", notes = "���������������������������")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "mac", value = "������mac������������p5dnd7a0392068���", required = true, paramType = "query", dataType = "String"),
-            @ApiImplicitParam(name = "startTime", value = "������������(���������2019-07-17 17:07:00)", required = false, paramType = "query", dataType = "String"),
-            @ApiImplicitParam(name = "endTime", value = "������������(���������2019-07-17 17:07:00)", required = false, paramType = "query", dataType = "String")
+            @ApiImplicitParam(name = "startTime", value = "������������(���������2019-07-17-17)", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "endTime", value = "������������(���������2019-07-17-18)", required = true, paramType = "query", dataType = "String")
     })
     public ModelAndView uavTrajectory(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 endYearAndDay = et.substring(0, et.lastIndexOf("-"));
+        String endHour = et.substring(et.lastIndexOf("-") + 1);
+        String endTime = endYearAndDay + " " + endHour + ":00:00";
+        parameters.put("startTime", startTime);
+        parameters.put("endTime", endTime);
         String mac = parameters.get("mac").toString();
         if (mac != null && mac.length() != 0) {
-            List<Map<String, Object>> sensorList = historyMinutelyService.getSensorData(parameters);
+            List<List<Map<String, Object>>> sensorData = historyMinutelyService.getSensorData(parameters);
+            Map<String, String> sensorsMap = sensorService.getSensorsMap(parameters);
+            List<Map<String, Object>> sensorList = new ArrayList<>();
+            List<Map<String, Object>> sensorListMin = new ArrayList<>();
+            List<Map<String, Object>> sensorListMax = new ArrayList<>();
+            if (sensorData.size() == 3) {
+                sensorList = sensorData.get(0);
+                sensorListMin = sensorData.get(1);
+                sensorListMax = sensorData.get(2);
+            }
             JSONObject params = new JSONObject();
             params.put("sensorInfo", sensorList);
+            params.put("sensorInfoMin", sensorListMin);
+            params.put("sensorInfoMax", sensorListMax);
+            params.put("sensorsMap",sensorsMap);
             String paramsJson = params.toJSONString();
             model.addObject("uavTrajectoryParams", paramsJson);
-            model.setViewName("uavTrajectory");
+            model.setViewName("uavtrajectory");
             return model;
-        }else {
+        } else {
             StringBuilder msg = new StringBuilder();
             msg.append(" param[0] mac:");
             msg.append(mac);
@@ -1134,4 +1218,80 @@
         }
     }
 
+    @GetMapping("/pollutionSource")
+    @ApiOperation(value = "������������������", notes = "������������������")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "mac", value = "������mac������(������898607b0101730392251)", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "sensorKey", value = "������������������������key(���������e1)", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "time", value = "������������(���������2019-09-01-10)", required = true, paramType = "query", dataType = "String")})
+    public ModelAndView pollutionSource(ModelAndView model, HttpServletRequest request) throws Exception {
+        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+        String timeStr = parameters.get("time").toString();
+        String YearAndDay = timeStr.substring(0, timeStr.lastIndexOf("-"));
+        String Hour = timeStr.substring(timeStr.lastIndexOf("-") + 1);
+        String time = YearAndDay + " " + Hour + ":00:00";
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        LocalDateTime timeLocalDateTime = LocalDateTime.parse(time, dateTimeFormatter);
+        System.out.println(timeLocalDateTime);
+        int month = timeLocalDateTime.getMonth().getValue();
+        Point dirPoint = historyHourlyService.getDirPoint(parameters);
+        Map<String, Object> getPollutionSourceData = historyHourlyService.getPollutionSourceData(parameters);
+        System.out.println(dirPoint.toString());
+        System.out.println("getPollutionSourceData:" + getPollutionSourceData);
+        String mac = parameters.get("mac").toString();
+        Device device = deviceService.getDeviceByMac(mac, false);
+        JSONObject params = new JSONObject();
+        params.put("device", device);
+        params.put("month", month);
+        params.put("dirPoint", dirPoint);
+        params.put("getPollutionSourceData", getPollutionSourceData);
+        String paramsJson = params.toJSONString();
+        model.addObject("pollutionSourceParams", paramsJson);
+        model.setViewName("pollutionsource");
+        return model;
+    }
+    
+    @GetMapping("getAirQualityComparison")
+    @ApiOperation(value = "������������������", notes = "������������������")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "organizationId", defaultValue = "5", value = "���������������������id", required = true, paramType = "query", dataType = "String"),
+    		@ApiImplicitParam(name = "monitor_point_id", defaultValue = "5", value = "������������id", required = true, paramType = "query", dataType = "String")})
+    public ResultBean<Map<String, Object>> getAirQualityComparison(HttpServletRequest request) throws Exception {
+        Map<String, Object> parameters = getParametersStartingWith(request, null);
+        Map<String, Object> map = weatherService.getWeatherDataByRegion(parameters);
+        Map<String, Double> sensorMap = new HashMap<>();
+        sensorMap.put("e1", Double.parseDouble(map.get("pm25").toString()));
+        sensorMap.put("e2", Double.parseDouble(map.get("pm10").toString()));
+        sensorMap.put("e11", Double.parseDouble(map.get("so2").toString()));
+        sensorMap.put("e16", Double.parseDouble(map.get("no2").toString()));
+        sensorMap.put("e10", Double.parseDouble(map.get("co").toString()));
+        sensorMap.put("e15", Double.parseDouble(map.get("o3").toString()));
+        Map<String, Object> StateControl = AQICalculation.hourlyAQI(sensorMap);
+        System.out.println("StateControl:"+StateControl);
+        Map<String, Object> hourAqi = historyService.gitHourlyAQIByMonitorPointIdAndTimeslot(parameters);
+        System.out.println("hourAqi:"+hourAqi);
+        Map<String, Object> returnMap = new HashMap<>();
+        returnMap.put("������AQI", hourAqi.get("AQI"));
+        returnMap.put("������AQI", StateControl.get("AQI"));
+        return new ResultBean<Map<String, Object>>(returnMap);
+    }
+    
+
+	@GetMapping("mointorPointRank")
+	@ApiOperation(value = "������������������", notes = "������������������")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "accountId", value = "������id", required = true, paramType = "query", dataType = "String"),
+			@ApiImplicitParam(name = "sensor", value = "������", required = true, paramType = "query", dataType = "String")
+	})
+	public ResultBean<List<Map<String, Object>>> getMointorPointRank(HttpServletRequest request){
+		Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+		String id = parameters.get("accountId").toString();
+		String sensor = parameters.get("sensor").toString();
+		Map<String, Object> account = accountService.getOrganizationIdByAccountId(id);
+		//������������id������������������������������
+		account.put("sensor", sensor);
+		List<Map<String, Object>> returnList = historyService.getMointorPointRankByOrganizationId(account);
+		return new ResultBean<List<Map<String, Object>>>(returnList);
+	}
+    
 }

--
Gitblit v1.8.0