Browse Source

update

tags/v0
zhaohe 9 months ago
parent
commit
7b69ecb2ce
  1. 10
      src/main/java/a8k/service/app/appctrl/mainflowctrl/action/PLATE_OPT_SCAN.java
  2. 3
      src/main/java/a8k/service/app/appctrl/mainflowctrl/action/SEQ1_ENTER_TUBEHOLDER_AND_SCAN.java
  3. 7
      src/main/java/a8k/service/app/devicectrl/exdriver/MotorEnableExDriver.java
  4. 3
      src/main/java/a8k/service/app/devicectrl/exdriver/MotorMoveZeroExDriver.java
  5. 38
      src/main/java/a8k/service/app/devicectrl/param/calibration/HbotSamplePosCalibration.java
  6. 2
      src/main/java/a8k/service/app/devicectrl/script/DeviceCtrlScripter.java
  7. 110
      src/main/java/a8k/service/test/MainflowCtrlTestService.java
  8. 36
      src/main/java/a8k/service/test/VirtualDeviceSimulationTest.java
  9. 5
      src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_01_FLOW1.java
  10. 4
      src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_02_FLOW2.java
  11. 14
      src/main/java/a8k/service/test/state/TestModeState.java
  12. 11
      src/main/java/a8k/type/TubeHolderScanResult.java
  13. BIN
      src/main/resources/app.db

10
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(); optScanModuleCtrlService.dropPlate();

3
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 (testModeState.getVirtualTubeScanResult() != null) {
if (result.isHasTubeInIt()) {
throw AppException.of("试管架中有试管,但是测试模式中设置了虚拟试管扫描结果");
}
result = testModeState.getVirtualTubeScanResult(); result = testModeState.getVirtualTubeScanResult();
} }

7
src/main/java/a8k/service/app/devicectrl/exdriver/MotorEnableExDriver.java

@ -33,12 +33,7 @@ public class MotorEnableExDriver {
Integer val = enable ? 1 : 0; Integer val = enable ? 1 : 0;
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModGripperSV, val); miniServoDriver.miniServoEnable(MiniServoMId.ShakeModGripperSV, val);
miniServoDriver.miniServoEnable(MiniServoMId.ShakeModGripperYSV, 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.ShakeModGripperZM, val);
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModShakeM, val); stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModShakeM, val);
} }

3
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.ShakeModClampingM, 5000);
stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModShakeM, 5000); stepMotorCtrlDriver.stepMotorEasyMoveToZeroBlock(StepMotorMId.ShakeModShakeM, 5000);
// move to default pos // move to default pos
stepMotorCtrlDriver.stepMotorEasyMoveToBlock(StepMotorMId.ShakeModShakeM, 90, 5000);
} }
} }

38
src/main/java/a8k/service/app/devicectrl/param/calibration/HbotSamplePosCalibration.java

