From 366ba040d2447bacd3455299425e3166f1f992bb Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期四, 20 十一月 2025 14:38:32 +0800
Subject: [PATCH] 添加大车、大理片笼以及多设备串行/并行执行写入基础逻辑

---
 mes-processes/mes-plcSend/src/main/java/com/mes/device/controller/DeviceGroupController.java |  110 +++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 79 insertions(+), 31 deletions(-)

diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/device/controller/DeviceGroupController.java b/mes-processes/mes-plcSend/src/main/java/com/mes/device/controller/DeviceGroupController.java
index 88e657c..fc0bc8e 100644
--- a/mes-processes/mes-plcSend/src/main/java/com/mes/device/controller/DeviceGroupController.java
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/device/controller/DeviceGroupController.java
@@ -1,6 +1,7 @@
 package com.mes.device.controller;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.mes.device.entity.DeviceGroupConfig;
 import com.mes.device.request.DeviceGroupRequest;
 import com.mes.device.service.DeviceGroupConfigService;
@@ -8,8 +9,8 @@
 import com.mes.device.vo.DeviceGroupVO;
 import com.mes.device.vo.StatisticsVO;
 import com.mes.vo.Result;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -29,7 +30,7 @@
 @Slf4j
 @RestController
 @RequestMapping("device/group")
