sige 1 year ago
parent
commit
db60a53c08
  1. 4
      src/src/main/java/com/my/graphiteDigesterBg/move/MoveLiquidAdd.java
  2. 36
      src/src/main/java/com/my/graphiteDigesterBg/resource/ResHeatingTubeRackSlot.java
  3. 23
      src/src/main/java/com/my/graphiteDigesterBg/resource/ResHeatingTubeRackTubeSlot.java
  4. 4
      src/src/main/java/com/my/graphiteDigesterBg/task/TaskSampleAdd.java

4
src/src/main/java/com/my/graphiteDigesterBg/move/MoveLiquidAdd.java

@ -110,7 +110,7 @@ public class MoveLiquidAdd extends DiTaskMoveBase {
slotIndex = slotGroupIndexList.get(pumpIndex*2+1);
}
var tubeStatus = this.slot.getTubeStatus(slotIndex);
return ResHeatingTubeRackSlot.TUBE_STATUS_USED.equals(tubeStatus);
var tube = this.slot.getTubes().get(slotIndex);
return tube.getHasTube();
}
}

36
src/src/main/java/com/my/graphiteDigesterBg/resource/ResHeatingTubeRackSlot.java

@ -41,17 +41,20 @@ public class ResHeatingTubeRackSlot {
public String taskUuid;
// manager
private final ResHeatingTubeRackSlotManager manager;
// tube status list
private final List<String> tubeStatusList;
// tube rack location
private final List<ResHeatingTubeRackTubeSlot> tubes;
// constructor
public ResHeatingTubeRackSlot( ResHeatingTubeRackSlotManager manager, Integer index ) {
this.isLocked = false;
this.index = index;
this.manager = manager;
this.tubeStatusList = new ArrayList<>();
this.tubes = new ArrayList<>();
for ( int i = 0; i < 16; i++ ) {
this.tubeStatusList.add(TUBE_STATUS_EMPTY);
var tube = new ResHeatingTubeRackTubeSlot();
tube.setHasTube(false);
this.tubes.add(tube);
}
}
@ -74,9 +77,11 @@ public class ResHeatingTubeRackSlot {
// setup as error slot
public void setupAsErrorSlot() {
this.isErrorSlot = true;
this.tubeStatusList.clear();
this.tubes.clear();
for ( int i = 0; i < 16; i++ ) {
this.tubeStatusList.add(TUBE_STATUS_EMPTY);
var tube = new ResHeatingTubeRackTubeSlot();
tube.setHasTube(false);
this.tubes.add(tube);
}
}
@ -84,7 +89,7 @@ public class ResHeatingTubeRackSlot {
public List<Integer> allocEmptyTubeIndexes( Integer count ) {
List<Integer> indexes = new ArrayList<>();
for ( int i = 0; i < 16; i++ ) {
if ( TUBE_STATUS_EMPTY.equals(this.tubeStatusList.get(i)) && indexes.size() < count ) {
if ( !this.tubes.get(i).getHasTube() && indexes.size() < count ) {
indexes.add(i);
}
}
@ -92,23 +97,18 @@ public class ResHeatingTubeRackSlot {
throw new RuntimeException("异常处理区试管空位不足");
}
for ( var index : indexes ) {
this.tubeStatusList.set(index, TUBE_STATUS_USED);
this.tubes.get(index).setHasTube(true);
}
return indexes;
}
// set tube status
public void setTubeStatus( Integer index, String status ) {
this.tubeStatusList.set(index, status);
}
// get tube status
public String getTubeStatus( Integer index ) {
return this.tubeStatusList.get(index);
}
// set rack position
public void setRackPosition(String rackPosition) {
this.rackPosition = rackPosition;
}
// get tubes
public List<ResHeatingTubeRackTubeSlot> getTubes() {
return tubes;
}
}

23
src/src/main/java/com/my/graphiteDigesterBg/resource/ResHeatingTubeRackTubeSlot.java

@ -0,0 +1,23 @@
package com.my.graphiteDigesterBg.resource;
public class ResHeatingTubeRackTubeSlot {
// index of slot
public Integer index;
// has tube
private Boolean hasTube;
// rack code
public String rackCode;
// tube code
public String tubeCode;
// tube status
public String digestStatus;
// set has tube
public void setHasTube(Boolean hasTube) {
this.hasTube = hasTube;
}
// get has tube
public Boolean getHasTube() {
return this.hasTube;
}
}

4
src/src/main/java/com/my/graphiteDigesterBg/task/TaskSampleAdd.java

@ -60,7 +60,7 @@ public class TaskSampleAdd extends DiTaskBase {
// 初始化试管架状态
for ( int i=0; i<16; i++ ) {
slot.setTubeStatus(i, ResHeatingTubeRackSlot.TUBE_STATUS_USED);
slot.getTubes().get(i).setHasTube(true);
}
// 移动加液盘到观察视角
liquidPlateMotor.moveTo("LiquidPlateCameraShot");
@ -70,7 +70,7 @@ public class TaskSampleAdd extends DiTaskBase {
var tubeRackEmptyList = statusConfirmAction.getResult(List.class);
for ( var item : tubeRackEmptyList ) {
Integer index = (Integer)item;
slot.setTubeStatus(index, ResHeatingTubeRackSlot.TUBE_STATUS_EMPTY);
slot.getTubes().get(index).setHasTube(false);
}
this.setStatus(TaskStatus.FINISHED);

Loading…
Cancel
Save