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.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.springblade.core.tool.utils.BeanUtil; import org.springframework.web.bind.annotation.*; import org.sxkj.fw.cockpit.vo.AlarmStatisticsVO; import org.sxkj.fw.cockpit.vo.DeviceStatisticsVO; import org.sxkj.fw.detection.dto.FwEffectEvalDTO; import org.sxkj.fw.detection.entity.FwEffectEvalEntity; import org.sxkj.fw.detection.service.IFwEffectEvalService; import org.sxkj.fw.device.dto.FwDeviceDTO; import org.sxkj.fw.device.entity.FwDeviceEntity; import org.sxkj.fw.device.service.IFwDeviceService; import org.sxkj.fw.device.vo.FwDeviceVO; import org.sxkj.fw.device.wrapper.FwDeviceWrapper; import org.sxkj.fw.record.dto.FwDroneAlarmRecordDTO; import org.sxkj.fw.record.service.IFwDroneAlarmRecordService; import org.sxkj.fw.record.vo.FwDroneAlarmRecordVO; import javax.validation.Valid; import java.util.Objects; /** * 数据驾驶舱 * * @author lw * @since 2026-01-08 */ @RestController @AllArgsConstructor @RequestMapping("cockpit/dataCockpit") @Api(value = "驾驶舱", tags = "数据驾驶舱") public class CockpitController { private final IFwDroneAlarmRecordService fwDroneAlarmRecordService; private final IFwDeviceService fwDeviceService; private final IFwEffectEvalService fwEffectEvalService; /** * 历史告警、实时告警 */ @GetMapping("/alarmLog") @ApiOperationSupport(order = 1) @ApiOperation(value = "历史告警/实时告警", notes = "传入fwDroneAlarmRecord") public R> page(FwDroneAlarmRecordDTO fwDroneAlarmRecord, Query query) { IPage pages = fwDroneAlarmRecordService.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 = fwDeviceService.selectFwDevicePage(Condition.getPage(query), fwDevice); return R.data(FwDeviceWrapper.build().pageVO(pages)); } /** * 设备统计接口 */ @GetMapping("/deviceStatistics") @ApiOperationSupport(order = 3) @ApiOperation(value = "设备统计", notes = "返回设备统计、无线电、光电、雷达等数据") public R getDeviceStatistics() { DeviceStatisticsVO statistics = new DeviceStatisticsVO(); // 假设从服务层获取统计数据,这里仅示例填充数据 statistics.setDetectCount(3); statistics.setCountermeasuresCount(4); return R.data(statistics); } /** * 告警记录统计接口 */ @GetMapping("/alarmStatistics") @ApiOperationSupport(order = 4) @ApiOperation(value = "告警记录统计", notes = "返回实时告警、设备告警、历史告警数量") public R getAlarmStatistics() { AlarmStatisticsVO statistics = new AlarmStatisticsVO(); // 假设从服务层获取统计数据,这里仅示例填充数据 statistics.setDeviceCount(5); statistics.setRadioCount(1); statistics.setOpticalCount(2); statistics.setRadarCount(2); statistics.setRealTimeAlarmCount(5); statistics.setDeviceAlarmCount(5); statistics.setHistoryAlarmCount(5); return R.data(statistics); } /** * 信号干扰,诱导驱离 */ @PostMapping("/interferenceAndExpulsion") @ApiOperationSupport(order = 5) @ApiOperation(value = "信号干扰,诱导驱离", notes = "传入fwEffectEval") public R submit(@Valid @RequestBody FwEffectEvalDTO fwEffectEval) { FwEffectEvalEntity fwEffectEvalEntity = Objects.requireNonNull(BeanUtil.copy(fwEffectEval, FwEffectEvalEntity.class)); return R.status(fwEffectEvalService.saveOrUpdate(fwEffectEvalEntity)); } }