43 changed files with 729 additions and 195 deletions
-
BINapp.db
-
2src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java
-
39src/main/java/a8k/service/app/appctrl/AppConsumablesScanService.java
-
10src/main/java/a8k/service/app/appctrl/mainflowctrl/CondtionMgrService.java
-
8src/main/java/a8k/service/app/appctrl/mainflowctrl/action/DO_CLEAR_ERROR_BEFORE_WORK.java
-
13src/main/java/a8k/service/app/appctrl/mainflowctrl/action/DO_FINISH_TUBE_PROCESS.java
-
3src/main/java/a8k/service/app/appctrl/mainflowctrl/action/DO_PAUSE.java
-
12src/main/java/a8k/service/app/appctrl/mainflowctrl/action/DO_PROCESS_ERROR_PLATE.java
-
10src/main/java/a8k/service/app/appctrl/mainflowctrl/action/DO_START.java
-
10src/main/java/a8k/service/app/appctrl/mainflowctrl/action/DO_STOP.java
-
10src/main/java/a8k/service/app/appctrl/mainflowctrl/action/PLATE_OPT_SCAN.java
-
16src/main/java/a8k/service/app/appctrl/mainflowctrl/action/PROCESS_INCUBATE_COMPLETED_PLATE.java
-
18src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ1_ENTER_TUBEHOLDER_AND_SCAN.java
-
10src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ2_SWITCH_TO_THE_NEXT_TUBE.java
-
17src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ4_PRE_PROCESS.java
-
10src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ5_PROCESS.java
-
16src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ6_POST_PROCESS.java
-
10src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ7_EJECT_TUBEHOLDER.java
-
9src/main/java/a8k/service/app/appdata/ProjCfgMgrService.java
-
13src/main/java/a8k/service/app/background/ProjIDCardDectorService.java
-
15src/main/java/a8k/service/app/devicectrl/ctrlservice/ConsumablesScanCtrlService.java
-
12src/main/java/a8k/service/app/devicectrl/ctrlservice/DeviceInitCtrlService.java
-
17src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotLittleBSPosMgr.java
-
14src/main/java/a8k/service/app/devicectrl/param/param_mgr/HbotProbeSubstancePosMgr.java
-
17src/main/java/a8k/service/test/MainflowCtrlTestService.java
-
119src/main/java/a8k/service/test/TestStateMgrService.java
-
272src/main/java/a8k/service/test/VirtualDeviceSimulationTest.java
-
16src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_02.java
-
16src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_03.java
-
16src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_04.java
-
16src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_05.java
-
16src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_06.java
-
17src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_07_EXPIRED.java
-
11src/main/java/a8k/service/test/fakeproj/FakeProjInfo.java
-
2src/main/java/a8k/service/test/state/TestModeState.java
-
46src/main/java/a8k/service/test/state/VirtualDevice.java
-
6src/main/java/a8k/type/ConsumableScanRawResult.java
-
2src/main/java/a8k/type/consumables/ConsumablesErrorType.java
-
4src/main/java/a8k/utils/ReactionPlate2DCodeHelper.java
-
6src/main/java/a8k/utils/ZAppChecker.java
-
4src/main/java/a8k/utils/ZDateUtils.java
-
4src/main/java/a8k/utils/ZStringUtils.java
@ -0,0 +1,119 @@ |
|||
package a8k.service.test; |
|||
|
|||
|
|||
import a8k.service.db.A8kProjIdCardDBService; |
|||
import a8k.service.db.A8kProjInfoDBService; |
|||
import a8k.service.db.A8kProjOptConfigDBService; |
|||
import a8k.service.test.fakeproj.FakeProjInfoFactory; |
|||
import a8k.service.test.state.TestModeState; |
|||
import a8k.service.test.state.VirtualDevice; |
|||
import a8k.type.ConsumableOneChResult; |
|||
import a8k.type.TubeHolderScanResult; |
|||
import a8k.type.TubesScanResult; |
|||
import a8k.type.tube_setting.TubeHolderSetting; |
|||
import a8k.type.type.A8kTubeHolderType; |
|||
import a8k.utils.ReactionPlate2DCodeHelper; |
|||
import jakarta.annotation.Resource; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.List; |
|||
|
|||
@Component |
|||
public class TestStateMgrService { |
|||
|
|||
@Resource |
|||
TestModeState testModeState; |
|||
@Resource |
|||
VirtualDevice virtualDevice; |
|||
|
|||
@Resource |
|||
A8kProjIdCardDBService a8kProjIdCardDBService; |
|||
@Resource |
|||
A8kProjOptConfigDBService a8kProjOptConfigDBService; |
|||
@Resource |
|||
A8kProjInfoDBService a8kProjInfoDBService; |
|||
|
|||
|
|||
public void addProjInfo(Class<?> projClass) { |
|||
a8kProjInfoDBService.add(FakeProjInfoFactory.buildProjectInfo(projClass)); |
|||
a8kProjOptConfigDBService.add(FakeProjInfoFactory.buildA8kProjOptConfigList(projClass)); |
|||
} |
|||
|
|||
public void addIdCardInfo(Class<?> projClass) { |
|||
a8kProjIdCardDBService.addIdCard(FakeProjInfoFactory.buildIDCardInfo(projClass)); |
|||
} |
|||
|
|||
|
|||
public void resetProjDB() { |
|||
a8kProjInfoDBService.removeAll(); |
|||
a8kProjOptConfigDBService.removeAll(); |
|||
} |
|||
|
|||
public void resetProjIDCardDB() { |
|||
a8kProjIdCardDBService.removeAll(); |
|||
} |
|||
|
|||
public Boolean isVirtualDeviceEnable() { |
|||
return virtualDevice.isEnable(); |
|||
} |
|||
|
|||
public TubeHolderScanResult createScanResult(A8kTubeHolderType type, Integer tubeNum) { |
|||
TubeHolderScanResult scanResult = new TubeHolderScanResult(); |
|||
scanResult.tubeHolderType = type.scanCode; |
|||
for (int i = 0; i < scanResult.tube.length; i++) { |
|||
if (i < tubeNum) |
|||
scanResult.tube[i] = new TubesScanResult(true, true, ""); |
|||
else |
|||
scanResult.tube[i] = new TubesScanResult(false, false, ""); |
|||
} |
|||
return scanResult; |
|||
} |
|||
|
|||
public void insertVirtualBloodTubeHolder(TubeHolderScanResult scanResult) { |
|||
virtualDevice.setTubeScanResult(scanResult); |
|||
} |
|||
|
|||
public void initConsumablesScanResultTable() { |
|||
for (int i = 0; i < virtualDevice.getConsumablesScanResultTable().length; i++) { |
|||
virtualDevice.getConsumablesScanResultTable()[i] = new ConsumableOneChResult(i); |
|||
} |
|||
} |
|||
|
|||
public void insertVirtualConsumable(int ch, String lotId) { |
|||
ConsumableOneChResult consumable = new ConsumableOneChResult(ch); |
|||
consumable.larBSScanResult = lotId; |
|||
consumable.littBSScanResult = lotId; |
|||
consumable.PBScanResult = ReactionPlate2DCodeHelper.build2DCode(lotId); |
|||
virtualDevice.getConsumablesScanResultTable()[consumable.chNum] = consumable; |
|||
} |
|||
|
|||
public ConsumableOneChResult buildConsumable(int ch, String lotId) { |
|||
ConsumableOneChResult consumable = new ConsumableOneChResult(ch); |
|||
consumable.larBSScanResult = lotId; |
|||
consumable.littBSScanResult = lotId; |
|||
consumable.PBScanResult = ReactionPlate2DCodeHelper.build2DCode(lotId); |
|||
return consumable; |
|||
} |
|||
|
|||
public void insertVirtualConsumable(ConsumableOneChResult consumable) { |
|||
virtualDevice.getConsumablesScanResultTable()[consumable.chNum] = consumable; |
|||
} |
|||
|
|||
public void removeVirtualConsumable(int ch) { |
|||
ConsumableOneChResult consumable = new ConsumableOneChResult(ch); |
|||
virtualDevice.getConsumablesScanResultTable()[consumable.chNum] = consumable; |
|||
} |
|||
|
|||
public TubeHolderSetting createOneActiveTubeHolderSetting(A8kTubeHolderType type, Integer tubeNum, List<Integer> projIndex) { |
|||
TubeHolderSetting setting = new TubeHolderSetting(); |
|||
setting.tubeHolderType = type; |
|||
setting.active = true; |
|||
for (int i = 0; i < setting.tubeSettings.length; i++) { |
|||
if (i < tubeNum) { |
|||
setting.tubeSettings[i].userid = "FAUID" + i; |
|||
setting.tubeSettings[i].projIndex = projIndex; |
|||
} |
|||
} |
|||
return setting; |
|||
} |
|||
} |
@ -0,0 +1,272 @@ |
|||
package a8k.service.test; |
|||
|
|||
import a8k.SpringBootBeanUtil; |
|||
import a8k.extapi_controler.utils.ExtApiFn; |
|||
import a8k.extapi_controler.utils.ExtApiTab; |
|||
import a8k.hardware.type.a8kcanprotocol.A8kEcode; |
|||
import a8k.hardware.type.a8kcanprotocol.CmdId; |
|||
import a8k.hardware.type.a8kcanprotocol.MId; |
|||
import a8k.service.app.appctrl.AppTubeSettingMgrService; |
|||
import a8k.service.app.appctrl.mainflowctrl.base.A8kActionStepType; |
|||
import a8k.service.app.appctrl.mainflowctrl.base.A8kErrorContext; |
|||
import a8k.service.app.appstate.GStateService; |
|||
import a8k.service.bases.AppEventBusService; |
|||
import a8k.service.bases.appevent.*; |
|||
import a8k.service.db.ReactionRecordDBService; |
|||
import a8k.service.db.type.A8kIdCardInfo; |
|||
import a8k.service.db.type.ReactionResultRecord; |
|||
import a8k.service.test.fakeproj.*; |
|||
import a8k.service.test.state.TestModeState; |
|||
import a8k.service.test.state.VirtualDevice; |
|||
import a8k.type.ConsumableOneChResult; |
|||
import a8k.type.TubeHolderScanResult; |
|||
import a8k.type.ecode.AppCodeError; |
|||
import a8k.type.ecode.AppError; |
|||
import a8k.type.ecode.ConsumeNotEnoughError; |
|||
import a8k.type.ecode.HardwareError; |
|||
import a8k.type.reaction_result_type.ReactionResultStatus; |
|||
import a8k.type.tube_setting.TubeHolderSetting; |
|||
import a8k.type.type.A8kTubeHolderType; |
|||
import a8k.type.type.BloodType; |
|||
import a8k.utils.A8kPacketBuilder; |
|||
import a8k.utils.ReactionPlate2DCodeHelper; |
|||
import a8k.utils.ZDateUtils; |
|||
import jakarta.annotation.Resource; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
@Component |
|||
@ExtApiTab(cfg = a8k.extapi_controler.pagecontrol.ExtApiTabConfig.VirtualDeviceSimulationTest) |
|||
public class VirtualDeviceSimulationTest { |
|||
@Resource |
|||
VirtualDevice virtualDevice; |
|||
@Resource |
|||
GStateService gstate; |
|||
|
|||
@Resource |
|||
AppEventBusService eventBus; |
|||
|
|||
@Resource |
|||
TestStateMgrService testStateMgrService; |
|||
@Resource |
|||
AppTubeSettingMgrService appTubeSettingMgrService; |
|||
|
|||
@ExtApiFn(name = "初始化虚拟设备模式", group = "基础", order = 100) |
|||
public void initVirtualDeviceMode() { |
|||
virtualDevice.setEnableVirtualDevice(true); |
|||
testStateMgrService.resetProjDB(); |
|||
testStateMgrService.resetProjIDCardDB(); |
|||
testStateMgrService.initConsumablesScanResultTable(); |
|||
} |
|||
|
|||
@ExtApiFn(name = "模拟插入一张虚拟ID卡", group = "虚拟操作", order = 200) |
|||
public void insertVirtualIdCard() { |
|||
A8kIdCardInfo idCardInfo = new FAKE_PROJ_01().buildA8kIDCardInfo(); |
|||
virtualDevice.setMountIdCard(idCardInfo); |
|||
eventBus.pushEvent(new A8kHardwareReport(A8kPacketBuilder.build_event_a8000_idcard_online())); |
|||
} |
|||
|
|||
@ExtApiFn(name = "模拟移除虚拟ID卡", group = "虚拟操作", order = 201) |
|||
public void removeVirtualIdCard() { |
|||
virtualDevice.setMountIdCard(null); |
|||
eventBus.pushEvent(new A8kHardwareReport(A8kPacketBuilder.build_event_a8000_idcard_offline())); |
|||
} |
|||
|
|||
|
|||
@ExtApiFn(name = "A8K试管架.放一个全血试管架", group = "虚拟操作", order = 202) |
|||
public void insertVirtualBloodTubeHolder() { |
|||
var scanResult = testStateMgrService.createScanResult(A8kTubeHolderType.BloodTube, 10); |
|||
testStateMgrService.insertVirtualBloodTubeHolder(scanResult); |
|||
} |
|||
|
|||
@ExtApiFn(name = "添加一组全血试管架配置(辅助调试)", group = "虚拟操作", order = 203) |
|||
public TubeHolderSetting addTubeCfg() { |
|||
appTubeSettingMgrService.removeAllTubeSetting(); |
|||
TubeHolderSetting setting = testStateMgrService.createOneActiveTubeHolderSetting(A8kTubeHolderType.BloodTube, 10, List.of(new FAKE_PROJ_01().projIndex)); |
|||
appTubeSettingMgrService.newTubeHolderSetting(setting); |
|||
return setting; |
|||
|
|||
} |
|||
|
|||
|
|||
@ExtApiFn(name = "插入虚拟耗材", group = "虚拟操作", order = 250) |
|||
public void insertVirtualConsumable() { |
|||
|
|||
testStateMgrService.addProjInfo(FAKE_PROJ_01.class); |
|||
testStateMgrService.addProjInfo(FAKE_PROJ_02.class); |
|||
testStateMgrService.addProjInfo(FAKE_PROJ_03.class); |
|||
testStateMgrService.addProjInfo(FAKE_PROJ_04.class); |
|||
testStateMgrService.addProjInfo(FAKE_PROJ_05.class); |
|||
testStateMgrService.addProjInfo(FAKE_PROJ_06.class); |
|||
|
|||
testStateMgrService.addIdCardInfo(FAKE_PROJ_01.class); |
|||
testStateMgrService.addIdCardInfo(FAKE_PROJ_02.class); |
|||
testStateMgrService.addIdCardInfo(FAKE_PROJ_03.class); |
|||
testStateMgrService.addIdCardInfo(FAKE_PROJ_04.class); |
|||
testStateMgrService.addIdCardInfo(FAKE_PROJ_05.class); |
|||
testStateMgrService.addIdCardInfo(FAKE_PROJ_06.class); |
|||
|
|||
testStateMgrService.insertVirtualConsumable(0, new FAKE_PROJ_01().lotId); |
|||
testStateMgrService.insertVirtualConsumable(1, new FAKE_PROJ_02().lotId); |
|||
testStateMgrService.insertVirtualConsumable(2, new FAKE_PROJ_03().lotId); |
|||
testStateMgrService.insertVirtualConsumable(3, new FAKE_PROJ_04().lotId); |
|||
testStateMgrService.insertVirtualConsumable(4, new FAKE_PROJ_05().lotId); |
|||
testStateMgrService.insertVirtualConsumable(5, new FAKE_PROJ_06().lotId); |
|||
} |
|||
|
|||
@ExtApiFn(name = "插入错误的虚拟耗材-1", group = "虚拟操作", order = 251) |
|||
public void insertVirtualErrorConsumable1() { |
|||
testStateMgrService.resetProjIDCardDB(); |
|||
testStateMgrService.resetProjDB(); |
|||
|
|||
ConsumableOneChResult oneChResult; |
|||
//缺少ID卡 |
|||
testStateMgrService.addProjInfo(FAKE_PROJ_01.class); |
|||
testStateMgrService.insertVirtualConsumable(0, new FAKE_PROJ_01().lotId); |
|||
|
|||
//缺少耗材 |
|||
testStateMgrService.addProjInfo(FAKE_PROJ_02.class); |
|||
testStateMgrService.addIdCardInfo(FAKE_PROJ_02.class); |
|||
oneChResult = testStateMgrService.buildConsumable(1, new FAKE_PROJ_02().lotId); |
|||
oneChResult.littBSScanResult = ""; |
|||
oneChResult.larBSScanResult = ""; |
|||
testStateMgrService.insertVirtualConsumable(oneChResult); |
|||
|
|||
//空 |
|||
testStateMgrService.insertVirtualConsumable(2, null); |
|||
|
|||
|
|||
//缺少耗材 |
|||
testStateMgrService.addProjInfo(FAKE_PROJ_03.class); |
|||
testStateMgrService.addIdCardInfo(FAKE_PROJ_03.class); |
|||
oneChResult = testStateMgrService.buildConsumable(3, new FAKE_PROJ_03().lotId); |
|||
oneChResult.littBSScanResult = ""; |
|||
oneChResult.larBSScanResult = ""; |
|||
testStateMgrService.insertVirtualConsumable(oneChResult); |
|||
|
|||
//反应板编码格式错误 |
|||
testStateMgrService.addProjInfo(FAKE_PROJ_04.class); |
|||
testStateMgrService.addIdCardInfo(FAKE_PROJ_04.class); |
|||
oneChResult = testStateMgrService.buildConsumable(4, new FAKE_PROJ_04().lotId); |
|||
oneChResult.PBScanResult = "XXXXX"; |
|||
oneChResult.littBSScanResult = ""; |
|||
oneChResult.larBSScanResult = ""; |
|||
testStateMgrService.insertVirtualConsumable(oneChResult); |
|||
|
|||
//过期的ID卡 |
|||
testStateMgrService.addProjInfo(FAKE_PROJ_07_EXPIRED.class); |
|||
testStateMgrService.addIdCardInfo(FAKE_PROJ_07_EXPIRED.class); |
|||
testStateMgrService.insertVirtualConsumable(5, new FAKE_PROJ_07_EXPIRED().lotId); |
|||
} |
|||
|
|||
@ExtApiFn(name = "插入错误的虚拟耗材-2", group = "虚拟操作", order = 252) |
|||
public void insertVirtualErrorConsumabl2() { |
|||
testStateMgrService.resetProjIDCardDB(); |
|||
testStateMgrService.resetProjDB(); |
|||
|
|||
ConsumableOneChResult oneChResult; |
|||
//缺少项目 |
|||
testStateMgrService.addIdCardInfo(FAKE_PROJ_01.class); |
|||
testStateMgrService.insertVirtualConsumable(0, new FAKE_PROJ_01().lotId); |
|||
|
|||
//缺少耗材 |
|||
testStateMgrService.addProjInfo(FAKE_PROJ_02.class); |
|||
testStateMgrService.addIdCardInfo(FAKE_PROJ_02.class); |
|||
oneChResult = testStateMgrService.buildConsumable(1, new FAKE_PROJ_02().lotId); |
|||
oneChResult.littBSScanResult = "XXXX"; |
|||
oneChResult.larBSScanResult = "XXXX"; |
|||
testStateMgrService.insertVirtualConsumable(oneChResult); |
|||
|
|||
//缺少耗材 |
|||
testStateMgrService.addProjInfo(FAKE_PROJ_03.class); |
|||
testStateMgrService.addIdCardInfo(FAKE_PROJ_03.class); |
|||
oneChResult = testStateMgrService.buildConsumable(2, new FAKE_PROJ_03().lotId); |
|||
oneChResult.littBSScanResult = "XXXX"; |
|||
oneChResult.larBSScanResult = "XXXX"; |
|||
testStateMgrService.insertVirtualConsumable(oneChResult); |
|||
|
|||
testStateMgrService.insertVirtualConsumable(3, null); |
|||
testStateMgrService.insertVirtualConsumable(4, null); |
|||
testStateMgrService.insertVirtualConsumable(5, null); |
|||
|
|||
} |
|||
|
|||
|
|||
// |
|||
|
|||
|
|||
@ExtApiFn(name = "移除虚拟耗材", group = "虚拟操作", order = 253) |
|||
public void removeVirtualConsumable() { |
|||
testStateMgrService.removeVirtualConsumable(0); |
|||
testStateMgrService.removeVirtualConsumable(1); |
|||
testStateMgrService.removeVirtualConsumable(2); |
|||
testStateMgrService.removeVirtualConsumable(3); |
|||
testStateMgrService.removeVirtualConsumable(4); |
|||
testStateMgrService.removeVirtualConsumable(5); |
|||
} |
|||
|
|||
@ExtApiFn(name = "添加一条反应结果记录", group = "虚拟数据", order = 300) |
|||
public void addVirtualReactionRecord() { |
|||
ReactionRecordDBService service = SpringBootBeanUtil.getBean(ReactionRecordDBService.class); |
|||
ReactionResultRecord record = new ReactionResultRecord(); |
|||
|
|||
record.sampleBloodType = BloodType.WHOLE_BLOOD; |
|||
record.sampleBarcode = "XXXXXXXXXXXXXXX"; |
|||
record.sampleUserid = "ABCDEFG"; |
|||
record.projName = "hscrp"; |
|||
record.lotId = "CAHAC46U"; |
|||
record.projIndex = 1; |
|||
record.sampleId = "20120904_1"; |
|||
record.expiryDate = ZDateUtils.nextDay(); |
|||
record.operator = "admin"; // 操作员 |
|||
record.appVersion = gstate.getAppVersion();//上层应用版本 |
|||
record.mcuVersion = gstate.getMcuVersion(); // MCU软件版本 |
|||
record.sn = gstate.getSn(); // 仪器序列号 =; |
|||
record.subProjResultStatus1 = ReactionResultStatus.SUCCESS; |
|||
record.subProjResultStatus2 = ReactionResultStatus.ERROR_RESULT_OUT_OF_RANGE; |
|||
record.subProjResultStatus3 = ReactionResultStatus.ERROR_QUALITY_PEAK_DETECTION; |
|||
record.subProjResult1 = "12.3mg/L,12.5g/ml,125mol/L"; //子项目1 结果 |
|||
record.subProjResult2 = ""; //子项目2 结果 |
|||
record.subProjResult3 = ""; //子项目3 结果 |
|||
service.add(record); |
|||
} |
|||
|
|||
|
|||
@ExtApiFn(name = "发送AppWarningNotifyEvent", group = "虚拟事件", order = 401) |
|||
public void buildAndSendAppWarningNotifyEvent() { |
|||
AppWarningNotifyEvent event = new AppWarningNotifyEvent(A8kEcode.USR_NOT_EXIT); |
|||
eventBus.pushEvent(event); |
|||
} |
|||
|
|||
@ExtApiFn(name = "A8kErrorPromptEvent", group = "虚拟事件", order = 402) |
|||
public void buildAndSendA8kErrorPromptEvent() { |
|||
A8kErrorPromptEvent event = new A8kErrorPromptEvent(new ConsumeNotEnoughError("Hscrp")); |
|||
eventBus.pushEvent(event); |
|||
event = new A8kErrorPromptEvent(new AppCodeError("XXXX额外的错误说明XXXX")); |
|||
eventBus.pushEvent(event); |
|||
event = new A8kErrorPromptEvent(new HardwareError(A8kEcode.LOW_ERROR_CHECKCODE_IS_ERROR, MId.HbotM, CmdId.step_motor_read_pos)); |
|||
eventBus.pushEvent(event); |
|||
} |
|||
|
|||
@ExtApiFn(name = "发送AppTubeholderSettingUpdateEvent", group = "虚拟事件", order = 403) |
|||
public void buildAndSendAppTubeholderSettingUpdateEvent() { |
|||
eventBus.pushEvent(new AppTubeholderSettingUpdateEvent()); |
|||
} |
|||
|
|||
@ExtApiFn(name = "发送DoA8kStepActionEvent", group = "虚拟事件", order = 404) |
|||
public void buildAndSendDoA8kStepActionEvent() { |
|||
eventBus.pushEvent(new DoA8kStepActionEvent(A8kActionStepType.SEQ1_ENTER_TUBEHOLDER_AND_SCAN)); |
|||
} |
|||
|
|||
@ExtApiFn(name = "发送A8kEcodeContextListPromptEvent", group = "虚拟事件", order = 405) |
|||
public void buildAndSendA8kEcodeContextListPromptEvent() { |
|||
List<A8kErrorContext> errorContexts = new ArrayList<>(); |
|||
errorContexts.add(new A8kErrorContext(A8kActionStepType.SEQ1_ENTER_TUBEHOLDER_AND_SCAN, new AppError(A8kEcode.APPE_TUBE_HOLDER_TYPE_IS_NOT_SUPPORT))); |
|||
errorContexts.add(new A8kErrorContext(A8kActionStepType.SEQ5_PROCESS, new AppError(A8kEcode.APPE_NO_TUBE_IN_HOLDER))); |
|||
eventBus.pushEvent(new A8kEcodeContextListPromptEvent(errorContexts)); |
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1,16 @@ |
|||
package a8k.service.test.fakeproj; |
|||
|
|||
|
|||
import a8k.service.db.type.a8kidcard.zenum.A8kReactionFlowType; |
|||
|
|||
public class FAKE_PROJ_02 extends FakeProjInfo { |
|||
public FAKE_PROJ_02() { |
|||
super(2); |
|||
subProjNum = 2; // 子项目数量 |
|||
reactionTemperature = 25; // 反应温度 |
|||
reactionPlateIncubationTimeMin = 1; // 反应板孵育时间(min) |
|||
reactionFlowType = A8kReactionFlowType.FlowType2; // 反应流程类型 |
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1,16 @@ |
|||
package a8k.service.test.fakeproj; |
|||
|
|||
|
|||
import a8k.service.db.type.a8kidcard.zenum.A8kReactionFlowType; |
|||
|
|||
public class FAKE_PROJ_03 extends FakeProjInfo { |
|||
public FAKE_PROJ_03() { |
|||
super(3); |
|||
subProjNum = 2; // 子项目数量 |
|||
reactionTemperature = 25; // 反应温度 |
|||
reactionPlateIncubationTimeMin = 1; // 反应板孵育时间(min) |
|||
reactionFlowType = A8kReactionFlowType.FlowType1; // 反应流程类型 |
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1,16 @@ |
|||
package a8k.service.test.fakeproj; |
|||
|
|||
|
|||
import a8k.service.db.type.a8kidcard.zenum.A8kReactionFlowType; |
|||
|
|||
public class FAKE_PROJ_04 extends FakeProjInfo { |
|||
public FAKE_PROJ_04() { |
|||
super(4); |
|||
subProjNum = 2; // 子项目数量 |
|||
reactionTemperature = 25; // 反应温度 |
|||
reactionPlateIncubationTimeMin = 1; // 反应板孵育时间(min) |
|||
reactionFlowType = A8kReactionFlowType.FlowType2; // 反应流程类型 |
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1,16 @@ |
|||
package a8k.service.test.fakeproj; |
|||
|
|||
|
|||
import a8k.service.db.type.a8kidcard.zenum.A8kReactionFlowType; |
|||
|
|||
public class FAKE_PROJ_05 extends FakeProjInfo { |
|||
public FAKE_PROJ_05() { |
|||
super(5); |
|||
subProjNum = 2; // 子项目数量 |
|||
reactionTemperature = 25; // 反应温度 |
|||
reactionPlateIncubationTimeMin = 1; // 反应板孵育时间(min) |
|||
reactionFlowType = A8kReactionFlowType.FlowType2; // 反应流程类型 |
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1,16 @@ |
|||
package a8k.service.test.fakeproj; |
|||
|
|||
|
|||
import a8k.service.db.type.a8kidcard.zenum.A8kReactionFlowType; |
|||
|
|||
public class FAKE_PROJ_06 extends FakeProjInfo { |
|||
public FAKE_PROJ_06() { |
|||
super(6); |
|||
subProjNum = 2; // 子项目数量 |
|||
reactionTemperature = 25; // 反应温度 |
|||
reactionPlateIncubationTimeMin = 1; // 反应板孵育时间(min) |
|||
reactionFlowType = A8kReactionFlowType.FlowType2; // 反应流程类型 |
|||
} |
|||
|
|||
|
|||
} |
@ -0,0 +1,17 @@ |
|||
package a8k.service.test.fakeproj; |
|||
|
|||
|
|||
import a8k.service.db.type.a8kidcard.zenum.A8kReactionFlowType; |
|||
|
|||
public class FAKE_PROJ_07_EXPIRED extends FakeProjInfo { |
|||
public FAKE_PROJ_07_EXPIRED() { |
|||
super(7); |
|||
subProjNum = 2; // 子项目数量 |
|||
reactionTemperature = 25; // 反应温度 |
|||
reactionPlateIncubationTimeMin = 1; // 反应板孵育时间(min) |
|||
reactionFlowType = A8kReactionFlowType.FlowType2; // 反应流程类型 |
|||
expired = true; |
|||
} |
|||
|
|||
|
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue