ZhuDongming
2019-08-08 2d4d397ce9ea8e53d4a63b6463c02a7586fb27ea
src/main/java/com/moral/controller/ScreenController.java
@@ -90,6 +90,7 @@
import com.moral.service.SensorService;
import com.moral.service.SensorUnitService;
import com.moral.service.WeatherService;
import com.moral.util.TempAllocationUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -102,7 +103,7 @@
@RestController
@RequestMapping("/screen")
@CrossOrigin(origins = "*", maxAge = 3600)
@SuppressWarnings({ "rawtypes", "unchecked", "unused" })
@SuppressWarnings({"rawtypes", "unchecked", "unused"})
@Api(tags = "Screen", description = "大屏接口")
public class ScreenController {
    public static Logger log = Logger.getLogger(ScreenController.class);
@@ -120,15 +121,21 @@
    @Resource
    DeviceVersionService deviceVersionService;
    /** The screen service. */
    /**
     * The screen service.
     */
    @Resource
    private HistoryService historyService;
    /** The account service. */
    /**
     * The account service.
     */
    @Resource
    private AccountService accountService;
    /** The device service. */
    /**
     * The device service.
     */
    @Resource
    private DeviceService deviceService;
@@ -142,11 +149,15 @@
//   @Value(value = "classpath:system/alarmLevels.json")
//   private org.springframework.core.io.Resource resource;
    /** The redis template. */
    /**
     * The redis template.
     */
    @Resource
    private RedisTemplate<String, String> redisTemplate;
    /** The level key. */
    /**
     * The level key.
     */
    private String levelKey = "alarm_";
    @Resource
@@ -168,7 +179,7 @@
    /**
     * Screen login. 大屏登录
     *
     *
     * @param request the request
     * @return the map
     */
@@ -226,7 +237,7 @@
    /**
     * Gets the equipment states. 获取该账号下所有设备的状态
     *
     *
     * @param request the request
     * @return the equipment states
     */
@@ -239,13 +250,13 @@
    /**
     * Gets the alarm levels. 获取报警配置
     *
     *
     * @param request the request
     * @return the alarm levels
     */
    @GetMapping("alarm-levels")
    public Object getAlarmLevels(HttpServletRequest request, Optional<Integer> orgId, Optional<Integer> mpId,
            Optional<String> mac) {
                                 Optional<String> mac) {
        List<Map<String, Object>> sensorAlarmList = null;
        try {
            AlarmConfig alarmConfig = null;
@@ -318,7 +329,6 @@
    }
    /**
     *
     * @param dataSortCondition 数据排名查询条件
     * @return
     */
@@ -352,10 +362,20 @@
        Map<String, Object> parameters = getParametersStartingWith(request, null);
        return historyMinutelyService.getDayAQIByDevice(parameters);
    }
    @GetMapping("hour-aqi")
    @ApiOperation(value = "获取一小时AQI", notes = "获取一小时AQI")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "mac", value = "设备mac地址", required = true, paramType = "query", dataType = "String")
    })
    public Map<String, Object> getHourAQIByDevice(HttpServletRequest request) {
       Map<String, Object> parameters = getParametersStartingWith(request, null);
       return historyService.gitHourlyAQIByMacAndTimeslot(parameters);
    }
    /**
     * Gets the average by all. 获取某账号某区域10分钟前到5分钟前所有传感器平均数值排名
     *
     *
     * @param request the request
     * @return the average by all
     * @throws Exception
@@ -477,7 +497,7 @@
     */
    /**
     * 地图主页
     *
     *
     * @param model
     * @param code
     * @param accountId
@@ -485,7 +505,7 @@
     */
    @RequestMapping(value = "/map-page", method = RequestMethod.GET)
    public ModelAndView map(ModelAndView model, @RequestParam("areaCode") long code,
            @RequestParam("accountId") int accountId) {
                            @RequestParam("accountId") int accountId) {
        Account account = accountService.getAccountById(accountId);
        String regionName = areaService.queryFullNameByCode(code);
        if (account != null && regionName != null) {
@@ -515,7 +535,7 @@
    @RequestMapping(value = "/get-monitorpoints", method = RequestMethod.GET)
    @ResponseBody
    public ResultBean getMonitorpointList(@RequestParam("orgId") String orgId, MapBounds mapBounds,
            @RequestParam("regionCode") String regionCode) {
                                          @RequestParam("regionCode") String regionCode) {
        ResultBean<List<MonitorPoint>> resultBean = new ResultBean();
        Map<String, Object> paramMap = new HashMap<String, Object>();
        paramMap.put("orgId", orgId);
@@ -531,7 +551,7 @@
    @RequestMapping(value = "/get-devices", method = RequestMethod.GET)
    @ResponseBody
    public ResultBean getDevices(@RequestParam("orgId") Integer orgId, MapBounds mapBounds,
            @RequestParam("regionCode") String regionCode) {
                                 @RequestParam("regionCode") String regionCode) {
        ResultBean<List<Device>> resultBean = new ResultBean();
        Map<String, Object> paramMap = new HashMap<String, Object>();
        paramMap.put("orgId", orgId);
@@ -547,14 +567,14 @@
    @RequestMapping(value = "get-devices-for-popup", method = RequestMethod.GET)
    @ResponseBody
    public PageResult getDevicesForPopup(@RequestParam("orgId") Integer orgId, String name, Integer pageSize,
            Integer pageNo) {
                                         Integer pageNo) {
        return deviceService.query(orgId, name, pageSize, pageNo);
    }
    @RequestMapping(value = "get-devices-by-mid-oid", method = RequestMethod.GET)
    @ResponseBody
    public PageResult getDevicesByMidOid(@RequestParam("orgId") Integer orgId, @RequestParam("mpId") Integer mpId,
            Integer pageSize, Integer pageNo) {
                                         Integer pageSize, Integer pageNo) {
        return deviceService.query(orgId, mpId, pageSize, pageNo);
    }
@@ -645,7 +665,7 @@
    /**
     * 根据监控点id获取所属设备version数据集
     *
     *
     * @param mptid
     * @return
     */
@@ -661,7 +681,7 @@
            @ApiImplicitParam(name = "dimension", value = "维度(profession、region、monitorPoint选一)", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "sensorKey", value = "传感器key", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "accountId", value = "账户id", required = true, paramType = "query", dataType = "int"),
            @ApiImplicitParam(name = "timeType", value = "时间类型(month、day、hour选一)", required = true, paramType = "query", dataType = "int"), })
            @ApiImplicitParam(name = "timeType", value = "时间类型(month、day、hour选一)", required = true, paramType = "query", dataType = "int"),})
    public ResultBean<List<Map<String, Object>>> getRegionRankingData(HttpServletRequest request) {
        Map<String, Object> parameters = getParametersStartingWith(request, null);
        List<Map<String, Object>> list = historyService.getRegionRankingData(parameters);
@@ -675,7 +695,7 @@
    @ApiOperation(value = "获取实时监控页面布局", notes = "")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "primaryKey", defaultValue = "898607b0101730391967", value = "值为:设备mac或监控站id", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "type", defaultValue = "device", value = "值为:'monitorPoint'或'device'", required = true, paramType = "query", dataType = "String"), })
            @ApiImplicitParam(name = "type", defaultValue = "device", value = "值为:'monitorPoint'或'device'", required = true, paramType = "query", dataType = "String"),})
    @GetMapping("rtm-layout")
    public ResultBean realTimeMonitorLayout(String primaryKey, String type) {
        RealTimeDeviceLayout rtdLayout = null;
@@ -717,7 +737,7 @@
            @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)", required = true, paramType = "query", dataType = "String"), })
            @ApiImplicitParam(name = "time", value = "时间,月份(格式:2018-03)", required = true, paramType = "query", dataType = "String"),})
    public ResultBean<List<Map<String, Object>>> getMonitorPointOrDeviceAvgDataBySensorKey(HttpServletRequest request)
            throws Exception {
        Map<String, Object> parameters = getParametersStartingWith(request, null);
@@ -744,7 +764,7 @@
    @GetMapping("getmpoint-byid")
    @ApiOperation(value = "获取监测站数据", notes = "获取监测站数据,包含名称、地址、坐标等详细信息")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "monitorPointId", defaultValue = "1", value = "监控站id", required = true, paramType = "query", dataType = "Integer"), })
            @ApiImplicitParam(name = "monitorPointId", defaultValue = "1", value = "监控站id", required = true, paramType = "query", dataType = "Integer"),})
    public ResultBean<MonitorPoint> getMonitorPointById(Integer monitorPointId) {
        MonitorPoint monitorPoint = monitorPointService.queryMonitorPointById(monitorPointId);
        return new ResultBean<>(monitorPoint);
@@ -756,7 +776,7 @@
    @GetMapping("aqi24hours")
    @ApiOperation(value = "最近24小时aqi数值", notes = "最近24小时国控aqi数值")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "orgid", defaultValue = "5", value = "组织id", required = true, paramType = "query", dataType = "Integer"), })
            @ApiImplicitParam(name = "orgid", defaultValue = "5", value = "组织id", required = true, paramType = "query", dataType = "Integer"),})
    public ResultBean<List<Map<String, Object>>> getAqi24HoursNC(@RequestParam("orgid") Integer organizationId) {
        return new ResultBean<>(hangzhouAqiService.queryAqi24Hours(organizationId));
    }
