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 | 42 +++++++++++++++++++++++++++++++++++++++---
1 files changed, 39 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 6792e3a..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
@@ -22,6 +22,7 @@
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;
@@ -69,6 +70,7 @@
throw new IllegalArgumentException("鑷冲皯闇�瑕侀厤缃竴鏉$幓鐠僆D");
}
+ // 鍒涘缓浠诲姟璁板綍
MultiDeviceTask task = new MultiDeviceTask();
task.setTaskId(generateTaskId(groupConfig));
task.setGroupId(String.valueOf(groupConfig.getId()));
@@ -79,11 +81,39 @@
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());
@@ -93,14 +123,20 @@
// 閫氱煡浠诲姟瀹屾垚
notificationService.notifyTaskStatus(task);
- return 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