From 77c376acfb89aea2a3d635ea3cef5049ef7a386e Mon Sep 17 00:00:00 2001 From: sige Date: Fri, 22 Mar 2024 13:11:30 +0800 Subject: [PATCH] ~ --- .../step/StepMoveToLiquidPlate.java | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/src/main/java/com/my/graphiteDigesterBg/step/StepMoveToLiquidPlate.java diff --git a/src/src/main/java/com/my/graphiteDigesterBg/step/StepMoveToLiquidPlate.java b/src/src/main/java/com/my/graphiteDigesterBg/step/StepMoveToLiquidPlate.java new file mode 100644 index 0000000..6e26453 --- /dev/null +++ b/src/src/main/java/com/my/graphiteDigesterBg/step/StepMoveToLiquidPlate.java @@ -0,0 +1,57 @@ +package com.my.graphiteDigesterBg.step; +import com.my.graphiteDigesterBg.diframe.DiTask; +import com.my.graphiteDigesterBg.diframe.DiTaskStepBase; +import com.my.graphiteDigesterBg.diframe.TaskStep; +import com.my.graphiteDigesterBg.move.MoveMoveTubeRackFromHeatPlateToLiquidPlate; +import com.my.graphiteDigesterBg.resource.ResHeatingTubeRackSlot; +import com.my.graphiteDigesterBg.resource.ResHeatingTubeRackSlotManager; +import com.my.graphiteDigesterBg.task.TaskDigestion; +import java.util.Timer; +import java.util.TimerTask; +@TaskStep(name="MoveToLiquidPlate") +public class StepMoveToLiquidPlate extends DiTaskStepBase { + @Override + public void run() { + TaskDigestion task = (TaskDigestion)this.getTask(); + var slot = task.getSlot(); + + // 如果试管架在加液板位置,则不需要移动 + if (ResHeatingTubeRackSlot.LOCATION_LIQUID_PLATE.equals(slot.rackPosition)) { + return; + } + + var isReady = this.waitForLiquidPlate(); + if ( !isReady ) { + return; + } + + // 移动试管架至加热板位置 + slot.setRackPosition(ResHeatingTubeRackSlot.LOCATION_LIQUID_PLATE); + var move = new MoveMoveTubeRackFromHeatPlateToLiquidPlate(); + move.setDevice(task.getDevice()); + move.slotIndex = slot.index; + move.run(); + } + + // 等待加液板位置空闲 + private Boolean waitForLiquidPlate() { + TaskDigestion task = (TaskDigestion)this.getTask(); + var slotMan = task.getResourceManager(ResHeatingTubeRackSlotManager.class); + if ( null == slotMan.getSlotAtLiquidPlate() ) { + return true; + } + + LOG.info("等待加液板位置空闲 ..."); + task.setStatus(DiTask.TaskStatus.STEP_WAITING); + + var timerTask = new TimerTask() { + @Override + public void run() { + task.setStatus(DiTask.TaskStatus.READY); + } + }; + var timer = new Timer(); + timer.schedule(timerTask, 1000); + return false; + } +}