diff --git a/src/main/java/a8k/service/appctrl/AppDeviceCtrlService.java b/src/main/java/a8k/service/appctrl/AppDeviceCtrlService.java index 71eae97..a61b3b7 100644 --- a/src/main/java/a8k/service/appctrl/AppDeviceCtrlService.java +++ b/src/main/java/a8k/service/appctrl/AppDeviceCtrlService.java @@ -4,6 +4,7 @@ import a8k.controler.extapi.pagecontrol.ExtApiTabConfig; import a8k.controler.extapi.utils.ExtApiFn; import a8k.controler.extapi.utils.ExtApiTab; import a8k.service.appctrl.action.base.A8kStepAction; +import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.TubeHolder; import a8k.type.ConsumableGroup; import a8k.type.checkpoint.CheckResult; @@ -88,22 +89,13 @@ public class AppDeviceCtrlService { +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ @ExtApiFn(name = "获取设备工作状态", group = "设备状态") - public ObjectNode getDeviceWorkState() { - ObjectMapper mapper = new ObjectMapper(); - ObjectNode json = new ObjectNode(mapper.getNodeFactory()); - json.put("mainFlowCtrlState", mapper.valueToTree(gstate.mainFlowCtrlState)); - json.put("globalWorkState", mapper.valueToTree(gstate.getWorkState())); - return json; + public MainFlowCtrlState getDeviceWorkState() { + return gstate.mainFlowCtrlState; } @ExtApiFn(name = "设备是否正在切换状态中", group = "设备状态") public Boolean deviceWorkStateIsChanging() { - A8kWorkState workState = gstate.getWorkState(); - A8kWorkState sampleScanServiceWorkState = gstate.mainFlowCtrlState.workState; - if (!workState.equals(sampleScanServiceWorkState)) { - return true; - } - return false; + return gstate.mainFlowCtrlState.isPending(); } @ExtApiFn(name = "获取运行步骤状态", group = "设备状态") diff --git a/src/main/java/a8k/service/appctrl/MainFlowCtrlService.java b/src/main/java/a8k/service/appctrl/MainFlowCtrlService.java index e656e30..0813666 100644 --- a/src/main/java/a8k/service/appctrl/MainFlowCtrlService.java +++ b/src/main/java/a8k/service/appctrl/MainFlowCtrlService.java @@ -8,6 +8,7 @@ import a8k.service.appctrl.type.A8kErrorContext; import a8k.service.appstate.GStateService; import a8k.service.appstate.type.MainFlowCtrlState; import a8k.service.appstate.type.state.A8kWorkState; +import a8k.service.appstate.type.state.TubeState; import com.iflytop.a800.SpringBootBeanUtil; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; @@ -64,6 +65,13 @@ public class MainFlowCtrlService { state.workState = workState; } + Boolean isAllowPause() { + return gstate.getCurProcessingTube() == null || + gstate.getCurProcessingTube().state.equals(TubeState.TO_BE_PROCESSED) || + gstate.getCurProcessingTube().state.equals(TubeState.PROCESS_COMPLETE) || + gstate.getCurProcessingTube().state.equals(TubeState.EMPTY); + } + void checkBeforeGuess() { MainFlowCtrlState state = gstate.getMainFlowCtrlState(); if (state.startActionPending) { @@ -73,6 +81,9 @@ public class MainFlowCtrlService { } changeWorkState(A8kWorkState.WORKING); } else if (state.pauseActionPending) { + if(!isAllowPause()){ + return; + } if (state.workState != A8kWorkState.WORKING) { state.pauseActionPending = false; return; diff --git a/src/main/java/a8k/service/appstate/type/MainFlowCtrlState.java b/src/main/java/a8k/service/appstate/type/MainFlowCtrlState.java index 1427de6..61a8126 100644 --- a/src/main/java/a8k/service/appstate/type/MainFlowCtrlState.java +++ b/src/main/java/a8k/service/appstate/type/MainFlowCtrlState.java @@ -2,6 +2,7 @@ package a8k.service.appstate.type; import a8k.service.appctrl.type.A8kErrorContext; import a8k.service.appstate.type.state.A8kWorkState; +import com.fasterxml.jackson.annotation.JsonIgnore; import java.util.ArrayList; import java.util.List; @@ -12,11 +13,23 @@ public class MainFlowCtrlState { public Boolean fatalErrorFlag = false; //致命错误标志 public List ecodeList = new ArrayList<>(); + @JsonIgnore public Boolean workStateChangeFlag = false; //工作状态变化标志 + @JsonIgnore public A8kWorkState lastWorkState = A8kWorkState.IDLE; //上一个工作状态 + @JsonIgnore public Boolean stopActionPending = false; //停止动作等待 + @JsonIgnore public Boolean pauseActionPending = false; //暂停动作等待 + @JsonIgnore public Boolean resumeActionPending = false; //恢复动作等待 + @JsonIgnore public Boolean startActionPending = false; //开始动作等待 + + public Boolean isPending() { + Boolean condition1 = stopActionPending || pauseActionPending || resumeActionPending || startActionPending; + Boolean condition2 = workStateChangeFlag; + return condition1 || condition2; + } }