Browse Source

update

tags/v0
zhaohe 7 months ago
parent
commit
9899a6e203
  1. 17
      src/main/java/a8k/app/a8ktype/device/consumables/PreReactionAreaState.java
  2. 20
      src/main/java/a8k/app/a8ktype/device/consumables/PreReactionGrid.java
  3. 19
      src/main/java/a8k/app/a8ktype/device/consumables/PreReactionGridGroup.java
  4. 26
      src/main/java/a8k/app/service/mainctrl/AppDeviceCtrlService.java
  5. 6
      src/main/java/a8k/app/service/mainctrl/mainflowctrl/MainFlowCtrlScheduler.java
  6. 1
      src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/P30ScanTubeHolderTask.java
  7. 1
      src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/P40ApplyRresoure.java
  8. 53
      src/main/java/a8k/app/service/statemgr/PreReactionAreaStateMgrService.java

17
src/main/java/a8k/app/a8ktype/device/consumables/PreReactionAreaState.java

@ -0,0 +1,17 @@
package a8k.app.a8ktype.device.consumables;
import a8k.app.a8ktype.device.ConsumableGroup;
import java.util.ArrayList;
import java.util.List;
public class PreReactionAreaState {
public List<PreReactionGridGroup> gridGroups;
public PreReactionAreaState() {
gridGroups = new ArrayList<>();
for (int i = 0; i < 6; i++) {
gridGroups.add(new PreReactionGridGroup(ConsumableGroup.values()[i]));
}
}
}

20
src/main/java/a8k/app/a8ktype/device/consumables/PreReactionGrid.java

@ -0,0 +1,20 @@
package a8k.app.a8ktype.device.consumables;
import a8k.app.a8ktype.device.ConsumableGroup;
public class PreReactionGrid {
public ConsumableGroup group;
public Integer off;
public Boolean inUse;
public String projectTaskCxtId;
public Integer preReactionTotleTimeS;
public Long startTime;
public Integer remainTimeS;
public PreReactionGrid(ConsumableGroup group, Integer off) {
this.group = group;
this.off = off;
}
}

19
src/main/java/a8k/app/a8ktype/device/consumables/PreReactionGridGroup.java

@ -0,0 +1,19 @@
package a8k.app.a8ktype.device.consumables;
import a8k.app.a8ktype.device.ConsumableGroup;
import java.util.ArrayList;
import java.util.List;
public class PreReactionGridGroup {
public ConsumableGroup group;
public List<PreReactionGrid> grids;
public PreReactionGridGroup(ConsumableGroup group) {
grids = new ArrayList<>();
this.group = group;
for (int i = 0; i < 6; i++) {
grids.add(new PreReactionGrid(group, i));
}
}
}

26
src/main/java/a8k/app/service/mainctrl/AppDeviceCtrlService.java

