From bc6aaea416da40038dee2df1b3de4a1581da2a48 Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Wed, 29 Jul 2020 10:07:44 +0800
Subject: [PATCH] 臭氧预测update,根据城市名查询预测和实际数据

---
 src/main/java/com/moral/controller/ScreenController.java |  207 +++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 166 insertions(+), 41 deletions(-)

diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index 9a1c0ce..0f33018 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -73,15 +73,21 @@
 import com.moral.service.SensorUnitService;
 import com.moral.service.WeatherService;
 import com.moral.util.AQICalculation;
+import com.moral.util.MyLatLng;
 import com.moral.util.TempAllocationUtils;
+
+import com.moral.util.mapUtils;
 
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import net.sf.json.JSONString;
+
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.net.ftp.FTPClient;
+import org.apache.ibatis.annotations.Param;
 import org.apache.log4j.Logger;
 import org.dom4j.Document;
 import org.dom4j.Element;
@@ -628,12 +634,12 @@
     @ResponseBody
     @ApiOperation(value = "������������", notes = "������������")
     @ApiImplicitParams(value = {
-            @ApiImplicitParam(name = "orgId",defaultValue = "5", value = "������Id", required = true, paramType = "query", dataType = "Integer"),
-            @ApiImplicitParam(name = "regionCode",defaultValue = "320583", value = "������������", required = true, paramType = "query", dataType = "String"),
-            @ApiImplicitParam(name = "Fe", defaultValue = "31.485018",value = "���������������", required = true, paramType = "query", dataType = "String"),
-            @ApiImplicitParam(name = "Ge", defaultValue = "121.378395",value = "���������������", required = true, paramType = "query", dataType = "String"),
-            @ApiImplicitParam(name = "Ke", defaultValue = "31.296614",value = "���������������", required = true, paramType = "query", dataType = "String"),
-            @ApiImplicitParam(name = "Le", defaultValue = "120.59651",value = "���������������", required = true, paramType = "query", dataType = "String")
+            @ApiImplicitParam(name = "orgId", defaultValue = "5", value = "������Id", required = true, paramType = "query", dataType = "Integer"),
+            @ApiImplicitParam(name = "regionCode", defaultValue = "320583", value = "������������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "Fe", defaultValue = "31.485018", value = "���������������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "Ge", defaultValue = "121.378395", value = "���������������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "Ke", defaultValue = "31.296614", value = "���������������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "Le", defaultValue = "120.59651", value = "���������������", required = true, paramType = "query", dataType = "String")
     })
     public ResultBean getDevices(@RequestParam("orgId") Integer orgId, MapBounds mapBounds,
                                  @RequestParam("regionCode") String regionCode) {
@@ -719,6 +725,9 @@
             String time = map.get("time").toString();
             time = time.substring(time.length() - 2);
             map.put("time", Integer.valueOf(time));
+            if (parameters.get("type").equals("day")) {
+                map.put("time", Integer.valueOf(time) + 1);
+            }
             map.put("value", map.remove(sensorKey));
         }
         return new ResultBean<List<Map<String, Object>>>(list);
@@ -1198,9 +1207,7 @@
 	public ResultBean<Map<String, Object>> getSensor(HttpServletRequest request) throws Exception {
 		Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
 		String mac = (String) parameters.get("mac");
-		//System.out.println("ScreenController-----getSensor-----mac:"+mac);
 		Map<String, Object> map = sensorUnitService.getSensorByMac(mac);
-		System.out.println("ScreenController-----getSensor-----map:"+map);
 		return new ResultBean<Map<String, Object>>(map);
 	}*/
 
@@ -1268,7 +1275,6 @@
     })
     public ResultBean<List<Map<String, Object>>> AIForecast(HttpServletRequest request) throws Exception {
         Map<String, Object> parameters = getParametersStartingWith(request, null);
-        //System.out.println(parameters);
         String monitorPoint = (String) parameters.get("monitorPoint");
         String intoTime = parameters.get("time").toString();
         Date date = new SimpleDateFormat("yy-MM-dd").parse(intoTime);
@@ -1624,9 +1630,11 @@
 
     @RequestMapping(value = "/newMap-page", method = RequestMethod.GET)
     public ModelAndView newMap(ModelAndView model, @RequestParam("areaCode") long code,
-                            @RequestParam("accountId") int accountId) {
+                               @RequestParam("accountId") int accountId) {
         Account account = accountService.getAccountById(accountId);
+        List<MonitorPoint> monitorPointList = monitorPointService.getMonitorPointListByAccountId(accountId);
         String regionName = areaService.queryFullNameByCode(code);
+
         if (account != null && regionName != null) {
             Object sensors = sensorService.queryAll();
             JSONObject params = new JSONObject();
@@ -1682,12 +1690,12 @@
             JSONObject params = new JSONObject();
             params.put("sensorInfo", sensorData);
             params.put("sensorsMap", sensorsMap);
-            params.put("sensorKey",parameters.get("sensorKey"));
-            params.put("unit",parameters.get("unit"));
-            params.put("description",parameters.get("description"));
+            params.put("sensorKey", parameters.get("sensorKey"));
+            params.put("unit", parameters.get("unit"));
+            params.put("description", parameters.get("description"));
             String paramsJson = params.toJSONString();
             model.addObject("uavDroppointParams", paramsJson);
-            model.setViewName("uavdroppointnew");
+            model.setViewName("uavdroppoint");
             return model;
         } else {
             StringBuilder msg = new StringBuilder();
@@ -1730,9 +1738,9 @@
             JSONObject params = new JSONObject();
             params.put("sensorInfo", sensorData);
             params.put("sensorsMap", sensorsMap);
-            params.put("sensorKey",parameters.get("sensorKey"));
-            params.put("unit",parameters.get("unit"));
-            params.put("description",parameters.get("description"));
+            params.put("sensorKey", parameters.get("sensorKey"));
+            params.put("unit", parameters.get("unit"));
+            params.put("description", parameters.get("description"));
             String paramsJson = params.toJSONString();
             model.addObject("uavChannelParams", paramsJson);
             model.setViewName("uavchannelnew");
@@ -1778,9 +1786,9 @@
             JSONObject params = new JSONObject();
             params.put("sensorInfo", sensorData);
             params.put("sensorsMap", sensorsMap);
-            params.put("sensorKey",parameters.get("sensorKey"));
-            params.put("unit",parameters.get("unit"));
-            params.put("description",parameters.get("description"));
+            params.put("sensorKey", parameters.get("sensorKey"));
+            params.put("unit", parameters.get("unit"));
+            params.put("description", parameters.get("description"));
             String paramsJson = params.toJSONString();
             model.addObject("uavTracingParams", paramsJson);
             model.setViewName("uavtracing");
@@ -1801,16 +1809,16 @@
             @ApiImplicitParam(name = "monitorPointId", value = "������Id", required = true, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "sensorKey", value = "������", required = true, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "time", value = "������(���������2020-03-19-14)", required = true, paramType = "query", dataType = "String")})
-    public ModelAndView PurificationRate(HttpServletRequest request,ModelAndView model){
+    public ModelAndView PurificationRate(HttpServletRequest request, ModelAndView model) {
         Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
-        String monitPointIdS= (String) parameters.get("monitorPointId");
-        String sensor= (String) parameters.get("sensorKey");
-        String time= (String) parameters.get("time");
+        String monitPointIdS = (String) parameters.get("monitorPointId");
+        String sensor = (String) parameters.get("sensorKey");
+        String time = (String) parameters.get("time");
         String YearAndDay = time.substring(0, time.lastIndexOf("-"));
         String Hour = time.substring(time.lastIndexOf("-") + 1);
         String Time = YearAndDay + " " + Hour + ":00:00";
-        int monitPointId=Integer.parseInt(monitPointIdS);
-        JSONObject params=monitorPointService.getMonitorPointById(monitPointId,Time,1,sensor);
+        int monitPointId = Integer.parseInt(monitPointIdS);
+        JSONObject params = monitorPointService.getMonitorPointById(monitPointId, Time, 1, sensor);
         String paramsJson = params.toJSONString();
         model.addObject("mapParams", paramsJson);
         model.setViewName("purityMap");
@@ -1823,22 +1831,21 @@
     @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "monitorPointId", value = "������Id", required = true, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "time", value = "������(���������2020-03-19-14)", required = true, paramType = "query", dataType = "String")})
-    public ModelAndView collectionRate(HttpServletRequest request,ModelAndView model){
+    public ModelAndView collectionRate(HttpServletRequest request, ModelAndView model) {
         Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
-        String monitPointIdS= (String) parameters.get("monitorPointId");
-        String sensor= "";
-        String time= (String) parameters.get("time");
+        String monitPointIdS = (String) parameters.get("monitorPointId");
+        String sensor = "";
+        String time = (String) parameters.get("time");
         String YearAndDay = time.substring(0, time.lastIndexOf("-"));
         String Hour = time.substring(time.lastIndexOf("-") + 1);
         String Time = YearAndDay + " " + Hour + ":00:00";
-        int monitPointId=Integer.parseInt(monitPointIdS);
+        int monitPointId = Integer.parseInt(monitPointIdS);
         //������������������
-        JSONObject params=monitorPointService.getMonitorPointById(monitPointId,Time,2,sensor);
-        model.addObject("params",params);
+        JSONObject params = monitorPointService.getMonitorPointById(monitPointId, Time, 2, sensor);
+        model.addObject("params", params);
         model.setViewName("pressureMap");
         return model;
     }
-
 
 
     @GetMapping("/unorganizedEmissions")
@@ -1848,20 +1855,138 @@
             @ApiImplicitParam(name = "sensorKey", value = "������", required = true, paramType = "query", dataType = "String"),
             // @ApiImplicitParam(name = "sensorKey", value = "���������key,���������������������������", required = true, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "time", value = "������(���������2020-03-19-14)", required = true, paramType = "query", dataType = "String")})
-    public ModelAndView unorganizedEmissions(HttpServletRequest request,ModelAndView model){
+    public ModelAndView unorganizedEmissions(HttpServletRequest request, ModelAndView model) {
         Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
-        String monitPointIdS= (String) parameters.get("monitorPointId");
-        String sensor= (String) parameters.get("sensorKey");
-        String time= (String) parameters.get("time");
+        String monitPointIdS = (String) parameters.get("monitorPointId");
+        String sensor = (String) parameters.get("sensorKey");
+        String time = (String) parameters.get("time");
         String YearAndDay = time.substring(0, time.lastIndexOf("-"));
         String Hour = time.substring(time.lastIndexOf("-") + 1);
         String Time = YearAndDay + " " + Hour + ":00:00";
-        int monitPointId=Integer.parseInt(monitPointIdS);
+        int monitPointId = Integer.parseInt(monitPointIdS);
         //������������������
-        JSONObject params=monitorPointService.getMonitorPointById(monitPointId,Time,3,sensor);
-        model.addObject("params",params);
+        JSONObject params = monitorPointService.getMonitorPointById(monitPointId, Time, 3, sensor);
+        model.addObject("params", params);
         model.setViewName("unorganizedMap");
         return model;
     }
 
+
+    @GetMapping("/unorganizedEmissionsRealTime")
+    @ApiOperation(value = "���������������������", notes = "���������������������")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "monitorPointId", value = "������Id", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "sensorKey", value = "������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "accountId", value = "������id", required = false, paramType = "query", dataType = "String")})
+    public ModelAndView unorganizedEmissionsBackups(HttpServletRequest request, ModelAndView model) {
+        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+        String monitPointIdS = (String) parameters.get("monitorPointId");
+        String sensor = (String) parameters.get("sensorKey");
+        String accountId = (String) parameters.get("accountId");
+        Account account = accountService.getAccountById(Integer.parseInt(accountId));
+        int monitPointId = Integer.parseInt(monitPointIdS);
+        JSONObject params = monitorPointService.getMacList(monitPointId);
+        params.put("accountId", accountId);
+        params.put("orgId", account.getOrganizationId());
+        params.put("sensor", sensor);
+        //������������������
+        //JSONObject params=monitorPointService.getMonitorPointById(monitPointId,Time,3,sensor);
+        // model.addObject("params",params);
+        model.addObject("params", params);
+        model.setViewName("newUnorganizedMap");
+        return model;
+    }
+
+    @GetMapping("/chooseDevice")
+    @ResponseBody
+    public Object unorganizedEmissionsBackups(String wind, String monitPointId) {
+        JSONObject params = new JSONObject();
+        Double windDir = Double.parseDouble(wind);
+        List<Device> deviceList = deviceService.getDeviceById2(Integer.parseInt(monitPointId));
+        Map<String, Object> longAndLatiMap;
+        List<Map> longAndLatiList = new ArrayList<>();//������������������������������������windList������������������������������������������������������������������
+        List<Device> preAngleDeviceList = new ArrayList<Device>(); //���������������������������������������
+        for (int f = 0; f < deviceList.size(); f++) {
+            for (int h = 0; h < deviceList.size(); h++) {
+                if (f != h) {
+                    longAndLatiMap = new HashMap<String, Object>();
+                    longAndLatiMap.put("h", h);
+                    longAndLatiMap.put("f", f);
+                    Double angle = mapUtils.getAngle(
+                            new MyLatLng((Double) deviceList.get(h).getLongitude(),
+                                    (Double) deviceList.get(h).getLatitude()),
+                            new MyLatLng((Double) deviceList.get(f).getLongitude(),
+                                    (Double) deviceList.get(f).getLatitude()));
+                    Double angleDiff = Math.abs(angle - windDir);
+                    longAndLatiMap.put("angle", angleDiff);
+                    longAndLatiList.add(longAndLatiMap);
+                }
+            }
+        }
+        Double minAngle = (Double) longAndLatiList.get(0).get("angle");
+        int indexAngle = 0;
+        for (int j = 1; j < longAndLatiList.size(); j++) {
+            if (minAngle > (Double) longAndLatiList.get(j).get("angle")) {
+                minAngle = (Double) longAndLatiList.get(j).get("angle");
+                indexAngle = j;
+            } else {
+                indexAngle = indexAngle;
+            }
+        }
+        preAngleDeviceList.add(deviceList.get((Integer) longAndLatiList.get(indexAngle).get("h")));
+        preAngleDeviceList.add(deviceList.get((Integer) longAndLatiList.get(indexAngle).get("f")));
+        Double length = mapUtils.getDistance((Double) preAngleDeviceList.get(0).getLongitude(), (Double) preAngleDeviceList.get(0).getLatitude(),
+                (Double) preAngleDeviceList.get(1).getLongitude(), (Double) preAngleDeviceList.get(1).getLatitude());
+        Double subLength = length / 5;
+        Double subLength1 = length / 6.1;
+        Double angle = mapUtils.getAngle(
+                new MyLatLng((Double) preAngleDeviceList.get(0).getLongitude(),
+                        (Double) preAngleDeviceList.get(0).getLatitude()),
+                new MyLatLng((Double) preAngleDeviceList.get(1).getLongitude(),
+                        (Double) preAngleDeviceList.get(1).getLatitude()));
+        List locationList = new ArrayList();
+        String[] firstLocation = mapUtils.calLocationByDistanceAndLocationAndDirection(angle, (Double) preAngleDeviceList.get(0).getLongitude(),
+                (Double) preAngleDeviceList.get(0).getLatitude(), subLength);
+        String[] secondLoction = mapUtils.calLocationByDistanceAndLocationAndDirection(angle, Double.parseDouble(firstLocation[0]),
+                Double.parseDouble(firstLocation[1]), subLength);
+        String[] thirdLocation = mapUtils.calLocationByDistanceAndLocationAndDirection(angle, Double.parseDouble(secondLoction[0]),
+                Double.parseDouble(secondLoction[1]), subLength);
+        String[] fourthLoction = mapUtils.calLocationByDistanceAndLocationAndDirection(angle, Double.parseDouble(thirdLocation[0]),
+                Double.parseDouble(thirdLocation[1]), subLength);
+        String[] fivethLoction = mapUtils.calLocationByDistanceAndLocationAndDirection(angle, Double.parseDouble(fourthLoction[0]),
+                Double.parseDouble(fourthLoction[1]), subLength1);
+        locationList.add(firstLocation);
+        locationList.add(secondLoction);
+        locationList.add(thirdLocation);
+        locationList.add(fourthLoction);
+        locationList.add(fivethLoction);
+        String preAngleDeviceString = JSON.toJSON(preAngleDeviceList).toString();
+        params.put("preAngleDeviceString", preAngleDeviceString);//���������������������������
+        params.put("locationList", locationList);
+        return params;
+    }
+
+    @GetMapping("forecastO3")
+    @ApiOperation(value = "���������������������������", notes = "���������������������������")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "monitorPointId", defaultValue = "1", value = "���������id", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "time", value = "������(���������2020-03-19)", required = true, paramType = "query", dataType = "String")})
+    public ResultBean<List<Map<String, Object>>> getWeatherNextDayDataByRegion(HttpServletRequest request) throws Exception {
+        Map<String, Object> parameters = getParametersStartingWith(request, null);
+        parameters.put("typeFormat", "%Y-%m-%d %H:%i:%s");
+        List<Map<String, Object>> resultList = weatherService.getForecastAndReal(parameters);
+        return new ResultBean<List<Map<String, Object>>>(resultList);
+    }
+
+    @GetMapping("weatherData")
+    @ApiOperation(value = "������city���������������������������", notes = "������city���������������������������")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "city", value = "���������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "time", value = "������(���������2020-03-19)", required = true, paramType = "query", dataType = "String")})
+    public ResultBean<List<Map<String, Object>>> getWeatherData(HttpServletRequest request) throws Exception {
+        Map<String, Object> parameters = getParametersStartingWith(request, null);
+        parameters.put("typeFormat", "%Y-%m-%d %H:%i:%s");
+        List<Map<String, Object>> weatherList = weatherService.getWeatherData(parameters);
+        return new ResultBean<List<Map<String, Object>>>(weatherList);
+    }
 }

--
Gitblit v1.8.0