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