package com.yssh.controller;
|
|
import com.yssh.entity.Qxsh;
|
import com.yssh.utils.CacheUtils;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
import com.yssh.service.IWarningAnalyseService;
|
import com.yssh.utils.Result;
|
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.concurrent.ConcurrentHashMap;
|
|
@Api(tags = "告警分析")
|
@RequestMapping("/warning")
|
@RestController
|
@SuppressWarnings("rawtypes")
|
public class WarningAnalyseController {
|
|
@Autowired
|
private IWarningAnalyseService warningService;
|
|
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
|
|
/**
|
* 1.查询当前时间的所有点位value值(以47.dat查询即可)
|
* 2.筛选大于yssh_bjyj中的jcbj字段的值 返回id+经纬度+value
|
*/
|
@ApiOperationSupport(order = 1)
|
@ApiOperation(value = "获取实时报警", notes = "获取实时报警分析数据")
|
@GetMapping("/runAlarm")
|
public Result alarmAnalyse() {
|
return Result.OK(warningService.getRunTimeAlarmAnalyse());
|
}
|
|
/**
|
* 1.查询当前时间的所有点位value值(以47.dat查询即可)
|
* 2.筛选大于yssh_bjyj中的jcyj字段的值 返回id+经纬度+value
|
*/
|
@ApiOperationSupport(order = 2)
|
@ApiOperation(value = "获取实时预警", notes = "获取实时预警分析数据")
|
@GetMapping("/runWarning")
|
public Result warningAnalyse() {
|
return Result.OK(warningService.getRunTimeWarningAnalyse());
|
}
|
|
@ApiOperationSupport(order = 3)
|
@ApiOperation(value = "本月预警、报警统计", notes = "本月预警、报警统计,返回参数alarmNumber对应值为本月报警数据量,参数warningNumber对应值为本月预警数据量")
|
@GetMapping("/monthCount")
|
public Result thisMonthCount() {
|
return Result.OK(warningService.countThisMonthAlarmAndWarning());
|
}
|
|
@ApiOperationSupport(order = 4)
|
@ApiOperation(value = "每日预警、报警数量变化趋势", notes = "一周每日预警、报警数量统计,返回参数alarmDayCount为一周每日报警统计数量列表,参数warningDayCount为一周每日预警统计数量列表")
|
@GetMapping("/everydayCount")
|
public Result everydayCount() {
|
return Result.OK(warningService.countEverydayAlarmAndWarning());
|
}
|
|
@ApiOperationSupport(order = 4)
|
@ApiOperation(value = "三小时监测站点数据变化趋势", notes = "返回值为三小时监测站点监测数据,返回值为map集合,其中key为站点名称,value为list集合,保存每天监测数值数据")
|
@GetMapping("/locationDataChange")
|
public Result locationDataChange() {
|
//return Result.OK(warningService.selectEachLocationDataChange());
|
|
String key = dateFormat.format(new Date()) + "_local";
|
Object obj = CacheUtils.get(key);
|
Map<String, List<Double>> map;
|
|
if (null != obj) {
|
map = (Map<String, List<Double>>) obj;
|
} else {
|
map = warningService.selectEachLocationDataChange();
|
if (null != map && map.size() > 0) {
|
CacheUtils.put(key, map);
|
}
|
}
|
|
return Result.ok(map);
|
}
|
|
@ApiOperationSupport(order = 4)
|
@ApiOperation(value = "获取本月监测大数据站点最大值TOP10", notes = "获取本月监测大数据站点最大值TOP10数量列表")
|
@GetMapping("/monthTop10")
|
public Result monthTop10() {
|
//return Result.OK(warningService.selectThisMonthLocationValueDataTop10());
|
|
String key = dateFormat.format(new Date()) + "_top10";
|
Object obj = CacheUtils.get(key);
|
List<Qxsh> list;
|
|
if (null != obj) {
|
list = (List<Qxsh>) obj;
|
} else {
|
//list = warningService.selectThisMonthLocationValueDataTop10();
|
list = warningService.selectMonthTop10();
|
if (null != list && list.size() > 0) {
|
CacheUtils.put(key, list);
|
}
|
}
|
|
return Result.ok(list);
|
}
|
|
@ApiOperationSupport(order = 5)
|
@ApiOperation(value = "根据时间获取报警和预警信息", notes = "根据时间获取报警和预警信息")
|
@GetMapping("/getAlarmAndWarnByTime")
|
public Result getAlarmAndWarnByTime(
|
@RequestParam(value = "begin", required = true) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date begin,
|
@RequestParam(value = "end", required = true) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date end) {
|
if (null == begin || null == end) {
|
return Result.error(null);
|
}
|
|
if (begin.getTime() > end.getTime()) {
|
Date tmp = end;
|
begin = end;
|
end = tmp;
|
}
|
|
return Result.OK(warningService.getAlarmAndWarnByTime(begin, end));
|
}
|
}
|