From 7b69ecb2ce67113cb9fbaab8e05f00e2aa31b965 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Thu, 31 Oct 2024 17:38:44 +0800 Subject: [PATCH] update --- .../mainflowctrl/action/PLATE_OPT_SCAN.java | 10 +- .../action/SEQ1_ENTER_TUBEHOLDER_AND_SCAN.java | 3 + .../devicectrl/exdriver/MotorEnableExDriver.java | 7 +- .../devicectrl/exdriver/MotorMoveZeroExDriver.java | 3 + .../calibration/HbotSamplePosCalibration.java | 38 ++----- .../app/devicectrl/script/DeviceCtrlScripter.java | 2 +- .../a8k/service/test/MainflowCtrlTestService.java | 110 ++++++++++----------- .../service/test/VirtualDeviceSimulationTest.java | 36 +++---- .../a8k/service/test/fakeproj/FAKE_PROJ_01.java | 16 --- .../service/test/fakeproj/FAKE_PROJ_01_FLOW1.java | 15 +++ .../a8k/service/test/fakeproj/FAKE_PROJ_02.java | 16 --- .../service/test/fakeproj/FAKE_PROJ_02_FLOW2.java | 16 +++ .../java/a8k/service/test/state/TestModeState.java | 14 ++- src/main/java/a8k/type/TubeHolderScanResult.java | 11 ++- src/main/resources/app.db | Bin 225280 -> 225280 bytes 15 files changed, 144 insertions(+), 153 deletions(-) delete mode 100644 src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_01.java create mode 100644 src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_01_FLOW1.java delete mode 100644 src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_02.java create mode 100644 src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_02_FLOW2.java diff --git a/src/main/java/a8k/service/app/appctrl/mainflowctrl/action/PLATE_OPT_SCAN.java b/src/main/java/a8k/service/app/appctrl/mainflowctrl/action/PLATE_OPT_SCAN.java index 9f51c48..1a6981c 100644 --- a/src/main/java/a8k/service/app/appctrl/mainflowctrl/action/PLATE_OPT_SCAN.java +++ b/src/main/java/a8k/service/app/appctrl/mainflowctrl/action/PLATE_OPT_SCAN.java @@ -81,12 +81,14 @@ public class PLATE_OPT_SCAN extends A8kStepAction { } //扫描反应板并获取结果 - if (testModeState.getEnableOptScan()) { - OptAnalyzeContext optCxt = new OptAnalyzeContext(cxt.projCfg, cxt.bloodType); - optScanModuleCtrlService.doOptScan(optCxt); - reactionResults = optCxt.result; + if (testModeState.getDisableOptScan()) { + optScanModuleCtrlService.dropPlate(); + return reactionResults; } + OptAnalyzeContext optCxt = new OptAnalyzeContext(cxt.projCfg, cxt.bloodType); + optScanModuleCtrlService.doOptScan(optCxt); + reactionResults = optCxt.result; //丢板 optScanModuleCtrlService.dropPlate(); diff --git a/src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ1_ENTER_TUBEHOLDER_AND_SCAN.java b/src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ1_ENTER_TUBEHOLDER_AND_SCAN.java index 6e57e4c..83bde43 100644 --- a/src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ1_ENTER_TUBEHOLDER_AND_SCAN.java +++ b/src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ1_ENTER_TUBEHOLDER_AND_SCAN.java @@ -90,6 +90,9 @@ public class SEQ1_ENTER_TUBEHOLDER_AND_SCAN extends A8kStepAction { //如果测试模式设置好了试管扫描结果,那么直接使用虚拟扫描结果 if (testModeState.getVirtualTubeScanResult() != null) { + if (result.isHasTubeInIt()) { + throw AppException.of("试管架中有试管,但是测试模式中设置了虚拟试管扫描结果"); + } result = testModeState.getVirtualTubeScanResult(); } diff --git a/src/main/java/a8k/service/app/devicectrl/exdriver/MotorEnableExDriver.java b/src/main/java/a8k/service/app/devicectrl/exdriver/MotorEnableExDriver.java index d763c36..360bb68 100644 --- a/src/main/java/a8k/service/app/devicectrl/exdriver/MotorEnableExDriver.java +++ b/src/main/java/a8k/service/app/devicectrl/exdriver/MotorEnableExDriver.java @@ -33,12 +33,7 @@ public class MotorEnableExDriver { Integer val = enable ? 1 : 0; miniServoDriver.miniServoEnable(MiniServoMId.ShakeModGripperSV, val); miniServoDriver.miniServoEnable(MiniServoMId.ShakeModGripperYSV, val); - if (!enable) { - //TODO: 只有第一台样机,由于无法手拧,所以永不失能 - // stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModClampingM, val); - } else { - stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModClampingM, val); - } + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModClampingM, val); stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModGripperZM, val); stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModShakeM, val); } diff --git a/src/main/java/a8k/service/app/devicectrl/exdriver/MotorMoveZeroExDriver.java b/src/main/java/a8k/service/app/devicectrl/exdriver/MotorMoveZeroExDriver.java index b7c044b..a31d0cd 100644 --- a/src/main/java/a8k/service/app/devicectrl/exdriver/MotorMoveZeroExDriver.java +++ b/src/main/java/a8k/service/app/devicectrl/exdriver/MotorMoveZeroExDriver.java @@ -47,6 +47,9 @@ public class MotorMoveZeroExDriver { stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModClampingM, 5000); stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModShakeM, 5000); // move to default pos + stepMotorCtrlDriver.stepMotorEasyMoveToBlock(StepMotorMId.ShakeModShakeM, 90, 5000); + + } } diff --git a/src/main/java/a8k/service/app/devicectrl/param/calibration/HbotSamplePosCalibration.java b/src/main/java/a8k/service/app/devicectrl/param/calibration/HbotSamplePosCalibration.java index e930b17..cbd5447 100644 --- a/src/main/java/a8k/service/app/devicectrl/param/calibration/HbotSamplePosCalibration.java +++ b/src/main/java/a8k/service/app/devicectrl/param/calibration/HbotSamplePosCalibration.java @@ -86,11 +86,12 @@ public class HbotSamplePosCalibration { enableModule(); motorEnableExDriver.preProcessRelatedModuleEnable(true); - motorMoveZeroExDriver.preProcessModuleMoveToZero(); + // motorEnableExDriver.tubeFeedRelatedModuleEnable(true); + motorMoveZeroExDriver.preProcessModuleMoveToZero(); pipetteCtrlDriver.zMotorMoveZeroBlock(); hbotBaseMoveExDriver.moveToZero(); - + // motorMoveZeroExDriver.tubeFeeddingModuleMoveToZero(); } @ExtApiFn(name = "使能相关模块", group = "测试工具", order = 12) @@ -101,46 +102,21 @@ public class HbotSamplePosCalibration { @ExtApiFn(name = "失能相关模块", group = "测试工具", order = 13) public void disableModule() throws AppException { + stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModClampingM, 1); + stepMotorCtrlDriver.stepMotorEasyMoveByBlock(StepMotorMId.ShakeModClampingM, 10, 3000); + pipetteCtrlDriver.zMotorEnable(0); hbotBaseMoveExDriver.enable(0); + motorEnableExDriver.forceDisableAllMotor(); } - // @ExtApiFn(name = "试管夹具复位", group = "辅助工具", order = 21) - // public void tubeClampMoveZero() throws AppException { - // stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModClampingM, 1); - // stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModShakeM, 1); - // stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModShakeM, 5000); - // stepMotorCtrlDriver.stepMotorEasyMoveToBlock(StepMotorMId.ShakeModShakeM, 90, 5000); - // stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModClampingM, 5000); - // tubePreProcesModuleExDriver.clampingMReleaseTube(); - // stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModShakeM, 0); - // } - // - // @ExtApiFn(name = "释放试管", group = "辅助工具", order = 22) - // public void releaseTubeClamp() throws AppException { - // stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModClampingM, 1); - // stepMotorCtrlDriver.stepMotorEasyMoveByBlock(StepMotorMId.ShakeModClampingM, 20, 5000); - // // tubePreProcesModuleExDriver.clampingMReleaseTube(); - // } - // - // @ExtApiFn(name = "夹紧试管", group = "辅助工具", order = 23) - // public void clampTubeClamp() throws AppException { - // stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModClampingM, 1); - // tubePreProcesModuleExDriver.clampingMclampTube(); - // } - @ExtApiFn(name = "取试管到试管摇匀位", group = "辅助工具", order = 21) public void takeTubeToShakePos(Boolean isHtube) throws AppException { tubePreProcesCtrlService.takeTubeFromTubeholderToShakePos(isHtube); tubePreProcesCtrlService.takeTubeCap(); } - @ExtApiFn(name = "放回试管到试管架中", group = "辅助工具", order = 22) - public void putTubeBak() throws AppException { - tubePreProcesCtrlService.putbakTubeCapAndPutbakTubeToTubeHolder(); - } - // // 标定Z轴 diff --git a/src/main/java/a8k/service/app/devicectrl/script/DeviceCtrlScripter.java b/src/main/java/a8k/service/app/devicectrl/script/DeviceCtrlScripter.java index da3d67d..505464e 100644 --- a/src/main/java/a8k/service/app/devicectrl/script/DeviceCtrlScripter.java +++ b/src/main/java/a8k/service/app/devicectrl/script/DeviceCtrlScripter.java @@ -197,6 +197,7 @@ public class DeviceCtrlScripter { //吐液 distribute(PipetteGunBindActionType.DISTRIBUTION_LARGE_BUFFER_SOLUTION_PROBE_SUBSTANCE, ctx, takeul); + //丢tip hbotCtrlService.dropTip(); @@ -265,7 +266,6 @@ public class DeviceCtrlScripter { pipetteCtrlDriver.clearHangingLiquid(2); - //丢tip hbotCtrlService.dropTip(); //归零,待机 diff --git a/src/main/java/a8k/service/test/MainflowCtrlTestService.java b/src/main/java/a8k/service/test/MainflowCtrlTestService.java index 45f45ad..bdc612a 100644 --- a/src/main/java/a8k/service/test/MainflowCtrlTestService.java +++ b/src/main/java/a8k/service/test/MainflowCtrlTestService.java @@ -20,28 +20,21 @@ import a8k.service.app.devicectrl.exdriver.MotorEnableExDriver; import a8k.service.dao.A8kProjIdCardDao; import a8k.service.dao.A8kProjInfoDao; import a8k.service.dao.A8kProjOptConfigDao; -import a8k.service.test.fakeproj.FAKE_PROJ_01; -import a8k.service.test.fakeproj.FAKE_PROJ_02; -import a8k.service.test.fakeproj.FakeProjInfo; -import a8k.service.test.fakeproj.FakeProjInfoFactory; +import a8k.service.test.fakeproj.*; import a8k.service.test.state.TestModeState; import a8k.service.test.state.VirtualDevice; -import a8k.service.test.type.MainFlowCtrlTestCaseType; import a8k.type.*; import a8k.type.checkpoint.CheckResult; import a8k.type.consumables.ConsumablesScanReportErrorType; -import a8k.type.ecode.AECodeError; import a8k.type.exception.AppException; import a8k.type.tube_setting.TubeHolderSetting; import a8k.type.type.A8kTubeHolderType; import a8k.type.type.TipGroup; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; -import java.util.Objects; @Component @Slf4j @@ -127,7 +120,7 @@ public class MainflowCtrlTestService { return scanResult; } - TubeHolderSetting createOneActiveTubeHolderSetting(A8kTubeHolderType type, Integer tubeNum, List projId) { + TubeHolderSetting createOneActiveTubeHolderSetting(Integer tubeNum, List projId) { TubeHolderSetting setting = new TubeHolderSetting(); // setting.tubeHolderType = type; setting.active = true; @@ -156,7 +149,7 @@ public class MainflowCtrlTestService { @ExtApiFn(name = "使能光学检查", group = "测试模式", order = 103) public void setEnableOptScan(Boolean enable) { - testModeState.setEnableOptScan(enable); + testModeState.setDisableOptScan(enable); } // @@ -247,76 +240,83 @@ public class MainflowCtrlTestService { } } - - @ExtApiFn(name = "执行一次简单的测试(无试管测试.流程1)", order = 400) - public String doSimpleTest(Boolean isHTube, Integer tubeNum) throws AppException { + void doOnceSimpleTest(FakeProjInfo proj, Boolean isHTube, Integer tubeNum) throws AppException { if (tubeNum <= 0) { throw AppException.of("试管数量必须大于0"); } gstate.setDeviceInited(true); - stopAndWaittingForDeviceStop(); - //清空项目的数据库配置 - resetProjDB(); - //设置虚拟耗材,只有一个高试管 - testModeState.setVirtualTubeScanResult(createScanResult(A8kTubeHolderType.BloodTube, isHTube, tubeNum)); - //无校验模式 - testModeState.setNoCheckMode(true); - //无光学检查 - testModeState.setEnableOptScan(true); - - - //添加项目信息 - addProjInfo(FAKE_PROJ_01.class); //设置耗材状态,假定已经扫描过耗材 - LoadingConsumablesDirectly(ConsumableGroup.GROUP0, new FAKE_PROJ_01()); - //设置试管架扫描信息,全部设置成高试管 + LoadingConsumablesDirectly(ConsumableGroup.GROUP0, proj); + //添加一个新试管配置 appTubeSettingMgrService.removeAllTubeSetting(); - - for (int i = 0; i < 3; i++) { - TubeHolderSetting setting = createOneActiveTubeHolderSetting(A8kTubeHolderType.BloodTube, tubeNum, List.of(new FAKE_PROJ_01().projId)); - appTubeSettingMgrService.newTubeHolderSetting(setting); - } + appTubeSettingMgrService.newTubeHolderSetting(// + createOneActiveTubeHolderSetting(tubeNum, List.of(proj.projId))); //开始工作 appDeviceCtrlService.startWork(); + } + + + public void regFakeProjInfo() { + resetProjDB(); + addProjInfo(FAKE_PROJ_01_FLOW1.class); + addProjInfo(FAKE_PROJ_02_FLOW2.class); + addProjInfo(FAKE_PROJ_03.class); + addProjInfo(FAKE_PROJ_04.class); + addProjInfo(FAKE_PROJ_05.class); + addProjInfo(FAKE_PROJ_06.class); + } + + + @ExtApiFn(name = "执行一次简单的测试(无试管测试.流程1)", order = 400) + public String doSimpleTest(Boolean isHTube, Integer tubeNum) throws AppException { + regFakeProjInfo(); + //设置虚拟耗材,只有一个高试管,无校验模式,无光学检查 + testModeState.resetAll(); + testModeState.setVirtualTubeScanResult(createScanResult(A8kTubeHolderType.BloodTube, isHTube, tubeNum)); + testModeState.setNoCheckMode(true); + testModeState.setDisableOptScan(true); + doOnceSimpleTest(new FAKE_PROJ_01_FLOW1(), isHTube, tubeNum); return "开始测试"; } @ExtApiFn(name = "执行一次简单的测试(无试管测试.流程2)", order = 401) public String doSimpleTest2(Boolean isHTube, Integer tubeNum) throws AppException { - if (tubeNum <= 0) { - throw AppException.of("试管数量必须大于0"); - } + regFakeProjInfo(); + testModeState.resetAll(); + testModeState.setVirtualTubeScanResult(createScanResult(A8kTubeHolderType.BloodTube, isHTube, tubeNum)); + testModeState.setNoCheckMode(true); + testModeState.setDisableOptScan(true); + doOnceSimpleTest(new FAKE_PROJ_02_FLOW2(), isHTube, tubeNum); + return "开始测试"; + } - gstate.setDeviceInited(true); - - stopAndWaittingForDeviceStop(); - //清空项目的数据库配置 - resetProjDB(); + @ExtApiFn(name = "执行一次十个试管,双项目,无耗材测试", order = 402) + public String doSimpleTest3() throws AppException { + regFakeProjInfo(); - //设置虚拟耗材,只有一个高试管 - testModeState.setVirtualTubeScanResult(createScanResult(A8kTubeHolderType.BloodTube, isHTube, tubeNum)); - //无校验模式 + testModeState.resetAll(); + testModeState.setVirtualTubeScanResult(createScanResult(A8kTubeHolderType.BloodTube, true, 10)); testModeState.setNoCheckMode(true); - //无光学检查 - testModeState.setEnableOptScan(true); + testModeState.setDisableOptScan(true); + gstate.setDeviceInited(true); + + stopAndWaittingForDeviceStop(); - //添加项目信息 - addProjInfo(FAKE_PROJ_02.class); //设置耗材状态,假定已经扫描过耗材 - LoadingConsumablesDirectly(ConsumableGroup.GROUP1, new FAKE_PROJ_02()); - //设置试管架扫描信息,全部设置成高试管 + LoadingConsumablesDirectly(ConsumableGroup.GROUP0, new FAKE_PROJ_01_FLOW1()); + LoadingConsumablesDirectly(ConsumableGroup.GROUP1, new FAKE_PROJ_02_FLOW2()); + LoadingConsumablesDirectly(ConsumableGroup.GROUP3, new FAKE_PROJ_01_FLOW1()); + LoadingConsumablesDirectly(ConsumableGroup.GROUP4, new FAKE_PROJ_02_FLOW2()); + //添加一个新试管配置 appTubeSettingMgrService.removeAllTubeSetting(); - - for (int i = 0; i < 3; i++) { - TubeHolderSetting setting = createOneActiveTubeHolderSetting(A8kTubeHolderType.BloodTube, tubeNum, List.of(new FAKE_PROJ_02().projId)); - appTubeSettingMgrService.newTubeHolderSetting(setting); - } + appTubeSettingMgrService.newTubeHolderSetting(// + createOneActiveTubeHolderSetting(10, List.of(new FAKE_PROJ_01_FLOW1().projId, new FAKE_PROJ_02_FLOW2().projId))); //开始工作 appDeviceCtrlService.startWork(); diff --git a/src/main/java/a8k/service/test/VirtualDeviceSimulationTest.java b/src/main/java/a8k/service/test/VirtualDeviceSimulationTest.java index cce57cb..b1d750c 100644 --- a/src/main/java/a8k/service/test/VirtualDeviceSimulationTest.java +++ b/src/main/java/a8k/service/test/VirtualDeviceSimulationTest.java @@ -69,7 +69,7 @@ public class VirtualDeviceSimulationTest { @ExtApiFn(name = "模拟插入一张虚拟ID卡", group = "虚拟操作", order = 200) public void insertVirtualIdCard() { - A8kProjInfoCard idCardInfo = new FAKE_PROJ_01().buildA8kIDCardInfo(); + A8kProjInfoCard idCardInfo = new FAKE_PROJ_01_FLOW1().buildA8kIDCardInfo(); virtualDevice.setMountIdCard(idCardInfo); eventBus.pushEvent(new A8kHardwareReport(A8kPacketBuilder.build_event_a8000_idcard_online())); } @@ -90,7 +90,7 @@ public class VirtualDeviceSimulationTest { @ExtApiFn(name = "添加一组全血试管架配置(辅助调试)", group = "虚拟操作", order = 203) public TubeHolderSetting addTubeCfg() { appTubeSettingMgrService.removeAllTubeSetting(); - TubeHolderSetting setting = testStateMgrService.createOneActiveTubeHolderSetting(A8kTubeHolderType.BloodTube, 10, List.of(new FAKE_PROJ_01().projId)); + TubeHolderSetting setting = testStateMgrService.createOneActiveTubeHolderSetting(A8kTubeHolderType.BloodTube, 10, List.of(new FAKE_PROJ_01_FLOW1().projId)); appTubeSettingMgrService.newTubeHolderSetting(setting); return setting; @@ -100,22 +100,22 @@ public class VirtualDeviceSimulationTest { @ExtApiFn(name = "插入虚拟耗材", group = "虚拟操作", order = 250) public void insertVirtualConsumable() { - testStateMgrService.addProjInfo(FAKE_PROJ_01.class); - testStateMgrService.addProjInfo(FAKE_PROJ_02.class); + testStateMgrService.addProjInfo(FAKE_PROJ_01_FLOW1.class); + testStateMgrService.addProjInfo(FAKE_PROJ_02_FLOW2.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_01_FLOW1.class); + testStateMgrService.addIdCardInfo(FAKE_PROJ_02_FLOW2.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(0, new FAKE_PROJ_01_FLOW1().lotId); + testStateMgrService.insertVirtualConsumable(1, new FAKE_PROJ_02_FLOW2().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); @@ -129,13 +129,13 @@ public class VirtualDeviceSimulationTest { ConsumableOneChRawResult oneChResult; //缺少ID卡 - testStateMgrService.addProjInfo(FAKE_PROJ_01.class); - testStateMgrService.insertVirtualConsumable(0, new FAKE_PROJ_01().lotId); + testStateMgrService.addProjInfo(FAKE_PROJ_01_FLOW1.class); + testStateMgrService.insertVirtualConsumable(0, new FAKE_PROJ_01_FLOW1().lotId); //缺少耗材 - testStateMgrService.addProjInfo(FAKE_PROJ_02.class); - testStateMgrService.addIdCardInfo(FAKE_PROJ_02.class); - oneChResult = testStateMgrService.buildConsumable(1, new FAKE_PROJ_02().lotId); + testStateMgrService.addProjInfo(FAKE_PROJ_02_FLOW2.class); + testStateMgrService.addIdCardInfo(FAKE_PROJ_02_FLOW2.class); + oneChResult = testStateMgrService.buildConsumable(1, new FAKE_PROJ_02_FLOW2().lotId); oneChResult.littBSScanResult = ""; oneChResult.larBSScanResult = ""; testStateMgrService.insertVirtualConsumable(oneChResult); @@ -174,13 +174,13 @@ public class VirtualDeviceSimulationTest { ConsumableOneChRawResult oneChResult; //缺少项目 - testStateMgrService.addIdCardInfo(FAKE_PROJ_01.class); - testStateMgrService.insertVirtualConsumable(0, new FAKE_PROJ_01().lotId); + testStateMgrService.addIdCardInfo(FAKE_PROJ_01_FLOW1.class); + testStateMgrService.insertVirtualConsumable(0, new FAKE_PROJ_01_FLOW1().lotId); //缺少耗材 - testStateMgrService.addProjInfo(FAKE_PROJ_02.class); - testStateMgrService.addIdCardInfo(FAKE_PROJ_02.class); - oneChResult = testStateMgrService.buildConsumable(1, new FAKE_PROJ_02().lotId); + testStateMgrService.addProjInfo(FAKE_PROJ_02_FLOW2.class); + testStateMgrService.addIdCardInfo(FAKE_PROJ_02_FLOW2.class); + oneChResult = testStateMgrService.buildConsumable(1, new FAKE_PROJ_02_FLOW2().lotId); oneChResult.littBSScanResult = "XXXX"; oneChResult.larBSScanResult = "XXXX"; testStateMgrService.insertVirtualConsumable(oneChResult); diff --git a/src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_01.java b/src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_01.java deleted file mode 100644 index 93f62f6..0000000 --- a/src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_01.java +++ /dev/null @@ -1,16 +0,0 @@ -package a8k.service.test.fakeproj; - - -import a8k.service.dao.type.a8kidcard.zenum.A8kReactionFlowType; - -public class FAKE_PROJ_01 extends FakeProjInfo { - public FAKE_PROJ_01() { - super(1); - subProjNum = 1; // 子项目数量 - reactionTemperature = 25; // 反应温度 - reactionPlateIncubationTimeMin = 1; // 反应板孵育时间(min) - reactionFlowType = A8kReactionFlowType.FlowType1; // 反应流程类型 - } - - -} diff --git a/src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_01_FLOW1.java b/src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_01_FLOW1.java new file mode 100644 index 0000000..32c0964 --- /dev/null +++ b/src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_01_FLOW1.java @@ -0,0 +1,15 @@ +package a8k.service.test.fakeproj; + + +import a8k.service.dao.type.a8kidcard.zenum.A8kReactionFlowType; + +public class FAKE_PROJ_01_FLOW1 extends FakeProjInfo { + public FAKE_PROJ_01_FLOW1() { + super(1); + subProjNum = 1; // 子项目数量 + reactionTemperature = 25; // 反应温度 + reactionPlateIncubationTimeMin = 1; // 反应板孵育时间(min) + reactionFlowType = A8kReactionFlowType.FlowType1; // 反应流程类型 + } + +} diff --git a/src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_02.java b/src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_02.java deleted file mode 100644 index 22d891d..0000000 --- a/src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_02.java +++ /dev/null @@ -1,16 +0,0 @@ -package a8k.service.test.fakeproj; - - -import a8k.service.dao.type.a8kidcard.zenum.A8kReactionFlowType; - -public class FAKE_PROJ_02 extends FakeProjInfo { - public FAKE_PROJ_02() { - super(2); - subProjNum = 1; // 子项目数量 - reactionTemperature = 25; // 反应温度 - reactionPlateIncubationTimeMin = 1; // 反应板孵育时间(min) - reactionFlowType = A8kReactionFlowType.FlowType2; // 反应流程类型 - } - - -} diff --git a/src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_02_FLOW2.java b/src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_02_FLOW2.java new file mode 100644 index 0000000..d89375d --- /dev/null +++ b/src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_02_FLOW2.java @@ -0,0 +1,16 @@ +package a8k.service.test.fakeproj; + + +import a8k.service.dao.type.a8kidcard.zenum.A8kReactionFlowType; + +public class FAKE_PROJ_02_FLOW2 extends FakeProjInfo { + public FAKE_PROJ_02_FLOW2() { + super(2); + subProjNum = 1; // 子项目数量 + reactionTemperature = 25; // 反应温度 + reactionPlateIncubationTimeMin = 1; // 反应板孵育时间(min) + reactionFlowType = A8kReactionFlowType.FlowType2; // 反应流程类型 + } + + +} diff --git a/src/main/java/a8k/service/test/state/TestModeState.java b/src/main/java/a8k/service/test/state/TestModeState.java index 9b33fed..3dbad1d 100644 --- a/src/main/java/a8k/service/test/state/TestModeState.java +++ b/src/main/java/a8k/service/test/state/TestModeState.java @@ -1,8 +1,6 @@ package a8k.service.test.state; import a8k.type.TubeHolderScanResult; -import com.fasterxml.jackson.annotation.JsonIgnore; -import jakarta.annotation.Resource; import lombok.Data; import org.springframework.stereotype.Component; @@ -10,9 +8,15 @@ import org.springframework.stereotype.Component; @Data public class TestModeState { - Boolean noCheckMode = false; //无校验模式 - Boolean enableOptScan = true; //是否使能光学扫描 + Boolean noCheckMode = false; //无校验模式 + Boolean disableOptScan = false; //是否使能光学扫描 -// @JsonIgnore + // @JsonIgnore TubeHolderScanResult virtualTubeScanResult = null; // 虚拟管架扫描结果 + + public void resetAll() { + noCheckMode = false; + disableOptScan = false; + virtualTubeScanResult = null; + } } diff --git a/src/main/java/a8k/type/TubeHolderScanResult.java b/src/main/java/a8k/type/TubeHolderScanResult.java index eba7df4..c299495 100644 --- a/src/main/java/a8k/type/TubeHolderScanResult.java +++ b/src/main/java/a8k/type/TubeHolderScanResult.java @@ -6,7 +6,16 @@ public class TubeHolderScanResult { public TubesScanResult[] tube = new TubesScanResult[10]; public String tubeHolderType = ""; - public String toString(){ + public String toString() { return String.format("%s %s", tubeHolderType, Arrays.toString(tube)); } + + public Boolean isHasTubeInIt() { + for (TubesScanResult tubesScanResult : tube) { + if (tubesScanResult.isTubeExist) { + return true; + } + } + return false; + } } diff --git a/src/main/resources/app.db b/src/main/resources/app.db index fdf8837c5230ebbe7bcf69c90d478ea5f5c3c489..3ac30b234137dd69946d5761e6ebedf565d4f638 100644 GIT binary patch delta 2023 zcmdUvU1%Id9Kd&GKkhbrceCkv${9_rdo=O%#F?Gh-Mc87OXAT&^ny)@TI*FvpNx1S zSSl$OvG^vra>_mU;)@7HAMDXA_MwGVupdapFYuvQK_8^_MGCdei?biGo9(^mn+pTG z!|%5<|BsoqtLe3?>CXK-ZU8|L96oG59uR~b=Z=+4cmsTK;1^LFSNNnLyffF?uOdd~w;t5^T0qv&>XJM8&W#h0h$*}kGwlQfl+Wpn|E^AuhJgx@w7U^An zR@~LUR?MV;(ZBuJ5C27``IN3?t_$dU^a(nI_Mnl>_5SeG&zW{vK?2APt6*dd@J9to zy@u_2Enl2*h*h!bE3Y3~INUmDE-%Z=W?7EWGN&z%uGa~x(iknpXo=G-pzZ23<8(Xv zb1{aC9H$;WJMG{*KPSOfV2p;GHhp@AFgmk+D~|vqsL?PvOgP-V*2wD$DhcQc`VxJJ z-ayZw630W6Tb(!}dK$~7G?nImL7LVr-sJ-`;G$D)#xd$ge_u`5%>Q}(8 z2WFT*#G#m3m{lr_SyEqp?WX655vNcH3*naq)0jo6xMjiZR!|VXJlKp`CV{@yJ+m^M z43@`~&-@9!FtXB#*10ioZ~v?Hhxh*bQ=|R%qz+^mE4@MuD0 z#B#sw!Ewd?{C&6py<0OswBAb;;MhH>PHHJNs{O8groE|6YGCO6&^q7b;!xW;pbEu_ zVlth-&twEs(lkxtw=K09Ar*(wrQMCWr<>DrjmB)fwzy}ux{s92{Z8|45m&u_4@GLm z#Y!N)91+{$lDHBvO%^wuz}z1(w?ro*5<4#1f%wt@(e}i4xLI6@n^s`%8(>7A$3g}M26G@b17bM_2BFOpb&Qxk7H&+q&&;jF1{7pqX!Mz&IQ=v) z<9SAf?X&q9QyE#BgC@vt-^b2)iE(o%$0~M4`Aq`c0*s2Ac@z#YO-@i^pRA|C$!uX^ zF!`a{v0O`6Eh0~6EkzO?VP%d-kb!g3Y`W(8(`o|Dtr6`16KW-R8}eo}|Y zCU`rm08>3Xv#F`Y_6yUQ)Y!JKm1PQH+RiwE=?q--^kgPOv*~%in9@LWf;^MR^jE)_ zqCgzC-%ObxdgE`VSP(7nhbfWE(5%+xY3qs?3mc{j_AyCLpYn&v1t_`w)*q(tjN1&D h*%er2fdObdohN`fn^y_Q6b52Y+zW1R31F^~2LKX0s%-!O