@@ -764,7 +784,7 @@
    @GetMapping("mpt-dev-summary")
    @ApiOperation(value = "监控总数和设备状态信息", notes = "监控总数和设备状态信息")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "orgid", defaultValue = "5", value = "组织id", required = true, paramType = "query", dataType = "Integer"), })
            @ApiImplicitParam(name = "orgid", defaultValue = "5", value = "组织id", required = true, paramType = "query", dataType = "Integer"),})
    public ResultBean<Map> getMptAndDevSummary(@RequestParam("orgid") Integer organizationId) {
        Map<String, Map> result = new HashMap<>(2);
        Integer mptCount = monitorPointService.countOfSubOrgs(organizationId);
@@ -779,7 +799,7 @@
    @GetMapping("weather")
    @ApiOperation(value = "获取区域天气情况", notes = "获取区域天气情况")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "organizationId", defaultValue = "5", value = "登录账号的组织id", required = true, paramType = "query", dataType = "String") })
            @ApiImplicitParam(name = "organizationId", defaultValue = "5", value = "登录账号的组织id", required = true, paramType = "query", dataType = "String")})
    public ResultBean<Map<String, Object>> getWeatherDataByRegion(HttpServletRequest request) throws Exception {
        Map<String, Object> parameters = getParametersStartingWith(request, null);
        Map<String, Object> map = weatherService.getWeatherDataByRegion(parameters);
@@ -792,7 +812,7 @@
            @ApiImplicitParam(name = "accountId", defaultValue = "1", value = "登录账号的id", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "sensorKey", defaultValue = "e1,e2,e3", value = "传感器key,如有多个用逗号分隔", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "time", defaultValue = "", value = "时间(long类型时间)", required = false, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "interval", defaultValue = "30", value = "时间间隔(秒)", required = true, paramType = "query", dataType = "Integer"), })
            @ApiImplicitParam(name = "interval", defaultValue = "30", value = "时间间隔(秒)", required = true, paramType = "query", dataType = "Integer"),})
    public ResultBean<Map<String, Object>> getActualDataByRegion(HttpServletRequest request) throws Exception {
        Map<String, Object> parameters = getParametersStartingWith(request, null);
        Map<String, Object> map = historyService.getActualDataByRegion(parameters);
@@ -802,7 +822,7 @@
    @GetMapping("quality")
    @ApiOperation(value = "获取优良天数", notes = "获取优良天数")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "organizationId", defaultValue = "5", value = "登录账号的组织id", required = true, paramType = "query", dataType = "String") })
            @ApiImplicitParam(name = "organizationId", defaultValue = "5", value = "登录账号的组织id", required = true, paramType = "query", dataType = "String")})
    public ResultBean<Map<String, Object>> getQualityCountDayByRegion(HttpServletRequest request) throws Exception {
        Map<String, Object> parameters = getParametersStartingWith(request, null);
        Map<String, Object> map = qualityDailyService.getQualityCountDayByRegion(parameters);
@@ -813,7 +833,7 @@
    @ApiOperation(value = "获取监控点以及设备", notes = "获取监控点以及设备")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "organizationId", defaultValue = "8", value = "登录账号的组织id", required = true, paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "regionCode", defaultValue = "320583", value = "区域码", required = true, paramType = "query", dataType = "String") })
            @ApiImplicitParam(name = "regionCode", defaultValue = "320583", value = "区域码", required = true, paramType = "query", dataType = "String")})
    public ResultBean<List<MonitorPoint>> getMonitorPointsAndDevicesByRegion(HttpServletRequest request)
            throws Exception {
        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
@@ -825,7 +845,7 @@
    @ApiOperation(value = "刷新设备状态", notes = "刷新设备状态")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "organizationId", defaultValue = "8", value = "登录账号的组织id", required = true, paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "regionCode", defaultValue = "320583", value = "区域码", required = true, paramType = "query", dataType = "String") })
            @ApiImplicitParam(name = "regionCode", defaultValue = "320583", value = "区域码", required = true, paramType = "query", dataType = "String")})
    public ResultBean<Collection<Object>> getDevicesStateByRegion(HttpServletRequest request) throws Exception {
        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
        Collection<Object> monitorPoints = monitorPointService.getDevicesStateByRegion(parameters);
@@ -841,7 +861,9 @@
            @ApiImplicitParam(name = "organizationId", defaultValue = "5", value = "登录账号的组织id", required = true, paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "time", defaultValue = "2019", value = "查询的时间", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "sensorKey", defaultValue = "e27", value = "查询的监测因子的key", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "regionCode", defaultValue = "130000", value = "区域码", required = true, paramType = "query", dataType = "String") })
            @ApiImplicitParam(name = "regionCode", defaultValue = "130000", value = "区域码", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "monitorPointId", value = "监测点id", required = false, paramType = "query", dataType = "int"),
            @ApiImplicitParam(name = "mac", value = "设备mac", required = false, paramType = "query", dataType = "String")})
    public ResultBean<List<Map<String, Object>>> getemissionsData(HttpServletRequest request) throws Exception {
        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
        List<Map<String, Object>> result = historyDailyService.getEmissionsData(parameters);
@@ -855,7 +877,7 @@
            @ApiImplicitParam(name = "time", defaultValue = "2019", value = "查询的时间", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "sensorKey", defaultValue = "e27", value = "查询的监测因子的key", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "overproofRatio", defaultValue = "0", value = "超标比例(0,1,2,3)(超标,超标100%,超标200%,超标300%)", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "regionCode", defaultValue = "130000", value = "区域码", required = true, paramType = "query", dataType = "String") })
            @ApiImplicitParam(name = "regionCode", defaultValue = "130000", value = "区域码", required = true, paramType = "query", dataType = "String")})
    public ResultBean<Map> getOverproofData(HttpServletRequest request) throws Exception {
        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
        Map result = historyDailyService.getOverproofData(parameters);
@@ -865,7 +887,7 @@
    @GetMapping("limit-device")
    @ApiOperation(value = "获取设备的警报限值", notes = "获取设备的警报限值")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "mac", defaultValue = "p5dnd7a0391956", value = "设备mac码", required = true, paramType = "query", dataType = "String") })
            @ApiImplicitParam(name = "mac", defaultValue = "p5dnd7a0391956", value = "设备mac码", required = true, paramType = "query", dataType = "String")})
    public ResultBean<List<Map<String, Object>>> getLimitDataByDevice(HttpServletRequest request) throws Exception {
        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
        String density = deviceService.getLimitDataByDevice(parameters);
@@ -883,13 +905,13 @@
    }
    /**
     * @description 根据设备mac,监测因子,时间查询返回界面
     * @author ZhuDongming
     * @date 2019-06-05 10:02:10
     * @param model
     * @param request
     * @return
     * @throws Exception
     * @description 根据设备mac,监测因子,时间查询返回界面
     * @author ZhuDongming
     * @date 2019-06-05 10:02:10
     */
    @GetMapping("/map-traceability")
    @ApiOperation(value = "获取污染溯源", notes = "获取污染溯源")
