于紫祥_1901
2020-07-13 9e4480300d1285a574d52451206c5adc81396be4
src/main/java/com/moral/controller/ScreenController.java
@@ -73,15 +73,19 @@
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;
@@ -1201,9 +1205,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);
   }*/
@@ -1271,7 +1273,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);
@@ -1629,7 +1630,9 @@
    public ModelAndView newMap(ModelAndView model, @RequestParam("areaCode") long code,
                            @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();
@@ -1843,7 +1846,6 @@
    }
    @GetMapping("/unorganizedEmissions")
    @ApiOperation(value = "无组织排放", notes = "无组织排放")
    @ApiImplicitParams(value = {
@@ -1867,4 +1869,99 @@
        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;
    }
}