diff --git a/app.db b/app.db index b562b49..fe28804 100644 Binary files a/app.db and b/app.db differ diff --git a/src/main/java/com/iflytop/a800/TaskManager.java b/src/main/java/com/iflytop/a800/TaskManager.java index 771f411..8af5702 100644 --- a/src/main/java/com/iflytop/a800/TaskManager.java +++ b/src/main/java/com/iflytop/a800/TaskManager.java @@ -1,5 +1,6 @@ package com.iflytop.a800; import com.iflytop.uf.model.UfMdbDictItem; +import com.iflytop.uf.util.UfCommon; import jakarta.annotation.PostConstruct; import org.springframework.stereotype.Component; import java.util.ArrayList; @@ -34,18 +35,26 @@ public class TaskManager { // 清理掉结束的任务 tasks.removeIf(task -> UfMdbDictItem.match("TASK_STATUS", "FINISHED", task.getStatus())); - for ( var task : tasks ) { - if (UfMdbDictItem.match("TASK_STATUS", "READY", task.getStatus())) { - task.taskResume(); - return ; - } - } + // 寻找新的可执行的任务 + var thread = new Thread(() -> { + do { + for ( var task : tasks ) { + if (UfMdbDictItem.match("TASK_STATUS", "READY", task.getStatus())) { + task.taskResume(); + return ; + } + } - for ( var task : tasks ) { - if (UfMdbDictItem.match("TASK_STATUS", "NEW", task.getStatus())) { - task.start(); - return ; - } - } + for ( var task : tasks ) { + if (UfMdbDictItem.match("TASK_STATUS", "NEW", task.getStatus())) { + task.start(); + return ; + } + } + + UfCommon.delay(100); + } while ( true ); + }); + thread.start(); } } diff --git a/src/main/java/com/iflytop/a800/task/TubeRackTask.java b/src/main/java/com/iflytop/a800/task/TubeRackTask.java index 16bb234..5884b2a 100644 --- a/src/main/java/com/iflytop/a800/task/TubeRackTask.java +++ b/src/main/java/com/iflytop/a800/task/TubeRackTask.java @@ -69,7 +69,7 @@ public class TubeRackTask extends TaskBase { var testTask = new TubeTestTask(); testTask.tube = tube; testTask.project = project; - testTask.on("StartIncubating", this::onTubeTaskStartIncubating); + testTask.on("TubeSamplingFinished", this::onTubeSamplingFinished); taskMan.append(testTask); } } @@ -87,7 +87,7 @@ public class TubeRackTask extends TaskBase { } // tube task finish callback - private void onTubeTaskStartIncubating(Task task, List args ) { + private void onTubeSamplingFinished(Task task, List args) { TubeTestTask tubeTask = null; if ( !(task instanceof TubeTestTask) ) { return ;