diff --git a/src/main/java/a8k/service/appctrl/CondtionMgrService.java b/src/main/java/a8k/service/appctrl/CondtionMgrService.java index 8a498f6..19001bf 100644 --- a/src/main/java/a8k/service/appctrl/CondtionMgrService.java +++ b/src/main/java/a8k/service/appctrl/CondtionMgrService.java @@ -42,7 +42,7 @@ public class CondtionMgrService { } public Boolean isCanDoAction() { - return gstate.mainFlowCtrlState.workState.equals(A8kWorkState.WORKING) && !gstate.mainFlowCtrlState.errorFlag; + return gstate.mainFlowCtrlState.workState.equals(A8kWorkState.WORKING) && !gstate.mainFlowCtrlState.errorFlag && !gstate.mainFlowCtrlState.workStateChangeFlag; } diff --git a/src/main/java/a8k/service/appctrl/action/ctrl/DO_CLEAR_ERROR.java b/src/main/java/a8k/service/appctrl/action/ctrl/DO_CLEAR_ERROR.java new file mode 100644 index 0000000..412c5ea --- /dev/null +++ b/src/main/java/a8k/service/appctrl/action/ctrl/DO_CLEAR_ERROR.java @@ -0,0 +1,58 @@ +package a8k.service.appctrl.action.ctrl; + +import a8k.service.appctrl.action.base.A8kActionStepType; +import a8k.service.appctrl.action.base.A8kStepAction; +import a8k.service.appstate.GStateService; +import a8k.service.appstate.resource.A8kPublicResourceType; +import a8k.service.appstate.type.MainFlowCtrlState; +import a8k.service.appstate.type.state.A8kWorkState; +import a8k.service.devicedriver.ctrl.SampleScanTransportCtrl; +import a8k.type.exception.AppException; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +public class DO_CLEAR_ERROR extends A8kStepAction { + static Logger logger = LoggerFactory.getLogger(DO_CLEAR_ERROR.class); + + DO_CLEAR_ERROR() { + super(A8kActionStepType.DO_PAUSE); + } + + @Resource + GStateService gstate; + + MainFlowCtrlState mfcs; + + @PostConstruct + void init() { + mfcs = gstate.mainFlowCtrlState; + } + + @Override public void doaction() throws AppException { + + //ProcessErrorBeforeContinue + + + mfcs.errorFlag = false; + mfcs.ecodeList.clear(); + + } + + @Override public Boolean checkCondition() { + Boolean cond1 = mfcs.workStateChangeFlag; + Boolean cond2 = mfcs.errorFlag; + Boolean cond3 = mfcs.workState.equals(A8kWorkState.WORKING); + Boolean cond4 = mfcs.lastWorkState.equals(A8kWorkState.PAUSE) || mfcs.lastWorkState.equals(A8kWorkState.IDLE); + return cond1 && cond2 && cond3 && cond4; + } + + @Override public List getResourceList() { + return List.of(); + } +} diff --git a/src/main/java/a8k/service/appctrl/action/ctrl/DO_PAUSE.java b/src/main/java/a8k/service/appctrl/action/ctrl/DO_PAUSE.java index c82d1e2..235aac3 100644 --- a/src/main/java/a8k/service/appctrl/action/ctrl/DO_PAUSE.java +++ b/src/main/java/a8k/service/appctrl/action/ctrl/DO_PAUSE.java @@ -4,6 +4,7 @@ import a8k.service.appctrl.action.base.A8kActionStepType; import a8k.service.appctrl.action.base.A8kStepAction; import a8k.service.appstate.GStateService; import a8k.service.appstate.resource.A8kPublicResourceType; +import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.state.A8kWorkState; import a8k.service.devicedriver.ctrl.SampleScanTransportCtrl; import a8k.type.exception.AppException; @@ -26,22 +27,22 @@ public class DO_PAUSE extends A8kStepAction { @Resource GStateService gstate; - @Resource - SampleScanTransportCtrl sampleScanTransportCtrl; + MainFlowCtrlState mfcs; @PostConstruct void init() { + mfcs = gstate.mainFlowCtrlState; } @Override public void doaction() throws AppException { - gstate.mainFlowCtrlState.workStateChangeFlag = false; + mfcs.workStateChangeFlag = false; } @Override public Boolean checkCondition() { - Boolean cond1 = gstate.mainFlowCtrlState.workStateChangeFlag; - Boolean cond2 = gstate.mainFlowCtrlState.lastWorkState.equals(A8kWorkState.WORKING); - Boolean cond3 = gstate.mainFlowCtrlState.workState.equals(A8kWorkState.PAUSE); - return cond1 & cond2 & cond3; + Boolean cond1 = mfcs.workStateChangeFlag && !mfcs.errorFlag; + Boolean cond2 = mfcs.lastWorkState.equals(A8kWorkState.WORKING); + Boolean cond3 = mfcs.workState.equals(A8kWorkState.PAUSE); + return cond1 && cond2 && cond3; } @Override public List getResourceList() { diff --git a/src/main/java/a8k/service/appctrl/action/ctrl/DO_RESUME.java b/src/main/java/a8k/service/appctrl/action/ctrl/DO_RESUME.java index d4a6cf6..51bf333 100644 --- a/src/main/java/a8k/service/appctrl/action/ctrl/DO_RESUME.java +++ b/src/main/java/a8k/service/appctrl/action/ctrl/DO_RESUME.java @@ -4,6 +4,7 @@ import a8k.service.appctrl.action.base.A8kActionStepType; import a8k.service.appctrl.action.base.A8kStepAction; import a8k.service.appstate.GStateService; import a8k.service.appstate.resource.A8kPublicResourceType; +import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.state.A8kWorkState; import a8k.type.exception.AppException; import jakarta.annotation.PostConstruct; @@ -25,19 +26,22 @@ public class DO_RESUME extends A8kStepAction { @Resource GStateService gstate; + MainFlowCtrlState mfcs; + @PostConstruct void init() { + mfcs = gstate.mainFlowCtrlState; } @Override public void doaction() throws AppException { - gstate.mainFlowCtrlState.workStateChangeFlag = false; + mfcs.workStateChangeFlag = false; } @Override public Boolean checkCondition() { - Boolean cond1 = gstate.mainFlowCtrlState.workStateChangeFlag; - Boolean cond2 = gstate.mainFlowCtrlState.lastWorkState.equals(A8kWorkState.PAUSE); - Boolean cond3 = gstate.mainFlowCtrlState.workState.equals(A8kWorkState.WORKING); - return cond1 & cond2 & cond3; + Boolean cond1 = mfcs.workStateChangeFlag; + Boolean cond2 = mfcs.lastWorkState.equals(A8kWorkState.PAUSE); + Boolean cond3 = mfcs.workState.equals(A8kWorkState.WORKING); + return cond1 && cond2 && cond3; } @Override public List getResourceList() { diff --git a/src/main/java/a8k/service/appctrl/action/ctrl/DO_START.java b/src/main/java/a8k/service/appctrl/action/ctrl/DO_START.java index 5af4213..fd3bde8 100644 --- a/src/main/java/a8k/service/appctrl/action/ctrl/DO_START.java +++ b/src/main/java/a8k/service/appctrl/action/ctrl/DO_START.java @@ -4,6 +4,7 @@ import a8k.service.appctrl.action.base.A8kActionStepType; import a8k.service.appctrl.action.base.A8kStepAction; import a8k.service.appstate.GStateService; import a8k.service.appstate.resource.A8kPublicResourceType; +import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.state.A8kWorkState; import a8k.service.devicedriver.ctrl.SampleScanTransportCtrl; import a8k.type.exception.AppException; @@ -29,23 +30,23 @@ public class DO_START extends A8kStepAction { @Resource SampleScanTransportCtrl sampleScanTransportCtrl; + MainFlowCtrlState mfcs; @PostConstruct void init() { - + mfcs = gstate.mainFlowCtrlState; } - @Override public void doaction() throws AppException { - gstate.mainFlowCtrlState.workStateChangeFlag = false; + mfcs.workStateChangeFlag = false; sampleScanTransportCtrl.ejectTubeHolder(); } @Override public Boolean checkCondition() { - Boolean cond1 = gstate.mainFlowCtrlState.workStateChangeFlag; - Boolean cond2 = gstate.mainFlowCtrlState.lastWorkState.equals(A8kWorkState.IDLE); - Boolean cond3 = gstate.mainFlowCtrlState.workState.equals(A8kWorkState.WORKING); - return cond1 & cond2 & cond3; + Boolean cond1 = mfcs.workStateChangeFlag; + Boolean cond2 = mfcs.lastWorkState.equals(A8kWorkState.IDLE); + Boolean cond3 = mfcs.workState.equals(A8kWorkState.WORKING); + return cond1 && cond2 && cond3; } @Override public List getResourceList() { diff --git a/src/main/java/a8k/service/appctrl/action/ctrl/DO_STOP.java b/src/main/java/a8k/service/appctrl/action/ctrl/DO_STOP.java index b4064bb..d203e0e 100644 --- a/src/main/java/a8k/service/appctrl/action/ctrl/DO_STOP.java +++ b/src/main/java/a8k/service/appctrl/action/ctrl/DO_STOP.java @@ -4,6 +4,7 @@ import a8k.service.appctrl.action.base.A8kActionStepType; import a8k.service.appctrl.action.base.A8kStepAction; import a8k.service.appstate.GStateService; import a8k.service.appstate.resource.A8kPublicResourceType; +import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.state.A8kWorkState; import a8k.type.exception.AppException; import jakarta.annotation.PostConstruct; @@ -25,20 +26,22 @@ public class DO_STOP extends A8kStepAction { @Resource GStateService gstate; + MainFlowCtrlState mfcs; + @PostConstruct void init() { + mfcs = gstate.mainFlowCtrlState; } - @Override public void doaction() throws AppException { - gstate.mainFlowCtrlState.workStateChangeFlag = false; + mfcs.workStateChangeFlag = false; } @Override public Boolean checkCondition() { - Boolean cond1 = gstate.mainFlowCtrlState.workStateChangeFlag; - Boolean cond2 = gstate.mainFlowCtrlState.lastWorkState.equals(A8kWorkState.WORKING) || gstate.mainFlowCtrlState.lastWorkState.equals(A8kWorkState.PAUSE); - Boolean cond3 = gstate.mainFlowCtrlState.workState.equals(A8kWorkState.IDLE); - return cond1 & cond2 & cond3; + Boolean cond1 = mfcs.workStateChangeFlag; + Boolean cond2 = mfcs.lastWorkState.equals(A8kWorkState.WORKING) || mfcs.lastWorkState.equals(A8kWorkState.PAUSE); + Boolean cond3 = mfcs.workState.equals(A8kWorkState.IDLE); + return cond1 && cond2 && cond3; } @Override public List getResourceList() { diff --git a/src/main/java/a8k/service/appctrl/action/mainflow/SEQ7_EJECT_TUBEHOLDER.java b/src/main/java/a8k/service/appctrl/action/mainflow/SEQ7_EJECT_TUBEHOLDER.java index 5e40c7b..2ea9e84 100644 --- a/src/main/java/a8k/service/appctrl/action/mainflow/SEQ7_EJECT_TUBEHOLDER.java +++ b/src/main/java/a8k/service/appctrl/action/mainflow/SEQ7_EJECT_TUBEHOLDER.java @@ -52,7 +52,7 @@ public class SEQ7_EJECT_TUBEHOLDER extends A8kStepAction { Boolean cond1 = cms.isCanDoAction(); Boolean cond2 = gstate.getTubeHolder().state.equals(TubeHolderState.PROCESSING); Boolean cond3 = cms.isNoMoreTubeToBeProcessed(); - return cond1 & cond2 & cond3; + return cond1 && cond2 && cond3; } @Override public List getResourceList() { diff --git a/src/main/java/a8k/service/appctrl/scheduler/MainFlowCtrlScheduler.java b/src/main/java/a8k/service/appctrl/scheduler/MainFlowCtrlScheduler.java index 93de5c8..510c6d4 100644 --- a/src/main/java/a8k/service/appctrl/scheduler/MainFlowCtrlScheduler.java +++ b/src/main/java/a8k/service/appctrl/scheduler/MainFlowCtrlScheduler.java @@ -93,11 +93,6 @@ public class MainFlowCtrlScheduler { workThread.start(); } - - public void setClearErrorPendingFlag() { - clearErrorPendingFlag = true; - } - public List getA8kStepActionList() { return stepActionList; } @@ -150,23 +145,23 @@ public class MainFlowCtrlScheduler { } } - void clearError() { - /* - * 清除错误 - */ - clearErrorPendingFlag = false; - try { - beforeDoWhat(A8kActionStepType.DO_CLEAR_ERROR); - boolean suc = ecodeClearProcesser.process(state.ecodeList); - if (suc) { - state.ecodeList.clear(); - state.errorFlag = false; - } - } catch (AppException appe) { - A8kErrorContext context = new A8kErrorContext(A8kActionStepType.DO_CLEAR_ERROR, appe.error); - a8kEcodePostProcesser(List.of(context)); - } - } +// void clearError() { +// /* +// * 清除错误 +// */ +// clearErrorPendingFlag = false; +// try { +// beforeDoWhat(A8kActionStepType.DO_CLEAR_ERROR); +// boolean suc = ecodeClearProcesser.process(state.ecodeList); +// if (suc) { +// state.ecodeList.clear(); +// state.errorFlag = false; +// } +// } catch (AppException appe) { +// A8kErrorContext context = new A8kErrorContext(A8kActionStepType.DO_CLEAR_ERROR, appe.error); +// a8kEcodePostProcesser(List.of(context)); +// } +// } List waitAllActionIsDone(List> futureList) {