From 722f3d8cfd48e3db2836578b36cff648dee1f72a Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期二, 03 十一月 2026 13:22:09 +0800
Subject: [PATCH] feat: 设备遥测实时采集与报警推送

---
 src/main/java/com/ruoyi/unattended/telemetry/controller/DeviceTelemetryController.java |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/unattended/telemetry/controller/DeviceTelemetryController.java b/src/main/java/com/ruoyi/unattended/telemetry/controller/DeviceTelemetryController.java
index 212051b..528ca7a 100644
--- a/src/main/java/com/ruoyi/unattended/telemetry/controller/DeviceTelemetryController.java
+++ b/src/main/java/com/ruoyi/unattended/telemetry/controller/DeviceTelemetryController.java
@@ -6,6 +6,9 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.http.MediaType;
+import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
+import com.ruoyi.unattended.telemetry.service.DeviceAlarmPushService;
 
 import javax.annotation.Resource;
 import java.util.List;
@@ -21,6 +24,9 @@
     @Resource
     private DeviceTelemetryService deviceTelemetryService;
 
+    @Resource
+    private DeviceAlarmPushService alarmPushService;
+
     @GetMapping("/list")
     @ApiOperation("瀹炴椂鐩戞帶鍒楄〃")
     public AjaxResult list() {
@@ -31,6 +37,16 @@
     @ApiOperation("瑙﹀彂涓�娆¢噰闆�")
     public AjaxResult collect() {
         return AjaxResult.success(deviceTelemetryService.collectOnce());
+    }
+
+    @PostMapping("/report")
+    @ApiOperation("PLC/杈圭紭缃戝叧涓婃姤閬ユ祴鏁版嵁")
+    public AjaxResult report(@RequestBody DeviceTelemetry telemetry) {
+        try {
+            return AjaxResult.success(deviceTelemetryService.report(telemetry));
+        } catch (IllegalArgumentException e) {
+            return AjaxResult.error(e.getMessage());
+        }
     }
 
     @GetMapping("/history")
@@ -47,6 +63,12 @@
         return AjaxResult.success(deviceTelemetryService.alarms());
     }
 
+    @GetMapping(value = "/alarm-stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
+    @ApiOperation("璁㈤槄瀹炴椂鎶ヨ鎺ㄩ��")
+    public SseEmitter alarmStream() {
+        return alarmPushService.subscribe();
+    }
+
     @PostMapping("/control")
     @ApiOperation("杩滅▼鍚仠")
     public AjaxResult control(@RequestBody ControlRequest request) {

--
Gitblit v1.9.3