From 1566e4c7604d85737ea67fe6757e71b8185fa48e Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期二, 18 十一月 2025 16:52:42 +0800
Subject: [PATCH] 添加设备管理页面,添加测试设备任务监控页面

---
 mes-processes/mes-plcSend/src/main/java/com/mes/device/controller/DeviceConfigController.java |   66 ++++++++++++++++++++------------
 1 files changed, 41 insertions(+), 25 deletions(-)

diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/device/controller/DeviceConfigController.java b/mes-processes/mes-plcSend/src/main/java/com/mes/device/controller/DeviceConfigController.java
index 7a57917..c1f5da1 100644
--- a/mes-processes/mes-plcSend/src/main/java/com/mes/device/controller/DeviceConfigController.java
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/device/controller/DeviceConfigController.java
@@ -1,15 +1,16 @@
 package com.mes.device.controller;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.mes.device.entity.DeviceConfig;
 import com.mes.device.request.DeviceConfigRequest;
 import com.mes.device.service.DeviceConfigService;
 import com.mes.device.vo.DeviceConfigVO;
 import com.mes.device.vo.StatisticsVO;
 import com.mes.vo.Result;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -27,17 +28,20 @@
 @Slf4j
 @RestController
 @RequestMapping("device/config")
-@Tag(name = "璁惧閰嶇疆绠$悊", description = "璁惧閰嶇疆绠$悊鐩稿叧鎺ュ彛")
+@Api(tags = "璁惧閰嶇疆绠$悊")
 public class DeviceConfigController {
 
     @Autowired
     private DeviceConfigService deviceConfigService;
 
+    @Autowired
+    private ObjectMapper objectMapper;
+
     /**
      * 鍒涘缓璁惧閰嶇疆
      */
     @PostMapping("/devices")
-    @Operation(summary = "鍒涘缓璁惧閰嶇疆", description = "鍒涘缓鏂扮殑璁惧閰嶇疆")
+    @ApiOperation("鍒涘缓璁惧閰嶇疆")
     public Result<DeviceConfig> createDevice(
             @Valid @RequestBody DeviceConfig deviceConfig) {
         try {
@@ -59,11 +63,23 @@
      * 鏇存柊璁惧閰嶇疆
      */
     @PostMapping("/devices/update")
-    @Operation(summary = "鏇存柊璁惧閰嶇疆", description = "鏇存柊鎸囧畾ID鐨勮澶囬厤缃�")
+    @ApiOperation("鏇存柊璁惧閰嶇疆")
     public Result<DeviceConfig> updateDevice(
             @Valid @RequestBody DeviceConfigRequest request) {
         try {
-            DeviceConfig deviceConfig = (DeviceConfig) request.getDeviceConfig();
+            DeviceConfig deviceConfig;
+            Object deviceConfigObj = request.getDeviceConfig();
+            
+            // 濡傛灉 deviceConfig 鏄� Map 绫诲瀷锛圝SON 鍙嶅簭鍒楀寲鍚庣殑 LinkedHashMap锛夛紝闇�瑕佽浆鎹负 DeviceConfig
+            if (deviceConfigObj instanceof Map) {
+                deviceConfig = objectMapper.convertValue(deviceConfigObj, DeviceConfig.class);
+            } else if (deviceConfigObj instanceof DeviceConfig) {
+                deviceConfig = (DeviceConfig) deviceConfigObj;
+            } else {
+                log.error("涓嶆敮鎸佺殑 deviceConfig 绫诲瀷: {}", deviceConfigObj != null ? deviceConfigObj.getClass() : "null");
+                return Result.error("璁惧閰嶇疆鏁版嵁鏍煎紡閿欒");
+            }
+            
             deviceConfig.setId(request.getDeviceId());
             boolean success = deviceConfigService.updateDevice(deviceConfig);
             if (success) {
@@ -75,7 +91,7 @@
             }
         } catch (Exception e) {
             log.error("鏇存柊璁惧閰嶇疆澶辫触", e);
-            return Result.error("鏇存柊璁惧閰嶇疆澶辫触");
+            return Result.error("鏇存柊璁惧閰嶇疆澶辫触: " + e.getMessage());
         }
     }
 
@@ -83,7 +99,7 @@
      * 鍒犻櫎璁惧閰嶇疆
      */
     @PostMapping("/devices/delete")
-    @Operation(summary = "鍒犻櫎璁惧閰嶇疆", description = "鍒犻櫎鎸囧畾ID鐨勮澶囬厤缃�")
+    @ApiOperation("鍒犻櫎璁惧閰嶇疆")
     public Result<Void> deleteDevice(
             @Valid @RequestBody DeviceConfigRequest request) {
         try {
@@ -99,7 +115,7 @@
      * 鏍规嵁ID鑾峰彇璁惧閰嶇疆
      */
     @PostMapping("/devices/detail")
-    @Operation(summary = "鑾峰彇璁惧閰嶇疆璇︽儏", description = "鏍规嵁ID鑾峰彇璁惧閰嶇疆鐨勮缁嗕俊鎭�")
+    @ApiOperation("鑾峰彇璁惧閰嶇疆璇︽儏")
     public Result<DeviceConfig> getDeviceById(
             @Valid @RequestBody DeviceConfigRequest request) {
         try {
@@ -115,7 +131,7 @@
      * 鍒嗛〉鏌ヨ璁惧閰嶇疆鍒楄〃
      */
     @PostMapping("/devices/list")
-    @Operation(summary = "鍒嗛〉鏌ヨ璁惧閰嶇疆", description = "鍒嗛〉鏌ヨ璁惧閰嶇疆鍒楄〃")
+    @ApiOperation("鍒嗛〉鏌ヨ璁惧閰嶇疆")
     public Result<Page<DeviceConfigVO.DeviceInfo>> getDeviceList(
             @Valid @RequestBody DeviceConfigRequest request) {
         try {
@@ -137,7 +153,7 @@
      * 鍚敤璁惧
      */
     @PostMapping("/devices/enable")
-    @Operation(summary = "鍚敤璁惧", description = "鍚敤鎸囧畾ID鐨勮澶�")
+    @ApiOperation("鍚敤璁惧")
     public Result<Void> enableDevice(
             @Valid @RequestBody DeviceConfigRequest request) {
         try {
@@ -153,7 +169,7 @@
      * 绂佺敤璁惧
      */
     @PostMapping("/devices/disable")
-    @Operation(summary = "绂佺敤璁惧", description = "绂佺敤鎸囧畾ID鐨勮澶�")
+    @ApiOperation("绂佺敤璁惧")
     public Result<Void> disableDevice(
             @Valid @RequestBody DeviceConfigRequest request) {
         try {
@@ -169,7 +185,7 @@
      * 鎵归噺鍚敤璁惧
      */
     @PostMapping("/devices/batch-enable")
-    @Operation(summary = "鎵归噺鍚敤璁惧", description = "鎵归噺鍚敤鎸囧畾ID鍒楄〃鐨勮澶�")
+    @ApiOperation("鎵归噺鍚敤璁惧")
     public Result<Void> batchEnableDevices(
             @Valid @RequestBody DeviceConfigRequest request) {
         try {
@@ -185,7 +201,7 @@
      * 鎵归噺绂佺敤璁惧
      */
     @PostMapping("/devices/batch-disable")
-    @Operation(summary = "鎵归噺绂佺敤璁惧", description = "鎵归噺绂佺敤鎸囧畾ID鍒楄〃鐨勮澶�")
+    @ApiOperation("鎵归噺绂佺敤璁惧")
     public Result<Void> batchDisableDevices(
             @Valid @RequestBody DeviceConfigRequest request) {
         try {
@@ -201,9 +217,9 @@
      * 鑾峰彇璁惧缁熻淇℃伅
      */
     @PostMapping("/statistics/devices")
-    @Operation(summary = "鑾峰彇璁惧缁熻淇℃伅", description = "鑾峰彇璁惧鐩稿叧鐨勭粺璁′俊鎭�")
+    @ApiOperation("鑾峰彇璁惧缁熻淇℃伅")
     public Result<StatisticsVO.DeviceStatistics> getDeviceStatistics(
-            @Parameter(description = "璁惧閰嶇疆璇锋眰") @RequestBody(required = false) DeviceConfigRequest request) {
+            @ApiParam("璁惧閰嶇疆璇锋眰") @RequestBody(required = false) DeviceConfigRequest request) {
         try {
             StatisticsVO.DeviceStatistics statistics = deviceConfigService.getDeviceStatistics(request != null ? request.getProjectId() : null);
             return Result.success(statistics);
@@ -217,9 +233,9 @@
      * 妫�鏌ヨ澶囩紪鐮佹槸鍚﹀凡瀛樺湪
      */
     @PostMapping("/devices/check-code")
-    @Operation(summary = "妫�鏌ヨ澶囩紪鐮�", description = "妫�鏌ヨ澶囩紪鐮佹槸鍚﹀凡瀛樺湪")
+    @ApiOperation("妫�鏌ヨ澶囩紪鐮�")
     public Result<Boolean> checkDeviceCodeExists(
-            @Parameter(description = "璁惧閰嶇疆璇锋眰") @RequestBody DeviceConfigRequest request) {
+            @ApiParam("璁惧閰嶇疆璇锋眰") @RequestBody DeviceConfigRequest request) {
         try {
             boolean exists = deviceConfigService.isDeviceCodeExists(request.getDeviceCode(), request.getDeviceId());
             return Result.success(exists);
@@ -233,7 +249,7 @@
      * 鑾峰彇璁惧绫诲瀷鍒楄〃
      */
     @PostMapping("/devices/types")
-    @Operation(summary = "鑾峰彇璁惧绫诲瀷鍒楄〃", description = "鑾峰彇鎵�鏈夊彲鐢ㄧ殑璁惧绫诲瀷")
+    @ApiOperation("鑾峰彇璁惧绫诲瀷鍒楄〃")
     public Result<List<String>> getDeviceTypes(@RequestBody(required = false) Map<String, Object> request) {
         try {
             List<String> deviceTypes = deviceConfigService.getAllDeviceTypes();
@@ -248,7 +264,7 @@
      * 鑾峰彇璁惧鐘舵�佸垪琛�
      */
     @PostMapping("/devices/statuses")
-    @Operation(summary = "鑾峰彇璁惧鐘舵�佸垪琛�", description = "鑾峰彇鎵�鏈夊彲鐢ㄧ殑璁惧鐘舵��")
+    @ApiOperation("鑾峰彇璁惧鐘舵�佸垪琛�")
     public Result<List<String>> getDeviceStatuses(@RequestBody(required = false) Map<String, Object> request) {
         try {
             List<String> deviceStatuses = deviceConfigService.getAllDeviceStatuses();
@@ -263,9 +279,9 @@
      * 鑾峰彇璁惧閰嶇疆鏍戠粨鏋�
      */
     @PostMapping("/devices/tree")
-    @Operation(summary = "鑾峰彇璁惧閰嶇疆鏍戠粨鏋�", description = "鑾峰彇璁惧鍜岃澶囩粍鐨勬爲褰㈢粨鏋勬暟鎹�")
+    @ApiOperation("鑾峰彇璁惧閰嶇疆鏍戠粨鏋�")
     public Result<List<DeviceConfigVO.DeviceTreeNode>> getDeviceTree(
-            @Parameter(description = "璁惧閰嶇疆璇锋眰") @RequestBody(required = false) DeviceConfigRequest request) {
+            @ApiParam("璁惧閰嶇疆璇锋眰") @RequestBody(required = false) DeviceConfigRequest request) {
         try {
             List<DeviceConfigVO.DeviceTreeNode> treeData = deviceConfigService.getDeviceTree(request != null ? request.getProjectId() : null);
             return Result.success(treeData);
@@ -279,7 +295,7 @@
      * 璁惧鍋ュ悍妫�鏌�
      */
     @PostMapping("/devices/health-check")
-    @Operation(summary = "璁惧鍋ュ悍妫�鏌�", description = "瀵规寚瀹氳澶囪繘琛屽仴搴锋鏌�")
+    @ApiOperation("璁惧鍋ュ悍妫�鏌�")
     public Result<DeviceConfigVO.HealthCheckResult> performHealthCheck(
             @Valid @RequestBody DeviceConfigRequest request) {
         try {
@@ -298,7 +314,7 @@
      * 2. 鐩存帴浼犲叆 plcIp / plcPort / timeout 杩涜涓�娆℃�ф祴璇�
      */
     @PostMapping("/devices/test-connection")
-    @Operation(summary = "娴嬭瘯璁惧PLC杩炴帴", description = "鏍规嵁璁惧閰嶇疆娴嬭瘯PLC杩炴帴鏄惁鍙揪")
+    @ApiOperation("娴嬭瘯璁惧PLC杩炴帴")
     public Result<String> testDeviceConnection(@RequestBody Map<String, Object> body) {
         try {
             String plcIp = null;

--
Gitblit v1.8.0