Browse Source

fix some bug

master
zhaohe 3 months ago
parent
commit
6c8a661038
  1. 2
      src/main/java/a8k/app/controler/api/v1/app/data/ReactionResultControler.java
  2. 2
      src/main/java/a8k/app/engineer/service/executor/EngineerModeActionExecutor.java
  3. 6
      src/main/java/a8k/app/engineer/service/qatest/ExperimentConsistencyTestingService.java
  4. 1
      src/main/java/a8k/app/i18n/Internationalization.java
  5. 54
      src/main/java/a8k/app/service/mainctrl/mainflowctrl/MainFlowCtrlScheduler.java
  6. 4
      src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java
  7. 2
      src/main/java/a8k/extui/page/extapp/profession_test/ExperimentConsistencyTestingPage.java

2
src/main/java/a8k/app/controler/api/v1/app/data/ReactionResultControler.java

@ -47,6 +47,7 @@ public class ReactionResultControler {
@PostMapping("/printfRecord")
public ApiRet<Void> printfRecord(Integer id) {
printerService.print(reactionRecordMgrService.getRecordById(id));
return ApiRet.success();
}
@ -57,6 +58,7 @@ public class ReactionResultControler {
@PostMapping("/printfRecords")
public ApiRet<Void> printfRecord(@RequestBody IDList ids) {
for (Integer i : ids.ids) {
printerService.print(reactionRecordMgrService.getRecordById(i));
}

2
src/main/java/a8k/app/engineer/service/executor/EngineerModeActionExecutor.java

@ -40,6 +40,7 @@ public class EngineerModeActionExecutor {
private final EngineerModeStateMgrService stateMgr;
private final GStateMgrService gStateMgrService;
Boolean stoppingFlag = false;
ThreadPoolExecutor executor =
new ThreadPoolExecutor(1, 1, 0, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(1));
@ -56,6 +57,7 @@ public class EngineerModeActionExecutor {
stoppingFlag = false;
executor.submit(() -> {
try {
stateMgr.setEngineerWorkState(EngineerWorkState.WORKING);
action.run();
} catch (BreakException e) {
log.info("action was interrupted");

6
src/main/java/a8k/app/engineer/service/qatest/ExperimentConsistencyTestingService.java

@ -17,6 +17,7 @@ import a8k.app.service.data.ProjInfoMgrService;
import a8k.app.service.data.ReactionRecordMgrService;
import a8k.app.service.lowerctrl.*;
import a8k.app.service.mainctrl.TubeHolderSettingMgrService;
import a8k.app.service.param.pipetteparam.PipetteGunExParamMgr;
import a8k.app.service.statemgr.*;
import a8k.app.service.utils.ProjInfoUtils;
import a8k.app.service.utils.UISender;
@ -100,6 +101,7 @@ public class ExperimentConsistencyTestingService {
final private HbotMoveExCtrlService hbotMoveExCtrlService;
private final OptModuleDriver optModuleDriver;
private final HbotMoveCtrlService hbotMoveCtrlService;
private final PipetteGunExParamMgr pipetteGunExParamMgr;
private TubeHolderSetting curTubeHolderSetting;
@ -198,6 +200,7 @@ public class ExperimentConsistencyTestingService {
try {
log.error("Catch exception: ", e);
UISender.txErrorPrompt(e);
docmd("丢tip", hbotMoveExCtrlService::dropTip);
docmd("HBOT复位", hbotMoveCtrlService::moveToZero);
docmd("推出试管架", tubeFeedingCtrlService::ejectTubeHolder);
//清空光学模组
@ -328,6 +331,7 @@ public class ExperimentConsistencyTestingService {
log.warn("样本异常,跳过当前样本");
break;
}
docmd("HBOT复位", hbotMoveExCtrlService::moveQuickToZero);
}
}
@ -380,6 +384,8 @@ public class ExperimentConsistencyTestingService {
//取混合液到预反应位
liquidOperationCtrlService.takePreReactionLiquidToReation(preProcessPos);
incubationPlateStateMgrService.startIncubating(freeIncubationPos, System.currentTimeMillis(), projBuildinInfo.reactionPlateIncubationTimeMin * 60);
} catch (AppException e) {
if (e.getError().eq(A8kEcode.APPE_TAKE_SAMPLE_FAIL)) {
hbotMoveExCtrlService.moveQuickToZero();

1
src/main/java/a8k/app/i18n/Internationalization.java

@ -70,6 +70,7 @@ public class Internationalization {
case LOGIN_OUT_ERROR_DEVICE_IS_WORKING -> "设备正在工作中,不允许注销";
case DEVICE_STARTUP_IN_PROGRESS -> "设备启动中,请稍后";
case DEVICE_IS_BUSY -> "设备忙";
case SYS_EXCEPTION -> "系统异常";
default -> ecode.toString();
};
}

54
src/main/java/a8k/app/service/mainctrl/mainflowctrl/MainFlowCtrlScheduler.java

@ -2,6 +2,9 @@ package a8k.app.service.mainctrl.mainflowctrl;
import a8k.OS;
import a8k.SpringBootBeanUtil;
import a8k.app.engineer.service.qatest.EngineerModeActionCtrlService;
import a8k.app.engineer.service.state.EngineerModeStateMgrService;
import a8k.app.engineer.service.type.EngineerWorkState;
import a8k.app.type.DeviceRunMode;
//import a8k.app.a8ktype.appevent.A8kErrorsPromptEvent;
import a8k.app.type.a8k.pos.TipGroupPos;
@ -40,11 +43,12 @@ import java.util.Objects;
public class MainFlowCtrlScheduler implements ApplicationListener<ApplicationStartedEvent> {
private final GStateMgrService gstate;
private final DeviceWorkStateMgrService deviceWorkStateMgrService;
private final AppEventBusService ebus;
private final ModuleEnableCtrlDriver moduleEnableCtrlDriver;
private final LiquidOperationCtrlService liquidOperationCtrlService;
private final GStateMgrService gstate;
private final DeviceWorkStateMgrService deviceWorkStateMgrService;
private final AppEventBusService ebus;
private final ModuleEnableCtrlDriver moduleEnableCtrlDriver;
private final LiquidOperationCtrlService liquidOperationCtrlService;
private final EngineerModeStateMgrService engineerModeStateMgrService;
List<A8kActionTask> allActions = new ArrayList<>();
IMainFlowStateChangeProcesser stateChangeProcesser;
@ -94,6 +98,10 @@ public class MainFlowCtrlScheduler implements ApplicationListener<ApplicationSta
deviceWorkStateMgrService.clearPending();
throw new AppException(A8kEcode.APPE_DEVICE_IS_IN_FATAL_ERROR);
}
if (engineerModeStateMgrService.getState().engineerWorkState.equals(EngineerWorkState.WORKING)) {
throw new AppException(A8kEcode.DEVICE_IS_BUSY);
}
}
@Resource
@ -282,24 +290,24 @@ public class MainFlowCtrlScheduler implements ApplicationListener<ApplicationSta
void workFn() {
while (workThread.isAlive()) {
try{
var state = deviceWorkStateMgrService.getDeviceWorkState();
if (state.fatalErrorFlag) {
OS.forceSleep(500);
continue;
}
switch (state.workState) {
case IDLE -> onIDLE();
case WORKING -> onWorking();
case PAUSE -> onPause();
}
onPostProcessing();
OS.forceSleep(500);
} catch (Exception e) {
log.error("workFn error {}", e.getMessage(), e);
}
try {
var state = deviceWorkStateMgrService.getDeviceWorkState();
if (state.fatalErrorFlag) {
OS.forceSleep(500);
continue;
}
switch (state.workState) {
case IDLE -> onIDLE();
case WORKING -> onWorking();
case PAUSE -> onPause();
}
onPostProcessing();
OS.forceSleep(500);
} catch (Exception e) {
log.error("workFn error {}", e.getMessage(), e);
}
}
}

4
src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java

@ -130,7 +130,9 @@ public class ExtApiPageGroupCfgMgr {
new Menu(MiniServoCtrlPage.class, "伺服电机驱动"),
new Menu(InputIOStateScannerPage.class, "输入IO状态查看"),
new Menu(CodeScanerDriverCtrlPage.class, "条码扫描仪"),
new Menu(PrinterDebugPage.class, "打印机")
new Menu(PrinterDebugPage.class, "打印机"),
new Menu(OptScannerCtrlPage.class, "光学模组")
)));

2
src/main/java/a8k/extui/page/extapp/profession_test/ExperimentConsistencyTestingPage.java

@ -87,7 +87,7 @@ public class ExperimentConsistencyTestingPage {
}
public void setTubeRepeatTime(Integer tubeOff, Integer repeatTimes) {
tubeOff = tubeOff + 1;
tubeOff = tubeOff - 1;
TubeHolderExConfig tubeHolderExConfig = experimentConsistencyTestingService.getTubeExConfig();
tubeHolderExConfig.tubeExConfigs.get(tubeOff).repeatTimes = repeatTimes;
log.info("setTubeRepeatTime: tubeOff = {}, repeatTimes = {}", tubeOff, repeatTimes);

Loading…
Cancel
Save