吉安感知网项目-后端
linwei
2026-02-09 2e98f7678b2dab62f15ff1d0807281f7c9a3d075
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
151
package org.sxkj.fw.cockpit.controller;
 
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.*;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
import org.sxkj.fw.area.vo.FwAreaDivideVO;
import org.sxkj.fw.area.vo.FwDefenseSceneManageVO;
import org.sxkj.fw.cockpit.service.ICockpitService;
import org.sxkj.fw.cockpit.vo.AlarmStatisticsVO;
import org.sxkj.fw.cockpit.vo.DeviceStatisticsVO;
import org.sxkj.fw.cockpit.vo.SceneManageStatisticsVO;
import org.sxkj.fw.detection.param.FwEffectEvalParam;
import org.sxkj.fw.device.dto.FwDeviceDTO;
import org.sxkj.fw.device.vo.CockpitFwDeviceVO;
import org.sxkj.fw.record.dto.FwDroneAlarmRecordDTO;
import org.sxkj.fw.record.vo.FwDroneAlarmRecordVO;
 
import javax.validation.Valid;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
 
/**
 * 数据驾驶舱
 *
 * @author lw
 * @since 2026-01-08
 */
@RestController
@AllArgsConstructor
@RequestMapping("cockpit/dataCockpit")
@Api(value = "驾驶舱", tags = "数据驾驶舱")
public class CockpitController {
 
    private final ICockpitService cockpitService;
 
 
    /**
     * 历史告警、实时告警
     */
    @GetMapping("/alarmLog")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "历史告警/实时告警", notes = "传入fwDroneAlarmRecord")
    public R<IPage<FwDroneAlarmRecordVO>> page(FwDroneAlarmRecordDTO fwDroneAlarmRecord, Query query) {
        IPage<FwDroneAlarmRecordVO> pages = cockpitService.selectFwDroneAlarmRecordPage(Condition.getPage(query), fwDroneAlarmRecord);
        return R.data(pages);
    }
 
    /**
     * 设备查询 自定义分页
     */
    @GetMapping("/deviceSearch")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "设备查询", notes = "传入fwDevice")
    public R<IPage<CockpitFwDeviceVO>> page(FwDeviceDTO fwDevice, Query query) {
        IPage<CockpitFwDeviceVO> pages = cockpitService.selectCockpitDevicePage(Condition.getPage(query), fwDevice);
        return R.data(pages);
    }
 
    /**
     * 设备统计接口
     */
    @GetMapping("/deviceStatistics")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "设备统计", notes = "返回侦测设备,反制设备数量")
    public R<List<DeviceStatisticsVO>> getDeviceStatistics() {
        List<DeviceStatisticsVO> statistics = cockpitService.statisticalDeviceType();
        return R.data(statistics);
    }
 
    /**
     * 设备出库去向统计
     * @return 统计数据
     */
    @GetMapping("/statisticalDeviceOut")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "设备出库去向统计", notes = "设备出库去向统计")
    @ApiImplicitParams({
        @ApiImplicitParam(name = "effectiveRangeKmIsNotNull", value = "有效范围是否为空:0-不处理 1-不为空 2-为空", paramType = "query", dataType = "string")
    })
    public R<List<DeviceStatisticsVO>> statisticalDeviceOut(String effectiveRangeKmIsNotNull) {
        return R.data(cockpitService.getDeviceOutStatistics(effectiveRangeKmIsNotNull));
    }
 
    /**
     * 告警记录统计接口
     */
    @GetMapping("/alarmStatistics")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "告警记录统计", notes = "返回实时告警、设备告警、历史告警数量")
    public R<AlarmStatisticsVO> getAlarmStatistics() {
        AlarmStatisticsVO statistics = cockpitService.statisticsAlarmsAndDeviceRecords();
        return R.data(statistics);
    }
 
    /**
     * 场景管理与区域数量统计
     */
    @GetMapping("/sceneManageStatistics")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "场景管理统计", notes = "返回场景管理数量与区域数量")
    public R<SceneManageStatisticsVO> getSceneManageStatistics() {
        SceneManageStatisticsVO statistics = cockpitService.statisticsSceneManageAndArea();
        return R.data(statistics);
    }
 
    /**
     * 信号干扰,诱导驱离
     */
    @PostMapping("/interferenceAndExpulsion")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "信号干扰,诱导驱离", notes = "传入fwEffectEval")
    public R interferenceAndExpulsion(@Valid @RequestBody FwEffectEvalParam fwEffectEvalParam) {
         return R.status(cockpitService.interferenceAndExpulsion(fwEffectEvalParam));
    }
 
    /**
     * 区域划分表 列表
     */
    @GetMapping("/areaDivideList")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "列表-不带分页", notes = "传入filterSelected或sceneId或areaTypeKeys或isSetSceneManage或flyTime")
    public R<List<FwAreaDivideVO>> list(
        @ApiParam(value = "是否过滤已被选择的数据(1过滤 0不过滤)") @RequestParam(required = false) Integer filterSelected,
        @ApiParam(value = "场景id") @RequestParam(required = false) Long sceneId,
        @ApiParam(value = "区域类型key集合(逗号分隔)") @RequestParam(required = false) String areaTypeKeys,
        @ApiParam(value = "是否按场景管理过滤(1是 0或空否)") @RequestParam(required = false) Integer isSetSceneManage,
        @ApiParam(value = "时间筛选(yyyy-MM-dd HH:mm:ss)") @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime flyTime) {
        List<FwAreaDivideVO> list = cockpitService.selectFwAreaDivideList(filterSelected, sceneId, areaTypeKeys, isSetSceneManage, flyTime);
        return R.data(list);
    }
 
    /**
     * 场景管理表 列表
     */
    @GetMapping("/defenseSceneManageList")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "列表", notes = "传入time")
    public R<List<FwDefenseSceneManageVO>> list(
        @ApiParam(value = "时间筛选(yyyy-MM-dd HH:mm:ss)") @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date time) {
        Date filterTime = time == null ? new Date() : time;
        List<FwDefenseSceneManageVO> list = cockpitService.selectFwDefenseSceneManageList(filterTime);
        return R.data(list);
    }
}