sige 1 year ago
parent
commit
7e3ecd282c
  1. BIN
      app.db
  2. 64
      src/main/java/com/iflytop/digester/DigestionTaskThread.java

BIN
app.db

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

@ -285,40 +285,46 @@ public class DigestionTaskThread extends Thread {
// 拍照检查异常试管
this.executeLastRoundTakeShotAndCheckErrorTubes();
// 申请异常处理位
var errorSlot = device.heatingTurntable.getErrorSlot();
var emptyTubeIndexes = errorSlot.getEmptyTubeIndexes(this.errorTubeIndexes.size());
var errorTubeIndexes = this.errorTubeIndexes;
if ( emptyTubeIndexes.size() < this.errorTubeIndexes.size() ) {
errorTubeIndexes = this.errorTubeIndexes.subList(0, emptyTubeIndexes.size());
}
// 将异常试管放入异常处理区域
String srcErrorTubeIndexes = String.join(",", errorTubeIndexes.stream().map(Object::toString).toArray(String[]::new));
String dstErrorTubeIndexes = String.join(",", emptyTubeIndexes.stream().map(Object::toString).toArray(String[]::new));
this.updateTaskStatus("MoveTube", String.format("移动异常试管 [%s] -> [%s]", srcErrorTubeIndexes, dstErrorTubeIndexes));
device.transferArm.moveTubesToErrorSlot(errorTubeIndexes, emptyTubeIndexes);
this.errorTubeIndexes.clear();
this.errorTubeIndexes.addAll(emptyTubeIndexes);
// 如果启用异常处理则执行异常处理操作
Boolean errorProcessEnable = UfMdbOption.getBoolean("DigestionTaskErrorProcessEnable", true);
if ( errorProcessEnable ) {
// 申请异常处理位
var errorSlot = device.heatingTurntable.getErrorSlot();
var emptyTubeIndexes = errorSlot.getEmptyTubeIndexes(this.errorTubeIndexes.size());
var errorTubeIndexes = this.errorTubeIndexes;
if ( emptyTubeIndexes.size() < this.errorTubeIndexes.size() ) {
errorTubeIndexes = this.errorTubeIndexes.subList(0, emptyTubeIndexes.size());
}
// 更新试管状态
for ( int i=0; i<errorTubeIndexes.size(); i++ ) {
var srcErrorTubeIndex = errorTubeIndexes.get(i);
var destErrorTubeIndex = emptyTubeIndexes.get(i);
// 将异常试管放入异常处理区域
String srcErrorTubeIndexes = String.join(",", errorTubeIndexes.stream().map(Object::toString).toArray(String[]::new));
String dstErrorTubeIndexes = String.join(",", emptyTubeIndexes.stream().map(Object::toString).toArray(String[]::new));
this.updateTaskStatus("MoveTube", String.format("移动异常试管 [%s] -> [%s]", srcErrorTubeIndexes, dstErrorTubeIndexes));
device.transferArm.moveTubesToErrorSlot(errorTubeIndexes, emptyTubeIndexes);
this.errorTubeIndexes.clear();
this.errorTubeIndexes.addAll(emptyTubeIndexes);
// 更新试管状态
for ( int i=0; i<errorTubeIndexes.size(); i++ ) {
var srcErrorTubeIndex = errorTubeIndexes.get(i);
var destErrorTubeIndex = emptyTubeIndexes.get(i);
var tube = this.heatingSlot.tubes.get(srcErrorTubeIndex);
tube.index = destErrorTubeIndex;
errorSlot.tubes.set(destErrorTubeIndex, tube);
this.heatingSlot.tubes.set(srcErrorTubeIndex, null);
}
var tube = this.heatingSlot.tubes.get(srcErrorTubeIndex);
tube.index = destErrorTubeIndex;
errorSlot.tubes.set(destErrorTubeIndex, tube);
this.heatingSlot.tubes.set(srcErrorTubeIndex, null);
}
// 将正常试管放入加热转盘
device.transferArm.moveTubeRackToHeatingTurntable(this.heatingSlot.index);
this.unlockLiquidPlate();
// 将正常试管放入加热转盘
device.transferArm.moveTubeRackToHeatingTurntable(this.heatingSlot.index);
this.unlockLiquidPlate();
// 启动异常处理线程
DigestionTaskThread.this.errorProcessThread = new Thread(DigestionTaskThread.this::executeErrorProcess);
DigestionTaskThread.this.errorProcessThread.start();
}
// 启动异常处理线程
DigestionTaskThread.this.errorProcessThread = new Thread(DigestionTaskThread.this::executeErrorProcess);
DigestionTaskThread.this.errorProcessThread.start();
// 预检查完成
DigestionTaskThread.this.isPrecheckFinished = true;
synchronized ( DigestionTaskThread.this.precheckLock ) {

Loading…
Cancel
Save