22 changed files with 274 additions and 72 deletions
-
32README.md
-
1src/main/java/a8k/baseservice/appeventbus/appevent/AppIDCardMountEvent.java
-
4src/main/java/a8k/baseservice/appeventbus/appevent/AppWarningNotifyEvent.java
-
2src/main/java/a8k/service/appdata/AppFrontEndEventRouter.java
-
6src/main/java/a8k/service/appdevicectrl/AppDeviceCtrlService.java
-
15src/main/java/a8k/service/appdevicectrl/MainFlowCtrlService.java
-
5src/main/java/a8k/service/appdevicectrl/action/A8kActionStepType.java
-
6src/main/java/a8k/service/appdevicectrl/action/A8kStepAction.java
-
44src/main/java/a8k/service/appdevicectrl/action/DO_CHECK_THE_QUANTITY_OF_CONSUMABLES.java
-
4src/main/java/a8k/service/appdevicectrl/action/DO_EJECT_TUBEHOLDER.java
-
20src/main/java/a8k/service/appdevicectrl/action/DO_ENTER_TUBEHOLDER_AND_SCAN.java
-
5src/main/java/a8k/service/appdevicectrl/action/DO_PAUSE.java
-
15src/main/java/a8k/service/appdevicectrl/action/DO_START.java
-
5src/main/java/a8k/service/appdevicectrl/action/DO_STOP.java
-
115src/main/java/a8k/service/appdevicectrl/action/DO_SWITCH_TO_THE_NEXT_TUBE.java
-
25src/main/java/a8k/service/appdevicectrl/scheduler/MainFlowCtrlScheduler.java
-
5src/main/java/a8k/service/appstate/AppA8kGStateService.java
-
5src/main/java/a8k/service/appstate/type/TubeHolderState.java
-
10src/main/java/a8k/service/appstate/type/TubeState.java
-
1src/main/java/a8k/service/appstate/type/state/TubeHolderProcessState.java
-
18src/main/java/a8k/service/bak_appbase/progress/TubeProcessState.java
-
3src/main/java/a8k/type/type/A8kTubeHolderType.java
@ -0,0 +1,44 @@ |
|||||
|
package a8k.service.appdevicectrl.action; |
||||
|
|
||||
|
import a8k.service.appstate.AppA8kGStateService; |
||||
|
import a8k.service.appstate.resource.A8kPublicResourceType; |
||||
|
import a8k.service.appstate.type.state.A8kWorkState; |
||||
|
import a8k.service.appstate.type.state.TubeHolderProcessState; |
||||
|
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_CHECK_THE_QUANTITY_OF_CONSUMABLES extends A8kStepAction { |
||||
|
static Logger logger = LoggerFactory.getLogger(DO_CHECK_THE_QUANTITY_OF_CONSUMABLES.class); |
||||
|
|
||||
|
|
||||
|
@Resource |
||||
|
AppA8kGStateService gstate; |
||||
|
|
||||
|
@PostConstruct |
||||
|
void init() { |
||||
|
} |
||||
|
|
||||
|
@Override public void doaction() throws AppException { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@Override public Boolean checkCondition() { |
||||
|
|
||||
|
|
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
@Override public List<A8kPublicResourceType> getDeplyResourceList() { |
||||
|
return List.of(); |
||||
|
} |
||||
|
} |
@ -0,0 +1,115 @@ |
|||||
|
package a8k.service.appdevicectrl.action; |
||||
|
|
||||
|
import a8k.service.appstate.AppA8kGStateService; |
||||
|
import a8k.service.appstate.resource.A8kPublicResourceType; |
||||
|
import a8k.service.appstate.type.TubeHolderState; |
||||
|
import a8k.service.appstate.type.TubeState; |
||||
|
import a8k.service.appstate.type.state.A8kWorkState; |
||||
|
import a8k.service.appstate.type.state.TubeHolderProcessState; |
||||
|
import a8k.service.bak_appbase.progress.TubeProcessState; |
||||
|
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_SWITCH_TO_THE_NEXT_TUBE extends A8kStepAction { |
||||
|
static Logger logger = LoggerFactory.getLogger(DO_SWITCH_TO_THE_NEXT_TUBE.class); |
||||
|
|
||||
|
|
||||
|
@Resource |
||||
|
AppA8kGStateService gstate; |
||||
|
|
||||
|
@Resource |
||||
|
SampleScanTransportCtrl sstc; |
||||
|
|
||||
|
@PostConstruct |
||||
|
void init() { |
||||
|
} |
||||
|
|
||||
|
@Override public void doaction() throws AppException { |
||||
|
/* |
||||
|
* 1. 将下一个试管移动到预处理位 |
||||
|
* 2. 如果当前试管是最后一个试管,则设置试管架状态为处理完成。 |
||||
|
*/ |
||||
|
TubeHolderState state = gstate.getTubeHolderState(); |
||||
|
|
||||
|
int nowTubeIndex = state.processingTubeIndex; |
||||
|
int nextTubeIndex = nowTubeIndex + 1; |
||||
|
if (nextTubeIndex >= 10) { |
||||
|
logger.info("当前试管架处理完成"); |
||||
|
state.processState = TubeHolderProcessState.PROCESS_FINISHED; |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
assert state.tubeStates.length == 10; |
||||
|
nextTubeIndex = -1; |
||||
|
for (int i = nowTubeIndex + 1; i < 10; i++) { |
||||
|
|
||||
|
TubeState tubeState = state.tubeStates[i]; |
||||
|
if (!tubeState.isTubeExist) { |
||||
|
continue; |
||||
|
} |
||||
|
nextTubeIndex = i; |
||||
|
break; |
||||
|
} |
||||
|
|
||||
|
if (nextTubeIndex == -1) { |
||||
|
logger.info("当前试管架处理完成"); |
||||
|
state.processState = TubeHolderProcessState.PROCESS_FINISHED; |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
sstc.moveTubeToPreProcessPos(nextTubeIndex); |
||||
|
state.processingTubeIndex = nextTubeIndex; |
||||
|
} |
||||
|
|
||||
|
boolean con1; |
||||
|
boolean con1_11; |
||||
|
boolean con1_12; |
||||
|
boolean con1_21; |
||||
|
|
||||
|
@Override public Boolean checkCondition() { |
||||
|
|
||||
|
/* |
||||
|
*1. 设备工作中 |
||||
|
* 1.1 试管架正在处理中 |
||||
|
* 1.2 当前Index=-1 |
||||
|
* |
||||
|
* 2.1 当前试管处理完成 |
||||
|
* |
||||
|
*/ |
||||
|
|
||||
|
var mainFlowCtrlState = gstate.mainFlowCtrlState; |
||||
|
Integer curTubeIndex = gstate.getTubeHolderState().processingTubeIndex; |
||||
|
|
||||
|
|
||||
|
con1 = mainFlowCtrlState.workState.equals(A8kWorkState.WORKING); |
||||
|
con1_11 = gstate.getTubeHolderState().processState.equals(TubeHolderProcessState.PROCESSING); |
||||
|
con1_12 = curTubeIndex == -1; |
||||
|
|
||||
|
con1_21 = false; |
||||
|
if (curTubeIndex >= 0) { |
||||
|
con1_21 = gstate.getTubeHolderState().tubeStates[curTubeIndex].state.equals(TubeProcessState.PROCESS_COMPLETE); |
||||
|
} |
||||
|
|
||||
|
return con1 && (con1_11 && con1_12 || con1_21); |
||||
|
} |
||||
|
|
||||
|
public List<Boolean> getConectionList() { |
||||
|
return List.of(con1, con1_11, con1_12, con1_21); |
||||
|
} |
||||
|
|
||||
|
@Override public List<A8kPublicResourceType> getDeplyResourceList() { |
||||
|
return List.of(A8kPublicResourceType.SampleTransferXMotor); |
||||
|
} |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue