Browse Source

update

tags/v0
zhaohe 9 months ago
parent
commit
6381c27582
  1. 4
      src/main/java/a8k/service/app/appctrl/mainflowctrl/A8kPublicAreaResourceMgr.java
  2. 118
      src/main/java/a8k/service/app/appctrl/mainflowctrl/CondtionMgrService.java
  3. 12
      src/main/java/a8k/service/app/appctrl/mainflowctrl/DeviceStateSyncReader.java
  4. 7
      src/main/java/a8k/service/app/appctrl/mainflowctrl/DeviceStateSyncWriter.java
  5. 6
      src/main/java/a8k/service/app/appctrl/mainflowctrl/MainFlowCtrlScheduler.java
  6. 12
      src/main/java/a8k/service/app/appctrl/mainflowctrl/action/DO_FINISH_TUBE_PROCESS.java
  7. 10
      src/main/java/a8k/service/app/appctrl/mainflowctrl/action/DO_PROCESS_ERROR_PLATE.java
  8. 9
      src/main/java/a8k/service/app/appctrl/mainflowctrl/action/PLATE_OPT_SCAN.java
  9. 11
      src/main/java/a8k/service/app/appctrl/mainflowctrl/action/PROCESS_INCUBATE_COMPLETED_PLATE.java
  10. 12
      src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ1_ENTER_TUBEHOLDER_AND_SCAN.java
  11. 11
      src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ2_SWITCH_TO_THE_NEXT_TUBE.java
  12. 3
      src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ3_APPLAY_RESOURCE.java
  13. 32
      src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ5_PROCESS.java
  14. 9
      src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ7_EJECT_TUBEHOLDER.java
  15. 7
      src/main/java/a8k/service/app/appstate/GStateService.java
  16. 11
      src/main/java/a8k/service/app/appstate/resource/A8kPublicResourceType.java
  17. 7
      src/main/java/a8k/service/test/MainflowCtrlTestService.java

4
src/main/java/a8k/service/app/appctrl/mainflowctrl/ResourceMgrService.java → src/main/java/a8k/service/app/appctrl/mainflowctrl/A8kPublicAreaResourceMgr.java

