jinpengyong
2020-07-31 af2ff6353abb09500ff08293490446a4d40d8e87
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,12 +1738,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("uavChannelParams", paramsJson);
            model.setViewName("uavchannel");
            model.setViewName("uavchannelnew");
            return model;
        } else {
            StringBuilder msg = new StringBuilder();
@@ -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,22 +1855,143 @@
            @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);
    }
    @RequestMapping("updateForecastWeather")
    public void updateForecastWeather(@RequestBody List<Map<String,Object>> list) {
        weatherService.updateForecastWeather(list);
    }
}