@ -86,11 +86,12 @@ public class HbotSamplePosCalibration {
enableModule(); enableModule();
motorEnableExDriver.preProcessRelatedModuleEnable(true); motorEnableExDriver.preProcessRelatedModuleEnable(true);
motorMoveZeroExDriver.preProcessModuleMoveToZero();
// motorEnableExDriver.tubeFeedRelatedModuleEnable(true);
motorMoveZeroExDriver.preProcessModuleMoveToZero();
pipetteCtrlDriver.zMotorMoveZeroBlock(); pipetteCtrlDriver.zMotorMoveZeroBlock();
hbotBaseMoveExDriver.moveToZero(); hbotBaseMoveExDriver.moveToZero();
// motorMoveZeroExDriver.tubeFeeddingModuleMoveToZero();
} }
@ExtApiFn(name = "使能相关模块", group = "测试工具", order = 12) @ExtApiFn(name = "使能相关模块", group = "测试工具", order = 12)
@ -101,46 +102,21 @@ public class HbotSamplePosCalibration {
@ExtApiFn(name = "失能相关模块", group = "测试工具", order = 13) @ExtApiFn(name = "失能相关模块", group = "测试工具", order = 13)
public void disableModule() throws AppException { public void disableModule() throws AppException {
stepMotorCtrlDriver.stepMotorEnable(StepMotorMId.ShakeModClampingM, 1);
stepMotorCtrlDriver.stepMotorEasyMoveByBlock(StepMotorMId.ShakeModClampingM, 10, 3000);
pipetteCtrlDriver.zMotorEnable(0); pipetteCtrlDriver.zMotorEnable(0);
hbotBaseMoveExDriver.enable(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) @ExtApiFn(name = "取试管到试管摇匀位", group = "辅助工具", order = 21)
public void takeTubeToShakePos(Boolean isHtube) throws AppException { public void takeTubeToShakePos(Boolean isHtube) throws AppException {
tubePreProcesCtrlService.takeTubeFromTubeholderToShakePos(isHtube); tubePreProcesCtrlService.takeTubeFromTubeholderToShakePos(isHtube);
tubePreProcesCtrlService.takeTubeCap(); tubePreProcesCtrlService.takeTubeCap();
} }
@ExtApiFn(name = "放回试管到试管架中", group = "辅助工具", order = 22)
public void putTubeBak() throws AppException {
tubePreProcesCtrlService.putbakTubeCapAndPutbakTubeToTubeHolder();
}
// //
// 标定Z轴 // 标定Z轴

2
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); distribute(PipetteGunBindActionType.DISTRIBUTION_LARGE_BUFFER_SOLUTION_PROBE_SUBSTANCE, ctx, takeul);
//丢tip //丢tip
hbotCtrlService.dropTip(); hbotCtrlService.dropTip();
@ -265,7 +266,6 @@ public class DeviceCtrlScripter {
pipetteCtrlDriver.clearHangingLiquid(2); pipetteCtrlDriver.clearHangingLiquid(2);
//丢tip //丢tip
hbotCtrlService.dropTip(); hbotCtrlService.dropTip();
//归零,待机 //归零,待机

110
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.A8kProjIdCardDao;
import a8k.service.dao.A8kProjInfoDao; import a8k.service.dao.A8kProjInfoDao;
import a8k.service.dao.A8kProjOptConfigDao; 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.TestModeState;
import a8k.service.test.state.VirtualDevice; import a8k.service.test.state.VirtualDevice;
import a8k.service.test.type.MainFlowCtrlTestCaseType;
import a8k.type.*; import a8k.type.*;
import a8k.type.checkpoint.CheckResult; import a8k.type.checkpoint.CheckResult;
import a8k.type.consumables.ConsumablesScanReportErrorType; import a8k.type.consumables.ConsumablesScanReportErrorType;
import a8k.type.ecode.AECodeError;
import a8k.type.exception.AppException; import a8k.type.exception.AppException;
import a8k.type.tube_setting.TubeHolderSetting; import a8k.type.tube_setting.TubeHolderSetting;
import a8k.type.type.A8kTubeHolderType; import a8k.type.type.A8kTubeHolderType;
import a8k.type.type.TipGroup; import a8k.type.type.TipGroup;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List; import java.util.List;
import java.util.Objects;
@Component @Component
@Slf4j @Slf4j
@ -127,7 +120,7 @@ public class MainflowCtrlTestService {
return scanResult; return scanResult;
} }
TubeHolderSetting createOneActiveTubeHolderSetting(A8kTubeHolderType type, Integer tubeNum, List<Integer> projId) {
TubeHolderSetting createOneActiveTubeHolderSetting(Integer tubeNum, List<Integer> projId) {
TubeHolderSetting setting = new TubeHolderSetting(); TubeHolderSetting setting = new TubeHolderSetting();
// setting.tubeHolderType = type; // setting.tubeHolderType = type;
setting.active = true; setting.active = true;
@ -156,7 +149,7 @@ public class MainflowCtrlTestService {
@ExtApiFn(name = "使能光学检查", group = "测试模式", order = 103) @ExtApiFn(name = "使能光学检查", group = "测试模式", order = 103)
public void setEnableOptScan(Boolean enable) { 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) { if (tubeNum <= 0) {
throw AppException.of("试管数量必须大于0"); throw AppException.of("试管数量必须大于0");
} }
gstate.setDeviceInited(true); gstate.setDeviceInited(true);
stopAndWaittingForDeviceStop(); 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(); 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(); 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 "开始测试"; return "开始测试";
} }
@ExtApiFn(name = "执行一次简单的测试(无试管测试.流程2)", order = 401) @ExtApiFn(name = "执行一次简单的测试(无试管测试.流程2)", order = 401)
public String doSimpleTest2(Boolean isHTube, Integer tubeNum) throws AppException { 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.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(); 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(); appDeviceCtrlService.startWork();

36
src/main/java/a8k/service/test/VirtualDeviceSimulationTest.java

@ -69,7 +69,7 @@ public class VirtualDeviceSimulationTest {
@ExtApiFn(name = "模拟插入一张虚拟ID卡", group = "虚拟操作", order = 200) @ExtApiFn(name = "模拟插入一张虚拟ID卡", group = "虚拟操作", order = 200)
public void insertVirtualIdCard() { public void insertVirtualIdCard() {
A8kProjInfoCard idCardInfo = new FAKE_PROJ_01().buildA8kIDCardInfo();
A8kProjInfoCard idCardInfo = new FAKE_PROJ_01_FLOW1().buildA8kIDCardInfo();
virtualDevice.setMountIdCard(idCardInfo); virtualDevice.setMountIdCard(idCardInfo);
eventBus.pushEvent(new A8kHardwareReport(A8kPacketBuilder.build_event_a8000_idcard_online())); eventBus.pushEvent(new A8kHardwareReport(A8kPacketBuilder.build_event_a8000_idcard_online()));
} }
@ -90,7 +90,7 @@ public class VirtualDeviceSimulationTest {
@ExtApiFn(name = "添加一组全血试管架配置(辅助调试)", group = "虚拟操作", order = 203) @ExtApiFn(name = "添加一组全血试管架配置(辅助调试)", group = "虚拟操作", order = 203)
public TubeHolderSetting addTubeCfg() { public TubeHolderSetting addTubeCfg() {
appTubeSettingMgrService.removeAllTubeSetting(); 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); appTubeSettingMgrService.newTubeHolderSetting(setting);
return setting; return setting;
@ -100,22 +100,22 @@ public class VirtualDeviceSimulationTest {
@ExtApiFn(name = "插入虚拟耗材", group = "虚拟操作", order = 250) @ExtApiFn(name = "插入虚拟耗材", group = "虚拟操作", order = 250)
public void insertVirtualConsumable() { 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_03.class);
testStateMgrService.addProjInfo(FAKE_PROJ_04.class); testStateMgrService.addProjInfo(FAKE_PROJ_04.class);
testStateMgrService.addProjInfo(FAKE_PROJ_05.class); testStateMgrService.addProjInfo(FAKE_PROJ_05.class);
testStateMgrService.addProjInfo(FAKE_PROJ_06.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_03.class);
testStateMgrService.addIdCardInfo(FAKE_PROJ_04.class); testStateMgrService.addIdCardInfo(FAKE_PROJ_04.class);
testStateMgrService.addIdCardInfo(FAKE_PROJ_05.class); testStateMgrService.addIdCardInfo(FAKE_PROJ_05.class);
testStateMgrService.addIdCardInfo(FAKE_PROJ_06.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(2, new FAKE_PROJ_03().lotId);
testStateMgrService.insertVirtualConsumable(3, new FAKE_PROJ_04().lotId); testStateMgrService.insertVirtualConsumable(3, new FAKE_PROJ_04().lotId);
testStateMgrService.insertVirtualConsumable(4, new FAKE_PROJ_05().lotId); testStateMgrService.insertVirtualConsumable(4, new FAKE_PROJ_05().lotId);
@ -129,13 +129,13 @@ public class VirtualDeviceSimulationTest {
ConsumableOneChRawResult oneChResult; ConsumableOneChRawResult oneChResult;
//缺少ID卡 //缺少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.littBSScanResult = "";
oneChResult.larBSScanResult = ""; oneChResult.larBSScanResult = "";
testStateMgrService.insertVirtualConsumable(oneChResult); testStateMgrService.insertVirtualConsumable(oneChResult);
@ -174,13 +174,13 @@ public class VirtualDeviceSimulationTest {
ConsumableOneChRawResult oneChResult; 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.littBSScanResult = "XXXX";
oneChResult.larBSScanResult = "XXXX"; oneChResult.larBSScanResult = "XXXX";
testStateMgrService.insertVirtualConsumable(oneChResult); testStateMgrService.insertVirtualConsumable(oneChResult);

5
src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_01.java → src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_01_FLOW1.java

@ -3,8 +3,8 @@ package a8k.service.test.fakeproj;
import a8k.service.dao.type.a8kidcard.zenum.A8kReactionFlowType; import a8k.service.dao.type.a8kidcard.zenum.A8kReactionFlowType;
public class FAKE_PROJ_01 extends FakeProjInfo {
public FAKE_PROJ_01() {
public class FAKE_PROJ_01_FLOW1 extends FakeProjInfo {
public FAKE_PROJ_01_FLOW1() {
super(1); super(1);
subProjNum = 1; // 子项目数量 subProjNum = 1; // 子项目数量
reactionTemperature = 25; // 反应温度 reactionTemperature = 25; // 反应温度
@ -12,5 +12,4 @@ public class FAKE_PROJ_01 extends FakeProjInfo {
reactionFlowType = A8kReactionFlowType.FlowType1; // 反应流程类型 reactionFlowType = A8kReactionFlowType.FlowType1; // 反应流程类型
} }
} }

4
src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_02.java → src/main/java/a8k/service/test/fakeproj/FAKE_PROJ_02_FLOW2.java

@ -3,8 +3,8 @@ package a8k.service.test.fakeproj;
import a8k.service.dao.type.a8kidcard.zenum.A8kReactionFlowType; import a8k.service.dao.type.a8kidcard.zenum.A8kReactionFlowType;
public class FAKE_PROJ_02 extends FakeProjInfo {
public FAKE_PROJ_02() {
public class FAKE_PROJ_02_FLOW2 extends FakeProjInfo {
public FAKE_PROJ_02_FLOW2() {
super(2); super(2);
subProjNum = 1; // 子项目数量 subProjNum = 1; // 子项目数量
reactionTemperature = 25; // 反应温度 reactionTemperature = 25; // 反应温度

14
src/main/java/a8k/service/test/state/TestModeState.java

@ -1,8 +1,6 @@
package a8k.service.test.state; package a8k.service.test.state;
import a8k.type.TubeHolderScanResult; import a8k.type.TubeHolderScanResult;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.annotation.Resource;
import lombok.Data; import lombok.Data;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -10,9 +8,15 @@ import org.springframework.stereotype.Component;
@Data @Data
public class TestModeState { public class TestModeState {
Boolean noCheckMode = false; //无校验模式
Boolean enableOptScan = true; //是否使能光学扫描
Boolean noCheckMode = false; //无校验模式
Boolean disableOptScan = false; //是否使能光学扫描
// @JsonIgnore
// @JsonIgnore
TubeHolderScanResult virtualTubeScanResult = null; // 虚拟管架扫描结果 TubeHolderScanResult virtualTubeScanResult = null; // 虚拟管架扫描结果
public void resetAll() {
noCheckMode = false;
disableOptScan = false;
virtualTubeScanResult = null;
}
} }

11
src/main/java/a8k/type/TubeHolderScanResult.java

@ -6,7 +6,16 @@ public class TubeHolderScanResult {
public TubesScanResult[] tube = new TubesScanResult[10]; public TubesScanResult[] tube = new TubesScanResult[10];
public String tubeHolderType = ""; public String tubeHolderType = "";
public String toString(){
public String toString() {
return String.format("%s %s", tubeHolderType, Arrays.toString(tube)); return String.format("%s %s", tubeHolderType, Arrays.toString(tube));
} }
public Boolean isHasTubeInIt() {
for (TubesScanResult tubesScanResult : tube) {
if (tubesScanResult.isTubeExist) {
return true;
}
}
return false;
}
} }

BIN
src/main/resources/app.db

Loading…
Cancel
Save