|
|
@ -45,7 +45,6 @@ import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.stereotype.Component; |
|
|
|
import org.springframework.util.Assert; |
|
|
|
|
|
|
|
import javax.swing.*; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Objects; |
|
|
|
|
|
|
@ -62,9 +61,9 @@ import java.util.Objects; |
|
|
|
@RequiredArgsConstructor |
|
|
|
public class ExperimentConsistencyTestingService { |
|
|
|
|
|
|
|
final private A8kTubeHolderType expectedTubeHolderType = A8kTubeHolderType.BulletTube1P5; |
|
|
|
final private Integer expectedProjId = 1; |
|
|
|
final private Integer takeSampleUl = 10; |
|
|
|
// final private A8kTubeHolderType expectedTubeHolderType = A8kTubeHolderType.BulletTube1P5; |
|
|
|
final private Integer expectedProjId = 1; |
|
|
|
final private Integer takeSampleUl = 10; |
|
|
|
|
|
|
|
final private EngineerModeStateMgrService engineerModeStateMgrService; |
|
|
|
|
|
|
@ -105,8 +104,8 @@ public class ExperimentConsistencyTestingService { |
|
|
|
private final HbotMoveCtrlService hbotMoveCtrlService; |
|
|
|
private final PipetteGunExParamMgr pipetteGunExParamMgr; |
|
|
|
|
|
|
|
|
|
|
|
private TubeHolderSetting curTubeHolderSetting; |
|
|
|
private A8kSamplePos samplePos; |
|
|
|
private TubeHolderExConfig tubeHolderExConfig = new TubeHolderExConfig(); |
|
|
|
|
|
|
|
synchronized public void submitTubeExConfig(TubeHolderExConfig tubeExTubeHolderExConfig) { |
|
|
@ -282,6 +281,15 @@ public class ExperimentConsistencyTestingService { |
|
|
|
//核对试管架信息 |
|
|
|
verifyTubeHolderSettingAndTubeHolderScanResult(curTubeHolderSetting, scanResult); |
|
|
|
// |
|
|
|
A8kTubeHolderType tubeHolderType = A8kTubeHolderType.of(scanResult.tubeHolderType); |
|
|
|
if (A8kTubeHolderType.BulletTube1P5.equals(tubeHolderType)) { |
|
|
|
samplePos = A8kSamplePos.Bulltube1P5Pos; |
|
|
|
} else if (A8kTubeHolderType.BulletTube0P5.equals(tubeHolderType)) { |
|
|
|
samplePos = A8kSamplePos.Bulltube0P5Pos; |
|
|
|
} else { |
|
|
|
throw AppException.of(A8kEcode.APPE_TUBE_HOLDER_TYPE_IS_NOT_SUPPORT, "请使用子弹头1.5ml或者子弹头0.5ml试管架"); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//构建试管架 |
|
|
|
// setTubeHolderDirect |
|
|
@ -340,10 +348,9 @@ public class ExperimentConsistencyTestingService { |
|
|
|
docmd("HBOT复位", hbotMoveExCtrlService::moveQuickToZero); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
tubeFeedingCtrlService.ejectTubeHolder(); |
|
|
|
|
|
|
|
incubationPlateProcess(true); |
|
|
|
tubeFeedingCtrlService.ejectTubeHolder(); |
|
|
|
incubationPlateStateMgrService.resetAll(); |
|
|
|
UISender.txInfoPrompt(log, "试剂实验一致性检测完成"); |
|
|
|
} |
|
|
@ -388,9 +395,11 @@ public class ExperimentConsistencyTestingService { |
|
|
|
//刺破缓冲液 |
|
|
|
hbotMoveExCtrlService.moveToLittleBufferPiercePos(consumableInfo.group, consumableInfo.pos); |
|
|
|
//取样品 |
|
|
|
Assert.isTrue(expectedTubeHolderType.equals(A8kTubeHolderType.BulletTube1P5), "expectedTubeHolderType != BulletTube1P5"); |
|
|
|
hbotMoveExCtrlService.moveToSamplePosXY(A8kSamplePos.Bulltube1P5Pos); |
|
|
|
liquidOperationCtrlService.takeSample(A8kSamplePos.Bulltube1P5Pos, preProcessPos, takeSampleUl); |
|
|
|
Assert.isTrue(!samplePos.equals(A8kSamplePos.EmergencyTubePos), "samplePos cannot be EmergencyTubePos"); |
|
|
|
Assert.isTrue(!samplePos.equals(A8kSamplePos.BloodHTubePos), "samplePos cannot be BloodHTubePos"); |
|
|
|
Assert.isTrue(!samplePos.equals(A8kSamplePos.BloodSTubePos), "samplePos cannot be BloodSTubePos"); |
|
|
|
hbotMoveExCtrlService.moveToSamplePosXY(samplePos); |
|
|
|
liquidOperationCtrlService.takeSample(samplePos, preProcessPos, takeSampleUl); |
|
|
|
//取混合液到预反应位 |
|
|
|
liquidOperationCtrlService.takePreReactionLiquidToReation(preProcessPos); |
|
|
|
incubationPlateStateMgrService.startIncubating(freeIncubationPos, System.currentTimeMillis(), projBuildinInfo.reactionPlateIncubationTimeMin * 60); |
|
|
@ -495,8 +504,8 @@ public class ExperimentConsistencyTestingService { |
|
|
|
|
|
|
|
private void verifyTubeHolderSettingAndTubeHolderScanResult(TubeHolderSetting tubeHolderSetting, TubeFeedingCtrlService.TubeHolderScanResult scanResult) throws AppException { |
|
|
|
A8kTubeHolderType tubeHolderType = A8kTubeHolderType.of(scanResult.tubeHolderType); |
|
|
|
if (!expectedTubeHolderType.equals(tubeHolderType)) { |
|
|
|
throw AppException.of(A8kEcode.APPE_TUBE_HOLDER_TYPE_IS_NOT_SUPPORT, "请使用子弹头1.5ml试管架"); |
|
|
|
if (!tubeHolderType.equals(A8kTubeHolderType.BulletTube1P5) && !tubeHolderType.equals(A8kTubeHolderType.BulletTube0P5)) { |
|
|
|
throw AppException.of(A8kEcode.APPE_TUBE_HOLDER_TYPE_IS_NOT_SUPPORT, "请使用子弹头1.5ml或者子弹头0.5ml试管架"); |
|
|
|
} |
|
|
|
|
|
|
|
for (int i = 0; i < tubeHolderSetting.tubeSettings.length; i++) { |
|
|
|