于紫祥_1901
2020-08-12 19b06c5deda2a18d0c77b71ac5189d34c532b25e
src/main/java/com/moral/controller/ScreenController.java
@@ -1,9 +1,7 @@
package com.moral.controller;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.*;
import java.lang.reflect.Array;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
@@ -17,6 +15,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.googlecode.aviator.AviatorEvaluator;
import com.googlecode.aviator.Expression;
@@ -29,15 +28,7 @@
import com.moral.common.util.ValidateUtil;
import com.moral.common.util.WebUtils;
import com.moral.common.xml.Version;
import com.moral.entity.Account;
import com.moral.entity.AreaNames;
import com.moral.entity.Device;
import com.moral.entity.DeviceVersion;
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.*;
import com.moral.entity.alarm.AlarmConfig;
import com.moral.entity.alarm.AlarmConfigValue;
import com.moral.entity.alarm.AlarmSensorLevel;
@@ -63,18 +54,16 @@
import com.moral.service.SensorService;
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.*;
import com.moral.util.mapUtils;
import com.rabbitmq.client.*;
import com.rabbitmq.client.Channel;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import jdk.nashorn.internal.runtime.regexp.joni.Regex;
import net.sf.json.JSONString;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.net.ftp.FTPClient;
@@ -716,8 +705,8 @@
            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);
            if(parameters.get("type").equals("day")){
                map.put("time", Integer.valueOf(time)+1);
            }
            map.put("value", map.remove(sensorKey));
        }
@@ -1920,8 +1909,8 @@
            if (minAngle > (Double) longAndLatiList.get(j).get("angle")) {
                minAngle = (Double) longAndLatiList.get(j).get("angle");
                indexAngle = j;
            } else {
                indexAngle = indexAngle;
            }else {
                indexAngle=indexAngle;
            }
        }
        preAngleDeviceList.add(deviceList.get((Integer) longAndLatiList.get(indexAngle).get("h")));
@@ -1957,6 +1946,71 @@
        return params;
    }
    @GetMapping("/allDevice")
    @ResponseBody
    public Map<String,List> getAllDevice() {
        List<String> macList=deviceService.getAllMac();
        Map<String,List> latlngMap=new HashMap<String,List>();
        Map devMap=null;
        List list=new ArrayList();
        for (String mac : macList) {
            devMap=new HashMap();
            if (mac!=null){
                Device device=deviceService.byMacGetDevice(mac);
                List list1= LatLngTransformation.Convert_BD09_To_GCJ02(device.getLatitude(),device.getLongitude());
                devMap.put("lat",list1.get(1));
                devMap.put("lng",list1.get(0));
                devMap.put("monitorPointId",device.getMonitorPointId());
                //System.out.println(device);
                list.add(devMap);
            }else {
                continue;
            }
        }
        latlngMap.put("latlng",list);
        return latlngMap;
    }
    @GetMapping("/windAndDeviceData")
    @ResponseBody
    public List windAndDeviceData(HttpServletRequest request, String monitorPointId) {
        Calendar c = Calendar.getInstance();//可以对每个时间域单独修改   对时间进行加减操作等
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        String mon="";
        if (month+1<10){
            mon="0"+(month+1);
        }else {
            mon=(month+1)+"";
        }
        int date = c.get(Calendar.DATE);
        String dt="";
        if(date<10){
            dt="0"+date;
        }else {
            dt=""+date;
        }
        int hour = c.get(Calendar.HOUR_OF_DAY);
        String hu="";
        if (hour<10){
            hu="0"+hour;
        }else {
            hu=""+hour;
        }
        int minute = c.get(Calendar.MINUTE);
        String mu="";
        if (minute<10){
            mu="0"+minute;
        }else {
            mu=""+minute;
        }
        String time=year + "-" + mon + "-" + dt + " " +hu + ":" +mu + ":" + "00";
        String table="history_minutely_"+year+mon;
        List list=deviceService.byMonitorIdGetDeviceAndWind(monitorPointId,time,table);
        return list;
    }
    @GetMapping("forecastO3")
    @ApiOperation(value = "预测和实际臭氧对比", notes = "预测和实际臭氧对比")
    @ApiImplicitParams(value = {
@@ -1964,7 +2018,6 @@
            @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);
    }
@@ -1976,7 +2029,6 @@
            @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);
    }
