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