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