|
|
@ -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(); |
|
|
|