package org.sxkj.fw.cockpit.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; 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.web.bind.annotation.*; 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.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.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> page(FwDroneAlarmRecordDTO fwDroneAlarmRecord, Query query) { IPage pages = cockpitService.selectFwDroneAlarmRecordPage(Condition.getPage(query), fwDroneAlarmRecord); return R.data(pages); } /** * 设备查询 自定义分页 */ @GetMapping("/deviceSearch") @ApiOperationSupport(order = 2) @ApiOperation(value = "设备查询", notes = "传入fwDevice") public R> page(FwDeviceDTO fwDevice, Query query) { IPage pages = cockpitService.selectCockpitDevicePage(Condition.getPage(query), fwDevice); return R.data(pages); } /** * 设备统计接口 */ @GetMapping("/deviceStatistics") @ApiOperationSupport(order = 3) @ApiOperation(value = "设备统计", notes = "返回侦测设备,反制设备数量") public R> getDeviceStatistics() { List 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> statisticalDeviceOut(String effectiveRangeKmIsNotNull) { return R.data(cockpitService.getDeviceOutStatistics(effectiveRangeKmIsNotNull)); } /** * 告警记录统计接口 */ @GetMapping("/alarmStatistics") @ApiOperationSupport(order = 4) @ApiOperation(value = "告警记录统计", notes = "返回实时告警、设备告警、历史告警数量") public R getAlarmStatistics() { AlarmStatisticsVO statistics = cockpitService.statisticsAlarmsAndDeviceRecords(); 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)); } }