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;
|
|
/**
|
* 远程监控设备
|
* <p>
|
* 温度、压力、能耗等关键参数实时监测,异常推送报警,支持远程启停控制
|
*/
|
@Api(tags = "远程监控设备")
|
@AllArgsConstructor
|
@RestController
|
@RequestMapping("/environmentAccess")
|
public class MonitorController {
|
|
private final MonitorService monitorService;
|
|
// ==================== 设备 ====================
|
|
@ApiOperation("监控设备分页")
|
@GetMapping("/monitorDevicePage")
|
public AjaxResult devicePage(Page<MonitorDevice> 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<Long> 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<Long> ids) {
|
return AjaxResult.success(monitorService.metricRemove(ids));
|
}
|
|
// ==================== 数据采集 ====================
|
|
@ApiOperation("监测历史数据(实时监测趋势曲线)")
|
@GetMapping("/monitorDataHistory")
|
public AjaxResult dataHistory(@RequestParam Long deviceId,
|
@RequestParam(required = false) String metricCode,
|
@RequestParam(required = false) String startTime,
|
@RequestParam(required = false) String endTime) {
|
return AjaxResult.success(monitorService.dataHistory(deviceId, metricCode, startTime, endTime));
|
}
|
|
@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<MonitorAlarm> 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<Long> 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<MonitorControl> page, MonitorControl query) {
|
return AjaxResult.success(monitorService.controlPage(page, query));
|
}
|
|
@ApiOperation("监控总览")
|
@GetMapping("/monitorOverview")
|
public AjaxResult overview() {
|
return AjaxResult.success(monitorService.overview());
|
}
|
}
|