diff --git a/src/main/java/a8k/app/service/data/SubModuleRegInitialValueMgrService.java b/src/main/java/a8k/app/service/data/SubModuleRegInitialValueMgrService.java index 128824a..f950a93 100644 --- a/src/main/java/a8k/app/service/data/SubModuleRegInitialValueMgrService.java +++ b/src/main/java/a8k/app/service/data/SubModuleRegInitialValueMgrService.java @@ -1,6 +1,8 @@ package a8k.app.service.data; import a8k.app.iflytophald.type.protocol.A8kEcode; +import a8k.app.service.statemgr.GStateMgrService; +import a8k.app.type.DeviceRunMode; import a8k.app.type.exception.AppException; import a8k.app.config.A8kSubModuleInitRegConfig; import a8k.app.dao.SubModuleRegInitialValueDao; @@ -25,6 +27,7 @@ public class SubModuleRegInitialValueMgrService { private final SubModuleRegInitialValueDao subModuleRegInitialValueDao; private final A8kCanBusBaseDriver canBus; private final A8kSubModuleInitRegConfig a8kSubModuleInitRegConfig; + private final GStateMgrService gStateMgrService; /** @@ -93,6 +96,9 @@ public class SubModuleRegInitialValueMgrService { public void syncAllInputIOConfig() throws AppException { log.info("===SyncAllInputIOConfig==="); + if (gStateMgrService.isInMode(DeviceRunMode.RealMode)) { + return; + } for (MId mid : MId.values()) { if (mid == MId.NotSet) diff --git a/src/main/java/a8k/app/service/engineer/qatest/ExperimentConsistencyTestingService.java b/src/main/java/a8k/app/service/engineer/qatest/ExperimentConsistencyTestingService.java index 5f1c756..29aa120 100644 --- a/src/main/java/a8k/app/service/engineer/qatest/ExperimentConsistencyTestingService.java +++ b/src/main/java/a8k/app/service/engineer/qatest/ExperimentConsistencyTestingService.java @@ -22,70 +22,7 @@ import org.springframework.stereotype.Component; @Slf4j @RequiredArgsConstructor public class ExperimentConsistencyTestingService { - /* - * 状态管理器 - */ - final private ConsumablesMgrService consumablesMgrService; - final private TubeHolderSettingMgrService tubeHolderSettingMgrService; - final private TubeholderExSettingMgr tubeholderExSettingMgr; - final private MainFlowCtrlScheduler mainFlowCtrlScheduler; - final private ProjInfoMgrService projInfoMgrService; - - /** - * 开始测试 - * @param - * @throws AppException - */ public void startTest() throws AppException { -// /* - // * 检查当前是否有其他项目正在进行测试 - // */ - // BeforeDoEngineerActionChecker.check(); - // /* - // * 核对试管配置是否符合要求 - // */ - // TubeHolderSetting tubeHolderSetting = tubeHolderSettingMgrService.getThelastActiveTubeHolderSetting(); - // if (tubeHolderSetting == null) { - // throw AppException.of(A8kEcode.APPE_TUBEHOLDER_SETTING_ERROR, "缺少试管配置"); - // } - // - // for (TubeSetting tubeSetting : tubeHolderSetting.tubeSettings) { - // for (Integer projId : tubeSetting.projId) { - // if (projId != 1) { - // throw AppException.of(A8kEcode.APPE_TUBEHOLDER_SETTING_ERROR, "目前只支持HsCrp项目"); - // } - // } - // } - // - // - // /* - // * 核对耗材数量是否足够 - // */ - // int testTotalTimes = 0; - // for (TubeSetting tubeSetting : tubeHolderSetting.tubeSettings) { - // for (Integer ignored : tubeSetting.projId) { - // testTotalTimes += tubeholderExSettingMgr.getTubeExConfig().tubeExConfigs.get(tubeSetting.tubeIndex).repeatTimes; - // } - // } - // Integer consumableNum = consumablesMgrService.getConsumableNum(projInfoMgrService.getProjBuildInInfo(1)); - // if (consumableNum < testTotalTimes) { - // throw AppException.of(A8kEcode.APPE_CONSUME_NOT_ENOUGH, - // String.format("反应板,当前剩余:%d,需要:%d",consumableNum, testTotalTimes)); - // } - // if (!consumablesMgrService.isHasEnoughTips((int) (testTotalTimes * 1.2))) { - // throw AppException.of(A8kEcode.APPE_TIP_NOT_ENOUGH, - // String.format("Tip不足,需要:%d", (int) (testTotalTimes * 1.2))); - // } - // - // - // log.info("开始试剂实验一致性检测"); - // tubeholderExSettingMgr.setEnabled(true); - // mainFlowCtrlScheduler.startWork(() -> { - // log.info("试剂实验一致性检测工作线程结束"); - // tubeholderExSettingMgr.setEnabled(false); - // }); } - - } diff --git a/src/main/java/a8k/app/service/os/OSDeviceInfoMgrService.java b/src/main/java/a8k/app/service/os/OSDeviceInfoMgrService.java index 7c420be..9974c4b 100644 --- a/src/main/java/a8k/app/service/os/OSDeviceInfoMgrService.java +++ b/src/main/java/a8k/app/service/os/OSDeviceInfoMgrService.java @@ -34,7 +34,7 @@ public class OSDeviceInfoMgrService { } public String readSN() { - return getEnv("/iflytop/env/sn", gStateMgrService::getSn); + return getEnv("/iflytop/env/sn", "TEST001"); } public String setAssetId(String assetId) throws AppException { @@ -43,7 +43,7 @@ public class OSDeviceInfoMgrService { } public String readAssetId() { - return getEnv("/iflytop/env/assetid", gStateMgrService::getAssetId); + return getEnv("/iflytop/env/assetid", "TEST001"); } public String setDeviceType(String deviceType) throws AppException { @@ -52,7 +52,7 @@ public class OSDeviceInfoMgrService { } public String readDeviceType() { - return getEnv("/iflytop/env/device-type", gStateMgrService::getDeviceType); + return getEnv("/iflytop/env/device-type", "A8000"); } public String setDeviceVersion(String deviceVersion) throws AppException { @@ -61,7 +61,7 @@ public class OSDeviceInfoMgrService { } public String readDeviceVersion() { - return getEnv("/iflytop/env/device-version", gStateMgrService::getDeviceVersion); + return getEnv("/iflytop/env/device-version", "1"); } public String setManufactureDate(String manufactureDate) throws AppException { @@ -70,22 +70,22 @@ public class OSDeviceInfoMgrService { } public String readManufactureDate() { - return getEnv("/iflytop/env/manufacture-date", gStateMgrService::getManufactureDate); + return getEnv("/iflytop/env/manufacture-date", "NotSet"); } - private String getEnv(String path, EnvReadCallback readStateFn) { + private String getEnv(String path, String defaultVal) { if (OS.isRunOnWindows()) { - if (readStateFn != null) { - return readStateFn.read(); - } - return "NULL"; + path = "./runenv/virtual/" + path; } try { - return FileUtil.readUtf8String(path); + String val = FileUtil.readUtf8String(path); + if (val == null || val.isEmpty()) { + return defaultVal; + } + return val; } catch (Exception e) { - log.error("读取设备信息失败: {}", e.getMessage()); - return "Error"; + return defaultVal; } } @@ -94,9 +94,7 @@ public class OSDeviceInfoMgrService { throw AppException.of(A8kEcode.CODEERROR, String.format("设备%s不能为空", path)); } if (OS.isRunOnWindows()) { - if (updateStateFn != null) - updateStateFn.update(val); - return; + path = "./runenv/virtual/" + path; } try { @@ -106,18 +104,14 @@ public class OSDeviceInfoMgrService { } catch (Exception e) { throw AppException.of(A8kEcode.CODEERROR, String.format("设备%s设置失败: %s", path, e.getMessage())); } - } + @FunctionalInterface public interface EnvUpdateCallback { void update(String val) throws AppException; } - @FunctionalInterface - public interface EnvReadCallback { - String read(); - } @PostConstruct void init() { diff --git a/src/main/java/a8k/app/service/statemgr/AppFlagStateMgr.java b/src/main/java/a8k/app/service/statemgr/AppFlagStateMgr.java index 7e2f1a0..bd62fa7 100644 --- a/src/main/java/a8k/app/service/statemgr/AppFlagStateMgr.java +++ b/src/main/java/a8k/app/service/statemgr/AppFlagStateMgr.java @@ -47,8 +47,7 @@ public class AppFlagStateMgr { private final GStateMgrService gstate; - DeviceWarningFlagStateGroup deviceWarningFlagState = new DeviceWarningFlagStateGroup(); - DeviceWarningFlagStateGroup virtualWarningState = new DeviceWarningFlagStateGroup(); //虚拟状态,用于前端状态测试 + DeviceWarningFlagStateGroup deviceWarningFlagState = new DeviceWarningFlagStateGroup(); @PostConstruct @@ -58,12 +57,13 @@ public class AppFlagStateMgr { continue; deviceWarningFlagState.states.add(new AppFlagState(flagKey, flagKey.flagType)); } - virtualWarningState = deviceVirtualStateMgrService.getDeviceFlagStateVirtualStateInitVal(deviceWarningFlagState); + + deviceVirtualStateMgrService.initDeviceFlagStateVirtualState(deviceWarningFlagState); } synchronized public DeviceWarningFlagStateGroup getFlagState() { if (gstate.isInMode(DeviceRunMode.VirtualStateGenerateMode)) { - return virtualWarningState; + return deviceVirtualStateMgrService.getDeviceFlagStateVirtualState(); } // 正常状态下返回值 return ObjectUtil.clone(deviceWarningFlagState); @@ -71,7 +71,7 @@ public class AppFlagStateMgr { synchronized public Integer getStateVersion() { if (gstate.isInMode(DeviceRunMode.VirtualStateGenerateMode)) { - return virtualWarningState.version; // + return deviceVirtualStateMgrService.getDeviceFlagStateVirtualStateVersion(); } return deviceWarningFlagState.version; //返回当前状态版本号 } @@ -112,15 +112,15 @@ public class AppFlagStateMgr { if (!flagKey.enabled) return; - var state = deviceWarningFlagState; if (gstate.isInMode(DeviceRunMode.VirtualStateGenerateMode)) { - state = virtualWarningState; //如果是虚拟状态,则使用虚拟状态 + deviceVirtualStateMgrService.deviceFlagStateVirtualStateSetFlagStateVal(flagKey, val); + return; } - for (AppFlagState flagState : state.states) { + for (AppFlagState flagState : deviceWarningFlagState.states) { if (flagState.keyName.equals(flagKey)) { flagState.state = val; - state.version++; + deviceWarningFlagState.version++; return; } } @@ -131,17 +131,17 @@ public class AppFlagStateMgr { return; log.info("clearFlagState: {}", flagKey); - var state = deviceWarningFlagState; if (gstate.isInMode(DeviceRunMode.VirtualStateGenerateMode)) { - state = virtualWarningState; //如果是虚拟状态,则使用虚拟状态 + deviceVirtualStateMgrService.deviceFlagStateVirtualStateClearFlagState(flagKey); + return; } - for (AppFlagState flagState : state.states) { + for (AppFlagState flagState : deviceWarningFlagState.states) { if (flagState.keyName.equals(flagKey)) { flagState.state = false; flagState.errorDetailInfo = null; flagState.errorPromptInfo = null; - state.version++; + deviceWarningFlagState.version++; return; } } @@ -149,12 +149,12 @@ public class AppFlagStateMgr { synchronized public void clearAllFlagState() { log.info("clearAllFlagState: Clear all DeviceWarningFlagState"); - var state = deviceWarningFlagState; if (gstate.isInMode(DeviceRunMode.VirtualStateGenerateMode)) { - state = virtualWarningState; //如果是虚拟状态,则使用虚拟状态 + deviceVirtualStateMgrService.deviceFlagStateVirtualStateClearAllFlagState(); + return; } - for (AppFlagState flagState : state.states) { + for (AppFlagState flagState : deviceWarningFlagState.states) { if (flagState.flagType.equals(AppFlagType.NormalFlag) || flagState.flagType.equals(AppFlagType.WarningFlag)) { continue; } @@ -165,7 +165,7 @@ public class AppFlagStateMgr { } } - state.version++; + deviceWarningFlagState.version++; } synchronized public boolean isFlagTrigger(AppFlagKey flagType) { @@ -183,7 +183,4 @@ public class AppFlagStateMgr { } - synchronized public void resetVirtualState() { - virtualWarningState = deviceVirtualStateMgrService.getDeviceFlagStateVirtualStateInitVal(deviceWarningFlagState); - } } \ No newline at end of file diff --git a/src/main/java/a8k/app/service/virtualstate/DeviceVirtualStateMgrService.java b/src/main/java/a8k/app/service/virtualstate/DeviceVirtualStateMgrService.java index e10009d..7ae76ba 100644 --- a/src/main/java/a8k/app/service/virtualstate/DeviceVirtualStateMgrService.java +++ b/src/main/java/a8k/app/service/virtualstate/DeviceVirtualStateMgrService.java @@ -1,257 +1,161 @@ package a8k.app.service.virtualstate; -import a8k.app.iflytophald.type.protocol.A8kEcode; -import a8k.app.constant.AppConstant; -import a8k.app.factory.FakeA8kConsumableContainerFactory; -import a8k.app.factory.FakeAppErrorFactory; -import a8k.app.factory.ZAppPromptFactory; -import a8k.app.service.utils.ProjInfoUtils; +import a8k.app.service.virtualstate.generator.*; import a8k.app.type.AppFlagKey; import a8k.app.type.DeviceWarningFlagStateGroup; -import a8k.app.type.PreReactionGrid; import a8k.app.type.PreReactionGridGroup; -import a8k.app.type.a8k.BloodType; import a8k.app.type.a8k.ConsumableGroup; -import a8k.app.type.a8k.LittleBottleConsumableType; import a8k.app.type.a8k.container.A8kConsumableContainer; -import a8k.app.type.a8k.proj.ProjBriefInfo; import a8k.app.type.a8k.state.*; import a8k.app.type.a8k.state.enumtype.*; -import a8k.app.type.error.AppError; -import a8k.app.type.exception.AppException; -import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -import java.util.Date; - @Component @RequiredArgsConstructor @Slf4j public class DeviceVirtualStateMgrService { + private final VirtualStateModeMgr virtualStateModeMgr; + - private final TubeVirtualStateGenerator tubeVirtualStateGenerator; + private final TubeVirtualStateGenerator tubeVirtualStateGenerator; + private final DeviceFlagStateVirtualStateGenerator deviceFlagStateVirtualStateGenerator; + private final ConsumableStateGenerator consumableStateGenerator; + private final VirtualIncubationPlateStateGenerator virtualIncubationPlateStateGenerator; + private final VirtualPreReactionGridGroupStateGenerator virtualPreReactionGridGroupStateGenerator; + private final VirtualOptScannerStateGenerator virtualOptScannerStateGenerator; + private final VirtualDeviceWorkStateGenerator virtualDeviceWorkStateGenerator; + private final VirtualSensorStateGenerator virtualSensorStateGenerator; - public TubeHolder getVirtualTubeHolderState() { + + // + // 试管架状态 + // + + synchronized public TubeHolder getVirtualTubeHolderState() { return tubeVirtualStateGenerator.getVirtualTubeHolderState(); } - public EmergencyTubePos getVirtualEmergencyTube() { + synchronized public EmergencyTubePos getVirtualEmergencyTube() { return tubeVirtualStateGenerator.getVirtualEmergencyTube(); } - public Integer getVirtualTubeStateVersion() { + synchronized public Integer getVirtualTubeStateVersion() { return tubeVirtualStateGenerator.getVirtualTubeStateVersion(); } - public void setEmptyTubeState(TubeState emptyTubeState) { - tubeVirtualStateGenerator.setEmptyTubeState(emptyTubeState); - } + // + // 设备状态标志位 + // - synchronized public A8kConsumableContainer getVirtualConsumableContainerState() { - //虚拟状态生成模式 - A8kConsumableContainer state = new A8kConsumableContainer(); - state.tips[0].tipNum = 100; - state.tips[1].tipNum = 101; - state.tips[2].tipNum = 102; - for (int i = 0; i < 6; i++) { - try { - FakeA8kConsumableContainerFactory.buildA8kConsumableContainerState(state, i); - } catch (AppException ignored) { - } - } - return state; + public void initDeviceFlagStateVirtualState(DeviceWarningFlagStateGroup group) { + deviceFlagStateVirtualStateGenerator.init(group); } - synchronized public Integer getVirtualConsumableContainerStateVersion() { - //虚拟状态生成模式 - return Integer.MAX_VALUE; + public DeviceWarningFlagStateGroup getDeviceFlagStateVirtualState() { + return deviceFlagStateVirtualStateGenerator.getDeviceFlagStateVirtualState(); } + public Integer getDeviceFlagStateVirtualStateVersion() { + return deviceFlagStateVirtualStateGenerator.getVersion(); + } - /** - * 获取虚拟孵育盘状态 - * @return 虚拟孵育盘状态 - */ - synchronized public IncubationPlate getVirtualIncubationPlateState() { - IncubationPlate incubationPlate = new IncubationPlate(); - int i = 0; - for (IncubationSubTank subtank : incubationPlate.subtanks) { - i++; - switch (i) { - case 1 -> subtank.state = IncubationSubTankState.RESERVED; - case 2 -> subtank.state = IncubationSubTankState.WAITING_FOR_DROP; - case 3 -> subtank.state = IncubationSubTankState.INCUBATING; - case 4 -> subtank.state = IncubationSubTankState.ERROR; - case 5 -> subtank.state = IncubationSubTankState.INCUBATION_COMPLETE; - default -> subtank.state = IncubationSubTankState.EMPTY; - } - - subtank.sampleInfo = new SampleInfo( - "250109_001E01", 0, false, false, BloodType.WHOLE_BLOOD, "B3A7KK8DKF", "250109_001E" - ); - - - subtank.sampleInfo.bloodType = BloodType.WHOLE_BLOOD; - subtank.sampleInfo.sampleBarcode = "112334455667"; - subtank.sampleInfo.userid = "250109_001E"; - subtank.projInfo = new ProjBriefInfo(); - subtank.projInfo.projId = 1; - subtank.projInfo.projName = "hsCRP"; - subtank.projInfo.projShortName = "CA"; - subtank.projInfo.color = "#DC143C"; - subtank.sampleInfo.sampleId = "250109_001E01"; - subtank.projId = 1; - subtank.lotId = "CA123456"; - subtank.isEmergency = i == 2; - if (subtank.state.equals(IncubationSubTankState.ERROR)) { - subtank.error = new AppError(A8kEcode.PROJ_CARD_ERROR_WRONG_UNSUPPORTED, ""); - subtank.errorInfo = ZAppPromptFactory.buildAppPrompt(subtank.error); - } - subtank.startIncubatedTime = new Date().getTime(); - subtank.incubatedTimeSec = 3 * 60; - subtank.remainTimeSec = 3 * 60; - } - return incubationPlate; + public void deviceFlagStateVirtualStateSetFlagStateVal(AppFlagKey flagKey, boolean val) { + deviceFlagStateVirtualStateGenerator.setFlagStateVal(flagKey, val); } + public void deviceFlagStateVirtualStateClearFlagState(AppFlagKey flagKey) { + deviceFlagStateVirtualStateGenerator.clearFlagState(flagKey); + } - public PreReactionGridGroup getFakePreReactionGridGroup(ConsumableGroup group) { - PreReactionGridGroup gridGroup = new PreReactionGridGroup(group); - gridGroup.group = group; - if (group.off % 2 == 0) { - gridGroup.installed = true; - gridGroup.hasSomeGridInReacting = true; - gridGroup.hasSomeGridReactedCompleted = true; - } else { - gridGroup.installed = false; - gridGroup.hasSomeGridInReacting = false; - gridGroup.hasSomeGridReactedCompleted = false; - } - gridGroup.consumableType = LittleBottleConsumableType.BufferSolution; - var projBuildInInfo = FakeA8kConsumableContainerFactory.buildFakeProjBuildInInfo(group.off); - gridGroup.projBriefInfo = ProjInfoUtils.buildProjBrefInfo(projBuildInInfo); - gridGroup.version = 10; - for (int i = 0; i < AppConstant.CONSUMABLE_NUM; i++) { - - gridGroup.grids.get(i).projId = projBuildInInfo.projId; - gridGroup.grids.get(i).projBuildinInfo = projBuildInInfo; - gridGroup.grids.get(i).projExtInfoCard = null; - - switch (i / 5) { - case 0 -> { - gridGroup.grids.get(i).state = PreReactionGrid.State.UNINSTALL; - } - case 1 -> { - gridGroup.grids.get(i).state = PreReactionGrid.State.USED; - } - - case 2 -> { - gridGroup.grids.get(i).state = PreReactionGrid.State.REACTION_COMPLETED; - gridGroup.grids.get(i).sampleInfo.userid = "UID123"; - } - case 3 -> { - gridGroup.grids.get(i).state = PreReactionGrid.State.REACTING; - gridGroup.grids.get(i).sampleInfo.userid = "UID123"; - gridGroup.grids.get(i).reactionRemainingTime = 3 * 60L; - } - case 4 -> { - gridGroup.grids.get(i).state = PreReactionGrid.State.TO_BE_USED; - } - } - } - return gridGroup; + public void deviceFlagStateVirtualStateClearAllFlagState() { + deviceFlagStateVirtualStateGenerator.clearAllFlagState(); } - int cnt = 0; + // + // 耗材状态 + // - public SensorState getVirtualSensorState() { - SensorState sensorState = new SensorState(); - sensorState.setPboxTemperature(24); - sensorState.setIncubateBoxTemperature(25); - sensorState.setWasteBinFullFlag(false); - cnt++; - sensorState.setIncubateBoxTemperatureReady(cnt % 2 == 0); //每次调用切换一次状态 - sensorState.setPboxTemperatureReady(cnt % 2 == 0); //每次调用切换一次状态 + synchronized public A8kConsumableContainer getVirtualConsumableContainerState() { + return consumableStateGenerator.getVirtualConsumableContainerState(); + } + + synchronized public Integer getVirtualConsumableContainerStateVersion() { + return consumableStateGenerator.getVersion(); + } - return sensorState; + // + // 获取虚拟孵育盘状态 + // + synchronized public IncubationPlate getVirtualIncubationPlateState() { + return virtualIncubationPlateStateGenerator.getVirtualIncubationPlateState(); } // - // VIRTUAL_OPERATION + // 获取虚拟预反应格状态 // - public DeviceWarningFlagStateGroup getDeviceFlagStateVirtualStateInitVal(DeviceWarningFlagStateGroup deviceWarningFlagState) { - - DeviceWarningFlagStateGroup virtualWarningState = ObjectUtil.clone(deviceWarningFlagState); //初始化时复制一份状态版本号 - virtualWarningState.version = 10000; - - //设置VirtualState初始值 - var consumeNotEnoughState = virtualWarningState.find(AppFlagKey.ConsumeNotEnoughState); - consumeNotEnoughState.state = true; // - consumeNotEnoughState.errorDetailInfo = FakeAppErrorFactory.buildAEConsumeNotEnoughError(); - consumeNotEnoughState.errorPromptInfo = ZAppPromptFactory.buildAppPrompt(consumeNotEnoughState.errorDetailInfo); - - var tipNotEnoughState = virtualWarningState.find(AppFlagKey.TipNotEnoughState); - tipNotEnoughState.state = true; // - tipNotEnoughState.errorDetailInfo = FakeAppErrorFactory.buildError(A8kEcode.APPE_TIP_NOT_ENOUGH); - tipNotEnoughState.errorPromptInfo = ZAppPromptFactory.buildAppPrompt(tipNotEnoughState.errorDetailInfo); - - var infeedExceptionState = virtualWarningState.find(AppFlagKey.InfeedExceptionState); - infeedExceptionState.state = true; // - infeedExceptionState.errorDetailInfo = FakeAppErrorFactory.buildAEHardwareError(); - infeedExceptionState.errorPromptInfo = ZAppPromptFactory.buildAppPrompt(infeedExceptionState.errorDetailInfo); - - var outfeedAreaFullState = virtualWarningState.find(AppFlagKey.OutfeedAreaFullState); - outfeedAreaFullState.state = true; // - outfeedAreaFullState.errorDetailInfo = FakeAppErrorFactory.buildError(A8kEcode.APPE_OUTFEED_AREA_IS_FULL); - outfeedAreaFullState.errorPromptInfo = ZAppPromptFactory.buildAppPrompt(outfeedAreaFullState.errorDetailInfo); - - var wasteBinFullState = virtualWarningState.find(AppFlagKey.WasteBinFull); - wasteBinFullState.state = true; // - wasteBinFullState.errorDetailInfo = FakeAppErrorFactory.buildError(A8kEcode.APPE_WAST_BIN_IS_FULL); - wasteBinFullState.errorPromptInfo = ZAppPromptFactory.buildAppPrompt(wasteBinFullState.errorDetailInfo); - - if (AppFlagKey.InfeedPPSFlag.enabled) - virtualWarningState.find(AppFlagKey.InfeedPPSFlag).state = true; //入料区光电 - if (AppFlagKey.OutfeedPPSFlag.enabled) - virtualWarningState.find(AppFlagKey.OutfeedPPSFlag).state = false; //入料区光电 - if (AppFlagKey.TubeholderChannelPPSFlag.enabled) - virtualWarningState.find(AppFlagKey.TubeholderChannelPPSFlag).state = true; //入料区光电 - if (AppFlagKey.PlateBoxLidPPSState.enabled) - virtualWarningState.find(AppFlagKey.PlateBoxLidPPSState).state = false; //入料区光电 - return virtualWarningState; + public PreReactionGridGroup getFakePreReactionGridGroup(ConsumableGroup group) { + return virtualPreReactionGridGroupStateGenerator.getGroupState(group); + } + synchronized public OptScanModuleState getVirtualOptScanModuleState() { + return virtualOptScannerStateGenerator.getVirtualOptScanModuleState(); + } + + synchronized public Integer getVirtualOptScanModuleStateVersion() { + return virtualOptScannerStateGenerator.getVersion(); } + // + // DeviceWorkState + // synchronized public DeviceWorkState getVirtualDeviceWorkState() { - DeviceWorkState deviceWorkState = new DeviceWorkState(); - deviceWorkState.workState = A8kWorkState.WORKING; - return deviceWorkState; + return virtualDeviceWorkStateGenerator.getState(); } synchronized public Integer getVirtualDeviceWorkStateVersion() { - //虚拟状态生成模式 - return Integer.MAX_VALUE; + return virtualDeviceWorkStateGenerator.getVersion(); } - synchronized public OptScanModuleState getVirtualOptScanModuleState() { - OptScanModuleState optScanModuleState = new OptScanModuleState(); - optScanModuleState.state = OptScanModuleStateEnum.SCANNING; - optScanModuleState.sampleInfo = new SampleInfo( - "SAMPLEID-123456", 1, true, false, BloodType.WHOLE_BLOOD, "1234567890", "2250103_003" - ); - optScanModuleState.setProjInfo(new ProjBriefInfo(1, "hsCRP", "CA", "#DC143C")); - optScanModuleState.setProjId(1); - optScanModuleState.setLotId("CA123456"); - return optScanModuleState; + // + // SensorState + // + public SensorState getVirtualSensorState() { + return virtualSensorStateGenerator.getState(); } - synchronized public Integer getVirtualOptScanModuleStateVersion() { - //虚拟状态生成模式 - return Integer.MAX_VALUE; + + // + // 状态修改方法 + // + + + + synchronized public void changeEmergencyTubeState(TubeState state) { + tubeVirtualStateGenerator.changeEmergencyTubeState(state); + } + + synchronized public TubeState getEmergencyTubeState() { + return tubeVirtualStateGenerator.emergencyTubeState; + } + + synchronized public void changeVirtualStateMode(VirtualStateMode mode) { + virtualStateModeMgr.virtualStateMode = mode; + + tubeVirtualStateGenerator.incrementVersion(); + deviceFlagStateVirtualStateGenerator.incrementVersion(); + consumableStateGenerator.incrementVersion(); + virtualIncubationPlateStateGenerator.incrementVersion(); + virtualPreReactionGridGroupStateGenerator.incrementVersion(); + virtualOptScannerStateGenerator.incrementVersion(); + virtualDeviceWorkStateGenerator.incrementVersion(); + virtualSensorStateGenerator.incrementVersion(); + } + synchronized public VirtualStateMode getMode() { + return virtualStateModeMgr.virtualStateMode; } } diff --git a/src/main/java/a8k/app/service/virtualstate/VirtualStateMode.java b/src/main/java/a8k/app/service/virtualstate/VirtualStateMode.java new file mode 100644 index 0000000..6124370 --- /dev/null +++ b/src/main/java/a8k/app/service/virtualstate/VirtualStateMode.java @@ -0,0 +1,7 @@ +package a8k.app.service.virtualstate; + +public enum VirtualStateMode { + UI_TEST_MODE,//状态尽可能能全面的测试前端显示 + INSTRUCTION_BOOK_IDLE,//设备空闲 + INSTRUCTION_BOOK_RUNNING,//设备运行中 +} diff --git a/src/main/java/a8k/app/service/virtualstate/VirtualStateModeMgr.java b/src/main/java/a8k/app/service/virtualstate/VirtualStateModeMgr.java new file mode 100644 index 0000000..0cb8798 --- /dev/null +++ b/src/main/java/a8k/app/service/virtualstate/VirtualStateModeMgr.java @@ -0,0 +1,22 @@ +package a8k.app.service.virtualstate; + +import a8k.app.type.a8k.state.enumtype.TubeState; +import org.springframework.stereotype.Component; + +@Component +public class VirtualStateModeMgr { + public VirtualStateMode virtualStateMode = VirtualStateMode.UI_TEST_MODE; + + public Boolean isInMode(VirtualStateMode... modes) { + if (modes == null) { + return false; + } + for (VirtualStateMode m : modes) { + if (virtualStateMode.equals(m)) { + return true; + } + } + return false; + + } +} diff --git a/src/main/java/a8k/app/service/virtualstate/generator/ConsumableStateGenerator.java b/src/main/java/a8k/app/service/virtualstate/generator/ConsumableStateGenerator.java new file mode 100644 index 0000000..599ebef --- /dev/null +++ b/src/main/java/a8k/app/service/virtualstate/generator/ConsumableStateGenerator.java @@ -0,0 +1,51 @@ +package a8k.app.service.virtualstate.generator; + + +import a8k.app.factory.FakeA8kConsumableContainerFactory; +import a8k.app.service.virtualstate.VirtualStateModeMgr; +import a8k.app.type.a8k.container.A8kConsumableContainer; +import a8k.app.type.exception.AppException; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +@RequiredArgsConstructor +public class ConsumableStateGenerator { + private final VirtualStateModeMgr virtualStateModeMgr; + private Integer version = Integer.MAX_VALUE / 2; + A8kConsumableContainer state = new A8kConsumableContainer(); + + // + // 耗材状态 + // + + synchronized public A8kConsumableContainer getVirtualConsumableContainerState() { + switch (virtualStateModeMgr.virtualStateMode) { + case UI_TEST_MODE, INSTRUCTION_BOOK_RUNNING, INSTRUCTION_BOOK_IDLE -> { + //虚拟状态生成模式 + state = new A8kConsumableContainer(); + state.tips[0].tipNum = 100; + state.tips[1].tipNum = 101; + state.tips[2].tipNum = 102; + for (int i = 0; i < 6; i++) { + try { + FakeA8kConsumableContainerFactory.buildA8kConsumableContainerState(state, i); + } catch (AppException ignored) { + } + } + } + } + return state; + } + + synchronized public Integer getVersion() { + //虚拟状态生成模式 + return version; + } + + synchronized public void incrementVersion() { + version++; + } +} diff --git a/src/main/java/a8k/app/service/virtualstate/generator/DeviceFlagStateVirtualStateGenerator.java b/src/main/java/a8k/app/service/virtualstate/generator/DeviceFlagStateVirtualStateGenerator.java new file mode 100644 index 0000000..f7f7793 --- /dev/null +++ b/src/main/java/a8k/app/service/virtualstate/generator/DeviceFlagStateVirtualStateGenerator.java @@ -0,0 +1,118 @@ +package a8k.app.service.virtualstate.generator; + +import a8k.app.factory.FakeAppErrorFactory; +import a8k.app.factory.ZAppPromptFactory; +import a8k.app.iflytophald.type.protocol.A8kEcode; +import a8k.app.service.statemgr.AppFlagStateMgr; +import a8k.app.service.virtualstate.VirtualStateModeMgr; +import a8k.app.type.AppFlagKey; +import a8k.app.type.AppFlagType; +import a8k.app.type.DeviceWarningFlagStateGroup; +import cn.hutool.core.util.ObjectUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +@RequiredArgsConstructor +public class DeviceFlagStateVirtualStateGenerator { + private final VirtualStateModeMgr virtualStateModeMgr; + + public DeviceWarningFlagStateGroup state; + + // + // VIRTUAL_OPERATION + // + public DeviceWarningFlagStateGroup getDeviceFlagStateVirtualState() { + return state; + } + + public void init(DeviceWarningFlagStateGroup deviceWarningFlagState) { + + DeviceWarningFlagStateGroup virtualWarningState = ObjectUtil.clone(deviceWarningFlagState); //初始化时复制一份状态版本号 + virtualWarningState.version = 10000; + + //设置VirtualState初始值 + var consumeNotEnoughState = virtualWarningState.find(AppFlagKey.ConsumeNotEnoughState); + consumeNotEnoughState.state = true; // + consumeNotEnoughState.errorDetailInfo = FakeAppErrorFactory.buildAEConsumeNotEnoughError(); + consumeNotEnoughState.errorPromptInfo = ZAppPromptFactory.buildAppPrompt(consumeNotEnoughState.errorDetailInfo); + + var tipNotEnoughState = virtualWarningState.find(AppFlagKey.TipNotEnoughState); + tipNotEnoughState.state = true; // + tipNotEnoughState.errorDetailInfo = FakeAppErrorFactory.buildError(A8kEcode.APPE_TIP_NOT_ENOUGH); + tipNotEnoughState.errorPromptInfo = ZAppPromptFactory.buildAppPrompt(tipNotEnoughState.errorDetailInfo); + + var infeedExceptionState = virtualWarningState.find(AppFlagKey.InfeedExceptionState); + infeedExceptionState.state = true; // + infeedExceptionState.errorDetailInfo = FakeAppErrorFactory.buildAEHardwareError(); + infeedExceptionState.errorPromptInfo = ZAppPromptFactory.buildAppPrompt(infeedExceptionState.errorDetailInfo); + + var outfeedAreaFullState = virtualWarningState.find(AppFlagKey.OutfeedAreaFullState); + outfeedAreaFullState.state = true; // + outfeedAreaFullState.errorDetailInfo = FakeAppErrorFactory.buildError(A8kEcode.APPE_OUTFEED_AREA_IS_FULL); + outfeedAreaFullState.errorPromptInfo = ZAppPromptFactory.buildAppPrompt(outfeedAreaFullState.errorDetailInfo); + + var wasteBinFullState = virtualWarningState.find(AppFlagKey.WasteBinFull); + wasteBinFullState.state = true; // + wasteBinFullState.errorDetailInfo = FakeAppErrorFactory.buildError(A8kEcode.APPE_WAST_BIN_IS_FULL); + wasteBinFullState.errorPromptInfo = ZAppPromptFactory.buildAppPrompt(wasteBinFullState.errorDetailInfo); + + if (AppFlagKey.InfeedPPSFlag.enabled) + virtualWarningState.find(AppFlagKey.InfeedPPSFlag).state = true; //入料区光电 + if (AppFlagKey.OutfeedPPSFlag.enabled) + virtualWarningState.find(AppFlagKey.OutfeedPPSFlag).state = false; //入料区光电 + if (AppFlagKey.TubeholderChannelPPSFlag.enabled) + virtualWarningState.find(AppFlagKey.TubeholderChannelPPSFlag).state = true; //入料区光电 + if (AppFlagKey.PlateBoxLidPPSState.enabled) + virtualWarningState.find(AppFlagKey.PlateBoxLidPPSState).state = false; //入料区光电 + state = virtualWarningState; + state.version = 10000; //初始化时设置版本号为10000 + } + + public void incrementVersion() { + state.version++; + } + + public Integer getVersion() { + return state.version; + } + + + public void setFlagStateVal(AppFlagKey flagKey, boolean val) { + for (AppFlagStateMgr.AppFlagState flagState : state.states) { + if (flagState.keyName.equals(flagKey)) { + flagState.state = val; + incrementVersion(); + return; + } + } + } + + public void clearFlagState(AppFlagKey flagKey) { + for (AppFlagStateMgr.AppFlagState flagState : state.states) { + if (flagState.keyName.equals(flagKey)) { + flagState.state = false; + flagState.errorDetailInfo = null; + flagState.errorPromptInfo = null; + incrementVersion(); + return; + } + } + } + + public void clearAllFlagState() { + for (AppFlagStateMgr.AppFlagState flagState : state.states) { + if (flagState.flagType.equals(AppFlagType.NormalFlag) || flagState.flagType.equals(AppFlagType.WarningFlag)) { + continue; + } + if (flagState.state) { + flagState.state = false; + flagState.errorDetailInfo = null; + flagState.errorPromptInfo = null; + incrementVersion(); + } + } + } +} diff --git a/src/main/java/a8k/app/service/virtualstate/TubeVirtualStateGenerator.java b/src/main/java/a8k/app/service/virtualstate/generator/TubeVirtualStateGenerator.java similarity index 57% rename from src/main/java/a8k/app/service/virtualstate/TubeVirtualStateGenerator.java rename to src/main/java/a8k/app/service/virtualstate/generator/TubeVirtualStateGenerator.java index d408285..6d22b1b 100644 --- a/src/main/java/a8k/app/service/virtualstate/TubeVirtualStateGenerator.java +++ b/src/main/java/a8k/app/service/virtualstate/generator/TubeVirtualStateGenerator.java @@ -1,8 +1,9 @@ -package a8k.app.service.virtualstate; +package a8k.app.service.virtualstate.generator; import a8k.app.factory.FakeA8kConsumableContainerFactory; import a8k.app.factory.FakeAppErrorFactory; import a8k.app.factory.ZAppPromptFactory; +import a8k.app.service.virtualstate.VirtualStateModeMgr; import a8k.app.type.a8k.BloodType; import a8k.app.type.a8k.proj.ProjBriefInfo; import a8k.app.type.a8k.state.EmergencyTubePos; @@ -10,23 +11,75 @@ import a8k.app.type.a8k.state.Tube; import a8k.app.type.a8k.state.TubeHolder; import a8k.app.type.a8k.state.enumtype.TubeHolderState; import a8k.app.type.a8k.state.enumtype.TubeState; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @Component @Slf4j +@RequiredArgsConstructor public class TubeVirtualStateGenerator { + private final VirtualStateModeMgr virtualStateModeMgr; + private Integer version = Integer.MAX_VALUE / 2; + public TubeState emergencyTubeState = TubeState.EMPTY; - TubeState emptyTubeState = TubeState.EMPTY; - Integer stateVersion = Integer.MAX_VALUE / 2; - void addProjInfoToTube(Tube tube, Integer projId) { + public TubeHolder getVirtualTubeHolderState() { + TubeHolder tubeHolder = new TubeHolder(); + switch (virtualStateModeMgr.virtualStateMode) { + case UI_TEST_MODE, INSTRUCTION_BOOK_RUNNING -> { + tubeHolder.setState(TubeHolderState.PROCESSING); + tubeHolder.setTubes(new Tube[]{ + createFakeTube(1), + createFakeTube(2), + createFakeTube(3), + createFakeTube(4), + createFakeTube(5), + createFakeTube(6), + createFakeTube(7), + createFakeTube(8), + createFakeTube(9), + createFakeTube(10) + }); + } + case INSTRUCTION_BOOK_IDLE -> { + tubeHolder.setState(TubeHolderState.IDLE); + } + } + return tubeHolder; + } + + public EmergencyTubePos getVirtualEmergencyTube() { + var tubePosState = new EmergencyTubePos(); + switch (virtualStateModeMgr.virtualStateMode) { + case UI_TEST_MODE, INSTRUCTION_BOOK_RUNNING -> { + tubePosState.tube = createFakeTube(0); + tubePosState.tube.setPos(0); + tubePosState.tube.setIsEmergency(true); + tubePosState.tube.setState(emergencyTubeState); + } + case INSTRUCTION_BOOK_IDLE -> { + tubePosState.tube.setState(emergencyTubeState); + } + } + return tubePosState; + } + + public Integer getVirtualTubeStateVersion() { + return version; + } + + public void incrementVersion() { + version++; + } + + private void addProjInfoToTube(Tube tube, Integer projId) { ProjBriefInfo projBriefInfo = FakeA8kConsumableContainerFactory.buildFakeProjBriefInfo(projId); tube.getProjInfo().add(projBriefInfo); tube.getProjIds().add(projBriefInfo.projId); } - Tube createFakeTube(Integer pos) { + private Tube createFakeTube(Integer pos) { Tube tube = new Tube(pos); tube.setSampleId("250109_001E0" + pos); tube.setBloodType(BloodType.WHOLE_BLOOD); @@ -67,40 +120,9 @@ public class TubeVirtualStateGenerator { return tube; } - public TubeHolder getVirtualTubeHolderState() { - TubeHolder tubeHolder = new TubeHolder(); - tubeHolder.setTubes(new Tube[]{ - createFakeTube(1), - createFakeTube(2), - createFakeTube(3), - createFakeTube(4), - createFakeTube(5), - createFakeTube(6), - createFakeTube(7), - createFakeTube(8), - createFakeTube(9), - createFakeTube(10) - }); - tubeHolder.setState(TubeHolderState.PROCESSING); - return tubeHolder; - } - - public EmergencyTubePos getVirtualEmergencyTube() { - var tubePosState = new EmergencyTubePos(); - tubePosState.tube = createFakeTube(0); - tubePosState.tube.setPos(0); - tubePosState.tube.setIsEmergency(true); - tubePosState.tube.setState(emptyTubeState); - return tubePosState; - } - - public Integer getVirtualTubeStateVersion() { - //虚拟状态生成模式 - return stateVersion; + synchronized public void changeEmergencyTubeState(TubeState state) { + this.emergencyTubeState = state; + incrementVersion(); } - public void setEmptyTubeState(TubeState emptyTubeState) { - this.emptyTubeState = emptyTubeState; - stateVersion++; - } } diff --git a/src/main/java/a8k/app/service/virtualstate/generator/VirtualDeviceWorkStateGenerator.java b/src/main/java/a8k/app/service/virtualstate/generator/VirtualDeviceWorkStateGenerator.java new file mode 100644 index 0000000..5e08957 --- /dev/null +++ b/src/main/java/a8k/app/service/virtualstate/generator/VirtualDeviceWorkStateGenerator.java @@ -0,0 +1,59 @@ +package a8k.app.service.virtualstate.generator; + +import a8k.app.constant.AppConstant; +import a8k.app.factory.FakeA8kConsumableContainerFactory; +import a8k.app.service.utils.ProjInfoUtils; +import a8k.app.service.virtualstate.VirtualStateModeMgr; +import a8k.app.type.PreReactionGrid; +import a8k.app.type.PreReactionGridGroup; +import a8k.app.type.a8k.ConsumableGroup; +import a8k.app.type.a8k.LittleBottleConsumableType; +import a8k.app.type.a8k.state.DeviceWorkState; +import a8k.app.type.a8k.state.enumtype.A8kWorkState; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +@RequiredArgsConstructor +public class VirtualDeviceWorkStateGenerator { + + private final VirtualStateModeMgr virtualStateModeMgr; + private Integer version = Integer.MAX_VALUE / 2; + + synchronized public DeviceWorkState getState() { + switch (virtualStateModeMgr.virtualStateMode) { + case UI_TEST_MODE -> { //UI测试 + return getRunningState(); + } + case INSTRUCTION_BOOK_IDLE -> { //说明书-耗材页面-空闲 + return getIDLEState(); + } + case INSTRUCTION_BOOK_RUNNING -> { //说明书运行中 + return getRunningState(); + } + } + return null; + } + + synchronized public Integer getVersion() { + return version; + } + + synchronized public void incrementVersion() { + version++; + } + + private DeviceWorkState getIDLEState() { + DeviceWorkState deviceWorkState = new DeviceWorkState(); + deviceWorkState.workState = A8kWorkState.IDLE; + return deviceWorkState; + } + + private DeviceWorkState getRunningState() { + DeviceWorkState deviceWorkState = new DeviceWorkState(); + deviceWorkState.workState = A8kWorkState.WORKING; + return deviceWorkState; + } +} diff --git a/src/main/java/a8k/app/service/virtualstate/generator/VirtualIncubationPlateStateGenerator.java b/src/main/java/a8k/app/service/virtualstate/generator/VirtualIncubationPlateStateGenerator.java new file mode 100644 index 0000000..9e60aa2 --- /dev/null +++ b/src/main/java/a8k/app/service/virtualstate/generator/VirtualIncubationPlateStateGenerator.java @@ -0,0 +1,139 @@ +package a8k.app.service.virtualstate.generator; + +import a8k.app.factory.ZAppPromptFactory; +import a8k.app.iflytophald.type.protocol.A8kEcode; +import a8k.app.service.virtualstate.VirtualStateModeMgr; +import a8k.app.type.a8k.BloodType; +import a8k.app.type.a8k.proj.ProjBriefInfo; +import a8k.app.type.a8k.state.IncubationPlate; +import a8k.app.type.a8k.state.IncubationSubTank; +import a8k.app.type.a8k.state.SampleInfo; +import a8k.app.type.a8k.state.enumtype.IncubationSubTankState; +import a8k.app.type.error.AppError; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Component +@Slf4j +@RequiredArgsConstructor +public class VirtualIncubationPlateStateGenerator { + private final VirtualStateModeMgr virtualStateModeMgr; + + synchronized public IncubationPlate getVirtualIncubationPlateState() { + switch (virtualStateModeMgr.virtualStateMode) { + case UI_TEST_MODE -> { //UI测试 + return getStateInUITestMode(); + } + case INSTRUCTION_BOOK_IDLE -> { //说明书-耗材页面-空闲 + return getStateInInstructionBookIDLE(); + } + case INSTRUCTION_BOOK_RUNNING -> { //说明书运行中 + return getStateInInstructionBookRunning(); + } + } + return null; + } + + public void incrementVersion() {} + + // + // PRIVATE + // + + synchronized private IncubationPlate getStateInInstructionBookIDLE() { + IncubationPlate incubationPlate = new IncubationPlate(); + for (IncubationSubTank subtank : incubationPlate.subtanks) { + subtank.state = IncubationSubTankState.EMPTY; + } + return incubationPlate; + } + + synchronized private IncubationPlate getStateInUITestMode() { + /* + * 尽可能展示所有状态测试前端页面 + */ + IncubationPlate incubationPlate = new IncubationPlate(); + int i = 0; + for (IncubationSubTank subtank : incubationPlate.subtanks) { + assignSubTankState(subtank); + i++; + switch (i % 6) { + case 1 -> subtank.state = IncubationSubTankState.RESERVED; + case 2 -> subtank.state = IncubationSubTankState.WAITING_FOR_DROP; + case 3 -> subtank.state = IncubationSubTankState.INCUBATING; + case 4 -> subtank.state = IncubationSubTankState.ERROR; + case 5 -> subtank.state = IncubationSubTankState.INCUBATION_COMPLETE; + default -> subtank.state = IncubationSubTankState.EMPTY; + } + subtank.isEmergency = (i % 2 == 0); + } + return incubationPlate; + } + + synchronized private IncubationPlate getStateInInstructionBookRunning() { + IncubationPlate incubationPlate = new IncubationPlate(); + int i = 0; + for (IncubationSubTank subtank : incubationPlate.subtanks) { + i++; + switch (i) { + case 1 -> { + assignSubTankState(subtank); + subtank.state = IncubationSubTankState.RESERVED; + } + case 2 -> { + assignSubTankState(subtank); + subtank.state = IncubationSubTankState.WAITING_FOR_DROP; + subtank.isEmergency = (true); + } + case 3 -> { + assignSubTankState(subtank); + subtank.state = IncubationSubTankState.INCUBATING; + } + case 4 -> { + assignSubTankState(subtank); + subtank.state = IncubationSubTankState.ERROR; + } + case 5 -> { + assignSubTankState(subtank); + subtank.state = IncubationSubTankState.INCUBATION_COMPLETE; + } + default -> { + subtank.state = IncubationSubTankState.EMPTY; + } + } + + } + return incubationPlate; + } + + private void assignSubTankState(IncubationSubTank subtank) { + subtank.sampleInfo = new SampleInfo( + "250109_001E01", 0, false, false, BloodType.WHOLE_BLOOD, "B3A7KK8DKF", "250109_001E" + ); + + + subtank.sampleInfo.bloodType = BloodType.WHOLE_BLOOD; + subtank.sampleInfo.sampleBarcode = "112334455667"; + subtank.sampleInfo.userid = "250109_001E"; + subtank.projInfo = new ProjBriefInfo(); + subtank.projInfo.projId = 1; + subtank.projInfo.projName = "hsCRP"; + subtank.projInfo.projShortName = "CA"; + subtank.projInfo.color = "#DC143C"; + subtank.sampleInfo.sampleId = "250109_001E01"; + subtank.projId = 1; + subtank.lotId = "CA123456"; + subtank.isEmergency = false; + if (subtank.state.equals(IncubationSubTankState.ERROR)) { + subtank.error = new AppError(A8kEcode.PROJ_CARD_ERROR_WRONG_UNSUPPORTED, ""); + subtank.errorInfo = ZAppPromptFactory.buildAppPrompt(subtank.error); + } + subtank.startIncubatedTime = new Date().getTime(); + subtank.incubatedTimeSec = 3 * 60; + subtank.remainTimeSec = 3 * 60; + } + +} diff --git a/src/main/java/a8k/app/service/virtualstate/generator/VirtualOptScannerStateGenerator.java b/src/main/java/a8k/app/service/virtualstate/generator/VirtualOptScannerStateGenerator.java new file mode 100644 index 0000000..50c2ae6 --- /dev/null +++ b/src/main/java/a8k/app/service/virtualstate/generator/VirtualOptScannerStateGenerator.java @@ -0,0 +1,64 @@ +package a8k.app.service.virtualstate.generator; + +import a8k.app.service.virtualstate.VirtualStateModeMgr; +import a8k.app.type.a8k.BloodType; +import a8k.app.type.a8k.proj.ProjBriefInfo; +import a8k.app.type.a8k.state.OptScanModuleState; +import a8k.app.type.a8k.state.SampleInfo; +import a8k.app.type.a8k.state.enumtype.OptScanModuleStateEnum; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +@RequiredArgsConstructor +public class VirtualOptScannerStateGenerator { + + private final VirtualStateModeMgr virtualStateModeMgr; + private Integer version = Integer.MAX_VALUE / 2; + + synchronized public OptScanModuleState getVirtualOptScanModuleState() { + switch (virtualStateModeMgr.virtualStateMode) { + case UI_TEST_MODE -> { //UI测试 + return getRunningState(); + } + case INSTRUCTION_BOOK_IDLE -> { //说明书-耗材页面-空闲 + return getIDLEState(); + } + case INSTRUCTION_BOOK_RUNNING -> { //说明书运行中 + return getRunningState(); + } + } + return null; + } + + synchronized public Integer getVersion() { + return version; + } + + synchronized public void incrementVersion() { + version++; + } + + synchronized private OptScanModuleState getIDLEState() { + OptScanModuleState optScanModuleState = new OptScanModuleState(); + optScanModuleState.state = OptScanModuleStateEnum.EMPTY; + return optScanModuleState; + } + + + synchronized private OptScanModuleState getRunningState() { + OptScanModuleState optScanModuleState = new OptScanModuleState(); + optScanModuleState.state = OptScanModuleStateEnum.SCANNING; + optScanModuleState.sampleInfo = new SampleInfo( + "SAMPLE-123456", 1, true, false, BloodType.WHOLE_BLOOD, "1234567890", "2250103_003" + ); + optScanModuleState.setProjInfo(new ProjBriefInfo(1, "hsCRP", "CA", "#DC143C")); + optScanModuleState.setProjId(1); + optScanModuleState.setLotId("CA123456"); + return optScanModuleState; + } + + +} diff --git a/src/main/java/a8k/app/service/virtualstate/generator/VirtualPreReactionGridGroupStateGenerator.java b/src/main/java/a8k/app/service/virtualstate/generator/VirtualPreReactionGridGroupStateGenerator.java new file mode 100644 index 0000000..cfba0cf --- /dev/null +++ b/src/main/java/a8k/app/service/virtualstate/generator/VirtualPreReactionGridGroupStateGenerator.java @@ -0,0 +1,101 @@ +package a8k.app.service.virtualstate.generator; + +import a8k.app.constant.AppConstant; +import a8k.app.factory.FakeA8kConsumableContainerFactory; +import a8k.app.service.utils.ProjInfoUtils; +import a8k.app.service.virtualstate.VirtualStateModeMgr; +import a8k.app.type.PreReactionGrid; +import a8k.app.type.PreReactionGridGroup; +import a8k.app.type.a8k.ConsumableGroup; +import a8k.app.type.a8k.LittleBottleConsumableType; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +@RequiredArgsConstructor +public class VirtualPreReactionGridGroupStateGenerator { + + private final VirtualStateModeMgr virtualStateModeMgr; + private Integer version = Integer.MAX_VALUE / 2; + + synchronized public PreReactionGridGroup getGroupState(ConsumableGroup group) { + switch (virtualStateModeMgr.virtualStateMode) { + case UI_TEST_MODE -> { //UI测试 + return getRunningState(group); + } + case INSTRUCTION_BOOK_IDLE -> { //说明书-耗材页面-空闲 + return getIDLEState(group); + } + case INSTRUCTION_BOOK_RUNNING -> { //说明书运行中 + return getRunningState(group); + } + } + return null; + } + + synchronized public Integer getVersion() { + return version; + } + + synchronized public void incrementVersion() { + version++; + } + + private PreReactionGridGroup getIDLEState(ConsumableGroup group) { + PreReactionGridGroup gridGroup = new PreReactionGridGroup(group); + gridGroup.group = group; + gridGroup.installed = false; + gridGroup.hasSomeGridInReacting = false; + gridGroup.hasSomeGridReactedCompleted = false; + return gridGroup; + } + + private PreReactionGridGroup getRunningState(ConsumableGroup group) { + PreReactionGridGroup gridGroup = new PreReactionGridGroup(group); + gridGroup.group = group; + if (group.off % 2 == 0) { + gridGroup.installed = true; + gridGroup.hasSomeGridInReacting = true; + gridGroup.hasSomeGridReactedCompleted = true; + } else { + gridGroup.installed = false; + gridGroup.hasSomeGridInReacting = false; + gridGroup.hasSomeGridReactedCompleted = false; + } + gridGroup.consumableType = LittleBottleConsumableType.BufferSolution; + var projBuildInInfo = FakeA8kConsumableContainerFactory.buildFakeProjBuildInInfo(group.off); + gridGroup.projBriefInfo = ProjInfoUtils.buildProjBrefInfo(projBuildInInfo); + gridGroup.version = 10; + for (int i = 0; i < AppConstant.CONSUMABLE_NUM; i++) { + + gridGroup.grids.get(i).projId = projBuildInInfo.projId; + gridGroup.grids.get(i).projBuildinInfo = projBuildInInfo; + gridGroup.grids.get(i).projExtInfoCard = null; + + switch (i / 5) { + case 0 -> { + gridGroup.grids.get(i).state = PreReactionGrid.State.UNINSTALL; + } + case 1 -> { + gridGroup.grids.get(i).state = PreReactionGrid.State.USED; + } + + case 2 -> { + gridGroup.grids.get(i).state = PreReactionGrid.State.REACTION_COMPLETED; + gridGroup.grids.get(i).sampleInfo.userid = "UID123"; + } + case 3 -> { + gridGroup.grids.get(i).state = PreReactionGrid.State.REACTING; + gridGroup.grids.get(i).sampleInfo.userid = "UID123"; + gridGroup.grids.get(i).reactionRemainingTime = 3 * 60L; + } + case 4 -> { + gridGroup.grids.get(i).state = PreReactionGrid.State.TO_BE_USED; + } + } + } + return gridGroup; + } +} diff --git a/src/main/java/a8k/app/service/virtualstate/generator/VirtualSensorStateGenerator.java b/src/main/java/a8k/app/service/virtualstate/generator/VirtualSensorStateGenerator.java new file mode 100644 index 0000000..702b588 --- /dev/null +++ b/src/main/java/a8k/app/service/virtualstate/generator/VirtualSensorStateGenerator.java @@ -0,0 +1,60 @@ +package a8k.app.service.virtualstate.generator; + +import a8k.app.service.virtualstate.VirtualStateModeMgr; +import a8k.app.type.a8k.state.DeviceWorkState; +import a8k.app.type.a8k.state.SensorState; +import a8k.app.type.a8k.state.enumtype.A8kWorkState; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +@RequiredArgsConstructor +public class VirtualSensorStateGenerator { + + private final VirtualStateModeMgr virtualStateModeMgr; + private Integer version = Integer.MAX_VALUE / 2; + private Integer cnt = 0; + + synchronized public SensorState getState() { + switch (virtualStateModeMgr.virtualStateMode) { + case UI_TEST_MODE -> { //UI测试 + return getRunningState(); + } + case INSTRUCTION_BOOK_IDLE -> { //说明书-耗材页面-空闲 + return getIDLEState(); + } + case INSTRUCTION_BOOK_RUNNING -> { //说明书运行中 + return getRunningState(); + } + } + return null; + } + + + synchronized public void incrementVersion() { + version++; + } + + private SensorState getIDLEState() { + SensorState sensorState = new SensorState(); + sensorState.setPboxTemperature(24); + sensorState.setIncubateBoxTemperature(25); + sensorState.setWasteBinFullFlag(false); + cnt++; + sensorState.setIncubateBoxTemperatureReady(cnt % 2 == 0); //每次调用切换一次状态 + sensorState.setPboxTemperatureReady(cnt % 2 == 0); //每次调用切换一次状态 + return sensorState; + } + + private SensorState getRunningState() { + SensorState sensorState = new SensorState(); + sensorState.setPboxTemperature(25); + sensorState.setIncubateBoxTemperature(25); + sensorState.setWasteBinFullFlag(false); + sensorState.setIncubateBoxTemperatureReady(true); //每次调用切换一次状态 + sensorState.setPboxTemperatureReady(true); //每次调用切换一次状态 + return sensorState; + } +} diff --git a/src/main/java/a8k/app/type/GState.java b/src/main/java/a8k/app/type/GState.java index 60025f9..a46acf4 100644 --- a/src/main/java/a8k/app/type/GState.java +++ b/src/main/java/a8k/app/type/GState.java @@ -22,7 +22,7 @@ public class GState { public String mcuVersion = ""; public BoardVersions mcuVersionDetail = new BoardVersions(); //MCU版本详细信息 //设备SN - public String sn = "TEST001";// 巴迪泰 叫做 工厂序列号(FactorySerial) + public String sn = "TEST001";// 巴迪泰 叫做 工程序列号(FactorySerial) // public String assetId = "TEST001";// 巴迪泰 叫做 出厂序列号(DeviceSerial) // diff --git a/src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java b/src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java index 15ba45a..797badb 100644 --- a/src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java +++ b/src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java @@ -12,7 +12,12 @@ import a8k.extui.page.extapp.debug_assistant.*; import a8k.extui.page.extapp.profession_test.ExperimentConsistencyTestingPage; import a8k.extui.page.extapp.profession_test.P01PipetteGunVerification; import a8k.extui.page.extsetting.db.*; -import a8k.extui.page.hardwaretest.*; +import a8k.extui.page.factory.DeviceExSettingPage; +import a8k.extui.page.factory.DeviceIdSettingPage; +import a8k.extui.page.factory.hardwaretest.*; +import a8k.extui.page.factory.opt.A8kOptVerification; +import a8k.extui.page.factory.opt.OptModuleParamCalibration; +import a8k.extui.page.factory.verification.*; import a8k.extui.page.init.DeviceInitPage; import a8k.extui.page.measurement.*; @@ -22,9 +27,6 @@ import a8k.extui.page.test.codetest.OptFormulaTestPageV2; import a8k.extui.page.extsetting.pos_calibration.*; import a8k.extui.page.test.stress_test.PipetteGunStressTest; -import a8k.extui.page.test.verification.*; -import a8k.extui.page.test.verification.P34LiquidOperationTestPage; -import a8k.extui.page.test.verification.P10ProjejIDCardTestPage; import jakarta.annotation.PostConstruct; import org.springframework.stereotype.Component; @@ -84,7 +86,6 @@ public class ExtApiPageGroupCfgMgr { @PostConstruct void init() { pushMenu(new Menu(DeviceInitPage.class, "设备初始化")); - pushMenu(new Menu("状态.数据.设置", ZList.of( new Menu("状态", ZList.of( new Menu(P11IncubationPlateStateDebugPageAll.class, "孵育盘"), @@ -96,18 +97,6 @@ public class ExtApiPageGroupCfgMgr { new Menu(ProjInfoMgrPage.class, "项目信息管理"), new Menu(ReactionRecordMgrDebugPage.class, "反应记录") )), - new Menu(DeviceExSettingPage.class, "设备扩展配置"), - new Menu(A8kSubModuleRegAndConfigSyncPage.class, "单片机-配置管理"), - new Menu("坐标设置", ZList.of( - new Menu(DeviceActionParameterSettingPage.class, "设备动作参数设置"), - new Menu(P02TubeFeedingModulePosCalibrationPage.class, "试管入料设置"), - new Menu(P03TubePreProcessPosCalibrationPage.class, "试管预处理设置"), - new Menu(P04ReactionPlatesTransmitControlerCalibrationPage.class, "反应板相关位置设置"), - new Menu(P20HbotTipPosCalibrationPage.class, "Tip耗材位置设置"), - new Menu(P21HbotConsumablesPosCalibrationPage.class, "缓冲液&探测物质位置设置"), - new Menu(P24Hbot2DCodeScanPosCalibrationPage.class, "耗材扫描设置"), - new Menu(P25HbotSamplePosCalibrationPage.class, "取样位置设置") - )), new Menu(P20AppSettingDebugPage.class, "系统设置"), new Menu(P00AppEventAndMessageBoxDebugPage.class, "事件与消息") )) @@ -121,7 +110,8 @@ public class ExtApiPageGroupCfgMgr { new Menu(P01ProjInfoDebugPage.class, "ID卡操作") ))); - pushMenu(new Menu("底层驱动", ZList.of( + pushMenu(new Menu("底层驱动&&配置", ZList.of( + new Menu(A8kSubModuleRegAndConfigSyncPage.class, "单片机-配置管理"), new Menu(HbotCtrlPage.class, "HBOT控制"), new Menu("移液枪驱动", ZList.of( new Menu(PipetteGunCfgSync.class, "配置同步"), @@ -135,18 +125,44 @@ public class ExtApiPageGroupCfgMgr { new Menu(PipetteGunLiquidConfigSettingPage.class, "设置液体参数"), new Menu(PipetteGunContainerConfigSettingPage.class, "设置液体容器参数") )), - new Menu(MotorCtrlPage.class, "电机驱动"), new Menu(MiniServoCtrlPage.class, "舵机驱动"), new Menu(CodeScannerDriverCtrlPage.class, "条码扫描仪"), new Menu(PrinterDebugPage.class, "打印机"), new Menu(OptScannerCtrlPage.class, "光学模组"), new Menu(WaterCoolingTempCtrlDriverPage.class, "水冷控温驱动") - ))); pushMenu(new Menu("高级应用", ZList.of( + new Menu("APP测试", ZList.of( + new Menu(LisTestPage.class, "LIS测试"), + new Menu(PrinterDebugPage.class, "打印机测试") + )), + new Menu("过检专用", ZList.of( + new Menu(P01PipetteGunVerification.class, "移液枪验证"), + new Menu(ExperimentConsistencyTestingPage.class, "一致性测试") + )), + new Menu("压力测试", ZList.of( + new Menu(PipetteGunStressTest.class, "移液枪压力测试") + )), + new Menu("代码测试", ZList.of( + new Menu(OptFormulaTestPageV2.class, "光学公式测试1"), + new Menu(OptFormulaTestPage.class, "光学公式测试2"), + new Menu(BiLisDoubleTrackChannelTestPage.class, "BiLis双通道测试") + )), + new Menu("前端测试助手", ZList.of( + new Menu(FakeReactionRecordGeneratorPage.class, "虚拟反应记录生成"), + new Menu(VirtualEventGeneratorPage.class, "虚拟事件生成"), + new Menu(IDCardDataGeneratorPage.class, "ID卡数据生成器") + )), + new Menu(VirtualStateGenerateModeSettingPage.class, "虚拟状态生成模式-助手"), + new Menu(UsrOperationSimulationPage.class, "用户行为模拟器"), + new Menu(CodeGeneratorPage.class, "条码字符生成工具") + ))); + + pushMenu(new Menu("工厂生产", ZList.of( + new Menu("硬件测试", ZList.of( new Menu(SubBoardProberPage.class, "子板探测"), new Menu(SubModuleVersionPreviewPage.class, "全部子模块版本预览"), @@ -164,21 +180,21 @@ public class ExtApiPageGroupCfgMgr { new Menu(LISUartTestPage.class, "LIS串口测试"), new Menu(PrinterDebugPage.class, "打印机测试") )), - - new Menu("APP测试", ZList.of( - new Menu(LisTestPage.class, "LIS测试"), - new Menu(PrinterDebugPage.class, "打印机测试") + new Menu("动作参数配置", ZList.of( + new Menu(DeviceActionParameterSettingPage.class, "设备动作参数设置"), + new Menu(P02TubeFeedingModulePosCalibrationPage.class, "试管入料设置"), + new Menu(P03TubePreProcessPosCalibrationPage.class, "试管预处理设置"), + new Menu(P04ReactionPlatesTransmitControlerCalibrationPage.class, "反应板相关位置设置"), + new Menu(P20HbotTipPosCalibrationPage.class, "Tip耗材位置设置"), + new Menu(P21HbotConsumablesPosCalibrationPage.class, "缓冲液&探测物质位置设置"), + new Menu(P24Hbot2DCodeScanPosCalibrationPage.class, "耗材扫描设置"), + new Menu(P25HbotSamplePosCalibrationPage.class, "取样位置设置") )), - new Menu("光学标定与验证", ZList.of( new Menu(A8kOptVerification.class, "光学模组验证"), new Menu(OptModuleParamCalibration.class, "光学模块参数校准"), new Menu(OptAlgoTestPage.class, "光学算法测试") )), - new Menu("过检专用", ZList.of( - new Menu(P01PipetteGunVerification.class, "移液枪验证"), - new Menu(ExperimentConsistencyTestingPage.class, "一致性测试") - )), new Menu("坐标测量", ZList.of( new Menu(HbotPosMeasurePage.class, "HBOT测量(电控)"), new Menu(HbotFreedomPosMeasurePage.class, "HBO测量(自由模式)"), @@ -199,25 +215,10 @@ public class ExtApiPageGroupCfgMgr { new Menu(HbotCodeScanPosVerificationPage.class, "单步-HBOT扫码"), new Menu(P50VerificationScriptPage.class, "脚本-模块验证") )), - new Menu("压力测试", ZList.of( - new Menu(PipetteGunStressTest.class, "移液枪压力测试") - )), - new Menu("代码测试", ZList.of( - new Menu(OptFormulaTestPageV2.class, "光学公式测试1"), - new Menu(OptFormulaTestPage.class, "光学公式测试2"), - new Menu(BiLisDoubleTrackChannelTestPage.class, "BiLis双通道测试") - )), - new Menu("前端测试助手", ZList.of( - new Menu(FakeReactionRecordGeneratorPage.class, "虚拟反应记录生成"), - new Menu(VirtualEventGeneratorPage.class, "虚拟事件生成"), - new Menu(IDCardDataGeneratorPage.class, "ID卡数据生成器"), - new Menu(VirtualReportModeOperationPage.class, "虚拟报告模式操作"), - new Menu(DeviceVirtualStateMgrSettingPage.class, "虚拟状态上报配置") - )), - new Menu(UsrOperationSimulationPage.class, "用户行为模拟器"), - new Menu(CodeGeneratorPage.class, "条码字符生成工具") - ))); + new Menu(DeviceExSettingPage.class, "设备扩展配置"), + new Menu(DeviceIdSettingPage.class, "ID配置") + ))); //////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/main/java/a8k/extui/mgr/ExtApiPageMgr.java b/src/main/java/a8k/extui/mgr/ExtApiPageMgr.java index 28d71ff..fcb2e0b 100644 --- a/src/main/java/a8k/extui/mgr/ExtApiPageMgr.java +++ b/src/main/java/a8k/extui/mgr/ExtApiPageMgr.java @@ -1,7 +1,10 @@ package a8k.extui.mgr; +import a8k.app.service.os.OSDeviceInfoMgrService; import a8k.extui.type.ExUIFunction; import a8k.extui.type.ExtUIPageCfg; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.util.Assert; @@ -10,8 +13,9 @@ import java.util.ArrayList; import java.util.List; @Component + public class ExtApiPageMgr { - List pages = new ArrayList<>(); + private final List pages = new ArrayList<>(); public void addPage(ExtUIPageCfg page) { pages.add(page); diff --git a/src/main/java/a8k/extui/page/extapp/VirtualStateGenerateModeSettingPage.java b/src/main/java/a8k/extui/page/extapp/VirtualStateGenerateModeSettingPage.java new file mode 100644 index 0000000..f920135 --- /dev/null +++ b/src/main/java/a8k/extui/page/extapp/VirtualStateGenerateModeSettingPage.java @@ -0,0 +1,40 @@ +package a8k.extui.page.extapp; + +import a8k.app.service.virtualstate.DeviceVirtualStateMgrService; +import a8k.app.service.virtualstate.VirtualStateMode; +import a8k.app.type.a8k.state.EmergencyTubePos; +import a8k.app.type.a8k.state.enumtype.TubeState; +import a8k.extui.mgr.ExtApiPageMgr; +import jakarta.annotation.PostConstruct; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +@RequiredArgsConstructor +public class VirtualStateGenerateModeSettingPage { + private final ExtApiPageMgr extApiPageMgr; + private final DeviceVirtualStateMgrService deviceVirtualStateMgrService; + + public void changeVirtualStateMode(VirtualStateMode mode) { + deviceVirtualStateMgrService.changeVirtualStateMode(mode); + } + + public void changeEmergencyTubeState(TubeState tubeState) { + deviceVirtualStateMgrService.changeEmergencyTubeState(tubeState); + } + + @PostConstruct + public void init() { + var page = extApiPageMgr.newPage(this); + page.newGroup("调试助手"); + page.addFunction("修改虚拟状态模式", this::changeVirtualStateMode) + .setParamVal("mode", deviceVirtualStateMgrService::getMode); + page.addFunction("修改急诊试管状态", this::changeEmergencyTubeState) + .setParamVal("tubeState", deviceVirtualStateMgrService::getEmergencyTubeState); + + + extApiPageMgr.addPage(page); + } +} diff --git a/src/main/java/a8k/extui/page/extapp/debug_assistant/DeviceVirtualStateMgrSettingPage.java b/src/main/java/a8k/extui/page/extapp/debug_assistant/DeviceVirtualStateMgrSettingPage.java deleted file mode 100644 index 12b943a..0000000 --- a/src/main/java/a8k/extui/page/extapp/debug_assistant/DeviceVirtualStateMgrSettingPage.java +++ /dev/null @@ -1,35 +0,0 @@ -package a8k.extui.page.extapp.debug_assistant; - -import a8k.app.service.background.AppEventBusService; -import a8k.app.service.data.ProjInfoMgrService; -import a8k.app.service.statemgr.AppFlagStateMgr; -import a8k.app.service.virtualstate.DeviceVirtualStateMgrService; -import a8k.app.type.a8k.state.enumtype.TubeState; -import a8k.extui.mgr.ExtApiPageMgr; -import a8k.extui.type.ExtUIPageCfg; -import jakarta.annotation.PostConstruct; -import jakarta.annotation.Resource; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -@Component -@RequiredArgsConstructor -@Slf4j -public class DeviceVirtualStateMgrSettingPage { - - private final ExtApiPageMgr extApiPageMgr; - private final DeviceVirtualStateMgrService deviceVirtualStateMgrService; - - public void setEmergencyTubeState(TubeState tubeState) { - deviceVirtualStateMgrService.setEmptyTubeState(tubeState); - } - - - @PostConstruct - void init() { - ExtUIPageCfg page = new ExtUIPageCfg(this); - page.addFunction("设置应急管状态", this::setEmergencyTubeState); - extApiPageMgr.addPage(page); - } -} diff --git a/src/main/java/a8k/extui/page/extapp/debug_assistant/VirtualReportModeOperationPage.java b/src/main/java/a8k/extui/page/extapp/debug_assistant/VirtualReportModeOperationPage.java deleted file mode 100644 index 3a66f12..0000000 --- a/src/main/java/a8k/extui/page/extapp/debug_assistant/VirtualReportModeOperationPage.java +++ /dev/null @@ -1,38 +0,0 @@ -package a8k.extui.page.extapp.debug_assistant; - -import a8k.app.service.background.AppEventBusService; -import a8k.app.service.data.ProjInfoMgrService; -import a8k.app.service.statemgr.AppFlagStateMgr; -import a8k.extui.mgr.ExtApiPageMgr; -import a8k.extui.type.ExtUIPageCfg; -import jakarta.annotation.PostConstruct; -import jakarta.annotation.Resource; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; - -@Component -@RequiredArgsConstructor -public class VirtualReportModeOperationPage { - @Resource - AppEventBusService eventBus; - - @Resource - ExtApiPageMgr extApiPageMgr; - - private final ProjInfoMgrService projInfoMgrService; - - private final AppEventBusService appEventBusService; - private final AppFlagStateMgr appFlagStateMgr; - - public void resetAppWarningFlagState() { - appFlagStateMgr.resetVirtualState(); - } - - - @PostConstruct - void init() { - ExtUIPageCfg page = new ExtUIPageCfg(this); - page.addFunction("重置状态列表(虚拟模式下)", this::resetAppWarningFlagState); - extApiPageMgr.addPage(page); - } -} diff --git a/src/main/java/a8k/extui/page/extsetting/db/DeviceExSettingPage.java b/src/main/java/a8k/extui/page/factory/DeviceExSettingPage.java similarity index 80% rename from src/main/java/a8k/extui/page/extsetting/db/DeviceExSettingPage.java rename to src/main/java/a8k/extui/page/factory/DeviceExSettingPage.java index 4b9fbdb..66c440c 100644 --- a/src/main/java/a8k/extui/page/extsetting/db/DeviceExSettingPage.java +++ b/src/main/java/a8k/extui/page/factory/DeviceExSettingPage.java @@ -1,17 +1,9 @@ -package a8k.extui.page.extsetting.db; +package a8k.extui.page.factory; -import a8k.app.controler.filemgr.StorageControler; -import a8k.app.dao.DeviceActionParameterDao; import a8k.app.dao.DeviceExSettingDao; -import a8k.app.dao.type.db.DeviceExSetting; -import a8k.app.dao.type.db.Parameter; import a8k.extui.mgr.ExtApiPageMgr; import a8k.extui.type.ExtUIPageCfg; -import a8k.extui.type.ExtUiTable; -import a8k.extui.type.param.ExtUIFile; -import a8k.extui.type.ret.FileToBeDownload; import jakarta.annotation.PostConstruct; -import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/src/main/java/a8k/extui/page/factory/DeviceIdSettingPage.java b/src/main/java/a8k/extui/page/factory/DeviceIdSettingPage.java new file mode 100644 index 0000000..c7453d1 --- /dev/null +++ b/src/main/java/a8k/extui/page/factory/DeviceIdSettingPage.java @@ -0,0 +1,40 @@ +package a8k.extui.page.factory; + +import a8k.app.dao.DeviceExSettingDao; +import a8k.app.service.os.OSDeviceInfoMgrService; +import a8k.app.type.exception.AppException; +import a8k.extui.mgr.ExtApiPageMgr; +import a8k.extui.type.ExtUIPageCfg; +import jakarta.annotation.PostConstruct; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +@RequiredArgsConstructor +public class DeviceIdSettingPage { + + private final ExtApiPageMgr extApiPageMgr; + private final DeviceExSettingDao deviceExSettingDao; + private final OSDeviceInfoMgrService osDeviceInfoMgrService; + + + public void setSN(String sn) throws AppException { + osDeviceInfoMgrService.setSN(sn); + } + + public void setAssetId(String AssetId) throws AppException { + osDeviceInfoMgrService.setAssetId(AssetId); + } + + @PostConstruct + void init() throws NoSuchMethodException { + ExtUIPageCfg page = new ExtUIPageCfg(this); + page.addFunction("设置工程序列号", this::setSN) + .setParamVal("sn", osDeviceInfoMgrService::readSN); + page.addFunction("设置出厂序列号", this::setAssetId) + .setParamVal("AssetId", osDeviceInfoMgrService::readAssetId); + extApiPageMgr.addPage(page); + } +} diff --git a/src/main/java/a8k/extui/page/hardwaretest/A8kSubModuleRegAndConfigInitPage.java b/src/main/java/a8k/extui/page/factory/hardwaretest/A8kSubModuleRegAndConfigInitPage.java similarity index 95% rename from src/main/java/a8k/extui/page/hardwaretest/A8kSubModuleRegAndConfigInitPage.java rename to src/main/java/a8k/extui/page/factory/hardwaretest/A8kSubModuleRegAndConfigInitPage.java index 883b947..b71dd4d 100644 --- a/src/main/java/a8k/extui/page/hardwaretest/A8kSubModuleRegAndConfigInitPage.java +++ b/src/main/java/a8k/extui/page/factory/hardwaretest/A8kSubModuleRegAndConfigInitPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.hardwaretest; +package a8k.extui.page.factory.hardwaretest; import a8k.app.service.data.SubModuleConfigService; import a8k.app.service.data.SubModuleRegInitialValueMgrService; diff --git a/src/main/java/a8k/extui/page/hardwaretest/HBotHardwareTestPage.java b/src/main/java/a8k/extui/page/factory/hardwaretest/HBotHardwareTestPage.java similarity index 98% rename from src/main/java/a8k/extui/page/hardwaretest/HBotHardwareTestPage.java rename to src/main/java/a8k/extui/page/factory/hardwaretest/HBotHardwareTestPage.java index 6e55bc4..11578cd 100644 --- a/src/main/java/a8k/extui/page/hardwaretest/HBotHardwareTestPage.java +++ b/src/main/java/a8k/extui/page/factory/hardwaretest/HBotHardwareTestPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.hardwaretest; +package a8k.extui.page.factory.hardwaretest; import a8k.app.iflytophald.driver.HbotDriver; import a8k.app.iflytophald.driver.PipetteCtrlDriverV2; diff --git a/src/main/java/a8k/extui/page/hardwaretest/ICCardReaderTestPage.java b/src/main/java/a8k/extui/page/factory/hardwaretest/ICCardReaderTestPage.java similarity index 95% rename from src/main/java/a8k/extui/page/hardwaretest/ICCardReaderTestPage.java rename to src/main/java/a8k/extui/page/factory/hardwaretest/ICCardReaderTestPage.java index a4da0a2..5af73ee 100644 --- a/src/main/java/a8k/extui/page/hardwaretest/ICCardReaderTestPage.java +++ b/src/main/java/a8k/extui/page/factory/hardwaretest/ICCardReaderTestPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.hardwaretest; +package a8k.extui.page.factory.hardwaretest; import a8k.app.dao.type.db.ProjExtInfoCard; import a8k.app.service.background.ProjIDCardCtrlAndMonitorService; diff --git a/src/main/java/a8k/extui/page/hardwaretest/InputIOStateHardwareTestPage.java b/src/main/java/a8k/extui/page/factory/hardwaretest/InputIOStateHardwareTestPage.java similarity index 98% rename from src/main/java/a8k/extui/page/hardwaretest/InputIOStateHardwareTestPage.java rename to src/main/java/a8k/extui/page/factory/hardwaretest/InputIOStateHardwareTestPage.java index f3948d8..6abae51 100644 --- a/src/main/java/a8k/extui/page/hardwaretest/InputIOStateHardwareTestPage.java +++ b/src/main/java/a8k/extui/page/factory/hardwaretest/InputIOStateHardwareTestPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.hardwaretest; +package a8k.extui.page.factory.hardwaretest; import a8k.app.type.exception.AppException; import a8k.app.iflytophald.driver.InputDetectDriver; diff --git a/src/main/java/a8k/extui/page/hardwaretest/LISUartTestPage.java b/src/main/java/a8k/extui/page/factory/hardwaretest/LISUartTestPage.java similarity index 97% rename from src/main/java/a8k/extui/page/hardwaretest/LISUartTestPage.java rename to src/main/java/a8k/extui/page/factory/hardwaretest/LISUartTestPage.java index 5af4775..81e3d8f 100644 --- a/src/main/java/a8k/extui/page/hardwaretest/LISUartTestPage.java +++ b/src/main/java/a8k/extui/page/factory/hardwaretest/LISUartTestPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.hardwaretest; +package a8k.extui.page.factory.hardwaretest; import a8k.app.iflytophald.channel.LisUartCommunicationChannel; import a8k.app.type.lis.LISSerialBaudrateType; diff --git a/src/main/java/a8k/extui/page/hardwaretest/MiniServoHardwareTestPage.java b/src/main/java/a8k/extui/page/factory/hardwaretest/MiniServoHardwareTestPage.java similarity index 99% rename from src/main/java/a8k/extui/page/hardwaretest/MiniServoHardwareTestPage.java rename to src/main/java/a8k/extui/page/factory/hardwaretest/MiniServoHardwareTestPage.java index 6dbd747..c6c41d8 100644 --- a/src/main/java/a8k/extui/page/hardwaretest/MiniServoHardwareTestPage.java +++ b/src/main/java/a8k/extui/page/factory/hardwaretest/MiniServoHardwareTestPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.hardwaretest; +package a8k.extui.page.factory.hardwaretest; import a8k.app.iflytophald.driver.MiniServoDriver; diff --git a/src/main/java/a8k/extui/page/hardwaretest/MiniServoPosCalibratePage.java b/src/main/java/a8k/extui/page/factory/hardwaretest/MiniServoPosCalibratePage.java similarity index 98% rename from src/main/java/a8k/extui/page/hardwaretest/MiniServoPosCalibratePage.java rename to src/main/java/a8k/extui/page/factory/hardwaretest/MiniServoPosCalibratePage.java index 609bbb9..7db5469 100644 --- a/src/main/java/a8k/extui/page/hardwaretest/MiniServoPosCalibratePage.java +++ b/src/main/java/a8k/extui/page/factory/hardwaretest/MiniServoPosCalibratePage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.hardwaretest; +package a8k.extui.page.factory.hardwaretest; import a8k.app.service.lowerctrl.TubeFeedingExCtrlService; diff --git a/src/main/java/a8k/extui/page/hardwaretest/MiscHardwareTestPage.java b/src/main/java/a8k/extui/page/factory/hardwaretest/MiscHardwareTestPage.java similarity index 92% rename from src/main/java/a8k/extui/page/hardwaretest/MiscHardwareTestPage.java rename to src/main/java/a8k/extui/page/factory/hardwaretest/MiscHardwareTestPage.java index 78dfc2e..0e87a7f 100644 --- a/src/main/java/a8k/extui/page/hardwaretest/MiscHardwareTestPage.java +++ b/src/main/java/a8k/extui/page/factory/hardwaretest/MiscHardwareTestPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.hardwaretest; +package a8k.extui.page.factory.hardwaretest; import a8k.app.iflytophald.driver.MiniServoDriver; diff --git a/src/main/java/a8k/extui/page/hardwaretest/MotorHardwareTestPage.java b/src/main/java/a8k/extui/page/factory/hardwaretest/MotorHardwareTestPage.java similarity index 99% rename from src/main/java/a8k/extui/page/hardwaretest/MotorHardwareTestPage.java rename to src/main/java/a8k/extui/page/factory/hardwaretest/MotorHardwareTestPage.java index bb77326..dbc1e7c 100644 --- a/src/main/java/a8k/extui/page/hardwaretest/MotorHardwareTestPage.java +++ b/src/main/java/a8k/extui/page/factory/hardwaretest/MotorHardwareTestPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.hardwaretest; +package a8k.extui.page.factory.hardwaretest; import a8k.app.iflytophald.driver.StepMotorCtrlDriver; import a8k.app.iflytophald.type.protocol.StepMotorMId; diff --git a/src/main/java/a8k/extui/page/hardwaretest/MotorPPSHardwareTestPage.java b/src/main/java/a8k/extui/page/factory/hardwaretest/MotorPPSHardwareTestPage.java similarity index 99% rename from src/main/java/a8k/extui/page/hardwaretest/MotorPPSHardwareTestPage.java rename to src/main/java/a8k/extui/page/factory/hardwaretest/MotorPPSHardwareTestPage.java index 6bccfcf..072c5ae 100644 --- a/src/main/java/a8k/extui/page/hardwaretest/MotorPPSHardwareTestPage.java +++ b/src/main/java/a8k/extui/page/factory/hardwaretest/MotorPPSHardwareTestPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.hardwaretest; +package a8k.extui.page.factory.hardwaretest; import a8k.app.iflytophald.driver.PipetteCtrlDriverV2; import a8k.app.iflytophald.driver.StepMotorCtrlDriver; diff --git a/src/main/java/a8k/extui/page/hardwaretest/OutputIOCtrlTestPage.java b/src/main/java/a8k/extui/page/factory/hardwaretest/OutputIOCtrlTestPage.java similarity index 96% rename from src/main/java/a8k/extui/page/hardwaretest/OutputIOCtrlTestPage.java rename to src/main/java/a8k/extui/page/factory/hardwaretest/OutputIOCtrlTestPage.java index e8fb0e3..a190768 100644 --- a/src/main/java/a8k/extui/page/hardwaretest/OutputIOCtrlTestPage.java +++ b/src/main/java/a8k/extui/page/factory/hardwaretest/OutputIOCtrlTestPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.hardwaretest; +package a8k.extui.page.factory.hardwaretest; import a8k.app.iflytophald.driver.OutputIOCtrlDriver; import a8k.app.iflytophald.type.protocol.OutputIOId; diff --git a/src/main/java/a8k/extui/page/hardwaretest/PipetteGunHardwareTestPage.java b/src/main/java/a8k/extui/page/factory/hardwaretest/PipetteGunHardwareTestPage.java similarity index 98% rename from src/main/java/a8k/extui/page/hardwaretest/PipetteGunHardwareTestPage.java rename to src/main/java/a8k/extui/page/factory/hardwaretest/PipetteGunHardwareTestPage.java index f48aa3d..53be172 100644 --- a/src/main/java/a8k/extui/page/hardwaretest/PipetteGunHardwareTestPage.java +++ b/src/main/java/a8k/extui/page/factory/hardwaretest/PipetteGunHardwareTestPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.hardwaretest; +package a8k.extui.page.factory.hardwaretest; import a8k.app.iflytophald.driver.PipetteCtrlDriverV2; import a8k.app.type.exception.AppException; diff --git a/src/main/java/a8k/extui/page/hardwaretest/SubBoardProberPage.java b/src/main/java/a8k/extui/page/factory/hardwaretest/SubBoardProberPage.java similarity index 98% rename from src/main/java/a8k/extui/page/hardwaretest/SubBoardProberPage.java rename to src/main/java/a8k/extui/page/factory/hardwaretest/SubBoardProberPage.java index 935d708..081afb3 100644 --- a/src/main/java/a8k/extui/page/hardwaretest/SubBoardProberPage.java +++ b/src/main/java/a8k/extui/page/factory/hardwaretest/SubBoardProberPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.hardwaretest; +package a8k.extui.page.factory.hardwaretest; import a8k.app.iflytophald.driver.A8kCanBusBaseDriver; import a8k.app.iflytophald.type.protocol.MId; diff --git a/src/main/java/a8k/extui/page/hardwaretest/SubModuleVersionPreviewPage.java b/src/main/java/a8k/extui/page/factory/hardwaretest/SubModuleVersionPreviewPage.java similarity index 99% rename from src/main/java/a8k/extui/page/hardwaretest/SubModuleVersionPreviewPage.java rename to src/main/java/a8k/extui/page/factory/hardwaretest/SubModuleVersionPreviewPage.java index b515bc4..49bc7e2 100644 --- a/src/main/java/a8k/extui/page/hardwaretest/SubModuleVersionPreviewPage.java +++ b/src/main/java/a8k/extui/page/factory/hardwaretest/SubModuleVersionPreviewPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.hardwaretest; +package a8k.extui.page.factory.hardwaretest; import a8k.app.type.exception.AppException; import a8k.app.iflytophald.driver.A8kCanBusBaseDriver; diff --git a/src/main/java/a8k/extui/page/hardwaretest/WaterTempControllerTestPage.java b/src/main/java/a8k/extui/page/factory/hardwaretest/WaterTempControllerTestPage.java similarity index 99% rename from src/main/java/a8k/extui/page/hardwaretest/WaterTempControllerTestPage.java rename to src/main/java/a8k/extui/page/factory/hardwaretest/WaterTempControllerTestPage.java index 63ac74a..626bf5d 100644 --- a/src/main/java/a8k/extui/page/hardwaretest/WaterTempControllerTestPage.java +++ b/src/main/java/a8k/extui/page/factory/hardwaretest/WaterTempControllerTestPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.hardwaretest; +package a8k.extui.page.factory.hardwaretest; import a8k.app.iflytophald.driver.WaterTemperatureControllerDriver; import a8k.app.iflytophald.type.protocol.TemperatureControlerMid; diff --git a/src/main/java/a8k/extui/page/extapp/A8kOptVerification.java b/src/main/java/a8k/extui/page/factory/opt/A8kOptVerification.java similarity index 99% rename from src/main/java/a8k/extui/page/extapp/A8kOptVerification.java rename to src/main/java/a8k/extui/page/factory/opt/A8kOptVerification.java index df000bb..02fdda7 100644 --- a/src/main/java/a8k/extui/page/extapp/A8kOptVerification.java +++ b/src/main/java/a8k/extui/page/factory/opt/A8kOptVerification.java @@ -1,4 +1,4 @@ -package a8k.extui.page.extapp; +package a8k.extui.page.factory.opt; import a8k.app.dao.type.db.ReactionRecord; import a8k.app.optalgo.A8kPeakAnalyzer; diff --git a/src/main/java/a8k/extui/page/extapp/OptModuleParamCalibration.java b/src/main/java/a8k/extui/page/factory/opt/OptModuleParamCalibration.java similarity index 99% rename from src/main/java/a8k/extui/page/extapp/OptModuleParamCalibration.java rename to src/main/java/a8k/extui/page/factory/opt/OptModuleParamCalibration.java index b15d4e1..1a4a228 100644 --- a/src/main/java/a8k/extui/page/extapp/OptModuleParamCalibration.java +++ b/src/main/java/a8k/extui/page/factory/opt/OptModuleParamCalibration.java @@ -1,4 +1,4 @@ -package a8k.extui.page.extapp; +package a8k.extui.page.factory.opt; import a8k.app.dao.type.combination.ProjBuildInInfo; import a8k.app.optalgo.type.A8kOptPeakInfo; diff --git a/src/main/java/a8k/extui/page/test/verification/HbotCodeScanPosVerificationPage.java b/src/main/java/a8k/extui/page/factory/verification/HbotCodeScanPosVerificationPage.java similarity index 98% rename from src/main/java/a8k/extui/page/test/verification/HbotCodeScanPosVerificationPage.java rename to src/main/java/a8k/extui/page/factory/verification/HbotCodeScanPosVerificationPage.java index 7856af1..d0927e5 100644 --- a/src/main/java/a8k/extui/page/test/verification/HbotCodeScanPosVerificationPage.java +++ b/src/main/java/a8k/extui/page/factory/verification/HbotCodeScanPosVerificationPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.test.verification; +package a8k.extui.page.factory.verification; import a8k.app.iflytophald.driver.CodeScanerDriver; import a8k.app.service.lowerctrl.HbotMoveExCtrlService; diff --git a/src/main/java/a8k/extui/page/test/verification/P10ProjejIDCardTestPage.java b/src/main/java/a8k/extui/page/factory/verification/P10ProjejIDCardTestPage.java similarity index 98% rename from src/main/java/a8k/extui/page/test/verification/P10ProjejIDCardTestPage.java rename to src/main/java/a8k/extui/page/factory/verification/P10ProjejIDCardTestPage.java index fad9cbf..bb9d7c5 100644 --- a/src/main/java/a8k/extui/page/test/verification/P10ProjejIDCardTestPage.java +++ b/src/main/java/a8k/extui/page/factory/verification/P10ProjejIDCardTestPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.test.verification; +package a8k.extui.page.factory.verification; import a8k.app.type.exception.AppException; import a8k.app.dao.type.db.ProjExtInfoCard; diff --git a/src/main/java/a8k/extui/page/test/verification/P30InfeedAndPreProcessPosVerificationPage.java b/src/main/java/a8k/extui/page/factory/verification/P30InfeedAndPreProcessPosVerificationPage.java similarity index 99% rename from src/main/java/a8k/extui/page/test/verification/P30InfeedAndPreProcessPosVerificationPage.java rename to src/main/java/a8k/extui/page/factory/verification/P30InfeedAndPreProcessPosVerificationPage.java index cf71d85..b4cfaaa 100644 --- a/src/main/java/a8k/extui/page/test/verification/P30InfeedAndPreProcessPosVerificationPage.java +++ b/src/main/java/a8k/extui/page/factory/verification/P30InfeedAndPreProcessPosVerificationPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.test.verification; +package a8k.extui.page.factory.verification; import a8k.app.type.exception.AppException; import a8k.app.service.lowerctrl.*; diff --git a/src/main/java/a8k/extui/page/test/verification/P31ReactionPlatesTransmitPosVerificationPage.java b/src/main/java/a8k/extui/page/factory/verification/P31ReactionPlatesTransmitPosVerificationPage.java similarity index 98% rename from src/main/java/a8k/extui/page/test/verification/P31ReactionPlatesTransmitPosVerificationPage.java rename to src/main/java/a8k/extui/page/factory/verification/P31ReactionPlatesTransmitPosVerificationPage.java index 90b0b00..11cd68c 100644 --- a/src/main/java/a8k/extui/page/test/verification/P31ReactionPlatesTransmitPosVerificationPage.java +++ b/src/main/java/a8k/extui/page/factory/verification/P31ReactionPlatesTransmitPosVerificationPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.test.verification; +package a8k.extui.page.factory.verification; import a8k.app.type.a8k.ConsumableGroup; import a8k.app.type.a8k.pos.IncubatorPos; diff --git a/src/main/java/a8k/extui/page/test/verification/P32HbotPosVerificationPage.java b/src/main/java/a8k/extui/page/factory/verification/P32HbotPosVerificationPage.java similarity index 98% rename from src/main/java/a8k/extui/page/test/verification/P32HbotPosVerificationPage.java rename to src/main/java/a8k/extui/page/factory/verification/P32HbotPosVerificationPage.java index 193f12e..a197d7e 100644 --- a/src/main/java/a8k/extui/page/test/verification/P32HbotPosVerificationPage.java +++ b/src/main/java/a8k/extui/page/factory/verification/P32HbotPosVerificationPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.test.verification; +package a8k.extui.page.factory.verification; import a8k.app.service.ctrlmodule.TipOperationCtrlModule; import a8k.app.type.a8k.ConsumableGroup; diff --git a/src/main/java/a8k/extui/page/test/verification/P33HbotSamplePosVerificationPage.java b/src/main/java/a8k/extui/page/factory/verification/P33HbotSamplePosVerificationPage.java similarity index 94% rename from src/main/java/a8k/extui/page/test/verification/P33HbotSamplePosVerificationPage.java rename to src/main/java/a8k/extui/page/factory/verification/P33HbotSamplePosVerificationPage.java index 4347304..562dd58 100644 --- a/src/main/java/a8k/extui/page/test/verification/P33HbotSamplePosVerificationPage.java +++ b/src/main/java/a8k/extui/page/factory/verification/P33HbotSamplePosVerificationPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.test.verification; +package a8k.extui.page.factory.verification; diff --git a/src/main/java/a8k/extui/page/test/verification/P34LiquidOperationTestPage.java b/src/main/java/a8k/extui/page/factory/verification/P34LiquidOperationTestPage.java similarity index 99% rename from src/main/java/a8k/extui/page/test/verification/P34LiquidOperationTestPage.java rename to src/main/java/a8k/extui/page/factory/verification/P34LiquidOperationTestPage.java index 9acc882..57ae3b5 100644 --- a/src/main/java/a8k/extui/page/test/verification/P34LiquidOperationTestPage.java +++ b/src/main/java/a8k/extui/page/factory/verification/P34LiquidOperationTestPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.test.verification; +package a8k.extui.page.factory.verification; import a8k.app.service.lowerctrl.TurntableMoveCtrlService; import a8k.app.service.ctrlmodule.TipOperationCtrlModule; diff --git a/src/main/java/a8k/extui/page/test/verification/P50VerificationScriptPage.java b/src/main/java/a8k/extui/page/factory/verification/P50VerificationScriptPage.java similarity index 99% rename from src/main/java/a8k/extui/page/test/verification/P50VerificationScriptPage.java rename to src/main/java/a8k/extui/page/factory/verification/P50VerificationScriptPage.java index 8ae6722..d7e9373 100644 --- a/src/main/java/a8k/extui/page/test/verification/P50VerificationScriptPage.java +++ b/src/main/java/a8k/extui/page/factory/verification/P50VerificationScriptPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.test.verification; +package a8k.extui.page.factory.verification; import a8k.app.iflytophald.driver.PipetteCtrlDriverV2; import a8k.app.service.ctrlmodule.TipOperationCtrlModule; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index f4b7fac..e988c21 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,17 +1,17 @@ #WEB虚拟后端 -#server.port: 80 -#iflytophald.ip: 127.0.0.1 -#iflytophald.enable: false -#device.runmode: "VirtualStateGenerateMode" -#lis.enable: false - -#PC调试 server.port: 80 -device.runmode: "RealMode" -iflytophald.ip: 192.168.8.10 -iflytophald.enable: true +iflytophald.ip: 127.0.0.1 +iflytophald.enable: false +device.runmode: "VirtualStateGenerateMode" lis.enable: false +#PC调试 +#server.port: 80 +#device.runmode: "RealMode" +#iflytophald.ip: 192.168.8.10 +#iflytophald.enable: true +#lis.enable: false + #硬件测试 #server.port: 8082 #iflytophald.ip: 192.168.8.10