@@ -2004,7 +2056,12 @@
        List<Map<String, Object>> list = new ArrayList();
        Map device = deviceService.getAllFieldByMac(parameters);
        Map monitorPointMap = monitorPointService.selectAllById(device.get("monitor_point_id").toString());
        Map<String, String> sensotMap = sensorService.getSensorsMap(parameters);
        List<Map<String, Object>> device_sensorList = sensorService.getSensorByDeviceId(device.get("id").toString());
        Map<String, Object> device_sensorUnit_map = new HashMap<>();
        for (Map<String, Object> device_sensorMap : device_sensorList) {
            device_sensorUnit_map.put(device_sensorMap.get("sensor_key").toString(),device_sensorMap.get("unit"));
        }
        Map<String, String> sensorMap = sensorService.getSensorsMap(parameters);
        if (startTime.length()==10&&endTime.length()==10){
            //获取当日时间
            Date dd = new Date();
@@ -2013,7 +2070,9 @@
            //获取系统当前时间
            String nowTime = sim.format(dd);
            int days = endTime.compareTo(nowTime);
            System.out.println(days);
            //System.out.println(days);
            List<String> dayList = DatesUtil.findDaysStr(startTime,endTime);
            //System.out.println("dayList:"+dayList);
            /*if (days<0){
                Date date=null;
                try {
@@ -2035,16 +2094,30 @@
                sameDayHourlyList = historyHourlyService.getDataByTimeSlot(mac,nowTime,currentTime);
            }
            List<Map<String, Object>> dataList = historyDailyService.getDataByTimeSlot(mac,startTime,endTime);
            Set<String> keys = sensotMap.keySet();
            if (dataList.isEmpty()){
                return null;
            }
            Set<String> keys = sensorMap.keySet();
            for (String key:keys) {
                Map<String,Object> oneSensorMap = new LinkedHashMap<>();
                oneSensorMap.put("monitorPointName",monitorPointMap.get("name"));
                oneSensorMap.put("deviceName",device.get("name"));
                oneSensorMap.put("sersorKey",sensotMap.get(key));
                for (Map<String, Object> dataMap: dataList) {
                    JSONObject dataJson = JSONObject.parseObject(dataMap.get("json").toString());
                    oneSensorMap.put(dataMap.get("time").toString().substring(0,10),dataJson.getJSONArray(key).get(2));
                oneSensorMap.put("sersorKey",sensorMap.get(key)+"("+device_sensorUnit_map.get(key)+")");
                for (String day:dayList) {
                    for (Map<String, Object> dataMap: dataList) {
                        JSONObject dataJson = JSONObject.parseObject(dataMap.get("json").toString());
                        if (dataMap.get("time").toString().equals(day+" 00:00:00.0")){
                            oneSensorMap.put(dataMap.get("time").toString().substring(0,10),dataJson.getJSONArray(key).get(2));
                            break;
                        }else {
                            continue;
                        }
                    }
                    if(!oneSensorMap.containsKey(day)){
                        oneSensorMap.put(day,"");
                    }
                }
                Double avg = 0.0;
                if (sameDayHourlyList != null){
                    for (Map sameDayHourlyMap:sameDayHourlyList){
@@ -2069,18 +2142,38 @@
            endTime_sb.replace(10,11," ");
            endTime = endTime_sb.toString()+":00:00";
            List<String> hoursList = DatesUtil.findHoursStr(startTime,endTime);
            //System.out.println("hoursList:"+hoursList);
            List<Map<String, Object>> hourlyList = historyHourlyService.getDataByTimeSlot(mac,startTime,endTime);
            Set<String> keys = sensotMap.keySet();
            if (hourlyList.isEmpty()){
                return null;
            }
            Set<String> keys = sensorMap.keySet();
            for (String key:keys) {
                Map<String,Object> oneSensorMap = new LinkedHashMap<>();
                oneSensorMap.put("monitorPointName",monitorPointMap.get("name"));
                oneSensorMap.put("deviceName",device.get("name"));
                oneSensorMap.put("sersorKey",sensotMap.get(key));
                for (Map<String, Object> hourlyMap: hourlyList) {
                oneSensorMap.put("sersorKey",sensorMap.get(key)+"("+device_sensorUnit_map.get(key)+")");
                for (String hour:hoursList) {
                    for (Map<String, Object> hourlyMap: hourlyList) {
                        JSONObject dataJson = JSONObject.parseObject(hourlyMap.get("json").toString());
                        if (hourlyMap.get("time").toString().equals(hour+".0")){
                            oneSensorMap.put(hourlyMap.get("time").toString().substring(0,19),dataJson.getJSONArray(key).get(2));
                            break;
                        }else {
                            continue;
                        }
                    }
                    if(!oneSensorMap.containsKey(hour)){
                        oneSensorMap.put(hour,"");
                    }
                }
                /*for (Map<String, Object> hourlyMap: hourlyList) {
                    JSONObject hourlyJson = JSONObject.parseObject(hourlyMap.get("json").toString());
                    oneSensorMap.put(hourlyMap.get("time").toString().substring(0,19),hourlyJson.getJSONArray(key).get(2));
                }
                }*/
                list.add(oneSensorMap);
            }
        }else {
@@ -2088,4 +2181,5 @@
        }
        return new ResultBean<List<Map<String, Object>>>(list);
    }
}