4 changed files with 149 additions and 0 deletions
-
103src/src/main/java/com/my/graphiteDigesterBg/step/StepTakeOutFromErrorSlot.java
-
2src/web/src/pages/main/Page.vue
-
2src/web/src/pages/main/contents/TaskStepManagement.vue
-
42src/web/src/pages/main/contents/notification/TaskErrorDigestionStepTakeOutFromErrorSlot.vue
@ -0,0 +1,103 @@ |
|||||
|
package com.my.graphiteDigesterBg.step; |
||||
|
import com.my.graphiteDigesterBg.MyDevice; |
||||
|
import com.my.graphiteDigesterBg.diframe.DiTaskStepBase; |
||||
|
import com.my.graphiteDigesterBg.diframe.TaskStep; |
||||
|
import com.my.graphiteDigesterBg.diframe.actuator.DiActMotor; |
||||
|
import com.my.graphiteDigesterBg.diframe.actuator.DiActServo; |
||||
|
import com.my.graphiteDigesterBg.diframe.model.DiMdbNotification; |
||||
|
import com.my.graphiteDigesterBg.move.MoveDoorClose; |
||||
|
import com.my.graphiteDigesterBg.move.MoveDoorOpen; |
||||
|
import com.my.graphiteDigesterBg.resource.ResHeatingTubeRackSlotManager; |
||||
|
import com.my.graphiteDigesterBg.task.TaskDigestion; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
@TaskStep(name="TakeOutFromErrorSlot") |
||||
|
public class StepTakeOutFromErrorSlot extends DiTaskStepBase { |
||||
|
@Override |
||||
|
public void run() { |
||||
|
var task = (TaskDigestion)this.getTask(); |
||||
|
|
||||
|
var slot = task.getSlot(); |
||||
|
List<Integer> errorTubes = task.errorTubeIndexes; |
||||
|
if ( null == errorTubes ) { |
||||
|
errorTubes = new ArrayList<>(); |
||||
|
} |
||||
|
|
||||
|
// 开门 |
||||
|
MoveDoorOpen.execute(task.getDevice()); |
||||
|
|
||||
|
// 准备一个空试管架 |
||||
|
DiMdbNotification.taskAction(task,"TaskErrorDigestionStepTakeOutFromErrorSlot"); |
||||
|
task.waitAction("TaskErrorDigestionStepTakeOutFromErrorSlot"); |
||||
|
|
||||
|
// 关门 |
||||
|
MoveDoorClose.execute(task.getDevice()); |
||||
|
|
||||
|
for ( Integer errorTubeIndex : errorTubes ) { |
||||
|
this.takeOutFromErrorSlot(errorTubeIndex); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 从异常处理区域取出试管 |
||||
|
private void takeOutFromErrorSlot( Integer tubeIndex ) { |
||||
|
var task = (TaskDigestion)this.getTask(); |
||||
|
var slotMan = task.getResourceManager(ResHeatingTubeRackSlotManager.class); |
||||
|
var heatPlateMotor = this.getActuator(MyDevice.ACT_HEAT_PLATE_MOTOR, DiActMotor.class); |
||||
|
var transLrMotor = this.getActuator(MyDevice.ACT_TRANSFER_LR_MOTOR, DiActMotor.class); |
||||
|
var transUdMotor = this.getActuator(MyDevice.ACT_TRANSFER_UD_MOTOR, DiActMotor.class); |
||||
|
var transferClipServo = this.getActuator(MyDevice.ACT_TRANSFER_CLIP_SERVO, DiActServo.class); |
||||
|
var liquidPlateMotor = this.getActuator(MyDevice.ACT_LIQUID_PLATE_MOTOR, DiActMotor.class); |
||||
|
|
||||
|
// 打开试管架盖 |
||||
|
var errorSlot = slotMan.getErrorSlot(); |
||||
|
String errSlotKey = "HeatingPlateMotorSlotCover_" + errorSlot.index; |
||||
|
DiActServo coverServo = this.getActuator(errSlotKey, DiActServo.class); |
||||
|
coverServo.moveTo("HeatPlateSlotCoverOpen"); |
||||
|
// 加热转盘移动到试管位置 |
||||
|
heatPlateMotor.moveTo("HeatPlateErrorSlotTube", tubeIndex); |
||||
|
// 搬运左右移动到试管位置 |
||||
|
transLrMotor.moveTo("TransLrMotorHeatingPlateTube", tubeIndex); |
||||
|
// 打开试管夹 |
||||
|
transferClipServo.moveTo("TransClipServoOpenFromTube"); |
||||
|
// 升降下降到试管位置 |
||||
|
transUdMotor.moveTo("TransUdMotorTubeClip"); |
||||
|
// 试管夹关闭 |
||||
|
transferClipServo.moveTo("TransClipServoClose"); |
||||
|
// 升降移动到顶部 |
||||
|
transUdMotor.moveTo("TransUdMotorTop"); |
||||
|
// 搬运左右移动到就绪位置 |
||||
|
transLrMotor.moveTo("TransLrMotorStandby"); |
||||
|
// 盖上试管架盖 |
||||
|
coverServo.moveTo("HeatPlateSlotCoverClose"); |
||||
|
// 加液转盘移至就绪位置 |
||||
|
heatPlateMotor.moveTo("HeatPlateStandby"); |
||||
|
// 标记试管位置存在 |
||||
|
var errorRackSlot = slotMan.getErrorSlot(); |
||||
|
errorRackSlot.getTubes().get(tubeIndex).setHasTube(false); |
||||
|
|
||||
|
// 下方试管 |
||||
|
// 加液盘旋转到试管位置 |
||||
|
liquidPlateMotor.moveTo("LiquidPlateTube", tubeIndex); |
||||
|
// 搬运左右移动到试管位置 |
||||
|
transLrMotor.moveTo("TransLrMotorLiquidPlateTube", tubeIndex); |
||||
|
// 搬运上下移动到取试管位置 |
||||
|
transUdMotor.moveTo("TransUdMotorLiquidPlateTubeClip"); |
||||
|
// 搬运夹爪张开 |
||||
|
transferClipServo.moveTo("TransClipServoOpenForTube"); |
||||
|
// 搬运上下移动到顶部 |
||||
|
transUdMotor.moveTo("TransUdMotorTop"); |
||||
|
// 搬运夹爪关闭 |
||||
|
transferClipServo.moveTo("TransClipServoTubeClip"); |
||||
|
// 搬运左右移动到就绪位置 |
||||
|
transLrMotor.moveTo("TransLrMotorStandby"); |
||||
|
// 加液试管架回到就绪位置 |
||||
|
liquidPlateMotor.moveTo("LiquidPlateStandby"); |
||||
|
} |
||||
|
|
||||
|
// action done |
||||
|
public void actionDone( ) { |
||||
|
var task = (TaskDigestion)this.getTask(); |
||||
|
var action = task.getAction("TaskErrorDigestionStepTakeOutFromErrorSlot"); |
||||
|
action.finish(); |
||||
|
} |
||||
|
} |
@ -0,0 +1,42 @@ |
|||||
|
<template> |
||||
|
<a-modal v-if="enable" v-model:open="enable" title="放入试管架" |
||||
|
:closable="false" |
||||
|
:mask-closable="false" |
||||
|
> |
||||
|
<p>请放入空试管架, 完成后请点击 “确定” 按钮以继续。</p> |
||||
|
<template #footer> |
||||
|
<a-button type="primary" @click="actionOk">确定</a-button> |
||||
|
</template> |
||||
|
</a-modal> |
||||
|
</template> |
||||
|
<script setup> |
||||
|
import { onMounted, ref } from 'vue'; |
||||
|
import { useAppStore } from '@/stores/AppStore'; |
||||
|
import ApiClient from '@/utils/ApiClient'; |
||||
|
/** @var {AppStore} */ |
||||
|
const appStore = useAppStore(); |
||||
|
/** @var {Ref<boolean>} */ |
||||
|
const enable = ref(false); |
||||
|
/** @var {string} */ |
||||
|
let taskId = null; |
||||
|
// on mounted |
||||
|
onMounted(mounted); |
||||
|
|
||||
|
// mounted |
||||
|
function mounted() { |
||||
|
appStore.registerNotificationHandler('TaskErrorDigestionStepTakeOutFromErrorSlot', handleTaskErrorDigestionStepTakeOutFromErrorSlot); |
||||
|
} |
||||
|
|
||||
|
// handle TaskStartResetErrorTubeRackPutIn |
||||
|
function handleTaskErrorDigestionStepTakeOutFromErrorSlot( task ) { |
||||
|
taskId = task; |
||||
|
enable.value = true; |
||||
|
} |
||||
|
|
||||
|
// action ok |
||||
|
async function actionOk() { |
||||
|
enable.value = false; |
||||
|
let client = ApiClient.getClient(); |
||||
|
await client.taskStepActionExecute(taskId, "Done"); |
||||
|
} |
||||
|
</script> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue