燕山石化溯源三维电子沙盘-【后端】-服务
1
13693261870
2023-08-12 ab94a1bded125837276d70cc14a3d8c7282294f4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
package com.yssh.controller;
 
import com.yssh.utils.DateUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
 
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.WarningAnalyseService;
import com.yssh.utils.Result;
 
import javax.annotation.Resource;
import java.util.Calendar;
import java.util.Date;
 
@Api(tags = "告警分析")
@RequestMapping("/warning")
@RestController
@SuppressWarnings("rawtypes")
public class WarningAnalyseController {
    @Resource
    private WarningAnalyseService warningService;
 
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "获取实时报警", notes = "获取实时报警分析数据")
    @GetMapping("/runAlarm")
    public Result alarmAnalyse(@RequestParam(value = "start", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date start,
                               @RequestParam(value = "end", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date end) {
        Integer startTime = getStartTime(start, end);
        Integer endTime = getEndTime(start, end);
 
        return Result.OK(warningService.getRunTimeAlarmAnalyse(startTime, endTime));
    }
 
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "获取实时预警", notes = "获取实时预警分析数据")
    @GetMapping("/runWarning")
    public Result warningAnalyse(@RequestParam(value = "start", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date start,
                                 @RequestParam(value = "end", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date end) {
        Integer startTime = getStartTime(start, end);
        Integer endTime = getEndTime(start, end);
 
        return Result.OK(warningService.getRunTimeWarningAnalyse(startTime, endTime));
    }
 
    private Integer getStartTime(Date start, Date end) {
        do {
            if (null == start && null == end) {
                start = DateUtils.getAPeriodOfTime(new Date(), -5, Calendar.HOUR_OF_DAY);
                break;
            }
            if (null != start && null == end) {
                break;
            }
            if (null == start) {
                start = DateUtils.getAPeriodOfTime(end, -5, Calendar.HOUR_OF_DAY);
                break;
            }
 
            start = start.getTime() > end.getTime() ? end : start;
        } while (false);
 
        return Integer.parseInt(DateUtils.getYyyyMmDdHh(start));
    }
 
    private Integer getEndTime(Date start, Date end) {
        do {
            if (null == start && null == end) {
                end = new Date();
                break;
            }
            if (null != start && null == end) {
                end = DateUtils.getAPeriodOfTime(start, 5, Calendar.HOUR_OF_DAY);
                break;
            }
            if (null == start) {
                break;
            }
 
            end = start.getTime() < end.getTime() ? end : start;
        } while (false);
 
        return Integer.parseInt(DateUtils.getYyyyMmDdHh(end));
    }
 
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "本月预警报警统计", notes = "本月预警报警统计,返回参数alarmNumber对应值为本月报警数据量,参数warningNumber对应值为本月预警数据量")
    @GetMapping("/monthCount")
    public Result thisMonthCount(@RequestParam(value = "date", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date date) {
        return Result.OK(warningService.monthCount(null == date ? new Date() : date));
    }
 
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "一周预警报警数量变化趋势", notes = "一周预警报警数量变化趋势,返回参数alarmDayCount为一周每日报警统计数量列表,参数warningDayCount为一周每日预警统计数量列表")
    @GetMapping("/everydayCount")
    public Result everydayCount(@RequestParam(value = "date", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date date) {
        return Result.OK(warningService.everydayCount(null == date ? new Date() : date));
    }
 
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "三小时监测站点数据变化趋势", notes = "返回值为三小时监测站点监测数据,返回值为map集合,其中key为站点名称,value为list集合,保存每天监测数值数据")
    @GetMapping("/locationDataChange")
    public Result locationDataChange(@RequestParam(value = "end", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date date) {
        return Result.OK(warningService.select3Hours(null == date ? new Date() : date));
    }
 
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "根据时间获取报警和预警信息", notes = "根据时间获取报警和预警信息")
    @GetMapping("/getAlarmAndWarnByTime")
    public Result getAlarmAndWarnByTime(
            @RequestParam(value = "begin") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date begin,
            @RequestParam(value = "end") @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 = begin;
            begin = end;
            end = tmp;
        }
 
        return Result.OK(warningService.getAlarmAndWarnByTime(begin, end));
    }
 
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "获取本月监测站点最大值Top10", notes = "获取本月监测站点最大值Top10数量列表")
    @GetMapping("/monthTop10")
    public Result monthTop10() {
        return Result.OK(warningService.selectMonthTop10());
    }
 
    @ApiOperationSupport(order = 8)
    @ApiOperation(value = "获取本周监测站点最大值Top10", notes = "获取本周监测站点最大值Top10")
    @GetMapping("/weekTop10")
    public Result weekTop10() {
        return Result.OK(warningService.selectWeekTop10());
    }
 
    @ApiOperationSupport(order = 9)
    @ApiOperation(value = "获取本日监测站点最大值Top10", notes = "获取本日监测站点最大值Top10")
    @GetMapping("/dayTop10")
    public Result dayTop10() {
        return Result.OK(warningService.selectDayTop10());
    }
}