Browse Source

跨任务取出异常试管处理

master
sige 1 year ago
parent
commit
31a7aae5a5
  1. 21
      src/main/java/com/iflytop/digester/DigestionTaskThread.java

21
src/main/java/com/iflytop/digester/DigestionTaskThread.java

@ -453,6 +453,11 @@ public class DigestionTaskThread extends Thread {
this.updateTaskStatus("ErrorRound", "移动异常试管架至加液区");
this.lockLiquidPlate("异常处理:检查是否存在消解完成的试管");
// 如果这个时候试管已经由其他任务拿走了后面也就不用处理了
if ( this.errorTubeIndexes.isEmpty() ) {
this.unlockLiquidPlate("异常轮次执行结束, 无异常试管");
return ;
}
device.transferArm.moveTubeRackToLiquidPlate(errorSlot.index);
// 拍照检查是否存在消解完成的试管
@ -487,19 +492,29 @@ public class DigestionTaskThread extends Thread {
this.unlockLiquidPlate("异常处理:消解完成的试管已取出");
// 更新异常试管索引列表
this.errorTubeIndexes.removeAll(this.finishedErrorTubeIndexes);
var tasks = this.manager.getTasks();
for ( var task : tasks ) {
task.errorTubeIndexRemoveItems(this.finishedErrorTubeIndexes);
}
for ( var index : this.finishedErrorTubeIndexes ) {
errorSlot.tubes.set(index, null);
}
String remainTubeIndexListStr = String.join(",", this.errorTubeIndexes.stream().map(Object::toString).toArray(String[]::new));
this.updateTaskStatus("ErrorRound", String.format("异常轮次执行结束, 异常试管剩余 : [%s]", remainTubeIndexListStr));
}
// 更新异常试管索引列表
public void errorTubeIndexRemoveItems( List<Integer> items ) {
this.errorTubeIndexes.removeAll(items);
}
// 拍照检查试管
private void executeErrorRoundTakeShotAndCheckFinishedTubes() {
this.updateTaskStatus("ErrorTubeCheck", "拍照检查异常试管,等待确认完成试管");
Map<String,Object> message = Map.of("batchNo", this.taskModel.batchNo, "taskId", this.taskModel.outTaskId);
Map<String,Object> message = new HashMap<>();
message.put("batchNo", this.taskModel.batchNo);
message.put("taskId", this.taskModel.outTaskId);
message.put("tubes", this.errorTubeIndexes);
UfMdbNotification.action("ErrorTubeCheck", message);
this.finishedErrorTubeIndexes.clear();

Loading…
Cancel
Save