|
@ -1,8 +1,10 @@ |
|
|
package a8k.service.app.appctrl.mainflowctrl.action; |
|
|
package a8k.service.app.appctrl.mainflowctrl.action; |
|
|
|
|
|
|
|
|
|
|
|
import a8k.service.app.appstate.type.ProjProcessContext; |
|
|
import a8k.service.app.devicectrl.ctrlservice.PipetteGunCtrlService; |
|
|
import a8k.service.app.devicectrl.ctrlservice.PipetteGunCtrlService; |
|
|
import a8k.service.app.devicectrl.ctrlservice.TubePreProcesCtrlService; |
|
|
import a8k.service.app.devicectrl.ctrlservice.TubePreProcesCtrlService; |
|
|
import a8k.service.app.devicectrl.driver.PipetteCtrlDriver; |
|
|
import a8k.service.app.devicectrl.driver.PipetteCtrlDriver; |
|
|
|
|
|
import a8k.service.app.devicectrl.script.DeviceCtrlScripter; |
|
|
import a8k.utils.ActionParallerExceutor; |
|
|
import a8k.utils.ActionParallerExceutor; |
|
|
import a8k.utils.AppExceptionBuilder; |
|
|
import a8k.utils.AppExceptionBuilder; |
|
|
import a8k.service.app.appctrl.mainflowctrl.CondtionMgrService; |
|
|
import a8k.service.app.appctrl.mainflowctrl.CondtionMgrService; |
|
@ -57,6 +59,8 @@ public class SEQ6_POST_PROCESS extends A8kStepAction { |
|
|
ProjectProcessContextMgrService projectProcessContextMgrService; |
|
|
ProjectProcessContextMgrService projectProcessContextMgrService; |
|
|
@Resource |
|
|
@Resource |
|
|
CondtionMgrService cms; |
|
|
CondtionMgrService cms; |
|
|
|
|
|
@Resource |
|
|
|
|
|
DeviceCtrlScripter deviceCtrlScripter; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ActionParallerExceutor actionParallerExceutor = new ActionParallerExceutor(); |
|
|
ActionParallerExceutor actionParallerExceutor = new ActionParallerExceutor(); |
|
@ -69,17 +73,25 @@ public class SEQ6_POST_PROCESS extends A8kStepAction { |
|
|
state = gstate.deviceWorkState; |
|
|
state = gstate.deviceWorkState; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void tubePostProcess() throws AppException { |
|
|
|
|
|
var tube = gstate.getCurProcessingTube(); |
|
|
|
|
|
Integer projProcessOff = tube.getProjProcessOff(); |
|
|
|
|
|
ProjProcessContext cxt = projectProcessContextMgrService.getProjProcessContext(tube.getSampleId(), tube.getProjIds().get(projProcessOff)); |
|
|
|
|
|
deviceCtrlScripter.doSampleProcessPostProcess(cxt); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
void doAction() throws AppException { |
|
|
void doAction() throws AppException { |
|
|
if (virtualDevice.isEnable()) { |
|
|
if (virtualDevice.isEnable()) { |
|
|
virtualDevice.doVirtualThings("后处理样本", 3); |
|
|
virtualDevice.doVirtualThings("后处理样本", 3); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
actionParallerExceutor.submit(() -> pipetteCtrlDriver.lldPrepareBlock()); |
|
|
|
|
|
|
|
|
actionParallerExceutor.submit(this::tubePostProcess); |
|
|
actionParallerExceutor.submit(() -> tubePreProcesCtrlService.resteModule()); |
|
|
actionParallerExceutor.submit(() -> tubePreProcesCtrlService.resteModule()); |
|
|
|
|
|
|
|
|
var mutiAppException = actionParallerExceutor.waitAll(); |
|
|
var mutiAppException = actionParallerExceutor.waitAll(); |
|
|
|
|
|
|
|
|
if (!mutiAppException.bindExceptions.isEmpty()) { |
|
|
|
|
|
|
|
|
if (mutiAppException != null) { |
|
|
projectProcessContextMgrService.changeTubeStateToError(gstate.getCurProcessingTube(), mutiAppException.getErrors()); |
|
|
projectProcessContextMgrService.changeTubeStateToError(gstate.getCurProcessingTube(), mutiAppException.getErrors()); |
|
|
throw mutiAppException; |
|
|
throw mutiAppException; |
|
|
} |
|
|
} |
|
@ -100,6 +112,7 @@ public class SEQ6_POST_PROCESS extends A8kStepAction { |
|
|
return List.of( |
|
|
return List.of( |
|
|
A8kPublicResourceType.PlatesBoxModule, |
|
|
A8kPublicResourceType.PlatesBoxModule, |
|
|
A8kPublicResourceType.HBOT, |
|
|
A8kPublicResourceType.HBOT, |
|
|
|
|
|
A8kPublicResourceType.IncubationPlateModule, |
|
|
A8kPublicResourceType.CurTubeProcessToken |
|
|
A8kPublicResourceType.CurTubeProcessToken |
|
|
); |
|
|
); |
|
|
} |
|
|
} |
|
|