diff --git a/src/main/java/com/iflytop/a800/task/TubeRackTask.java b/src/main/java/com/iflytop/a800/task/TubeRackTask.java index c08d997..74d8bc7 100644 --- a/src/main/java/com/iflytop/a800/task/TubeRackTask.java +++ b/src/main/java/com/iflytop/a800/task/TubeRackTask.java @@ -10,6 +10,7 @@ import com.iflytop.a800.resource.TestTube; import com.iflytop.a800.resource.TestTubeRack; import com.iflytop.uf.UfActiveRecord; import com.iflytop.uf.model.UfMdbDictItem; +import com.iflytop.uf.model.UfMdbNotification; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -26,20 +27,29 @@ public class TubeRackTask extends TaskBase { @Override public void run() { - this.taskModel.status = UfMdbDictItem.getValue("TUBE_RACK_TASK_STATUS", "PROCESSING"); - this.taskModel.save(); + this.updateTaskModelStatus("PROCESSING"); var device = Device.getInstance(); var feeder = device.feeder; var taskMan = TaskManager.getInstance(); - feeder.feed(); this.samplingTubes = new ArrayList<>(); TestTubeRack tubeRack = new TestTubeRack(); - tubeRack.type = feeder.readTubeRackType(); + + try { + feeder.feed(); + tubeRack.type = feeder.readTubeRackType(); + this.taskModel.tubeType = tubeRack.type; + this.taskModel.save(); + } catch ( RuntimeException e ) { + this.updateTaskModelStatus("ERROR"); + UfMdbNotification.error(e.getMessage()); + feeder.exit(); + this.taskFinish(); + return ; + } + tubeRack.tubes = new ArrayList<>(); - this.taskModel.tubeType = tubeRack.type; - this.taskModel.save(); for (int i = 0; i < 10; i++) { var tube = new TestTube(); tube.index = i; @@ -112,4 +122,10 @@ public class TubeRackTask extends TaskBase { } this.setStatus("READY"); } + + // 更新试管架任务状态 + private void updateTaskModelStatus( String status ) { + this.taskModel.status = UfMdbDictItem.getValue("TUBE_RACK_TASK_STATUS", status); + this.taskModel.save(); + } }