@ -1,6 +1,6 @@
package a8k.app.service.mainctrl;
import a8k.app.service.mainctrl.mainflowctrl.MainFlowCtrlSchedulerSignalThread;
import a8k.app.service.mainctrl.mainflowctrl.MainFlowCtrlScheduler;
import a8k.app.service.statemgr.ConsumablesMgrService;
import a8k.app.service.statemgr.ProjectContextMgrService;
@ -18,29 +18,7 @@ public class AppDeviceCtrlService {
GStateMgrService gstate;
@Resource
MainFlowCtrlSchedulerSignalThread mainFlowCtrlScheduler; //主流程控制模块
@Resource
AppConsumablesScanService appConsumablesScanService; //耗材扫描模块
@Resource
ConsumablesMgrService consumablesMgrService; //耗材管理模块
@Resource
ProjectContextMgrService projectContextMgrService; //项目处理上下文管理模块
//
// /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// * 设备初始化
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
// public List<CheckResult> checkBeforeInitDevice() throws AppException {
// return deviceInitializationModule.checkBeforeInitDevice();
// }
//
// public void initDeviceAsync() throws AppException {
// deviceInitializationModule.initDeviceAsync();
// backgroudProcessCtrlService.startProcess(); //TODO:将这段代码绑定login事件
// }
MainFlowCtrlScheduler mainFlowCtrlScheduler; //主流程控制模块
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* 设备控制
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

6
src/main/java/a8k/app/service/mainctrl/mainflowctrl/MainFlowCtrlSchedulerSignalThread.java → src/main/java/a8k/app/service/mainctrl/mainflowctrl/MainFlowCtrlScheduler.java

@ -29,8 +29,8 @@ import java.util.List;
import java.util.Objects;
@Component
public class MainFlowCtrlSchedulerSignalThread implements ApplicationListener<ApplicationStartedEvent> {
static Logger logger = LoggerFactory.getLogger(MainFlowCtrlSchedulerSignalThread.class);
public class MainFlowCtrlScheduler implements ApplicationListener<ApplicationStartedEvent> {
static Logger logger = LoggerFactory.getLogger(MainFlowCtrlScheduler.class);
@FunctionalInterface
@ -162,7 +162,7 @@ public class MainFlowCtrlSchedulerSignalThread implements ApplicationListener<Ap
deviceWorkStateMgrService.addError(AppActionErrorContext.of(nextToDo, new AECodeError(e)));
}
}
//
var state = deviceWorkStateMgrService.getDeviceWorkState();
if (state.isPending() || !state.ecodeList.isEmpty() || state.manualInterventionFlag)
break;

1
src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/P30ScanTubeHolderTask.java

@ -277,5 +277,4 @@ public class P30ScanTubeHolderTask extends A8kActionTask {
newTubeHolder = null;
return new ArrayList<>();
}
}

1
src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/P40ApplyRresoure.java

@ -94,7 +94,6 @@ public class P40ApplyRresoure extends A8kActionTask {
List<AppError> errors = prePareResource();
if (errors != null && !errors.isEmpty()) {
log.warn("申请耗材失败,请求人工干预");
backProjectResource(tube);
deviceWorkStateMgrService.setHumanInterventionReq(true);
ebus.pushEvent(new A8kErrorsPromptEvent(errors));

53
src/main/java/a8k/app/service/statemgr/PreReactionAreaStateMgrService.java

@ -0,0 +1,53 @@
package a8k.app.service.statemgr;
import a8k.app.a8ktype.device.ConsumableGroup;
import a8k.app.a8ktype.device.consumables.PreReactionAreaState;
import a8k.app.a8ktype.device.consumables.PreReactionGridGroup;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class PreReactionAreaStateMgrService {
public PreReactionAreaState preReactionAreaState = new PreReactionAreaState();
public synchronized PreReactionAreaState getState() {
return preReactionAreaState;
}
public synchronized void takeAwayMixLiquid(ConsumableGroup group, Integer posoff) {
var grid = preReactionAreaState.gridGroups.get(group.ordinal()).grids.get(posoff);
grid.inUse = false;
grid.projectTaskCxtId = null;
grid.startTime = 0l;
grid.remainTimeS = 0;
grid.preReactionTotleTimeS = 0;
}
public synchronized void startPreIncubation(ConsumableGroup group, Integer posoff, String projectTaskCxtId, Integer preIncubationTotleTimeS) {
var grid = preReactionAreaState.gridGroups.get(group.ordinal()).grids.get(posoff);
grid.inUse = true;
grid.projectTaskCxtId = projectTaskCxtId;
grid.startTime = System.currentTimeMillis();
grid.remainTimeS = preIncubationTotleTimeS;
grid.preReactionTotleTimeS = preIncubationTotleTimeS;
}
@Scheduled(fixedDelay = 500)
synchronized public void updateRemainTime() {
for (PreReactionGridGroup group : preReactionAreaState.gridGroups) {
group.grids.forEach(grid -> {
if (grid.inUse) {
grid.remainTimeS = (int) ((grid.preReactionTotleTimeS * 1000 - (System.currentTimeMillis() - grid.startTime)) / 1000);
if (grid.remainTimeS <= 0) {
grid.remainTimeS = 0;
}
}
});
}
}
}
Loading…
Cancel
Save