@@ -897,7 +919,7 @@
            @ApiImplicitParam(name = "monitorPointId", value = "监测点id", required = true, paramType = "query", dataType = "int"),
            @ApiImplicitParam(name = "mac", value = "设备mac地址", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "sensorKey", value = "查询的监测因子的key", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "time", value = "查询时间", required = true, paramType = "query", dataType = "String") })
            @ApiImplicitParam(name = "time", value = "查询时间", required = true, paramType = "query", dataType = "String")})
    public ModelAndView traceability(ModelAndView model, HttpServletRequest request) throws Exception {
        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
        Integer monitorPointId = Integer.parseInt(parameters.get("monitorPointId").toString());
@@ -917,7 +939,7 @@
            params.put("regionName", regionName);
            params.put("monitorPoint", monitorPoint);
            params.put("device", device);
            params.put("deviceSecond",deviceSecond);
            params.put("deviceSecond", deviceSecond);
            String paramsJson = params.toJSONString();
            model.addObject("traceabilityParams", paramsJson);
            model.setViewName("traceability");
@@ -951,93 +973,221 @@
      System.out.println("ScreenController-----getSensor-----map:"+map);
      return new ResultBean<Map<String, Object>>(map);
   }*/
   @GetMapping("getSensorByMonitorPointId")
   @ApiOperation(value = "返回单位", notes = "返回单位")
    @GetMapping("getSensorByMonitorPointId")
    @ApiOperation(value = "返回单位", notes = "返回单位")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "monitor_point_id", value = "监测站点id", required = true, paramType = "query", dataType = "String")
    })
    public ResultBean<List<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");
        List<Map<String, Object>> map = sensorUnitService.getSensorsByMonitPointId2(monitor_point_id);
        return new ResultBean<List<Map<String, Object>>>(map);
    }
    @GetMapping("getSensorByDeviceId")
   @ApiOperation(value = "通过设备获取因子", notes = "通过设备获取因子")
   @ApiImplicitParams(value = {
         @ApiImplicitParam(name = "monitor_point_id", value = "监测站点id", required = true, paramType = "query", dataType = "String")
         @ApiImplicitParam(name = "id", value = "设备id", required = true, paramType = "query", dataType = "String")
   })
   public ResultBean<List<Map<String, Object>>> getSensorByMonitorPointId(HttpServletRequest request) throws Exception {
   public ResultBean<List<Map<String, Object>>> getSensorByDeviceId(HttpServletRequest request) throws Exception {
      Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
      String monitor_point_id = (String) parameters.get("monitor_point_id");
      List<Map<String, Object>> map = sensorUnitService.getSensorsByMonitPointId2(monitor_point_id);
      return new ResultBean<List<Map<String, Object>>>(map);
      String id = (String) parameters.get("id");
      List<Map<String, Object>> list = sensorService.getSensorByDeviceId(id);
      Map<String,Object> map = list.get(0);
      String monitor_point_id = map.get("monitor_point_id").toString();
      List<Map<String, Object>> sensorUnitList = sensorUnitService.getSensorsByMonitPointId2(monitor_point_id);
      System.out.println(sensorUnitList);
      for (Map<String, Object> sensorMap : list) {
         for (Map<String, Object> sensorUnitMap : sensorUnitList) {
            if (sensorUnitMap.get("sensor_key").equals(sensorMap.get("sensor_key"))) {
               sensorMap.put("unit", sensorUnitMap.get("name"));
            }
         }
      }
      return new ResultBean<List<Map<String, Object>>>(list);
   }
   
   @GetMapping("AIForecast")
   @ApiOperation(value = "AI预测", notes = "AI预测")
   @GetMapping("getSensorWithUnitByMonitorPointId")
   @ApiOperation(value = "通过站点获取因子", notes = "通过站点获取因子")
   @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"),
         @ApiImplicitParam(name = "monitor_point_id", value = "站点id", required = true, paramType = "query", dataType = "String")
   })
   public ResultBean<List<Map<String, Object>>> AIForecast (HttpServletRequest request) throws Exception {
      Map<String, Object> parameters = getParametersStartingWith(request, null);
      //System.out.println(parameters);
      String intoTime = parameters.get("time").toString();
      String[] timeArray = intoTime.split("-");
      //System.out.println(timeArray);
      Integer year = Integer.parseInt(timeArray[0]);
      Integer mon = Integer.parseInt(timeArray[1]);
      if(mon>1) {
         mon = mon-1;
      }else {
         mon = 12;
         year = year-1;
   public ResultBean<List<Map<String, Object>>> getSensorWithUnitByMonitorPointId(HttpServletRequest request) throws Exception {
      Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
      String monitor_point_id = (String) parameters.get("monitor_point_id");
      List<Map<String, Object>> list = sensorService.getSensorByMonitorPointId(monitor_point_id);
      List<Map<String, Object>> sensorUnitList = sensorUnitService.getSensorsByMonitPointId2(monitor_point_id);
      System.out.println(sensorUnitList);
      for (Map<String, Object> sensorMap : list) {
         for (Map<String, Object> sensorUnitMap : sensorUnitList) {
            if (sensorUnitMap.get("sensor_key").equals(sensorMap.get("sensor_key"))) {
               sensorMap.put("unit", sensorUnitMap.get("name"));
            }
         }
      }
      String alterTime = year.toString()+"-"+mon.toString()+"-"+timeArray[2];
      //System.out.println(alterTime);
      parameters.put("time", alterTime);
      return new ResultBean<List<Map<String, Object>>>(list);
   }
    @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);
        //System.out.println(parameters);
        String monitorPoint = (String) parameters.get("monitorPoint");
        String intoTime = parameters.get("time").toString();
        String[] timeArray = intoTime.split("-");
        //System.out.println(timeArray);
        Integer year = Integer.parseInt(timeArray[0]);
        Integer mon = Integer.parseInt(timeArray[1]);
        if (mon > 1) {
            mon = mon - 1;
        } else {
            mon = 12;
            year = year - 1;
        }
        String alterTime = year.toString() + "-" + mon.toString() + "-" + timeArray[2];
        //System.out.println(alterTime);
        parameters.put("time", alterTime);
        ParameterUtils.getTimeType4Time(parameters);
      String monitor_point_id = (String) parameters.get("monitorPoint");
        String monitor_point_id = (String) parameters.get("monitorPoint");
        parameters.put("monitorPointId", parameters.remove("monitorPoint"));
        String[] sensorKeys = parameters.remove("sensorKey").toString().split(",");
        parameters.put("sensors", Arrays.asList(sensorKeys));
        // monitorPointService.isCompensateCalculation(parameters);
        List<Map<String, Object>> list = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters);
        Map<String, Object> mpMap = new HashMap<>();
        mpMap = monitorPointService.selectAllById(monitorPoint);
        //生命一个map,用来存放查询天气信息是需要的参数
        Map<String, Object> weatherParameters = new HashMap<>();
        weatherParameters.put("organizationId", mpMap.get("organization_id"));
        weatherParameters.put("time", intoTime);
        //获取天气信息
        Map<String, Object> weatherMap = weatherService.get15DayWeatherDataByRegion(weatherParameters);
        Map<String, Object> tempMap = TempAllocationUtils.tempAllocation(weatherMap);
        //获取单位信息
         Map<String, Map<String, Object>> sensorUnitMap = sensorUnitService.getSensorsByMonitPointId(monitor_point_id);
        Map<String, Map<String, Object>> sensorUnitMap = sensorUnitService.getSensorsByMonitPointId(monitor_point_id);
        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("temp", tempMap.get(map.get("time").toString()));
            List<Number> values = new ArrayList<Number>();
            List<String> units = new ArrayList<String>();
            for (String string : sensorKeys) {
               if(sensorUnitMap!=null && !sensorUnitMap.isEmpty()) {
                  if(sensorUnitMap.get(string)!=null) {
                     units.add(sensorUnitMap.get(string).get("name").toString());
                     String rules = sensorUnitMap.get(string).get("rules").toString();
                     rules = rules.replace("{0}", "a");
                     rules = rules.replace("d", "");
                     Expression expression = AviatorEvaluator.compile(rules);
                     Double value;
                     Map<String, Object> ev = new HashMap<>();
                     ev.put("a", map.get(string));
                     value = (Double) expression.execute(ev);
                     //保留两位小数
                     DecimalFormat df = new DecimalFormat("#.00");
                     value = Double.parseDouble(df.format(value));
                     values.add(value);
                  }else {
                     Map<String, Object> sensorMap = sensorService.getSensorBySensorKey(string);
                     units.add(sensorMap.get("unit").toString());
                     values.add((Number) map.remove(string));
                  }
               }else {
                  Map<String, Object> sensorMap = sensorService.getSensorBySensorKey(string);
                 units.add(sensorMap.get("unit").toString());
                 values.add((Number) map.remove(string));
               }
                if (sensorUnitMap != null && !sensorUnitMap.isEmpty()) {
                    if (sensorUnitMap.get(string) != null) {
                        units.add(sensorUnitMap.get(string).get("name").toString());
                        String rules = sensorUnitMap.get(string).get("rules").toString();
                        rules = rules.replace("{0}", "a");
                        rules = rules.replace("d", "");
                        Expression expression = AviatorEvaluator.compile(rules);
                        Double value;
                        Map<String, Object> ev = new HashMap<>();
                        ev.put("a", map.get(string));
                        value = (Double) expression.execute(ev);
                        //保留两位小数
                        DecimalFormat df = new DecimalFormat("#.00");
                        value = Double.parseDouble(df.format(value));
                        values.add(value);
                    } else {
                        Map<String, Object> sensorMap = sensorService.getSensorBySensorKey(string);
                        units.add(sensorMap.get("unit").toString());
                        values.add((Number) map.remove(string));
                    }
                } else {
                    Map<String, Object> sensorMap = sensorService.getSensorBySensorKey(string);
                    units.add(sensorMap.get("unit").toString());
                    values.add((Number) map.remove(string));
                }
                //values.add((Number) map.remove(string));
            }
            map.put("values", values);
            map.put("units", units);
        }
      return new ResultBean<List<Map<String, Object>>>(list);
   }
        return new ResultBean<List<Map<String, Object>>>(list);
    }
    @GetMapping("getWeather")
    @ApiOperation(value = "获取天气信息", notes = "获取天气信息")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "organizationId", defaultValue = "5", value = "登录账号的组织id", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "time", value = "时间,天(格式:2018-03-06)", required = true, paramType = "query", dataType = "String"),
    })
    public ResultBean<Map<String, Object>> getWeather(HttpServletRequest request) throws Exception {
        Map<String, Object> parameters = getParametersStartingWith(request, null);
        Map<String, Object> map = weatherService.get15DayWeatherDataByRegion(parameters);
        /*Map<String, Object> tempMap = new HashMap<>();
        Double tempDay = Double.parseDouble(map.get("tempDay").toString());
        Double tempNight = Double.parseDouble(map.get("tempNight").toString());
        Double time5 = tempNight;
        Double time13 = tempDay;
        Double difference = tempDay-tempNight;
        Double dif_8 = difference/8;
        Double dif_16 = difference/16;
        tempMap.put("5", time5);
        tempMap.put("13", time13);
        String time = null;
        Double t = time5;
        for(int i=4;i>=0;i--) {
           time = ""+i;
           t = t+dif_16;
           String tempLast = ""+Math.round(t);
           tempMap.put(time, tempLast);
        }
        Double y = time5;
        for(int i=6;i<13;i++) {
           time = ""+i;
           y = y+dif_8;
           String tempLast = ""+Math.round(y);
           tempMap.put(time, tempLast);
        }
        Double z = time13;
        for(int i=14;i<=23;i++) {
           time = ""+i;
           z = z-dif_16;
           String tempLast = ""+Math.round(z);
           tempMap.put(time, tempLast);
        }*/
        Map<String, Object> tempMap = TempAllocationUtils.tempAllocation(map);
        return new ResultBean<Map<String, Object>>(tempMap);
    }
    @GetMapping("/uavTrajectory")
    @ApiOperation(value = "显示无人机飞行轨迹", notes = "显示无人机飞行轨迹")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "mac", value = "设备mac(格式:p5dnd7a0392068)", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "startTime", value = "开始时间(格式:2019-07-17 17:07:00)", required = false, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "endTime", value = "结束时间(格式:2019-07-17 17:07:00)", required = false, paramType = "query", dataType = "String")
    })
    public ModelAndView uavTrajectory(ModelAndView model, HttpServletRequest request) throws Exception {
        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
        String mac = parameters.get("mac").toString();
        if (mac != null && mac.length() != 0) {
            List<Map<String, Object>> sensorList = historyMinutelyService.getSensorData(parameters);
            JSONObject params = new JSONObject();
            params.put("sensorInfo", sensorList);
            String paramsJson = params.toJSONString();
            model.addObject("uavTrajectoryParams", paramsJson);
            model.setViewName("uavTrajectory");
            return model;
        }else {
            StringBuilder msg = new StringBuilder();
            msg.append(" param[0] mac:");
            msg.append(mac);
            log.warn(msg);
            model.setViewName("403");
            return model;
        }
    }
}