From 19f59c243e8df97c8b9fd9dba4e758be8235d68b Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期二, 25 十一月 2025 17:02:54 +0800
Subject: [PATCH] 添加卧转立扫码、卧转立、大车、大理片笼基础任务流转逻辑

---
 mes-processes/mes-plcSend/src/main/java/com/mes/task/service/impl/MultiDeviceTaskServiceImpl.java |   51 ++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 48 insertions(+), 3 deletions(-)

diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/task/service/impl/MultiDeviceTaskServiceImpl.java b/mes-processes/mes-plcSend/src/main/java/com/mes/task/service/impl/MultiDeviceTaskServiceImpl.java
index f879887..2cdac06 100644
--- a/mes-processes/mes-plcSend/src/main/java/com/mes/task/service/impl/MultiDeviceTaskServiceImpl.java
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/task/service/impl/MultiDeviceTaskServiceImpl.java
@@ -19,8 +19,10 @@
 import com.mes.task.model.TaskExecutionResult;
 import com.mes.task.service.MultiDeviceTaskService;
 import com.mes.task.service.TaskExecutionEngine;
+import com.mes.task.service.TaskStatusNotificationService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -44,6 +46,7 @@
     private final DeviceGroupRelationMapper deviceGroupRelationMapper;
     private final TaskStepDetailMapper taskStepDetailMapper;
     private final TaskExecutionEngine taskExecutionEngine;
+    private final TaskStatusNotificationService notificationService;
     private final ObjectMapper objectMapper;
 
     @Override
@@ -67,6 +70,7 @@
             throw new IllegalArgumentException("鑷冲皯闇�瑕侀厤缃竴鏉$幓鐠僆D");
         }
 
+        // 鍒涘缓浠诲姟璁板綍
         MultiDeviceTask task = new MultiDeviceTask();
         task.setTaskId(generateTaskId(groupConfig));
         task.setGroupId(String.valueOf(groupConfig.getId()));
@@ -77,21 +81,62 @@
         task.setStartTime(new Date());
         save(task);
 
+        // 寮傛鎵ц浠诲姟锛岀珛鍗宠繑鍥炰换鍔D
+        executeTaskAsync(task, groupConfig, devices, parameters);
+
+        log.info("璁惧缁勪换鍔″凡鍚姩锛堝紓姝ユ墽琛岋級: taskId={}, groupId={}, groupName={}", 
+            task.getTaskId(), groupConfig.getId(), groupConfig.getGroupName());
+        
+        return task;
+    }
+
+    /**
+     * 寮傛鎵ц璁惧缁勪换鍔�
+     * 姣忎釜璁惧缁勪綔涓虹嫭绔嬬嚎绋嬫墽琛岋紝浜掍笉闃诲
+     */
+    @Async("deviceGroupTaskExecutor")
+    public void executeTaskAsync(MultiDeviceTask task, 
+                                  DeviceGroupConfig groupConfig, 
+                                  List<DeviceConfig> devices, 
+                                  TaskParameters parameters) {
         try {
+            log.info("寮�濮嬫墽琛岃澶囩粍浠诲姟: taskId={}, groupId={}, deviceCount={}", 
+                task.getTaskId(), groupConfig.getId(), devices.size());
+            
+            // 鏇存柊浠诲姟鐘舵�佷负杩愯涓�
+            task.setStatus(MultiDeviceTask.Status.RUNNING.name());
+            updateById(task);
+            
+            // 閫氱煡浠诲姟寮�濮�
+            notificationService.notifyTaskStatus(task);
+            
+            // 鎵ц浠诲姟
             TaskExecutionResult result = taskExecutionEngine.execute(task, groupConfig, devices, parameters);
+            
+            // 鏇存柊浠诲姟缁撴灉
             task.setStatus(result.isSuccess() ? MultiDeviceTask.Status.COMPLETED.name() : MultiDeviceTask.Status.FAILED.name());
             task.setErrorMessage(result.isSuccess() ? null : result.getMessage());
             task.setEndTime(new Date());
             task.setResultData(writeJson(result.getData()));
             updateById(task);
-            return task;
+            
+            // 閫氱煡浠诲姟瀹屾垚
+            notificationService.notifyTaskStatus(task);
+            
+            log.info("璁惧缁勪换鍔℃墽琛屽畬鎴�: taskId={}, success={}, message={}", 
+                task.getTaskId(), result.isSuccess(), result.getMessage());
+            
         } catch (Exception ex) {
-            log.error("澶氳澶囦换鍔℃墽琛屽紓甯�, taskId={}", task.getTaskId(), ex);
+            log.error("璁惧缁勪换鍔℃墽琛屽紓甯�: taskId={}, groupId={}", task.getTaskId(), groupConfig.getId(), ex);
+            
+            // 鏇存柊浠诲姟鐘舵�佷负澶辫触
             task.setStatus(MultiDeviceTask.Status.FAILED.name());
             task.setErrorMessage(ex.getMessage());
             task.setEndTime(new Date());
             updateById(task);
-            throw new RuntimeException("澶氳澶囦换鍔℃墽琛屽け璐�: " + ex.getMessage(), ex);
+            
+            // 閫氱煡浠诲姟澶辫触
+            notificationService.notifyTaskStatus(task);
         }
     }
 

--
Gitblit v1.8.0