-@Tag(name = "璁惧缁勭鐞�", description = "璁惧缁勭鐞嗙浉鍏虫帴鍙�")
+@Api(tags = "璁惧缁勭鐞�")
 public class DeviceGroupController {
 
     @Resource
@@ -37,27 +38,33 @@
 
     @Autowired
     private DeviceGroupRelationService deviceGroupRelationService;
+    
+    @Resource
+    private ObjectMapper objectMapper;
 
     /**
      * 鍒涘缓璁惧缁�
      */
     @PostMapping("/create")
-    @Operation(summary = "鍒涘缓璁惧缁�", description = "鍒涘缓璁惧缁勪俊鎭�")
+    @ApiOperation("鍒涘缓璁惧缁�")
     public Result<DeviceGroupConfig> createGroup(
             @Valid @RequestBody DeviceGroupRequest request) {
         try {
-            DeviceGroupConfig groupConfig = (DeviceGroupConfig) request.getGroupConfig();
+            DeviceGroupConfig groupConfig = convertToDeviceGroupConfig(request.getGroupConfig());
+            if (groupConfig == null) {
+                return Result.error("璁惧缁勯厤缃俊鎭笉鑳戒负绌�");
+            }
             boolean success = deviceGroupConfigService.createDeviceGroup(groupConfig);
             if (success) {
                 // 鍒涘缓鎴愬姛鍚庯紝閲嶆柊鑾峰彇璁惧缁勫璞�
                 DeviceGroupConfig created = deviceGroupConfigService.getDeviceGroupByCode(groupConfig.getGroupCode());
                 return Result.success(created);
             } else {
-                return Result.error();
+                return Result.error("鍒涘缓璁惧缁勫け璐�");
             }
         } catch (Exception e) {
             log.error("鍒涘缓璁惧缁勫け璐�", e);
-            return Result.error();
+            return Result.error("鍒涘缓璁惧缁勫け璐�: " + e.getMessage());
         }
     }
 
@@ -65,11 +72,17 @@
      * 鏇存柊璁惧缁勯厤缃�
      */
     @PostMapping("/update")
-    @Operation(summary = "鏇存柊璁惧缁勯厤缃�", description = "鏇存柊鎸囧畾ID鐨勮澶囩粍閰嶇疆")
+    @ApiOperation("鏇存柊璁惧缁勯厤缃�")
     public Result<DeviceGroupConfig> updateGroup(
             @Valid @RequestBody DeviceGroupRequest request) {
         try {
-            DeviceGroupConfig groupConfig = (DeviceGroupConfig) request.getGroupConfig();
+            if (request.getGroupId() == null) {
+                return Result.error("璁惧缁処D涓嶈兘涓虹┖");
+            }
+            DeviceGroupConfig groupConfig = convertToDeviceGroupConfig(request.getGroupConfig());
+            if (groupConfig == null) {
+                return Result.error("璁惧缁勯厤缃俊鎭笉鑳戒负绌�");
+            }
             groupConfig.setId(request.getGroupId());
             boolean success = deviceGroupConfigService.updateDeviceGroup(groupConfig);
             if (success) {
@@ -77,11 +90,11 @@
                 DeviceGroupConfig updated = deviceGroupConfigService.getDeviceGroupByCode(groupConfig.getGroupCode());
                 return Result.success(updated);
             } else {
-                return Result.error();
+                return Result.error("鏇存柊璁惧缁勯厤缃け璐�");
             }
         } catch (Exception e) {
             log.error("鏇存柊璁惧缁勯厤缃け璐�", e);
-            return Result.error();
+            return Result.error("鏇存柊璁惧缁勯厤缃け璐�: " + e.getMessage());
         }
     }
 
@@ -89,7 +102,7 @@
      * 鍒犻櫎璁惧缁勯厤缃�
      */
     @PostMapping("/delete")
-    @Operation(summary = "鍒犻櫎璁惧缁勯厤缃�", description = "鍒犻櫎鎸囧畾ID鐨勮澶囩粍閰嶇疆")
+    @ApiOperation("鍒犻櫎璁惧缁勯厤缃�")
     public Result<Void> deleteGroup(
             @Valid @RequestBody DeviceGroupRequest request) {
         try {
@@ -105,7 +118,7 @@
      * 鏍规嵁ID鑾峰彇璁惧缁勯厤缃�
      */
     @PostMapping("/detail")
-    @Operation(summary = "鑾峰彇璁惧缁勯厤缃鎯�", description = "鏍规嵁ID鑾峰彇璁惧缁勯厤缃殑璇︾粏淇℃伅")
+    @ApiOperation("鑾峰彇璁惧缁勯厤缃鎯�")
     public Result<DeviceGroupConfig> getGroupById(
             @Valid @RequestBody DeviceGroupRequest request) {
         try {
@@ -121,7 +134,7 @@
      * 鍒嗛〉鏌ヨ璁惧缁勫垪琛�
      */
     @PostMapping("/list")
-    @Operation(summary = "鍒嗛〉鏌ヨ璁惧缁勫垪琛�", description = "鍒嗛〉鏌ヨ璁惧缁勫垪琛�")
+    @ApiOperation("鍒嗛〉鏌ヨ璁惧缁勫垪琛�")
     public Result<Page<DeviceGroupVO.GroupInfo>> getGroupList(
             @Valid @RequestBody DeviceGroupRequest request) {
         try {
@@ -146,7 +159,7 @@
      * 鍚敤璁惧缁�
      */
     @PostMapping("/enable")
-    @Operation(summary = "鍚敤璁惧缁�", description = "鍚敤鎸囧畾璁惧缁�")
+    @ApiOperation("鍚敤璁惧缁�")
     public Result<Void> enableGroup(
             @Valid @RequestBody DeviceGroupRequest request) {
         try {
@@ -162,7 +175,7 @@
      * 绂佺敤璁惧缁�
      */
     @PostMapping("/disable")
-    @Operation(summary = "绂佺敤璁惧缁�", description = "绂佺敤鎸囧畾璁惧缁�")
+    @ApiOperation("绂佺敤璁惧缁�")
     public Result<Void> disableGroup(
             @Valid @RequestBody DeviceGroupRequest request) {
         try {
@@ -178,7 +191,7 @@
      * 鎵归噺鍚敤璁惧缁�
      */
     @PostMapping("/batch-enable")
-    @Operation(summary = "鎵归噺鍚敤璁惧缁�", description = "鎵归噺鍚敤鎸囧畾ID鍒楄〃鐨勮澶囩粍")
+    @ApiOperation("鎵归噺鍚敤璁惧缁�")
     public Result<Void> batchEnableGroups(
             @Valid @RequestBody DeviceGroupRequest request) {
         try {
@@ -194,7 +207,7 @@
      * 鎵归噺绂佺敤璁惧缁�
      */
     @PostMapping("/batch-disable")
-    @Operation(summary = "鎵归噺绂佺敤璁惧缁�", description = "鎵归噺绂佺敤鎸囧畾ID鍒楄〃鐨勮澶囩粍")
+    @ApiOperation("鎵归噺绂佺敤璁惧缁�")
     public Result<Void> batchDisableGroups(
             @Valid @RequestBody DeviceGroupRequest request) {
         try {
@@ -210,7 +223,7 @@
      * 鑾峰彇璁惧缁勭粺璁′俊鎭�
      */
     @PostMapping("/statistics/groups")
-    @Operation(summary = "鑾峰彇璁惧缁勭粺璁′俊鎭�", description = "鑾峰彇璁惧缁勭浉鍏崇殑缁熻淇℃伅")
+    @ApiOperation("鑾峰彇璁惧缁勭粺璁′俊鎭�")
     public Result<StatisticsVO.GroupStatistics> getGroupStatistics(
             @RequestBody(required = false) Map<String, Object> request) {
         try {
@@ -227,7 +240,7 @@
      * 妫�鏌ヨ澶囩粍缂栫爜鏄惁宸插瓨鍦�
      */
     @PostMapping("/check-code")
-    @Operation(summary = "妫�鏌ヨ澶囩粍缂栫爜", description = "妫�鏌ヨ澶囩粍缂栫爜鏄惁宸插瓨鍦�")
+    @ApiOperation("妫�鏌ヨ澶囩粍缂栫爜")
     public Result<Boolean> checkGroupCodeExists(
             @Valid @RequestBody DeviceGroupRequest request) {
         try {
@@ -247,7 +260,7 @@
      * 鑾峰彇璁惧缁勭被鍨嬪垪琛�
      */
     @PostMapping("/types")
-    @Operation(summary = "鑾峰彇璁惧缁勭被鍨嬪垪琛�", description = "鑾峰彇鎵�鏈夊彲鐢ㄧ殑璁惧缁勭被鍨�")
+    @ApiOperation("鑾峰彇璁惧缁勭被鍨嬪垪琛�")
     public Result<List<String>> getGroupTypes() {
         try {
             List<String> groupTypes = deviceGroupConfigService.getAllGroupTypes();
@@ -262,7 +275,7 @@
      * 鑾峰彇璁惧缁勭姸鎬佸垪琛�
      */
     @PostMapping("/statuses")
-    @Operation(summary = "鑾峰彇璁惧缁勭姸鎬佸垪琛�", description = "鑾峰彇鎵�鏈夊彲鐢ㄧ殑璁惧缁勭姸鎬�")
+    @ApiOperation("鑾峰彇璁惧缁勭姸鎬佸垪琛�")
     public Result<List<String>> getGroupStatuses() {
         try {
             List<String> groupStatuses = deviceGroupConfigService.getAllGroupStatuses();
@@ -277,7 +290,7 @@
      * 娣诲姞璁惧鍒拌澶囩粍
      */
     @PostMapping("/devices")
-    @Operation(summary = "娣诲姞璁惧鍒拌澶囩粍", description = "灏嗘寚瀹氳澶囨坊鍔犲埌璁惧缁勪腑")
+    @ApiOperation("娣诲姞璁惧鍒拌澶囩粍")
     public Result<Void> addDeviceToGroup(
             @Valid @RequestBody DeviceGroupRequest request) {
         try {
@@ -294,7 +307,7 @@
      * 浠庤澶囩粍绉婚櫎璁惧
      */
     @PostMapping("/devices/remove")
-    @Operation(summary = "浠庤澶囩粍绉婚櫎璁惧", description = "浠庤澶囩粍涓Щ闄ゆ寚瀹氳澶�")
+    @ApiOperation("浠庤澶囩粍绉婚櫎璁惧")
     public Result<Void> removeDeviceFromGroup(
             @Valid @RequestBody DeviceGroupRequest request) {
         try {
@@ -310,7 +323,7 @@
      * 鏇存柊璁惧瑙掕壊
      */
     @PostMapping("/devices/role")
-    @Operation(summary = "鏇存柊璁惧瑙掕壊", description = "鏇存柊璁惧鍦ㄨ澶囩粍涓殑瑙掕壊")
+    @ApiOperation("鏇存柊璁惧瑙掕壊")
     public Result<Void> updateDeviceRole(
             @Valid @RequestBody DeviceGroupRequest request) {
         try {
@@ -327,7 +340,7 @@
      * 鑾峰彇璁惧缁勮澶囧垪琛�
      */
     @PostMapping("/devices/list")
-    @Operation(summary = "鑾峰彇璁惧缁勮澶囧垪琛�", description = "鑾峰彇鎸囧畾璁惧缁勪笅鐨勬墍鏈夎澶�")
+    @ApiOperation("鑾峰彇璁惧缁勮澶囧垪琛�")
     public Result<List<DeviceGroupVO.DeviceInfo>> getGroupDevices(
             @Valid @RequestBody DeviceGroupRequest request) {
         try {
@@ -343,7 +356,7 @@
      * 鑾峰彇璁惧璁惧缁勫垪琛�
      */
     @PostMapping("/devices/groups")
-    @Operation(summary = "鑾峰彇璁惧璁惧缁勫垪琛�", description = "鑾峰彇鎸囧畾璁惧鎵�灞炵殑鎵�鏈夎澶囩粍")
+    @ApiOperation("鑾峰彇璁惧璁惧缁勫垪琛�")
     public Result<List<DeviceGroupVO.GroupInfo>> getDeviceGroups(
             @Valid @RequestBody DeviceGroupRequest request) {
         try {
@@ -359,7 +372,7 @@
      * 鎵归噺娣诲姞璁惧鍒拌澶囩粍
      */
     @PostMapping("/batch-add-devices")
-    @Operation(summary = "鎵归噺娣诲姞璁惧鍒拌澶囩粍", description = "鎵归噺灏嗘寚瀹氳澶囧垪琛ㄦ坊鍔犲埌璁惧缁勪腑")
+    @ApiOperation("鎵归噺娣诲姞璁惧鍒拌澶囩粍")
     public Result<Void> batchAddDevicesToGroup(
             @Valid @RequestBody DeviceGroupRequest request) {
         try {
@@ -375,7 +388,7 @@
      * 鎵归噺浠庤澶囩粍绉婚櫎璁惧
      */
     @PostMapping("/devices/batch-remove")
-    @Operation(summary = "鎵归噺浠庤澶囩粍绉婚櫎璁惧", description = "鎵归噺浠庤澶囩粍涓Щ闄ゆ寚瀹氳澶囧垪琛�")
+    @ApiOperation("鎵归噺浠庤澶囩粍绉婚櫎璁惧")
     public Result<Void> batchRemoveDevicesFromGroup(
             @Valid @RequestBody DeviceGroupRequest request) {
         try {
@@ -391,7 +404,7 @@
      * 璁惧缁勫仴搴锋鏌�
      */
     @PostMapping("/health-check")
-    @Operation(summary = "璁惧缁勫仴搴锋鏌�", description = "瀵规寚瀹氳澶囩粍杩涜鍋ュ悍妫�鏌�")
+    @ApiOperation("璁惧缁勫仴搴锋鏌�")
     public Result<DeviceGroupVO.HealthCheckResult> performGroupHealthCheck(
             @Valid @RequestBody DeviceGroupRequest request) {
         try {
@@ -407,7 +420,7 @@
      * 鑾峰彇璁惧缁勬�ц兘缁熻
      */
     @PostMapping("/performance")
-    @Operation(summary = "鑾峰彇璁惧缁勬�ц兘缁熻", description = "鑾峰彇鎸囧畾璁惧缁勭殑鎬ц兘缁熻淇℃伅")
+    @ApiOperation("鑾峰彇璁惧缁勬�ц兘缁熻")
     public Result<DeviceGroupVO.PerformanceStats> getGroupPerformance(
             @Valid @RequestBody DeviceGroupRequest request) {
         try {
@@ -418,4 +431,39 @@
             return Result.error();
         }
     }
+    
+    /**
+     * 灏哋bject杞崲涓篋eviceGroupConfig
+     * 
+     * @param obj 寰呰浆鎹㈢殑瀵硅薄
+     * @return DeviceGroupConfig瀵硅薄锛屽鏋滆浆鎹㈠け璐ヨ繑鍥瀗ull
+     */
+    private DeviceGroupConfig convertToDeviceGroupConfig(Object obj) {
+        if (obj == null) {
+            return null;
+        }
+        
+        // 濡傛灉宸茬粡鏄疍eviceGroupConfig绫诲瀷锛岀洿鎺ヨ繑鍥�
+        if (obj instanceof DeviceGroupConfig) {
+            return (DeviceGroupConfig) obj;
+        }
+        
+        // 濡傛灉鏄疢ap绫诲瀷锛屼娇鐢∣bjectMapper杞崲
+        if (obj instanceof Map) {
+            try {
+                return objectMapper.convertValue(obj, DeviceGroupConfig.class);
+            } catch (Exception e) {
+                log.error("杞崲Map鍒癉eviceGroupConfig澶辫触", e);
+                return null;
+            }
+        }
+        
+        // 鍏朵粬绫诲瀷锛屽皾璇曚娇鐢∣bjectMapper杞崲
+        try {
+            return objectMapper.convertValue(obj, DeviceGroupConfig.class);
+        } catch (Exception e) {
+            log.error("杞崲Object鍒癉eviceGroupConfig澶辫触: obj={}", obj, e);
+            return null;
+        }
+    }
 }
\ No newline at end of file

--
Gitblit v1.8.0