@ -13,8 +13,8 @@ import java.util.List;
import java.util.Vector; import java.util.Vector;
@Component @Component
public class ResourceMgrService {
static Logger logger = LoggerFactory.getLogger(ResourceMgrService.class);
public class A8kPublicAreaResourceMgr {
static Logger logger = LoggerFactory.getLogger(A8kPublicAreaResourceMgr.class);
static public class Resource { static public class Resource {
public A8kPublicAreaResource type; public A8kPublicAreaResource type;

118
src/main/java/a8k/service/app/appctrl/mainflowctrl/CondtionMgrService.java

@ -1,118 +0,0 @@
package a8k.service.app.appctrl.mainflowctrl;
import a8k.hardware.A8kCanBusService;
import a8k.hardware.type.a8kcanprotocol.IOId;
import a8k.service.app.appstate.GStateService;
import a8k.service.app.appstate.statemgr.IncubationPlateStateMgrService;
import a8k.service.app.appstate.statemgr.OptScanModuleStateMgrService;
import a8k.service.app.appstate.statemgr.TubeStateMgrService;
import a8k.service.app.appstate.type.Tube;
import a8k.service.app.appstate.type.state.TubeState;
import a8k.service.test.state.TestModeState;
import a8k.service.test.state.VirtualDevice;
import jakarta.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Component
public class CondtionMgrService {
static Logger logger = LoggerFactory.getLogger(CondtionMgrService.class);
@Resource
GStateService gstate;
@Resource
TestModeState testModeState;
@Resource
VirtualDevice virtualDevice;
@Resource
A8kCanBusService canBus;
@Resource
IncubationPlateStateMgrService incubationPlateStateMgrService;
@Resource
TubeStateMgrService tubeStateMgrService;
@Resource
OptScanModuleStateMgrService optScanModuleStateMgrService;
// public Boolean getTubeholderEnterPosPPS() { //入料通道是否为空
// if (virtualDevice.isEnable()) {
// return virtualDevice.isTubeHolderReady();
// }
// try {
//
// return canBus.getIOState(IOId.InfeedPPS);
// } catch (Exception e) {
// logger.error("getTubeholderEnterPosPPS error", e);
// return false;
// }
// }
// public Boolean isOptModuleEmpty() {
// return optScanModuleStateMgrService.isEmpty();
// }
// public Boolean isTimeToEnterNewTubeHolder() {
// return tubeStateMgrService.isTubeHolderProcessCompleted() && getTubeholderEnterPosPPS();
// }
// public Boolean isTimeToSwitchNextTube() {
// return tubeStateMgrService.isNoTubeInProcessing() && tubeStateMgrService.isHasSomeToBeProcessedTube();
// }
// public Boolean isTimeToProcessPendingTube() {
// Tube tube = tubeStateMgrService.getCurProcessingTube();
// if (tube == null)
// return false;
//
// //当前试管是否处于待命状态
// Boolean cond2 = tube.getState().equals(TubeState.PENDING);
// //反应板夹是否充足
// Boolean cond3 = incubationPlateStateMgrService.isHasEnoughIncubationIDLEPos(tube.getProjInfo().size());
// return cond2 && cond3;
// }
// public Boolean isTimeToProcessTube() {
// return tubeStateMgrService.isCurTubeResourceReady();
// }
// public Boolean isHasSomeErrorPlatesToBeProcessed() {
// return incubationPlateStateMgrService.isHasSomeErrorPlate();
// }
// public Boolean isHasErrorTube() {
// Tube tube = gstate.getCurProcessingTube();
// if (tube == null)
// return false;
// return gstate.getCurProcessingTube().getState().equals(TubeState.ERROR);
// }
//
// public Boolean isHasProcessedTube() {
// Tube tube = gstate.getCurProcessingTube();
// if (tube == null)
// return false;
// return gstate.getCurProcessingTube().getState().equals(TubeState.PROCESSED);
// }
// public Boolean isTimeToFinishTubeProcess() {
// return isHasErrorTube() || isHasProcessedTube();
// }
// public Boolean isTimeToProcessErrorPlate() {
// return isHasSomeErrorPlatesToBeProcessed() && isOptModuleEmpty();
// }
//
// public Boolean isTimeToPlateOptScan() {
// return !optScanModuleStateMgrService.isEmpty();
// }
//
// public Boolean isTimeToProcessIncubateCompletedPlate() {
// return incubationPlateStateMgrService.getOneExpiredPlate() != null && optScanModuleStateMgrService.isEmpty();
// }
}

12
src/main/java/a8k/service/app/appctrl/mainflowctrl/DeviceStateSyncReader.java

@ -1,12 +0,0 @@
package a8k.service.app.appctrl.mainflowctrl;
import org.springframework.stereotype.Component;
@Component
public class DeviceStateSyncReader {
}

7
src/main/java/a8k/service/app/appctrl/mainflowctrl/DeviceStateSyncWriter.java

@ -1,7 +0,0 @@
package a8k.service.app.appctrl.mainflowctrl;
import org.springframework.stereotype.Component;
@Component
public class DeviceStateSyncWriter {
}

6
src/main/java/a8k/service/app/appctrl/mainflowctrl/MainFlowCtrlScheduler.java

@ -37,9 +37,9 @@ public class MainFlowCtrlScheduler implements ApplicationListener<ApplicationSta
@Resource @Resource
DeviceWorkStateMgrService deviceWorkStateMgrService; DeviceWorkStateMgrService deviceWorkStateMgrService;
@Resource @Resource
AppEventBusService ebus;
AppEventBusService ebus;
@Resource @Resource
ResourceMgrService resourceMgrService;
A8kPublicAreaResourceMgr a8kPublicAreaResourceMgr;
List<A8kStepAction> allActions = new ArrayList<>(); List<A8kStepAction> allActions = new ArrayList<>();
List<A8kStepAction> foregroundActions = new ArrayList<>(); List<A8kStepAction> foregroundActions = new ArrayList<>();
@ -187,7 +187,7 @@ public class MainFlowCtrlScheduler implements ApplicationListener<ApplicationSta
deviceWorkStateMgrService.addError(AppActionErrorContext.ofList(action.step, errors)); deviceWorkStateMgrService.addError(AppActionErrorContext.ofList(action.step, errors));
// clear future // clear future
action.future = null; action.future = null;
resourceMgrService.releaseAllResource(action);
a8kPublicAreaResourceMgr.releaseAllResource(action);
} catch (InterruptedException | ExecutionException e) { } catch (InterruptedException | ExecutionException e) {
logger.error("error {}", e.getMessage(), e); logger.error("error {}", e.getMessage(), e);
} }

12
src/main/java/a8k/service/app/appctrl/mainflowctrl/action/DO_FINISH_TUBE_PROCESS.java

@ -1,19 +1,15 @@
package a8k.service.app.appctrl.mainflowctrl.action; package a8k.service.app.appctrl.mainflowctrl.action;
import a8k.service.app.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.app.appctrl.mainflowctrl.ResourceMgrService;
import a8k.service.app.appctrl.mainflowctrl.A8kPublicAreaResourceMgr;
import a8k.service.app.appctrl.mainflowctrl.base.A8kActionStepType; import a8k.service.app.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.app.appctrl.mainflowctrl.base.A8kPublicAreaResource; import a8k.service.app.appctrl.mainflowctrl.base.A8kPublicAreaResource;
import a8k.service.app.appctrl.mainflowctrl.base.A8kStepAction; import a8k.service.app.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.app.appctrl.mainflowctrl.base.MainFlowProcesser; import a8k.service.app.appctrl.mainflowctrl.base.MainFlowProcesser;
import a8k.service.app.appstate.GStateService;
import a8k.service.app.appstate.statemgr.ProjectProcessContextMgrService;
import a8k.service.app.appstate.statemgr.TubeStateMgrService; import a8k.service.app.appstate.statemgr.TubeStateMgrService;
import a8k.service.app.appstate.type.Tube; import a8k.service.app.appstate.type.Tube;
import a8k.service.app.appstate.type.state.TubeState; import a8k.service.app.appstate.type.state.TubeState;
import a8k.service.app.devicectrl.ctrlservice.HbotCtrlService; import a8k.service.app.devicectrl.ctrlservice.HbotCtrlService;
import a8k.service.app.devicectrl.ctrlservice.TubePreProcesCtrlService; import a8k.service.app.devicectrl.ctrlservice.TubePreProcesCtrlService;
import a8k.service.test.state.TestModeState;
import a8k.service.test.state.VirtualDevice; import a8k.service.test.state.VirtualDevice;
import a8k.type.ecode.AppError; import a8k.type.ecode.AppError;
import a8k.type.exception.AppException; import a8k.type.exception.AppException;
@ -47,9 +43,9 @@ public class DO_FINISH_TUBE_PROCESS extends A8kStepAction {
@Resource @Resource
ResourceMgrService resourceMgrService;
A8kPublicAreaResourceMgr a8kPublicAreaResourceMgr;
@Resource @Resource
TubeStateMgrService tubeStateMgrService;
TubeStateMgrService tubeStateMgrService;
public Boolean isReady() { public Boolean isReady() {
@ -81,7 +77,7 @@ public class DO_FINISH_TUBE_PROCESS extends A8kStepAction {
@Override public List<AppError> doAction() { @Override public List<AppError> doAction() {
//ProcessErrorBeforeContinue //ProcessErrorBeforeContinue
resourceMgrService.applyForResources(this,
a8kPublicAreaResourceMgr.applyForResources(this,
A8kPublicAreaResource.TubeSampleProcessAndTubeChannelArea, A8kPublicAreaResource.HbotArea); A8kPublicAreaResource.TubeSampleProcessAndTubeChannelArea, A8kPublicAreaResource.HbotArea);
Tube tube = tubeStateMgrService.getCurProcessingTube(); Tube tube = tubeStateMgrService.getCurProcessingTube();

10
src/main/java/a8k/service/app/appctrl/mainflowctrl/action/DO_PROCESS_ERROR_PLATE.java

@ -1,7 +1,6 @@
package a8k.service.app.appctrl.mainflowctrl.action; package a8k.service.app.appctrl.mainflowctrl.action;
import a8k.service.app.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.app.appctrl.mainflowctrl.ResourceMgrService;
import a8k.service.app.appctrl.mainflowctrl.A8kPublicAreaResourceMgr;
import a8k.service.app.appctrl.mainflowctrl.base.A8kActionStepType; import a8k.service.app.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.app.appctrl.mainflowctrl.base.A8kPublicAreaResource; import a8k.service.app.appctrl.mainflowctrl.base.A8kPublicAreaResource;
import a8k.service.app.appctrl.mainflowctrl.base.A8kStepAction; import a8k.service.app.appctrl.mainflowctrl.base.A8kStepAction;
@ -41,8 +40,7 @@ public class DO_PROCESS_ERROR_PLATE extends A8kStepAction {
@Resource @Resource
VirtualDevice virtualDevice; VirtualDevice virtualDevice;
@Resource
CondtionMgrService cms;
@Resource @Resource
IncubationPlateStateMgrService incubationPlateStateMgrService; IncubationPlateStateMgrService incubationPlateStateMgrService;
@Resource @Resource
@ -54,7 +52,7 @@ public class DO_PROCESS_ERROR_PLATE extends A8kStepAction {
OptScanModuleCtrlService optScanModuleCtrlService; OptScanModuleCtrlService optScanModuleCtrlService;
@Resource @Resource
ResourceMgrService resourceMgrService;
A8kPublicAreaResourceMgr a8kPublicAreaResourceMgr;
IncubationSubTank errorTank; IncubationSubTank errorTank;
@ -87,7 +85,7 @@ public class DO_PROCESS_ERROR_PLATE extends A8kStepAction {
} }
@Override public List<AppError> doAction() { @Override public List<AppError> doAction() {
resourceMgrService.applyForResources(A8kPublicAreaResource.IncubationPlateArea, A8kPublicAreaResource.OptScanArea);
a8kPublicAreaResourceMgr.applyForResources(A8kPublicAreaResource.IncubationPlateArea, A8kPublicAreaResource.OptScanArea);
if (errorTank == null) { if (errorTank == null) {
return List.of(); return List.of();
} }

9
src/main/java/a8k/service/app/appctrl/mainflowctrl/action/PLATE_OPT_SCAN.java

@ -2,18 +2,15 @@ package a8k.service.app.appctrl.mainflowctrl.action;
import a8k.a8kproj.A8kReactionResultComputer; import a8k.a8kproj.A8kReactionResultComputer;
import a8k.a8kproj.optalgo.type.OptScanResult; import a8k.a8kproj.optalgo.type.OptScanResult;
import a8k.service.app.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.app.appctrl.mainflowctrl.ResourceMgrService;
import a8k.service.app.appctrl.mainflowctrl.A8kPublicAreaResourceMgr;
import a8k.service.app.appctrl.mainflowctrl.base.A8kActionStepType; import a8k.service.app.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.app.appctrl.mainflowctrl.base.A8kPublicAreaResource; import a8k.service.app.appctrl.mainflowctrl.base.A8kPublicAreaResource;
import a8k.service.app.appctrl.mainflowctrl.base.A8kStepAction; import a8k.service.app.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.app.appctrl.mainflowctrl.base.MainFlowProcesser; import a8k.service.app.appctrl.mainflowctrl.base.MainFlowProcesser;
import a8k.service.app.appdata.ReactionRecordMgrService; import a8k.service.app.appdata.ReactionRecordMgrService;
import a8k.service.app.appstate.GStateService; import a8k.service.app.appstate.GStateService;
import a8k.service.app.appstate.statemgr.IncubationPlateStateMgrService;
import a8k.service.app.appstate.statemgr.OptScanModuleStateMgrService; import a8k.service.app.appstate.statemgr.OptScanModuleStateMgrService;
import a8k.service.app.appstate.statemgr.ProjectProcessContextMgrService; import a8k.service.app.appstate.statemgr.ProjectProcessContextMgrService;
import a8k.service.app.appstate.type.OptScanModule;
import a8k.service.app.appstate.type.ProjProcessContext; import a8k.service.app.appstate.type.ProjProcessContext;
import a8k.service.app.appstate.type.state.OptScanModuleState; import a8k.service.app.appstate.type.state.OptScanModuleState;
import a8k.service.app.devicectrl.ctrlservice.OptScanModuleCtrlService; import a8k.service.app.devicectrl.ctrlservice.OptScanModuleCtrlService;
@ -64,7 +61,7 @@ public class PLATE_OPT_SCAN extends A8kStepAction {
@Resource @Resource
ResourceMgrService resourceMgrService;
A8kPublicAreaResourceMgr a8kPublicAreaResourceMgr;
public Boolean isReady() { public Boolean isReady() {
@ -119,7 +116,7 @@ public class PLATE_OPT_SCAN extends A8kStepAction {
var ctx = projectProcessContextMgrService.getProjProcessContext(optScanModule.getSampleId(), optScanModule.getProjId()); var ctx = projectProcessContextMgrService.getProjProcessContext(optScanModule.getSampleId(), optScanModule.getProjId());
resourceMgrService.applyForResources(this, A8kPublicAreaResource.OptScanArea);
a8kPublicAreaResourceMgr.applyForResources(this, A8kPublicAreaResource.OptScanArea);
try { try {
log.info("扫描板夹"); log.info("扫描板夹");
scanResults = doOptScanXX(ctx); scanResults = doOptScanXX(ctx);

11
src/main/java/a8k/service/app/appctrl/mainflowctrl/action/PROCESS_INCUBATE_COMPLETED_PLATE.java

@ -1,19 +1,14 @@
package a8k.service.app.appctrl.mainflowctrl.action; package a8k.service.app.appctrl.mainflowctrl.action;
import a8k.service.app.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.app.appctrl.mainflowctrl.ResourceMgrService;
import a8k.service.app.appctrl.mainflowctrl.A8kPublicAreaResourceMgr;
import a8k.service.app.appctrl.mainflowctrl.base.A8kActionStepType; import a8k.service.app.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.app.appctrl.mainflowctrl.base.A8kPublicAreaResource; import a8k.service.app.appctrl.mainflowctrl.base.A8kPublicAreaResource;
import a8k.service.app.appctrl.mainflowctrl.base.A8kStepAction; import a8k.service.app.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.app.appctrl.mainflowctrl.base.MainFlowProcesser; import a8k.service.app.appctrl.mainflowctrl.base.MainFlowProcesser;
import a8k.service.app.appstate.GStateService;
import a8k.service.app.appstate.statemgr.IncubationPlateStateMgrService; import a8k.service.app.appstate.statemgr.IncubationPlateStateMgrService;
import a8k.service.app.appstate.statemgr.OptScanModuleStateMgrService; import a8k.service.app.appstate.statemgr.OptScanModuleStateMgrService;
import a8k.service.app.appstate.statemgr.ProjectProcessContextMgrService;
import a8k.service.app.appstate.type.IncubationSubTank; import a8k.service.app.appstate.type.IncubationSubTank;
import a8k.service.app.devicectrl.ctrlservice.OptScanModuleCtrlService; import a8k.service.app.devicectrl.ctrlservice.OptScanModuleCtrlService;
import a8k.service.app.devicectrl.ctrlservice.TubeFeedingCtrlService;
import a8k.service.test.state.TestModeState;
import a8k.service.test.state.VirtualDevice; import a8k.service.test.state.VirtualDevice;
import a8k.type.ecode.AppError; import a8k.type.ecode.AppError;
import a8k.type.exception.AppException; import a8k.type.exception.AppException;
@ -47,7 +42,7 @@ public class PROCESS_INCUBATE_COMPLETED_PLATE extends A8kStepAction {
OptScanModuleCtrlService optScanModuleCtrlService; OptScanModuleCtrlService optScanModuleCtrlService;
@Resource @Resource
ResourceMgrService resourceMgrService;
A8kPublicAreaResourceMgr a8kPublicAreaResourceMgr;
public Boolean isReady() { public Boolean isReady() {
@ -71,7 +66,7 @@ public class PROCESS_INCUBATE_COMPLETED_PLATE extends A8kStepAction {
IncubationSubTank toBeProcesstank; IncubationSubTank toBeProcesstank;
@Override public List<AppError> doAction() { @Override public List<AppError> doAction() {
resourceMgrService.applyForResources(this, A8kPublicAreaResource.OptScanArea, A8kPublicAreaResource.IncubationPlateArea);
a8kPublicAreaResourceMgr.applyForResources(this, A8kPublicAreaResource.OptScanArea, A8kPublicAreaResource.IncubationPlateArea);
IncubationSubTank tank = getToBeProcessedTank(); IncubationSubTank tank = getToBeProcessedTank();
if (tank == null) { if (tank == null) {
return List.of(); return List.of();

12
src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ1_ENTER_TUBEHOLDER_AND_SCAN.java

@ -4,8 +4,7 @@ import a8k.hardware.A8kCanBusService;
import a8k.hardware.type.a8kcanprotocol.A8kEcode; import a8k.hardware.type.a8kcanprotocol.A8kEcode;
import a8k.hardware.type.a8kcanprotocol.IOId; import a8k.hardware.type.a8kcanprotocol.IOId;
import a8k.service.app.appctrl.AppTubeSettingMgrService; import a8k.service.app.appctrl.AppTubeSettingMgrService;
import a8k.service.app.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.app.appctrl.mainflowctrl.ResourceMgrService;
import a8k.service.app.appctrl.mainflowctrl.A8kPublicAreaResourceMgr;
import a8k.service.app.appctrl.mainflowctrl.base.*; import a8k.service.app.appctrl.mainflowctrl.base.*;
import a8k.service.app.appdata.ProjInfoMgrService; import a8k.service.app.appdata.ProjInfoMgrService;
import a8k.service.app.appstate.GStateService; import a8k.service.app.appstate.GStateService;
@ -20,7 +19,6 @@ import a8k.service.app.appstate.type.state.TubeState;
import a8k.service.app.devicectrl.ctrlservice.TubeFeedingCtrlService; import a8k.service.app.devicectrl.ctrlservice.TubeFeedingCtrlService;
import a8k.service.bases.AppEventBusService; import a8k.service.bases.AppEventBusService;
import a8k.service.bases.appevent.AppWarningNotifyEvent; import a8k.service.bases.appevent.AppWarningNotifyEvent;
import a8k.service.dao.type.SampleRecord;
import a8k.service.test.state.TestModeState; import a8k.service.test.state.TestModeState;
import a8k.service.test.state.VirtualDevice; import a8k.service.test.state.VirtualDevice;
import a8k.type.TubeHolderScanResult; import a8k.type.TubeHolderScanResult;
@ -67,8 +65,6 @@ public class SEQ1_ENTER_TUBEHOLDER_AND_SCAN extends A8kStepAction {
VirtualDevice virtualDevice; VirtualDevice virtualDevice;
@Resource @Resource
AppEventBusService ebus; AppEventBusService ebus;
@Resource
CondtionMgrService cmgr;
@Resource @Resource
AppTubeSettingMgrService appTubeSettingMgrService; AppTubeSettingMgrService appTubeSettingMgrService;
@ -90,9 +86,9 @@ public class SEQ1_ENTER_TUBEHOLDER_AND_SCAN extends A8kStepAction {
//StateMgr //StateMgr
// //
@Resource @Resource
ResourceMgrService resourceMgrService;
A8kPublicAreaResourceMgr a8kPublicAreaResourceMgr;
@Resource @Resource
TubeStateMgrService tubeStateMgrService;
TubeStateMgrService tubeStateMgrService;
// //
@ -238,7 +234,7 @@ public class SEQ1_ENTER_TUBEHOLDER_AND_SCAN extends A8kStepAction {
TubeHolderScanResult scanResult; TubeHolderScanResult scanResult;
//申请硬件资源 //申请硬件资源
resourceMgrService.applyForResources(this, A8kPublicAreaResource.TubeSampleProcessAndTubeChannelArea);
a8kPublicAreaResourceMgr.applyForResources(this, A8kPublicAreaResource.TubeSampleProcessAndTubeChannelArea);
try { try {
scanResult = doScanHolder(); scanResult = doScanHolder();

11
src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ2_SWITCH_TO_THE_NEXT_TUBE.java

@ -1,7 +1,6 @@
package a8k.service.app.appctrl.mainflowctrl.action; package a8k.service.app.appctrl.mainflowctrl.action;
import a8k.service.app.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.app.appctrl.mainflowctrl.ResourceMgrService;
import a8k.service.app.appctrl.mainflowctrl.A8kPublicAreaResourceMgr;
import a8k.service.app.appctrl.mainflowctrl.base.A8kActionStepType; import a8k.service.app.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.app.appctrl.mainflowctrl.base.A8kPublicAreaResource; import a8k.service.app.appctrl.mainflowctrl.base.A8kPublicAreaResource;
import a8k.service.app.appctrl.mainflowctrl.base.A8kStepAction; import a8k.service.app.appctrl.mainflowctrl.base.A8kStepAction;
@ -43,11 +42,9 @@ public class SEQ2_SWITCH_TO_THE_NEXT_TUBE extends A8kStepAction {
VirtualDevice virtualDevice; VirtualDevice virtualDevice;
@Resource @Resource
TubeFeedingCtrlService tubeFeedingCtrlService;
TubeFeedingCtrlService tubeFeedingCtrlService;
@Resource @Resource
CondtionMgrService cms;
@Resource
ResourceMgrService resourceMgrService;
A8kPublicAreaResourceMgr a8kPublicAreaResourceMgr;
// //
@ -85,7 +82,7 @@ public class SEQ2_SWITCH_TO_THE_NEXT_TUBE extends A8kStepAction {
@Override @Override
public List<AppError> doAction() { public List<AppError> doAction() {
//申请资源 //申请资源
resourceMgrService.applyForResources(this, A8kPublicAreaResource.TubeSampleProcessAndTubeChannelArea);
a8kPublicAreaResourceMgr.applyForResources(this, A8kPublicAreaResource.TubeSampleProcessAndTubeChannelArea);
if (tubeStateMgrService.isHasEmergencyTubeToBeProcessed()) { if (tubeStateMgrService.isHasEmergencyTubeToBeProcessed()) {
//处理急诊试管 //处理急诊试管

3
src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ3_APPLAY_RESOURCE.java

@ -1,7 +1,6 @@
package a8k.service.app.appctrl.mainflowctrl.action; package a8k.service.app.appctrl.mainflowctrl.action;
import a8k.hardware.type.a8kcanprotocol.A8kEcode; import a8k.hardware.type.a8kcanprotocol.A8kEcode;
import a8k.service.app.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.app.appctrl.mainflowctrl.MainFlowCtrlScheduler; import a8k.service.app.appctrl.mainflowctrl.MainFlowCtrlScheduler;
import a8k.service.app.appctrl.mainflowctrl.base.A8kActionStepType; import a8k.service.app.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.app.appctrl.mainflowctrl.base.A8kStepAction; import a8k.service.app.appctrl.mainflowctrl.base.A8kStepAction;
@ -62,8 +61,6 @@ public class SEQ3_APPLAY_RESOURCE extends A8kStepAction {
@Resource @Resource
ProjInfoMgrService projConfigMgrService; ProjInfoMgrService projConfigMgrService;
@Resource @Resource
CondtionMgrService cms;
@Resource
IncubationPlateStateMgrService incubationPlateStateMgrService; IncubationPlateStateMgrService incubationPlateStateMgrService;
@Resource @Resource

32
src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ5_PROCESS.java

@ -1,13 +1,11 @@
package a8k.service.app.appctrl.mainflowctrl.action; package a8k.service.app.appctrl.mainflowctrl.action;
import a8k.OS; import a8k.OS;
import a8k.service.app.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.app.appctrl.mainflowctrl.ResourceMgrService;
import a8k.service.app.appctrl.mainflowctrl.A8kPublicAreaResourceMgr;
import a8k.service.app.appctrl.mainflowctrl.base.A8kActionStepType; import a8k.service.app.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.app.appctrl.mainflowctrl.base.A8kPublicAreaResource; import a8k.service.app.appctrl.mainflowctrl.base.A8kPublicAreaResource;
import a8k.service.app.appctrl.mainflowctrl.base.A8kStepAction; import a8k.service.app.appctrl.mainflowctrl.base.A8kStepAction;
import a8k.service.app.appctrl.mainflowctrl.base.MainFlowProcesser; import a8k.service.app.appctrl.mainflowctrl.base.MainFlowProcesser;
import a8k.service.app.appstate.GStateService;
import a8k.service.app.appstate.statemgr.IncubationPlateStateMgrService; import a8k.service.app.appstate.statemgr.IncubationPlateStateMgrService;
import a8k.service.app.appstate.statemgr.ProjectProcessContextMgrService; import a8k.service.app.appstate.statemgr.ProjectProcessContextMgrService;
import a8k.service.app.appstate.statemgr.TubeStateMgrService; import a8k.service.app.appstate.statemgr.TubeStateMgrService;
@ -65,8 +63,6 @@ public class SEQ5_PROCESS extends A8kStepAction {
@Resource @Resource
IncubationPlateStateMgrService incubationPlateStateMgrService; IncubationPlateStateMgrService incubationPlateStateMgrService;
@Resource @Resource
CondtionMgrService cms;
@Resource
ProjectProcessContextMgrService projectProcessContextMgrService; ProjectProcessContextMgrService projectProcessContextMgrService;
@Resource @Resource
@ -74,7 +70,7 @@ public class SEQ5_PROCESS extends A8kStepAction {
@Resource @Resource
DeviceCtrlScripter deviceCtrlScripter; DeviceCtrlScripter deviceCtrlScripter;
@Resource @Resource
ResourceMgrService resourceMgrService;
A8kPublicAreaResourceMgr a8kPublicAreaResourceMgr;
@Resource @Resource
PlateBoxCtrlService plateBoxCtrlService; PlateBoxCtrlService plateBoxCtrlService;
@Resource @Resource
@ -165,11 +161,11 @@ public class SEQ5_PROCESS extends A8kStepAction {
logger.info("摇匀次数 :{}", shakeTimes); logger.info("摇匀次数 :{}", shakeTimes);
logger.info("试管架类型 :{}", tubeHolder.getTubeHolderType()); logger.info("试管架类型 :{}", tubeHolder.getTubeHolderType());
logger.info("是否高位试管:{}", isHighTube); logger.info("是否高位试管:{}", isHighTube);
resourceMgrService.applyForResources(this, subResOwner, A8kPublicAreaResource.TubeSampleProcessAndTubeChannelArea);
a8kPublicAreaResourceMgr.applyForResources(this, subResOwner, A8kPublicAreaResource.TubeSampleProcessAndTubeChannelArea);
tubePreProcesCtrlService.takeTubeFromTubeholderToShakePos(isHighTube); tubePreProcesCtrlService.takeTubeFromTubeholderToShakePos(isHighTube);
tubePreProcesCtrlService.shakeTube(45, shakeTimes); tubePreProcesCtrlService.shakeTube(45, shakeTimes);
tubePreProcesCtrlService.takeTubeCap(); tubePreProcesCtrlService.takeTubeCap();
resourceMgrService.releaseAllResource(this, subResOwner);
a8kPublicAreaResourceMgr.releaseAllResource(this, subResOwner);
} else { } else {
logger.info("不是全血试管,不需要摇匀"); logger.info("不是全血试管,不需要摇匀");
} }
@ -178,9 +174,9 @@ public class SEQ5_PROCESS extends A8kStepAction {
waittingForSampleProcessFinished(); waittingForSampleProcessFinished();
//样本后处理 //样本后处理
resourceMgrService.applyForResources(this, subResOwner, A8kPublicAreaResource.TubeSampleProcessAndTubeChannelArea);
a8kPublicAreaResourceMgr.applyForResources(this, subResOwner, A8kPublicAreaResource.TubeSampleProcessAndTubeChannelArea);
tubePreProcesCtrlService.resteModule(); tubePreProcesCtrlService.resteModule();
resourceMgrService.releaseAllResource(this, subResOwner);
a8kPublicAreaResourceMgr.releaseAllResource(this, subResOwner);
} }
@ -205,9 +201,9 @@ public class SEQ5_PROCESS extends A8kStepAction {
for (ProjProcessContext cxt : cxts) { for (ProjProcessContext cxt : cxts) {
IncubatorPos incubatorPos = cxt.recourcePacket.incubatorPos; ; IncubatorPos incubatorPos = cxt.recourcePacket.incubatorPos; ;
resourceMgrService.applyForResources(this, subResOwner, A8kPublicAreaResource.PlateBoxArea, A8kPublicAreaResource.IncubationPlateArea);
a8kPublicAreaResourceMgr.applyForResources(this, subResOwner, A8kPublicAreaResource.PlateBoxArea, A8kPublicAreaResource.IncubationPlateArea);
plateBoxCtrlService.pushPlateQuick(cxt.recourcePacket.consumable.getGroup(), incubatorPos); plateBoxCtrlService.pushPlateQuick(cxt.recourcePacket.consumable.getGroup(), incubatorPos);
resourceMgrService.releaseAllResource(this, subResOwner);
a8kPublicAreaResourceMgr.releaseAllResource(this, subResOwner);
} }
reactionPlateReady = true; reactionPlateReady = true;
} }
@ -228,16 +224,16 @@ public class SEQ5_PROCESS extends A8kStepAction {
List<ProjProcessContext> cxts = projectProcessContextMgrService.getTubeAssociatedProjContext(tube.getSampleId()); List<ProjProcessContext> cxts = projectProcessContextMgrService.getTubeAssociatedProjContext(tube.getSampleId());
Assert.isTrue(!cxts.isEmpty(), "项目上下文不能为空"); Assert.isTrue(!cxts.isEmpty(), "项目上下文不能为空");
resourceMgrService.applyForResources(this, subResOwner, A8kPublicAreaResource.HbotArea);
a8kPublicAreaResourceMgr.applyForResources(this, subResOwner, A8kPublicAreaResource.HbotArea);
for (ProjProcessContext cxt : cxts) { for (ProjProcessContext cxt : cxts) {
deviceCtrlScripter.doSampleProcessPrepare(cxt); deviceCtrlScripter.doSampleProcessPrepare(cxt);
waittingForSampleIsReady(); waittingForSampleIsReady();
deviceCtrlScripter.doSampleProcess(cxt); deviceCtrlScripter.doSampleProcess(cxt);
waittingForReactionPlateReady(); waittingForReactionPlateReady();
resourceMgrService.applyForResources(this, subResOwner, A8kPublicAreaResource.IncubationPlateArea);
a8kPublicAreaResourceMgr.applyForResources(this, subResOwner, A8kPublicAreaResource.IncubationPlateArea);
deviceCtrlScripter.doSampleProcessPostProcess(cxt); deviceCtrlScripter.doSampleProcessPostProcess(cxt);
resourceMgrService.releaseResource(A8kPublicAreaResource.IncubationPlateArea);
a8kPublicAreaResourceMgr.releaseResource(A8kPublicAreaResource.IncubationPlateArea);
incubationPlateStateMgrService.startIncubating(cxt.recourcePacket.incubatorPos, cxt.projInfoContext.getReactionPlateIncubationTimeMin()); incubationPlateStateMgrService.startIncubating(cxt.recourcePacket.incubatorPos, cxt.projInfoContext.getReactionPlateIncubationTimeMin());
} }
@ -275,7 +271,7 @@ public class SEQ5_PROCESS extends A8kStepAction {
} catch (ZAppInterruptException ignored) { } catch (ZAppInterruptException ignored) {
} }
resourceMgrService.releaseAllResource(this, "sampleProcess");
a8kPublicAreaResourceMgr.releaseAllResource(this, "sampleProcess");
return error; return error;
}); });
var future2 = executor.submit(() -> { var future2 = executor.submit(() -> {
@ -289,7 +285,7 @@ public class SEQ5_PROCESS extends A8kStepAction {
} catch (ZAppInterruptException ignored) { } catch (ZAppInterruptException ignored) {
} }
resourceMgrService.releaseAllResource(this, "paltePrepare");
a8kPublicAreaResourceMgr.releaseAllResource(this, "paltePrepare");
return error; return error;
}); });
var future3 = executor.submit(() -> { var future3 = executor.submit(() -> {
@ -303,7 +299,7 @@ public class SEQ5_PROCESS extends A8kStepAction {
} catch (ZAppInterruptException ignored) { } catch (ZAppInterruptException ignored) {
} }
resourceMgrService.releaseAllResource(this, "samplePrepare");
a8kPublicAreaResourceMgr.releaseAllResource(this, "samplePrepare");
return error; return error;
}); });

9
src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ7_EJECT_TUBEHOLDER.java

@ -1,7 +1,6 @@
package a8k.service.app.appctrl.mainflowctrl.action; package a8k.service.app.appctrl.mainflowctrl.action;
import a8k.service.app.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.app.appctrl.mainflowctrl.ResourceMgrService;
import a8k.service.app.appctrl.mainflowctrl.A8kPublicAreaResourceMgr;
import a8k.service.app.appctrl.mainflowctrl.base.A8kActionStepType; import a8k.service.app.appctrl.mainflowctrl.base.A8kActionStepType;
import a8k.service.app.appctrl.mainflowctrl.base.A8kPublicAreaResource; import a8k.service.app.appctrl.mainflowctrl.base.A8kPublicAreaResource;
import a8k.service.app.appctrl.mainflowctrl.base.A8kStepAction; import a8k.service.app.appctrl.mainflowctrl.base.A8kStepAction;
@ -53,14 +52,12 @@ public class SEQ7_EJECT_TUBEHOLDER extends A8kStepAction {
@Resource @Resource
CondtionMgrService cms;
@Resource
TubeFeedingCtrlService tubeFeedingCtrlService; TubeFeedingCtrlService tubeFeedingCtrlService;
@Resource @Resource
TubeStateMgrService tubeStateMgrService; TubeStateMgrService tubeStateMgrService;
@Resource @Resource
ResourceMgrService resourceMgrService;
A8kPublicAreaResourceMgr a8kPublicAreaResourceMgr;
public Boolean isReady() { public Boolean isReady() {
@ -74,7 +71,7 @@ public class SEQ7_EJECT_TUBEHOLDER extends A8kStepAction {
@Override public List<AppError> doAction() { @Override public List<AppError> doAction() {
resourceMgrService.applyForResources(this, A8kPublicAreaResource.TubeSampleProcessAndTubeChannelArea);
a8kPublicAreaResourceMgr.applyForResources(this, A8kPublicAreaResource.TubeSampleProcessAndTubeChannelArea);
try { try {
if (!virtualDevice.isEnable()) { if (!virtualDevice.isEnable()) {
tubeFeedingCtrlService.ejectTubeHolder(); tubeFeedingCtrlService.ejectTubeHolder();

7
src/main/java/a8k/service/app/appstate/GStateService.java

@ -18,26 +18,19 @@ import java.util.List;
@Component @Component
@Data @Data
public class GStateService { public class GStateService {
public static final Logger logger = LoggerFactory.getLogger(GStateService.class);
//设备是否初始化过 //设备是否初始化过
private Boolean deviceInited = false; private Boolean deviceInited = false;
// //
private String appVersion = AppConstant.APP_VERSION; private String appVersion = AppConstant.APP_VERSION;
private String mcuVersion = "NOTSET"; private String mcuVersion = "NOTSET";
private String sn = "NOTSET"; private String sn = "NOTSET";
SensorState sensorState = new SensorState(); SensorState sensorState = new SensorState();
ProjInfoCard mountedIdCardInfo; ProjInfoCard mountedIdCardInfo;
public Boolean isDeviceInited() { public Boolean isDeviceInited() {
return deviceInited; return deviceInited;
} }
public synchronized SensorState getSensorState() { public synchronized SensorState getSensorState() {
return sensorState; return sensorState;
} }

11
src/main/java/a8k/service/app/appstate/resource/A8kPublicResourceType.java

@ -1,11 +0,0 @@
package a8k.service.app.appstate.resource;
public enum A8kPublicResourceType {
ShakeModule,//摇匀模组
TubeFeedModule,//入料模组
IncubationPlateModule,//孵育盘电机
OPTModule, //光学电机
PlatesBoxModule,//板夹仓电机
HBOT,//HBOT
CurTubeProcessToken,//当前管子处理令牌
}

7
src/main/java/a8k/service/test/MainflowCtrlTestService.java

@ -8,7 +8,6 @@ import a8k.extapi_controler.utils.ExtApiTab;
import a8k.service.app.appctrl.AppConsumablesScanService; import a8k.service.app.appctrl.AppConsumablesScanService;
import a8k.service.app.appctrl.AppDeviceCtrlService; import a8k.service.app.appctrl.AppDeviceCtrlService;
import a8k.service.app.appctrl.AppTubeSettingMgrService; import a8k.service.app.appctrl.AppTubeSettingMgrService;
import a8k.service.app.appctrl.mainflowctrl.CondtionMgrService;
import a8k.service.app.appstate.statemgr.*; import a8k.service.app.appstate.statemgr.*;
import a8k.service.app.appstate.GStateService; import a8k.service.app.appstate.GStateService;
import a8k.service.app.appstate.type.DeviceWorkState; import a8k.service.app.appstate.type.DeviceWorkState;
@ -86,8 +85,6 @@ public class MainflowCtrlTestService {
@Resource @Resource
OptScanModuleCtrlService optScanModuleCtrlService; OptScanModuleCtrlService optScanModuleCtrlService;
@Resource
CondtionMgrService condtionMgrService;
void resetProjDB() { void resetProjDB() {
@ -181,10 +178,6 @@ public class MainflowCtrlTestService {
return deviceWorkStateMgrService.getDeviceWorkState(); return deviceWorkStateMgrService.getDeviceWorkState();
} }
@ExtApiFn(name = "获取动作执行条件", group = "设备控制", order = 402)
synchronized public CondtionMgrService getCondtionMgrService() {
return condtionMgrService;
}
void waittingForStop() { void waittingForStop() {

Loading…
Cancel
Save