ZhuDongming
2019-06-12 9009798abd7abfd726bcda80267c7d53dd3b8da3
src/main/java/com/moral/controller/ScreenController.java
@@ -1,48 +1,5 @@
package com.moral.controller;
import static com.moral.common.util.ResourceUtil.getValue;
import static com.moral.common.util.WebUtils.getParametersStartingWith;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import org.xml.sax.InputSource;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -55,42 +12,43 @@
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.Region;
import com.moral.entity.*;
import com.moral.entity.alarm.AlarmConfig;
import com.moral.entity.alarm.AlarmConfigValue;
import com.moral.entity.alarm.AlarmSensorLevel;
import com.moral.entity.charts.DataSortCondition;
import com.moral.entity.layout.RealTimeDeviceLayout;
import com.moral.service.AccountService;
import com.moral.service.AlarmConfigService;
import com.moral.service.AlarmDailyService;
import com.moral.service.AreaService;
import com.moral.service.DeviceService;
import com.moral.service.DeviceVersionService;
import com.moral.service.DictionaryDataService;
import com.moral.service.HangzhouAqiService;
import com.moral.service.HistoryDailyService;
import com.moral.service.HistoryMinutelyService;
import com.moral.service.HistoryService;
import com.moral.service.MachineActivateService;
import com.moral.service.MonitorPointService;
import com.moral.service.OrganizationLayoutService;
import com.moral.service.OrganizationService;
import com.moral.service.QualityDailyService;
import com.moral.service.SensorService;
import com.moral.service.WeatherService;
import com.moral.service.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import org.xml.sax.InputSource;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.*;
import java.util.stream.Collectors;
import static com.moral.common.util.ResourceUtil.getValue;
import static com.moral.common.util.WebUtils.getParametersStartingWith;
/**
 * The Class ScreenController.大屏接口
@@ -109,6 +67,8 @@
    @Resource
    SensorService sensorService;
    @Resource
    SensorUnitService sensorUnitService;
    @Resource
    MonitorPointService monitorPointService;
    @Resource
@@ -899,17 +859,19 @@
        String mac = parameters.get("mac").toString();
        String sensorKey = parameters.get("sensorKey").toString();
        String time = parameters.get("time").toString();
        Long code = monitorPoint.getAreaCode().longValue();
        String regionName = areaService.queryFullNameByCode(code);
        Device device = deviceService.getDeviceByMac(mac, false);
        if (monitorPoint != null && mac != null && sensorKey != null && time != null) {
            Map<String, Double> resultMap = historyDailyService.getTraceabilityData(parameters);
            JSONObject params = new JSONObject();
            Long code = monitorPoint.getAreaCode().longValue();
            String regionName = areaService.queryFullNameByCode(code);
            Device device = deviceService.getDeviceByMac(mac, false);
            Device deviceSecond = deviceService.getDeviceByLongitudeAsc(mac);
            params.put("sensorInfo", resultMap);
            params.put("regionCode", code);
            params.put("regionName", regionName);
            params.put("monitorPoint", monitorPoint);
            params.put("device", device);
            params.put("deviceSecond",deviceSecond);
            String paramsJson = params.toJSONString();
            model.addObject("traceabilityParams", paramsJson);
            model.setViewName("traceability");
@@ -917,7 +879,7 @@
        } else {
            StringBuilder msg = new StringBuilder();
            msg.append(" param[0] monitorPointId:");
            msg.append(monitorPointId.toString());
            msg.append(monitorPointId);
            msg.append(" param[0] mac:");
            msg.append(mac);
            msg.append(" param[0] sensorKey:");
@@ -929,5 +891,86 @@
            return model;
        }
    }
    /*@GetMapping("getSensor")
   @ApiOperation(value = "返回单位", notes = "返回单位")
   @ApiImplicitParams(value = {
         @ApiImplicitParam(name = "mac", value = "设备MN号", required = true, paramType = "query", dataType = "String")
   })
   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);
   }*/
   /*@GetMapping("getSensorByMonitorPointId")
   @ApiOperation(value = "返回单位", notes = "返回单位")
   @ApiImplicitParams(value = {
         @ApiImplicitParam(name = "monitor_point_id", value = "监测站点id", required = true, paramType = "query", dataType = "String")
   })
   public ResultBean<Map<String, Object>> getSensorByMonitorPointId(HttpServletRequest request) throws Exception {
      Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
      String monitor_point_id = (String) parameters.get("monitor_point_id");
      System.out.println("ScreenController-----getSensorByMonitorPointId-----monitor_point_id:"+monitor_point_id);
      Map<String, Object> map = sensorUnitService.getSensorsByMonitPointId(monitor_point_id);
      System.out.println("ScreenController-----getSensorByMonitorPointId-----map:"+map);
      return new ResultBean<Map<String, Object>>(map);
   }*/
   @GetMapping("AIForecast")
   @ApiOperation(value = "AI预测", notes = "AI预测")
   @ApiImplicitParams(value = {
         @ApiImplicitParam(name = "monitorPoint", value = "监控站id", required = true, paramType = "query", dataType = "String"),
         @ApiImplicitParam(name = "mac", value = "设备mac", required = false, paramType = "query", dataType = "String"),
         @ApiImplicitParam(name = "sensorKey", value = "传感器key,如有多个用逗号分隔", required = true, paramType = "query", dataType = "String"),
         @ApiImplicitParam(name = "time", value = "时间,天(格式:2018-03-06)", required = true, paramType = "query", dataType = "String"),
   })
   public ResultBean<List<Map<String, Object>>> AIForecast (HttpServletRequest request) throws Exception {
      Map<String, Object> parameters = getParametersStartingWith(request, null);
      ParameterUtils.getTimeType4Time(parameters);
      String monitor_point_id = (String) parameters.get("monitorPoint");
      parameters.put("monitorPointId", parameters.remove("monitorPoint"));
      Object sensorKey = parameters.remove("sensorKey");
      parameters.put("sensors", Arrays.asList(sensorKey));
      List<Map<String, Object>> list = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters);
      System.out.println("ScreenController-----AIForecast-----list:"+list);
      //获取单位信息
      Map<String, Map<String, Object>> sensorMap = sensorUnitService.getSensorsByMonitPointId(monitor_point_id);
      if(sensorMap!=null && !sensorMap.isEmpty()) {
         for (Map<String, Object> map : list) {
            String time = map.get("time").toString();
            time = time.substring(time.length() - 2);
            map.put("time", Integer.valueOf(time));
            map.put("value", map.remove(sensorKey));
            String sensor = map.get("sensorKey").toString();
            if(sensorMap.get(sensor)!=null) {
               map.put("unit", sensorMap.get("unit"));
               map.put("name", sensorMap.get("name"));
               map.put("rules", sensorMap.get("rules"));
            }else {
               map.put("unit", null);
               map.put("name", null);
               map.put("rules", null);
            }
         }
      }else {
         for (Map<String, Object> map : list) {
            String time = map.get("time").toString();
            time = time.substring(time.length() - 2);
            map.put("time", Integer.valueOf(time));
            map.put("value", map.remove(sensorKey));
            map.put("unit", null);
            map.put("name", null);
            map.put("rules", null);
         }
      }
      //return null;
      return new ResultBean<List<Map<String, Object>>>(list);
   }
}