From 31a7aae5a56d1ee42b513e81dd6c301700eac0b6 Mon Sep 17 00:00:00 2001 From: sige Date: Tue, 28 May 2024 18:48:46 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=A8=E4=BB=BB=E5=8A=A1=E5=8F=96=E5=87=BA?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E8=AF=95=E7=AE=A1=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iflytop/digester/DigestionTaskThread.java | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/iflytop/digester/DigestionTaskThread.java b/src/main/java/com/iflytop/digester/DigestionTaskThread.java index 0085b12..4716001 100644 --- a/src/main/java/com/iflytop/digester/DigestionTaskThread.java +++ b/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 items ) { + this.errorTubeIndexes.removeAll(items); + } + // 拍照检查试管 private void executeErrorRoundTakeShotAndCheckFinishedTubes() { this.updateTaskStatus("ErrorTubeCheck", "拍照检查异常试管,等待确认完成试管"); - Map message = Map.of("batchNo", this.taskModel.batchNo, "taskId", this.taskModel.outTaskId); + Map 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();