From 628aa6a42e587e9f337e213f87f922fc2ab2af02 Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期二, 02 十二月 2025 17:00:39 +0800
Subject: [PATCH] 修改卧转立扫码到卧转立任务流转,卧转立判断玻璃超时时间
---
mes-processes/mes-plcSend/src/main/java/com/mes/task/service/impl/MultiDeviceTaskServiceImpl.java | 62 +++++++++++++++++++++++++++----
1 files changed, 54 insertions(+), 8 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 2cdac06..278a68f 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
@@ -20,7 +20,6 @@
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;
@@ -32,13 +31,13 @@
import java.util.Date;
import java.util.List;
import java.util.Locale;
+import java.util.Map;
/**
* 澶氳澶囦换鍔℃湇鍔″疄鐜�
*/
@Slf4j
@Service
-@RequiredArgsConstructor
public class MultiDeviceTaskServiceImpl extends ServiceImpl<MultiDeviceTaskMapper, MultiDeviceTask>
implements MultiDeviceTaskService {
@@ -48,6 +47,21 @@
private final TaskExecutionEngine taskExecutionEngine;
private final TaskStatusNotificationService notificationService;
private final ObjectMapper objectMapper;
+
+ public MultiDeviceTaskServiceImpl(
+ DeviceGroupConfigService deviceGroupConfigService,
+ DeviceGroupRelationMapper deviceGroupRelationMapper,
+ TaskStepDetailMapper taskStepDetailMapper,
+ TaskExecutionEngine taskExecutionEngine,
+ TaskStatusNotificationService notificationService,
+ ObjectMapper objectMapper) {
+ this.deviceGroupConfigService = deviceGroupConfigService;
+ this.deviceGroupRelationMapper = deviceGroupRelationMapper;
+ this.taskStepDetailMapper = taskStepDetailMapper;
+ this.taskExecutionEngine = taskExecutionEngine;
+ this.notificationService = notificationService;
+ this.objectMapper = objectMapper;
+ }
@Override
@Transactional(rollbackFor = Exception.class)
@@ -66,8 +80,15 @@
}
TaskParameters parameters = request.getParameters();
- if (parameters == null || CollectionUtils.isEmpty(parameters.getGlassIds())) {
- throw new IllegalArgumentException("鑷冲皯闇�瑕侀厤缃竴鏉$幓鐠僆D");
+ if (parameters == null) {
+ parameters = new TaskParameters();
+ }
+
+ // 榛樿鍏佽鍗ц浆绔嬫壂鐮佽澶囧湪浠诲姟鎵ц闃舵鑾峰彇鐜荤拑淇℃伅
+ boolean hasGlassIds = !CollectionUtils.isEmpty(parameters.getGlassIds());
+ if (!hasGlassIds) {
+ log.info("娴嬭瘯浠诲姟鏈彁渚涚幓鐠僆D锛屽皢鍦ㄨ澶囩粍娴佺▼涓敱鍗ц浆绔嬫壂鐮佽澶囬噰闆嗙幓鐠冧俊鎭�: groupId={}",
+ groupConfig.getId());
}
// 鍒涘缓浠诲姟璁板綍
@@ -113,11 +134,26 @@
// 鎵ц浠诲姟
TaskExecutionResult result = taskExecutionEngine.execute(task, groupConfig, devices, parameters);
- // 鏇存柊浠诲姟缁撴灉
+ // 妫�鏌ヤ换鍔℃暟鎹腑鏄惁鍖呭惈鎸佺画杩愯鐨勬爣璁�
+ Map<String, Object> resultData = result.getData();
+ boolean isContinuousTask = resultData != null && "浠诲姟宸插惎鍔紝瀹氭椂鍣ㄥ湪鍚庡彴杩愯涓�".equals(resultData.get("message"));
+
+ // 濡傛灉鏄寔缁繍琛岀殑浠诲姟锛堝畾鏃跺櫒妯″紡锛夛紝淇濇寔 RUNNING 鐘舵�侊紝涓嶆洿鏂颁负 COMPLETED
+ if (isContinuousTask && result.isSuccess()) {
+ log.info("浠诲姟宸插惎鍔ㄥ畾鏃跺櫒锛屼繚鎸佽繍琛岀姸鎬�: taskId={}, message={}",
+ task.getTaskId(), resultData.get("message"));
+ task.setResultData(writeJson(resultData));
+ updateById(task);
+ // 閫氱煡浠诲姟鐘舵�侊紙淇濇寔 RUNNING锛�
+ notificationService.notifyTaskStatus(task);
+ return;
+ }
+
+ // 鏇存柊浠诲姟缁撴灉锛堥潪鎸佺画杩愯鐨勪换鍔★級
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()));
+ task.setResultData(writeJson(resultData));
updateById(task);
// 閫氱煡浠诲姟瀹屾垚
@@ -161,12 +197,22 @@
if (task == null) {
return false;
}
- if (!MultiDeviceTask.Status.RUNNING.name().equals(task.getStatus())) {
+ // 鍏佽鍦� RUNNING 鎴� FAILED 鐘舵�佷笅鎵ц鍙栨秷鎿嶄綔
+ String status = task.getStatus();
+ boolean cancellable = MultiDeviceTask.Status.RUNNING.name().equals(status)
+ || MultiDeviceTask.Status.FAILED.name().equals(status);
+ if (!cancellable) {
return false;
}
+ // 鏍囪浠诲姟鍙栨秷骞跺仠姝㈡墍鏈夊畾鏃跺櫒
+ taskExecutionEngine.requestTaskCancellation(taskId);
task.setStatus(MultiDeviceTask.Status.CANCELLED.name());
task.setEndTime(new Date());
- return updateById(task);
+ boolean updated = updateById(task);
+ if (updated) {
+ notificationService.notifyTaskStatus(task);
+ }
+ return updated;
}
@Override
--
Gitblit v1.8.0