package com.ruoyi.wrzs.monitor.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.wrzs.monitor.pojo.MonitorAlarm; import com.ruoyi.wrzs.monitor.pojo.MonitorControl; import com.ruoyi.wrzs.monitor.pojo.MonitorDevice; import com.ruoyi.wrzs.monitor.pojo.MonitorMetric; import com.ruoyi.wrzs.monitor.service.MonitorService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; import java.util.List; /** * 远程监控设备 *

* 温度、压力、能耗等关键参数实时监测,异常推送报警,支持远程启停控制 */ @Api(tags = "远程监控设备") @AllArgsConstructor @RestController @RequestMapping("/environmentAccess") public class MonitorController { private final MonitorService monitorService; // ==================== 设备 ==================== @ApiOperation("监控设备分页") @GetMapping("/monitorDevicePage") public AjaxResult devicePage(Page page, MonitorDevice query) { return AjaxResult.success(monitorService.devicePage(page, query)); } @ApiOperation("监控设备下拉列表") @GetMapping("/monitorDeviceList") public AjaxResult deviceList() { return AjaxResult.success(monitorService.deviceList()); } @ApiOperation("监控设备详情(含监测指标)") @GetMapping("/monitorDeviceInfo") public AjaxResult deviceInfo(@RequestParam Long id) { return AjaxResult.success(monitorService.deviceInfo(id)); } @ApiOperation("新增监控设备") @PostMapping("/monitorDeviceAdd") public AjaxResult deviceAdd(@RequestBody MonitorDevice device) { return AjaxResult.success(monitorService.deviceSave(device)); } @ApiOperation("修改监控设备") @PutMapping("/monitorDeviceUpdate") public AjaxResult deviceUpdate(@RequestBody MonitorDevice device) { return AjaxResult.success(monitorService.deviceUpdate(device)); } @ApiOperation("删除监控设备") @DeleteMapping("/monitorDeviceDelete") public AjaxResult deviceDelete(@RequestBody List ids) { return AjaxResult.success(monitorService.deviceRemove(ids)); } // ==================== 监测指标 ==================== @ApiOperation("监测指标列表") @GetMapping("/monitorMetricList") public AjaxResult metricList(@RequestParam(required = false) Long deviceId) { return AjaxResult.success(monitorService.metricList(deviceId)); } @ApiOperation("新增监测指标") @PostMapping("/monitorMetricAdd") public AjaxResult metricAdd(@RequestBody MonitorMetric metric) { return AjaxResult.success(monitorService.metricSave(metric)); } @ApiOperation("修改监测指标") @PutMapping("/monitorMetricUpdate") public AjaxResult metricUpdate(@RequestBody MonitorMetric metric) { return AjaxResult.success(monitorService.metricUpdate(metric)); } @ApiOperation("删除监测指标") @DeleteMapping("/monitorMetricDelete") public AjaxResult metricDelete(@RequestBody List ids) { return AjaxResult.success(monitorService.metricRemove(ids)); } // ==================== 数据采集 ==================== @ApiOperation("采集数据上报(自动采集/人工补录)") @PostMapping("/monitorDataReport") public AjaxResult dataReport(@RequestParam Long deviceId, @RequestParam String metricCode, @RequestParam BigDecimal value, @RequestParam(required = false, defaultValue = "0") String dataSource) { try { MonitorAlarm alarm = monitorService.dataReport(deviceId, metricCode, value, dataSource); AjaxResult result = AjaxResult.success(); result.put("alarm", alarm); result.put("alarmFlag", alarm != null); return result; } catch (IllegalArgumentException e) { return AjaxResult.error(e.getMessage()); } } // ==================== 报警 ==================== @ApiOperation("报警分页") @GetMapping("/monitorAlarmPage") public AjaxResult alarmPage(Page page, MonitorAlarm query) { return AjaxResult.success(monitorService.alarmPage(page, query)); } @ApiOperation("未处理报警列表(用于消息推送提示)") @GetMapping("/monitorAlarmUnhandled") public AjaxResult alarmUnhandled() { AjaxResult result = AjaxResult.success(monitorService.unhandledAlarms()); result.put("count", monitorService.unhandledAlarmCount()); return result; } @ApiOperation("处理报警") @PutMapping("/monitorAlarmHandle") public AjaxResult alarmHandle(@RequestParam Long id, @RequestParam(required = false) String handleRemark) { return AjaxResult.success(monitorService.alarmHandle(id, handleRemark)); } @ApiOperation("删除报警") @DeleteMapping("/monitorAlarmDelete") public AjaxResult alarmDelete(@RequestBody List ids) { return AjaxResult.success(monitorService.alarmRemove(ids)); } // ==================== 远程控制 ==================== @ApiOperation("远程启停控制") @PostMapping("/monitorControl") public AjaxResult control(@RequestParam Long deviceId, @RequestParam String command, @RequestParam(required = false) String remark) { try { return AjaxResult.success(monitorService.control(deviceId, command, remark)); } catch (IllegalArgumentException e) { return AjaxResult.error(e.getMessage()); } } @ApiOperation("远程控制记录分页") @GetMapping("/monitorControlPage") public AjaxResult controlPage(Page page, MonitorControl query) { return AjaxResult.success(monitorService.controlPage(page, query)); } @ApiOperation("监控总览") @GetMapping("/monitorOverview") public AjaxResult overview() { return AjaxResult.success(monitorService.overview()); } }