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> map; //if (null != obj) { // map = (Map>) obj; //} else { //map = warningService.selectEachLocationDataChange(); map = warningService.select3Hours(); // 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 list; //if (null != obj) { // list = (List) 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)); } }