diff --git a/src/main/java/a8k/app/dao/db/type/DeviceAdvanceSettingIterm.java b/src/main/java/a8k/app/dao/db/type/DeviceAdvanceSettingIterm.java new file mode 100644 index 0000000..b86642f --- /dev/null +++ b/src/main/java/a8k/app/dao/db/type/DeviceAdvanceSettingIterm.java @@ -0,0 +1,4 @@ +package a8k.app.dao.db.type; + +public class DeviceAdvanceSettingIterm { +} diff --git a/src/main/java/a8k/app/dao/db/type/DeviceAdvancedSetting.java b/src/main/java/a8k/app/dao/db/type/DeviceAdvancedSetting.java new file mode 100644 index 0000000..73b7c65 --- /dev/null +++ b/src/main/java/a8k/app/dao/db/type/DeviceAdvancedSetting.java @@ -0,0 +1 @@ +package a8k.app.dao.db.type; diff --git a/src/main/java/a8k/app/service/data/ProjIdCardInfoMgrService.java b/src/main/java/a8k/app/service/data/ProjIdCardInfoMgrService.java index f42bcc6..67bb624 100644 --- a/src/main/java/a8k/app/service/data/ProjIdCardInfoMgrService.java +++ b/src/main/java/a8k/app/service/data/ProjIdCardInfoMgrService.java @@ -108,6 +108,14 @@ public class ProjIdCardInfoMgrService { return projIDCardCtrlAndMonitorService.getMountedIdCardInfo(); } + public String getMountedLotId() { + var mountedProjInfoCard = getMountedProjInfoCard(); + if (mountedProjInfoCard == null) { + return ""; + } + return mountedProjInfoCard.lotId; + } + // //VERIFY diff --git a/src/main/java/a8k/app/service/statemgr/GStateMgrService.java b/src/main/java/a8k/app/service/statemgr/GStateMgrService.java index bcd063b..65b2975 100644 --- a/src/main/java/a8k/app/service/statemgr/GStateMgrService.java +++ b/src/main/java/a8k/app/service/statemgr/GStateMgrService.java @@ -60,6 +60,11 @@ public class GStateMgrService { } } + public synchronized void checkIfIsInVirtualModeOrRunOnlyMode() throws AppException { + if (isInMode(DeviceRunMode.VirtualMode, DeviceRunMode.RunOnlyMode)) { + throw AppException.of(A8kEcode.CODEERROR, "只有在虚拟模式,或者空转模式,才能进行当前操作"); + } + } @PostConstruct public void init() { diff --git a/src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java b/src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java index 4843c13..e8bad4e 100644 --- a/src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java +++ b/src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java @@ -3,10 +3,10 @@ package a8k.extui.mgr; import a8k.app.utils.ZList; import a8k.extui.page.debug.*; import a8k.extui.page.extapp.*; +import a8k.extui.page.extapp.debug_assistant.IDCardDataGeneratorPage; import a8k.extui.page.extsetting.db.DeviceActionParameterSettingPage; import a8k.extui.page.extsetting.db.ProjInfoMgrPage; import a8k.extui.page.extsetting.db.ReactionRecordMgrDebugPage; -import a8k.extui.page.init.BackgroudProcessCtrlPage; import a8k.extui.page.init.DeviceInitPage; import a8k.extui.page.measurement.*; import a8k.extui.page.test.driver.LowLevelBoardVersionPreviewPage; @@ -15,9 +15,9 @@ import a8k.extui.page.test.codetest.OptFormulaTestPage; import a8k.extui.page.test.codetest.OptFormulaTestPageV2; import a8k.extui.page.test.driver.MotorCtrlPage; import a8k.extui.page.test.driver.PipetteCtrlDriverPage; -import a8k.extui.page.test.frond_end_test.FakeReactionRecordGeneratorPage; +import a8k.extui.page.extapp.debug_assistant.FakeReactionRecordGeneratorPage; -import a8k.extui.page.test.frond_end_test.VirtualEventGeneratorPage; +import a8k.extui.page.extapp.debug_assistant.VirtualEventGeneratorPage; import a8k.extui.page.extsetting.pos_calibration.*; import a8k.extui.page.test.stress_test.PipetteGunStressTest; import a8k.extui.page.test.verification.*; @@ -142,8 +142,7 @@ public class ExtApiPageGroupCfgMgr { new Menu(P02ConsumablesMgrDebugPage.class, "耗材"), new Menu(P01EmergencyTubeDebugPage.class, "急诊"), new Menu(P02TubeSettingDebugPage.class, "试管配置"), - new Menu(P01ProjInfoDebugPage.class, "ID卡操作"), - new Menu(P22UserOperaionInRunOnlyModePage.class, "空转模式用户操作") + new Menu(P01ProjInfoDebugPage.class, "ID卡操作") ))); pushMenu(new Menu("子模块管理", ZList.of( @@ -154,10 +153,7 @@ public class ExtApiPageGroupCfgMgr { pushMenu(new Menu("高级应用", ZList.of( - new Menu("前端测试助手", ZList.of( - new Menu(FakeReactionRecordGeneratorPage.class, "虚拟反应记录生成"), - new Menu(VirtualEventGeneratorPage.class, "虚拟事件生成") - )), + new Menu("光学标定与验证", ZList.of( new Menu(A8kOptVerification.class, "光学模组验证"), new Menu(OptModuleParamCalibration.class, "光学模块参数校准"), @@ -192,9 +188,17 @@ public class ExtApiPageGroupCfgMgr { new Menu("代码测试", ZList.of( new Menu(OptFormulaTestPageV2.class, "光学公式测试1"), new Menu(OptFormulaTestPage.class, "光学公式测试2") - )) + )), + new Menu("前端测试助手", ZList.of( + new Menu(FakeReactionRecordGeneratorPage.class, "虚拟反应记录生成"), + new Menu(VirtualEventGeneratorPage.class, "虚拟事件生成"), + new Menu(IDCardDataGeneratorPage.class, "ID卡数据生成器") + )), + new Menu(UsrOperationSimulation.class, "用户行为模拟器"), + new Menu(CodeGeneratorPage.class, "条码字符生成工具") ))); + //////////////////////////////////////////////////////////////////////////////////////////// } diff --git a/src/main/java/a8k/extui/page/debug/P01ProjInfoDebugPage.java b/src/main/java/a8k/extui/page/debug/P01ProjInfoDebugPage.java index bc7c20f..8153582 100644 --- a/src/main/java/a8k/extui/page/debug/P01ProjInfoDebugPage.java +++ b/src/main/java/a8k/extui/page/debug/P01ProjInfoDebugPage.java @@ -102,36 +102,6 @@ public class P01ProjInfoDebugPage { @Resource - ProjIDCardCtrlAndMonitorService projIDCardCtrlAndMonitorService; - - public void insertVirtualIdCard(Integer projId, String lotId) throws AppException { - gstate.checkIfIsInVirtualMode(); - ProjExtInfoCard newInfoCard = ProjExtInfoCardFactory.buildProjExtInfoCard(projId, lotId); - projIDCardCtrlAndMonitorService.setVirtualMountedIdCardInfo(newInfoCard); - } - - public void removeVirtualIdCard() throws AppException { - gstate.checkIfIsInVirtualMode(); - projIDCardCtrlAndMonitorService.setVirtualMountedIdCardInfo(null); - } - - public String createPlateBox2dCodeByIDCard() { - if (projIdCardInfoMgrService.getMountedProjInfoCard() == null) { - return "没有挂载的项目卡信息"; - } - String lotId = projIdCardInfoMgrService.getMountedProjInfoCard().lotId; - return ReactionPlate2DCodeHelper.build2DCode(lotId); - } - - public String createLittleBuffer2dCodeByIDCard() { - if (projIdCardInfoMgrService.getMountedProjInfoCard() == null) { - return "没有挂载的项目卡信息"; - } - return projIdCardInfoMgrService.getMountedProjInfoCard().lotId; - } - - - @Resource ExtApiPageMgr extApiPageMgr; @PostConstruct @@ -139,20 +109,17 @@ public class P01ProjInfoDebugPage { var page = extApiPageMgr.newPage(this); page.newGroup("新建ID卡信息"); page.addFunction("保存挂载的项目信息", this::saveMountedProjInfoCard); - page.addFunction("添加所有项目的假项目信息", this::addAllProjFakeProjInfoCard); - page.addFunction("添加指定项目的假项目信息", this::addProjFakeProjInfoCard); page.newGroup("查询ID卡信息"); page.addFunction("获取列表", this::getBreifAll); page.addFunction("通过ProjID查询详细信息", this::getByProjId); page.addFunction("通过LotID查询详细信息", this::getByLotId); page.newGroup("删除"); page.addFunction("删除所有", this::deleteAll); - page.newGroup("ID卡模拟操作(虚拟模式)"); - page.addFunction("插入ID卡", this::insertVirtualIdCard); - page.addFunction("拔出ID卡", this::removeVirtualIdCard); - page.newGroup("二维码生成"); - page.addFunction("生成反应板二维码(参考)", this::createPlateBox2dCodeByIDCard); - page.addFunction("生成缓冲液二维码(参考)", this::createLittleBuffer2dCodeByIDCard); + + + page.newGroup("调试助手"); + page.addFunction("添加所有项目的假项目信息", this::addAllProjFakeProjInfoCard); + page.addFunction("添加指定项目的假项目信息", this::addProjFakeProjInfoCard); extApiPageMgr.addPage(page); diff --git a/src/main/java/a8k/extui/page/debug/P02ConsumablesMgrDebugPage.java b/src/main/java/a8k/extui/page/debug/P02ConsumablesMgrDebugPage.java index 65cc48b..9bb2880 100644 --- a/src/main/java/a8k/extui/page/debug/P02ConsumablesMgrDebugPage.java +++ b/src/main/java/a8k/extui/page/debug/P02ConsumablesMgrDebugPage.java @@ -41,113 +41,241 @@ public class P02ConsumablesMgrDebugPage { GStateMgrService gstate; - @ExtApiStatu(name = "", group = "耗材-反应板状态1", minWidth = "16%", order = 1) - public ReactionPlateGroup getReactionPlateGroupState0() { - return consumablesMgrService.getState().reactionPlateGroup[0]; + // @ExtApiStatu(name = "", group = "反应板状态1", minWidth = "16%", order = 1) + // public ReactionPlateGroup getReactionPlateGroupState0() { + // return consumablesMgrService.getState().reactionPlateGroup[0]; + // } + // + // @ExtApiStatu(name = "", group = "反应板状态2", minWidth = "16%", order = 2) + // public ReactionPlateGroup getReactionPlateGroupState1() { + // return consumablesMgrService.getState().reactionPlateGroup[1]; + // } + // + // @ExtApiStatu(name = "", group = "反应板状态3", minWidth = "16%", order = 3) + // public ReactionPlateGroup getReactionPlateGroupState2() { + // return consumablesMgrService.getState().reactionPlateGroup[2]; + // } + // + // @ExtApiStatu(name = "", group = "反应板状态4", minWidth = "16%", order = 4) + // public ReactionPlateGroup getReactionPlateGroupState3() { + // return consumablesMgrService.getState().reactionPlateGroup[3]; + // } + // + // @ExtApiStatu(name = "", group = "反应板状态5", minWidth = "16%", order = 5) + // public ReactionPlateGroup getReactionPlateGroupState4() { + // return consumablesMgrService.getState().reactionPlateGroup[4]; + // } + // + // @ExtApiStatu(name = "", group = "反应板状态6", minWidth = "16%", order = 6) + // public ReactionPlateGroup getReactionPlateGroupState5() { + // return consumablesMgrService.getState().reactionPlateGroup[5]; + // } + // + // + // // LittBottleGroup + // @ExtApiStatu(name = "", group = "小瓶缓冲液1", minWidth = "16%", order = 7) + // public LittBottleGroup getLittBottleGroupState0() { + // return consumablesMgrService.getState().littBottleGroup[0]; + // } + // + // @ExtApiStatu(name = "", group = "小瓶缓冲液2", minWidth = "16%", order = 8) + // public LittBottleGroup getLittBottleGroupState1() { + // return consumablesMgrService.getState().littBottleGroup[1]; + // } + // + // @ExtApiStatu(name = "", group = "小瓶缓冲液3", minWidth = "16%", order = 9) + // public LittBottleGroup getLittBottleGroupState2() { + // return consumablesMgrService.getState().littBottleGroup[2]; + // } + // + // @ExtApiStatu(name = "", group = "小瓶缓冲液4", minWidth = "16%", order = 10) + // public LittBottleGroup getLittBottleGroupState3() { + // return consumablesMgrService.getState().littBottleGroup[3]; + // } + // + // @ExtApiStatu(name = "", group = "小瓶缓冲液5", minWidth = "16%", order = 11) + // public LittBottleGroup getLittBottleGroupState4() { + // return consumablesMgrService.getState().littBottleGroup[4]; + // } + // + // @ExtApiStatu(name = "", group = "小瓶缓冲液6", minWidth = "16%", order = 12) + // public LittBottleGroup getLittBottleGroupState5() { + // return consumablesMgrService.getState().littBottleGroup[5]; + // } + // + // + // // LarBottleGroup + // @ExtApiStatu(name = "", group = "大瓶缓冲液1", minWidth = "16%", order = 13) + // public LarBottleGroup getLarBottleGroupState0() { + // return consumablesMgrService.getState().larBottleGroup[0]; + // } + // + // @ExtApiStatu(name = "", group = "大瓶缓冲液2", minWidth = "16%", order = 14) + // public LarBottleGroup getLarBottleGroupState1() { + // return consumablesMgrService.getState().larBottleGroup[1]; + // } + // + // @ExtApiStatu(name = "", group = "大瓶缓冲液3", minWidth = "16%", order = 15) + // public LarBottleGroup getLarBottleGroupState2() { + // return consumablesMgrService.getState().larBottleGroup[2]; + // } + // + // @ExtApiStatu(name = "", group = "大瓶缓冲液4", minWidth = "16%", order = 16) + // public LarBottleGroup getLarBottleGroupState3() { + // return consumablesMgrService.getState().larBottleGroup[3]; + // } + // + // @ExtApiStatu(name = "", group = "大瓶缓冲液5", minWidth = "16%", order = 17) + // public LarBottleGroup getLarBottleGroupState4() { + // return consumablesMgrService.getState().larBottleGroup[4]; + // } + // + // @ExtApiStatu(name = "", group = "大瓶缓冲液6", minWidth = "16%", order = 18) + // public LarBottleGroup getLarBottleGroupState5() { + // return consumablesMgrService.getState().larBottleGroup[5]; + // } + // + // @ExtApiStatu(name = "", group = "Tip状态1", minWidth = "16%", order = 19) + // public Tips getTipState0() { + // return consumablesMgrService.getState().tips[0]; + // } + // + // @ExtApiStatu(name = "", group = "耗材-Tip状态2", minWidth = "16%", order = 20) + // public Tips getTipState1() { + // return consumablesMgrService.getState().tips[1]; + // } + // + // @ExtApiStatu(name = "", group = "耗材-Tip状态3", minWidth = "16%", order = 21) + // public Tips getTipState2() { + // return consumablesMgrService.getState().tips[2]; + // } + + + // + // + // + + String formatState(ReactionPlateGroup state) { + return String.format("%s %s [%d/25]", state.projName, state.lotId, state.num); + } + + String formatState(LittBottleGroup state) { + return String.format("%s %s [%d/25]", state.projName, state.lotId, state.num); } - @ExtApiStatu(name = "", group = "耗材-反应板状态2", minWidth = "16%", order = 2) - public ReactionPlateGroup getReactionPlateGroupState1() { - return consumablesMgrService.getState().reactionPlateGroup[1]; + String formatState(LarBottleGroup state) { + return String.format("%s %s [%d/25]", state.projName, state.lotId, state.num); } - @ExtApiStatu(name = "", group = "耗材-反应板状态3", minWidth = "16%", order = 3) - public ReactionPlateGroup getReactionPlateGroupState2() { - return consumablesMgrService.getState().reactionPlateGroup[2]; + + @ExtApiStatu(name = "", group = "反应板状态1", minWidth = "33%", order = 100) + public String getReactionPlateGroupState0() { + return formatState(consumablesMgrService.getState().reactionPlateGroup[0]); + } + + @ExtApiStatu(name = "", group = "反应板状态2", minWidth = "33%", order = 200) + public String getReactionPlateGroupState1() { + return formatState(consumablesMgrService.getState().reactionPlateGroup[1]); } - @ExtApiStatu(name = "", group = "耗材-反应板状态4", minWidth = "16%", order = 4) - public ReactionPlateGroup getReactionPlateGroupState3() { - return consumablesMgrService.getState().reactionPlateGroup[3]; + @ExtApiStatu(name = "", group = "反应板状态3", minWidth = "33%", order = 300) + public String getReactionPlateGroupState2() { + return formatState(consumablesMgrService.getState().reactionPlateGroup[2]); } - @ExtApiStatu(name = "", group = "耗材-反应板状态5", minWidth = "16%", order = 5) - public ReactionPlateGroup getReactionPlateGroupState4() { - return consumablesMgrService.getState().reactionPlateGroup[4]; + @ExtApiStatu(name = "", group = "反应板状态4", minWidth = "33%", order = 400) + public String getReactionPlateGroupState3() { + return formatState(consumablesMgrService.getState().reactionPlateGroup[3]); } - @ExtApiStatu(name = "", group = "耗材-反应板状态6", minWidth = "16%", order = 6) - public ReactionPlateGroup getReactionPlateGroupState5() { - return consumablesMgrService.getState().reactionPlateGroup[5]; + @ExtApiStatu(name = "", group = "反应板状态5", minWidth = "33%", order = 500) + public String getReactionPlateGroupState4() { + return formatState(consumablesMgrService.getState().reactionPlateGroup[4]); + } + + @ExtApiStatu(name = "", group = "反应板状态6", minWidth = "33%", order = 600) + public String getReactionPlateGroupState5() { + return formatState(consumablesMgrService.getState().reactionPlateGroup[5]); } // LittBottleGroup - @ExtApiStatu(name = "", group = "耗材-小瓶缓冲液1", minWidth = "16%", order = 7) - public LittBottleGroup getLittBottleGroupState0() { - return consumablesMgrService.getState().littBottleGroup[0]; + @ExtApiStatu(name = "", group = "小瓶缓冲液1", minWidth = "33%", order = 101) + public String getLittBottleGroupState0() { + return formatState(consumablesMgrService.getState().littBottleGroup[0]); } - @ExtApiStatu(name = "", group = "耗材-小瓶缓冲液2", minWidth = "16%", order = 8) - public LittBottleGroup getLittBottleGroupState1() { - return consumablesMgrService.getState().littBottleGroup[1]; + @ExtApiStatu(name = "", group = "小瓶缓冲液2", minWidth = "33%", order = 201) + public String getLittBottleGroupState1() { + return formatState(consumablesMgrService.getState().littBottleGroup[1]); } - @ExtApiStatu(name = "", group = "耗材-小瓶缓冲液3", minWidth = "16%", order = 9) - public LittBottleGroup getLittBottleGroupState2() { - return consumablesMgrService.getState().littBottleGroup[2]; + @ExtApiStatu(name = "", group = "小瓶缓冲液3", minWidth = "33%", order = 301) + public String getLittBottleGroupState2() { + return formatState(consumablesMgrService.getState().littBottleGroup[2]); } - @ExtApiStatu(name = "", group = "耗材-小瓶缓冲液4", minWidth = "16%", order = 10) - public LittBottleGroup getLittBottleGroupState3() { - return consumablesMgrService.getState().littBottleGroup[3]; + @ExtApiStatu(name = "", group = "小瓶缓冲液4", minWidth = "33%", order = 401) + public String getLittBottleGroupState3() { + return formatState(consumablesMgrService.getState().littBottleGroup[3]); } - @ExtApiStatu(name = "", group = "耗材-小瓶缓冲液5", minWidth = "16%", order = 11) - public LittBottleGroup getLittBottleGroupState4() { - return consumablesMgrService.getState().littBottleGroup[4]; + @ExtApiStatu(name = "", group = "小瓶缓冲液5", minWidth = "33%", order = 501) + public String getLittBottleGroupState4() { + return formatState(consumablesMgrService.getState().littBottleGroup[4]); } - @ExtApiStatu(name = "", group = "耗材-小瓶缓冲液6", minWidth = "16%", order = 12) - public LittBottleGroup getLittBottleGroupState5() { - return consumablesMgrService.getState().littBottleGroup[5]; + @ExtApiStatu(name = "", group = "小瓶缓冲液6", minWidth = "33%", order = 601) + public String getLittBottleGroupState5() { + return formatState(consumablesMgrService.getState().littBottleGroup[5]); } // LarBottleGroup - @ExtApiStatu(name = "", group = "耗材-大瓶缓冲液1", minWidth = "16%", order = 13) - public LarBottleGroup getLarBottleGroupState0() { - return consumablesMgrService.getState().larBottleGroup[0]; + @ExtApiStatu(name = "", group = "大瓶缓冲液1", minWidth = "33%", order = 102) + public String getLarBottleGroupState0() { + return formatState(consumablesMgrService.getState().larBottleGroup[0]); } - @ExtApiStatu(name = "", group = "耗材-大瓶缓冲液2", minWidth = "16%", order = 14) - public LarBottleGroup getLarBottleGroupState1() { - return consumablesMgrService.getState().larBottleGroup[1]; + @ExtApiStatu(name = "", group = "大瓶缓冲液2", minWidth = "33%", order = 202) + public String getLarBottleGroupState1() { + return formatState(consumablesMgrService.getState().larBottleGroup[1]); } - @ExtApiStatu(name = "", group = "耗材-大瓶缓冲液3", minWidth = "16%", order = 15) - public LarBottleGroup getLarBottleGroupState2() { - return consumablesMgrService.getState().larBottleGroup[2]; + @ExtApiStatu(name = "", group = "大瓶缓冲液3", minWidth = "33%", order = 302) + public String getLarBottleGroupState2() { + return formatState(consumablesMgrService.getState().larBottleGroup[2]); } - @ExtApiStatu(name = "", group = "耗材-大瓶缓冲液4", minWidth = "16%", order = 16) - public LarBottleGroup getLarBottleGroupState3() { - return consumablesMgrService.getState().larBottleGroup[3]; + @ExtApiStatu(name = "", group = "大瓶缓冲液4", minWidth = "33%", order = 402) + public String getLarBottleGroupState3() { + return formatState(consumablesMgrService.getState().larBottleGroup[3]); } - @ExtApiStatu(name = "", group = "耗材-大瓶缓冲液5", minWidth = "16%", order = 17) - public LarBottleGroup getLarBottleGroupState4() { - return consumablesMgrService.getState().larBottleGroup[4]; + @ExtApiStatu(name = "", group = "大瓶缓冲液5", minWidth = "33%", order = 502) + public String getLarBottleGroupState4() { + return formatState(consumablesMgrService.getState().larBottleGroup[4]); } - @ExtApiStatu(name = "", group = "耗材-大瓶缓冲液6", minWidth = "16%", order = 18) - public LarBottleGroup getLarBottleGroupState5() { - return consumablesMgrService.getState().larBottleGroup[5]; + @ExtApiStatu(name = "", group = "大瓶缓冲液6", minWidth = "33%", order = 602) + public String getLarBottleGroupState5() { + return formatState(consumablesMgrService.getState().larBottleGroup[5]); } - @ExtApiStatu(name = "", group = "耗材-Tip状态1", minWidth = "16%", order = 19) - public Tips getTipState0() { - return consumablesMgrService.getState().tips[0]; + + @ExtApiStatu(name = "", group = "Tip状态1", minWidth = "16%", order = 701) + public String getTipState0() { + return String.format("[%d/%d]", consumablesMgrService.getState().tips[0].tipNum, consumablesMgrService.getState().tips[0].totalNum); } - @ExtApiStatu(name = "", group = "耗材-Tip状态2", minWidth = "16%", order = 20) - public Tips getTipState1() { - return consumablesMgrService.getState().tips[1]; + @ExtApiStatu(name = "", group = "Tip状态2", minWidth = "16%", order = 702) + public String getTipState1() { + return String.format("[%d/%d]", consumablesMgrService.getState().tips[1].tipNum, consumablesMgrService.getState().tips[1].totalNum); } - @ExtApiStatu(name = "", group = "耗材-Tip状态3", minWidth = "16%", order = 21) - public Tips getTipState2() { - return consumablesMgrService.getState().tips[2]; + @ExtApiStatu(name = "", group = "Tip状态3", minWidth = "16%", order = 703) + public String getTipState2() { + return String.format("[%d/%d]", consumablesMgrService.getState().tips[2].tipNum, consumablesMgrService.getState().tips[2].totalNum); } @@ -172,9 +300,9 @@ public class P02ConsumablesMgrDebugPage { consumablesMgrService.unInstallAllConsumable(); } -// public ConsumablesOneChannelScanResultPacket scanOneConsumables(ConsumableGroup group) throws AppException { -// return appConsumablesScanService.scanOneGroupConsumables(group); -// } + // public ConsumablesOneChannelScanResultPacket scanOneConsumables(ConsumableGroup group) throws AppException { + // return appConsumablesScanService.scanOneGroupConsumables(group); + // } public void setTipNum(TipGroup tipGroup, Integer tiNum) throws AppException { consumablesMgrService.setTipNum(tipGroup, tiNum); @@ -210,34 +338,17 @@ public class P02ConsumablesMgrDebugPage { } - @Resource - TestStateMgrService testStateMgrService; - - // - // 耗材模拟操作 - // - public void putInVirtualConsumable(ConsumableGroup group, String lotid) throws AppException { - gstate.checkIfIsInVirtualMode(); - testStateMgrService.putVirtualConsumable(group.off, lotid); - } - - public void takeAwayVirtualConsumable() throws AppException { - gstate.checkIfIsInVirtualMode(); - testStateMgrService.takeAwayVirtualConsumable(0); - testStateMgrService.takeAwayVirtualConsumable(1); - testStateMgrService.takeAwayVirtualConsumable(2); - testStateMgrService.takeAwayVirtualConsumable(3); - testStateMgrService.takeAwayVirtualConsumable(4); - testStateMgrService.takeAwayVirtualConsumable(5); - } - @PostConstruct public void init() { var page = extApiPageMgr.newPage(this); - page.newGroup("耗材操作"); + page.newGroup("自动挂载耗材"); page.addFunction("扫描耗材", this::scanConsumables); -// page.addFunction("扫描耗材(单通道)", this::scanOneConsumables); + + page.newGroup("手动挂载耗材"); + page.addFunction("挂载耗材", this::loadConsumablesManual).setParamVal("lotid", () -> projIdCardInfoMgrService.getMountedLotId()); + + page.newGroup("耗材数量设置"); page.addFunction("设置Tip数量", this::setTipNum); page.addFunction("设置耗材数量", this::setConsumableNum); @@ -245,13 +356,6 @@ public class P02ConsumablesMgrDebugPage { page.addFunction("卸载耗材", this::unInstallConsumable); page.addFunction("卸载耗材(全部)", this::unInstallAllConsumable); - page.newGroup("辅助调试"); - page.addFunction("手动加载耗材", this::loadConsumablesManual); - page.addFunction("手动加载挂载项目卡耗材", this::loadMountProjIDCardConsumablesManual); - page.newGroup("虚拟模式用户操作"); - page.addFunction("放入虚拟耗材", this::putInVirtualConsumable); - page.addFunction("拿走虚拟耗材", this::takeAwayVirtualConsumable); - extApiPageMgr.addPage(page); diff --git a/src/main/java/a8k/extui/page/debug/P02TubeSettingDebugPage.java b/src/main/java/a8k/extui/page/debug/P02TubeSettingDebugPage.java index 665d36d..3c6a258 100644 --- a/src/main/java/a8k/extui/page/debug/P02TubeSettingDebugPage.java +++ b/src/main/java/a8k/extui/page/debug/P02TubeSettingDebugPage.java @@ -122,28 +122,6 @@ public class P02TubeSettingDebugPage { } - // - // 样本模拟操作 - // - @Resource - TestStateMgrService testStateMgrService; - - public void putInVirtualBloodTubeHolder() throws AppException { - gstate.checkIfIsInVirtualMode(); - TubeHolderScanResult scanResult = new TubeHolderScanResult(); - scanResult.tubeHolderType = A8kTubeHolderType.BloodTube.scanCode; - scanResult.tube[0] = new TubesScanResult(true, true, ""); - scanResult.tube[1] = new TubesScanResult(true, true, ""); - scanResult.tube[2] = new TubesScanResult(true, true, ""); - scanResult.tube[3] = new TubesScanResult(true, true, ""); - scanResult.tube[4] = new TubesScanResult(true, true, ""); - scanResult.tube[5] = new TubesScanResult(true, true, ""); - scanResult.tube[6] = new TubesScanResult(true, true, ""); - scanResult.tube[7] = new TubesScanResult(true, true, ""); - scanResult.tube[8] = new TubesScanResult(true, true, ""); - scanResult.tube[9] = new TubesScanResult(true, true, ""); - testStateMgrService.insertVirtualBloodTubeHolder(scanResult); - } @Resource ExtApiPageMgr extApiPageMgr; @@ -168,9 +146,6 @@ public class P02TubeSettingDebugPage { page.addFunction("设置项目ID", this::setTubeSettingProjId); page.addFunction("设置血液类型", this::setTubeSettingBloodType); - page.newGroup("样本模拟操作"); - page.addFunction("放入一个全血高试管架", this::putInVirtualBloodTubeHolder); - extApiPageMgr.addPage(page); } } diff --git a/src/main/java/a8k/extui/page/debug/P22UserOperaionInRunOnlyModePage.java b/src/main/java/a8k/extui/page/debug/P22UserOperaionInRunOnlyModePage.java deleted file mode 100644 index 1d05344..0000000 --- a/src/main/java/a8k/extui/page/debug/P22UserOperaionInRunOnlyModePage.java +++ /dev/null @@ -1,61 +0,0 @@ -package a8k.extui.page.debug; - -import a8k.app.a8ktype.DeviceRunMode; -import a8k.app.a8ktype.device.A8kTubeHolderType; -import a8k.app.a8ktype.exception.AppException; -import a8k.app.a8ktype.type.TubeHolderScanResult; -import a8k.app.a8ktype.type.TubesScanResult; -import a8k.app.hardware.type.a8kcanprotocol.A8kEcode; -import a8k.app.service.statemgr.GStateMgrService; -import a8k.extui.mgr.ExtApiPageMgr; -import a8k.extui.type.ExtUIPageCfg; -import a8k.teststate.TestStateMgrService; -import jakarta.annotation.PostConstruct; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Component; - -@Component -public class P22UserOperaionInRunOnlyModePage { - @Resource - GStateMgrService gstate; - @Resource - TestStateMgrService testStateMgrService; - @Resource - ExtApiPageMgr extApiPageMgr; - - @PostConstruct - void init() { - ExtUIPageCfg page = new ExtUIPageCfg(this); - page.newGroup("样本模拟操作"); - page.addFunction("放入一个全血高试管架(10个试管)", this::putInVirtualBloodTubeHolder); - extApiPageMgr.addPage(page); - } - - private void checkInRunOnlyMode() throws AppException { - if (!gstate.getDeviceRunMode().equals(DeviceRunMode.RunOnlyMode)) { - throw AppException.of(A8kEcode.CODEERROR, "只有在空转模式下才能进行当前操作"); - } - } - - // - // 样本模拟操作 - // - public void putInVirtualBloodTubeHolder() throws AppException { - checkInRunOnlyMode(); - TubeHolderScanResult scanResult = new TubeHolderScanResult(); - scanResult.tubeHolderType = A8kTubeHolderType.BloodTube.scanCode; - scanResult.tube[0] = new TubesScanResult(true, true, ""); - scanResult.tube[1] = new TubesScanResult(true, true, ""); - scanResult.tube[2] = new TubesScanResult(true, true, ""); - scanResult.tube[3] = new TubesScanResult(true, true, ""); - scanResult.tube[4] = new TubesScanResult(true, true, ""); - scanResult.tube[5] = new TubesScanResult(true, true, ""); - scanResult.tube[6] = new TubesScanResult(true, true, ""); - scanResult.tube[7] = new TubesScanResult(true, true, ""); - scanResult.tube[8] = new TubesScanResult(true, true, ""); - scanResult.tube[9] = new TubesScanResult(true, true, ""); - testStateMgrService.insertVirtualBloodTubeHolder(scanResult); - } - - -} diff --git a/src/main/java/a8k/extui/page/extapp/CodeGeneratorPage.java b/src/main/java/a8k/extui/page/extapp/CodeGeneratorPage.java new file mode 100644 index 0000000..9571023 --- /dev/null +++ b/src/main/java/a8k/extui/page/extapp/CodeGeneratorPage.java @@ -0,0 +1,60 @@ +package a8k.extui.page.extapp; + +import a8k.app.a8ktype.exception.AppException; +import a8k.app.dao.db.type.A8kProjInfoCardBreif; +import a8k.app.dao.db.type.ProjExtInfoCard; +import a8k.app.factory.ProjExtInfoCardFactory; +import a8k.app.service.data.ProjIdCardInfoMgrService; +import a8k.app.service.data.ProjInfoMgrService; +import a8k.app.service.statemgr.GStateMgrService; +import a8k.app.utils.ProjBuildinInfo; +import a8k.app.utils.ReactionPlate2DCodeHelper; +import a8k.app.utils.ZDateUtils; +import a8k.extui.mgr.ExtApiPageMgr; +import a8k.extui.type.ExtApiStatu; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +@Slf4j +public class CodeGeneratorPage { + @Resource + ProjIdCardInfoMgrService projIdCardInfoMgrService; + + public String createPlateBox2dCodeByIDCard() { + if (projIdCardInfoMgrService.getMountedProjInfoCard() == null) { + return "没有挂载的项目卡信息"; + } + String lotId = projIdCardInfoMgrService.getMountedProjInfoCard().lotId; + return ReactionPlate2DCodeHelper.build2DCode(lotId); + } + + public String createLittleBuffer2dCodeByIDCard() { + if (projIdCardInfoMgrService.getMountedProjInfoCard() == null) { + return "没有挂载的项目卡信息"; + } + return projIdCardInfoMgrService.getMountedProjInfoCard().lotId; + } + + + @Resource + ExtApiPageMgr extApiPageMgr; + + @PostConstruct + public void init() { + var page = extApiPageMgr.newPage(this); + page.newGroup("二维码生成"); + page.addFunction("生成反应板二维码(参考)", this::createPlateBox2dCodeByIDCard); + page.addFunction("生成缓冲液二维码(参考)", this::createLittleBuffer2dCodeByIDCard); + + + extApiPageMgr.addPage(page); + } +} diff --git a/src/main/java/a8k/extui/page/extapp/UsrOperationSimulation.java b/src/main/java/a8k/extui/page/extapp/UsrOperationSimulation.java new file mode 100644 index 0000000..f91640f --- /dev/null +++ b/src/main/java/a8k/extui/page/extapp/UsrOperationSimulation.java @@ -0,0 +1,128 @@ +package a8k.extui.page.extapp; + +import a8k.app.a8ktype.DeviceRunMode; +import a8k.app.a8ktype.device.A8kTubeHolderType; +import a8k.app.a8ktype.device.ConsumableGroup; +import a8k.app.a8ktype.device.TipGroup; +import a8k.app.a8ktype.device.consumables.LarBottleGroup; +import a8k.app.a8ktype.device.consumables.LittBottleGroup; +import a8k.app.a8ktype.device.consumables.ReactionPlateGroup; +import a8k.app.a8ktype.device.consumables.Tips; +import a8k.app.a8ktype.error.ConsumablesScanReportErrorType; +import a8k.app.a8ktype.exception.AppException; +import a8k.app.a8ktype.type.ConsumablesScanReport; +import a8k.app.a8ktype.type.ConsumablesScanResultPacket; +import a8k.app.a8ktype.type.TubeHolderScanResult; +import a8k.app.a8ktype.type.TubesScanResult; +import a8k.app.dao.db.type.ProjExtInfoCard; +import a8k.app.factory.ProjExtInfoCardFactory; +import a8k.app.hardware.type.a8kcanprotocol.A8kEcode; +import a8k.app.service.data.ProjIdCardInfoMgrService; +import a8k.app.service.data.ProjInfoMgrService; +import a8k.app.service.lowerctrl.ProjIDCardCtrlAndMonitorService; +import a8k.app.service.mainctrl.AppConsumablesScanService; +import a8k.app.service.statemgr.ConsumablesMgrService; +import a8k.app.service.statemgr.GStateMgrService; +import a8k.extui.mgr.ExtApiPageMgr; +import a8k.extui.type.ExtApiStatu; +import a8k.teststate.TestStateMgrService; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Component; + +@Component +public class UsrOperationSimulation { + @Resource + ConsumablesMgrService consumablesMgrService; + + @Resource + AppConsumablesScanService appConsumablesScanService; + + @Resource + ProjIdCardInfoMgrService projIdCardInfoMgrService; + + @Resource + GStateMgrService gstate; + + + @Resource + ProjInfoMgrService projInfoMgrService; + @Resource + ExtApiPageMgr extApiPageMgr; + + @Resource + TestStateMgrService testStateMgrService; + + + // + // 耗材模拟操作 + // + public void putInVirtualConsumable(ConsumableGroup group, String lotid) throws AppException { + gstate.checkIfIsInVirtualMode(); + testStateMgrService.putVirtualConsumable(group.off, lotid); + } + + public void takeAwayVirtualConsumable() throws AppException { + gstate.checkIfIsInVirtualMode(); + testStateMgrService.takeAwayVirtualConsumable(0); + testStateMgrService.takeAwayVirtualConsumable(1); + testStateMgrService.takeAwayVirtualConsumable(2); + testStateMgrService.takeAwayVirtualConsumable(3); + testStateMgrService.takeAwayVirtualConsumable(4); + testStateMgrService.takeAwayVirtualConsumable(5); + } + + // + // 样本模拟操作 + // + public void putInVirtualBloodTubeHolder() throws AppException { + gstate.checkIfIsInVirtualModeOrRunOnlyMode(); + + TubeHolderScanResult scanResult = new TubeHolderScanResult(); + scanResult.tubeHolderType = A8kTubeHolderType.BloodTube.scanCode; + scanResult.tube[0] = new TubesScanResult(true, true, ""); + scanResult.tube[1] = new TubesScanResult(true, true, ""); + scanResult.tube[2] = new TubesScanResult(true, true, ""); + scanResult.tube[3] = new TubesScanResult(true, true, ""); + scanResult.tube[4] = new TubesScanResult(true, true, ""); + scanResult.tube[5] = new TubesScanResult(true, true, ""); + scanResult.tube[6] = new TubesScanResult(true, true, ""); + scanResult.tube[7] = new TubesScanResult(true, true, ""); + scanResult.tube[8] = new TubesScanResult(true, true, ""); + scanResult.tube[9] = new TubesScanResult(true, true, ""); + testStateMgrService.insertVirtualBloodTubeHolder(scanResult); + } + + @Resource + ProjIDCardCtrlAndMonitorService projIDCardCtrlAndMonitorService; + + public void insertVirtualIdCard(Integer projId, String lotId) throws AppException { + gstate.checkIfIsInVirtualMode(); + ProjExtInfoCard newInfoCard = ProjExtInfoCardFactory.buildProjExtInfoCard(projId, lotId); + projIDCardCtrlAndMonitorService.setVirtualMountedIdCardInfo(newInfoCard); + } + + public void removeVirtualIdCard() throws AppException { + gstate.checkIfIsInVirtualMode(); + projIDCardCtrlAndMonitorService.setVirtualMountedIdCardInfo(null); + } + + + @PostConstruct + public void init() { + var page = extApiPageMgr.newPage(this); + + page.newGroup("耗材操作行为"); + page.addFunction("放入虚拟耗材", this::putInVirtualConsumable); + page.addFunction("拿走虚拟耗材", this::takeAwayVirtualConsumable); + + page.newGroup("ID卡"); + page.addFunction("插入ID卡", this::insertVirtualIdCard); + page.addFunction("拔出ID卡", this::removeVirtualIdCard); + + page.newGroup("样本模拟操作"); + page.addFunction("放入一个全血高试管架", this::putInVirtualBloodTubeHolder); + extApiPageMgr.addPage(page); + } + +} diff --git a/src/main/java/a8k/extui/page/test/frond_end_test/FakeReactionRecordGeneratorPage.java b/src/main/java/a8k/extui/page/extapp/debug_assistant/FakeReactionRecordGeneratorPage.java similarity index 95% rename from src/main/java/a8k/extui/page/test/frond_end_test/FakeReactionRecordGeneratorPage.java rename to src/main/java/a8k/extui/page/extapp/debug_assistant/FakeReactionRecordGeneratorPage.java index b91a258..1f8fbb5 100644 --- a/src/main/java/a8k/extui/page/test/frond_end_test/FakeReactionRecordGeneratorPage.java +++ b/src/main/java/a8k/extui/page/extapp/debug_assistant/FakeReactionRecordGeneratorPage.java @@ -1,14 +1,11 @@ -package a8k.extui.page.test.frond_end_test; +package a8k.extui.page.extapp.debug_assistant; -import a8k.SpringBootBeanUtil; import a8k.app.a8kproj.optalgo.type.OptScanResult; import a8k.app.a8ktype.device.BloodType; import a8k.app.a8ktype.exception.AppException; import a8k.app.a8ktype.opttype.ReactionResultStatus; import a8k.app.a8ktype.state.SampleInfo; import a8k.app.a8ktype.type.ReactionResult; -import a8k.app.dao.db.ReactionReportDao; -import a8k.app.dao.db.type.ReactionReport; import a8k.app.dao.db.type.a8kidcard.A8kResultBuilderFn; import a8k.app.dao.db.type.a8kidcard.zenum.A8kOptType; import a8k.app.dao.db.type.a8kidcard.zenum.A8kResultUnit; @@ -18,7 +15,6 @@ import a8k.app.service.data.ProjInfoMgrService; import a8k.app.service.data.ReactionRecordMgrService; import a8k.app.service.statemgr.GStateMgrService; import a8k.app.utils.ProjInfo; -import a8k.app.utils.ZDateUtils; import a8k.extui.mgr.ExtApiPageMgr; import a8k.extui.type.ExtUIPageCfg; import jakarta.annotation.PostConstruct; diff --git a/src/main/java/a8k/extui/page/test/frond_end_test/FakeStateGeneratorPage.java b/src/main/java/a8k/extui/page/extapp/debug_assistant/FakeStateGeneratorPage.java similarity index 98% rename from src/main/java/a8k/extui/page/test/frond_end_test/FakeStateGeneratorPage.java rename to src/main/java/a8k/extui/page/extapp/debug_assistant/FakeStateGeneratorPage.java index 4f0a520..d6ea578 100644 --- a/src/main/java/a8k/extui/page/test/frond_end_test/FakeStateGeneratorPage.java +++ b/src/main/java/a8k/extui/page/extapp/debug_assistant/FakeStateGeneratorPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.test.frond_end_test; +package a8k.extui.page.extapp.debug_assistant; import a8k.SpringBootBeanUtil; import a8k.app.a8ktype.device.BloodType; diff --git a/src/main/java/a8k/extui/page/extapp/debug_assistant/IDCardDataGeneratorPage.java b/src/main/java/a8k/extui/page/extapp/debug_assistant/IDCardDataGeneratorPage.java new file mode 100644 index 0000000..5a6a590 --- /dev/null +++ b/src/main/java/a8k/extui/page/extapp/debug_assistant/IDCardDataGeneratorPage.java @@ -0,0 +1,81 @@ +package a8k.extui.page.extapp.debug_assistant; + +import a8k.app.a8ktype.exception.AppException; +import a8k.app.dao.db.type.A8kProjInfoCardBreif; +import a8k.app.dao.db.type.ProjExtInfoCard; +import a8k.app.factory.ProjExtInfoCardFactory; +import a8k.app.service.data.ProjIdCardInfoMgrService; +import a8k.app.service.data.ProjInfoMgrService; +import a8k.app.service.statemgr.GStateMgrService; +import a8k.app.utils.ProjBuildinInfo; +import a8k.app.utils.ZDateUtils; +import a8k.extui.mgr.ExtApiPageMgr; +import a8k.extui.type.ExtApiStatu; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +@Slf4j +public class IDCardDataGeneratorPage { + + + @Resource + ProjIdCardInfoMgrService projIdCardInfoMgrService; + + @Resource + ProjInfoMgrService projInfoMgrService; + + @Resource + GStateMgrService gstate; + + @ExtApiStatu(name = "", group = "挂载的项目信息", order = 1) + public ProjExtInfoCard getMountedProjInfoCard() { + return projIdCardInfoMgrService.getMountedProjInfoCard(); + } + + // + // 新建 + // + public String saveMountedProjInfoCard() throws AppException { + projIdCardInfoMgrService.saveMountedProjInfoCard(); + return "保存成功"; + } + + public String addAllProjFakeProjInfoCard() throws AppException { + List projBuildinInfos = projInfoMgrService.getAllProjBuildInInfo(); + for (ProjBuildinInfo projBuildinInfo : projBuildinInfos) { + ProjExtInfoCard projExtInfoCard = ProjExtInfoCardFactory.buildProjExtInfoCard(projBuildinInfo.projId, null); + projIdCardInfoMgrService.saveProjExtInfoCard(projExtInfoCard); + } + return "添加成功"; + } + + public String addProjFakeProjInfoCard(String projids) throws AppException { + String[] projidArr = projids.split(","); + for (String projid : projidArr) { + ProjExtInfoCard projExtInfoCard = ProjExtInfoCardFactory.buildProjExtInfoCard(Integer.parseInt(projid), null); + projIdCardInfoMgrService.saveProjExtInfoCard(projExtInfoCard); + } + return "添加成功"; + } + + + @Resource + ExtApiPageMgr extApiPageMgr; + + @PostConstruct + public void init() { + var page = extApiPageMgr.newPage(this); + page.addFunction("保存当前插入的ID卡信息", this::saveMountedProjInfoCard); + page.addFunction("创建并保存ID卡", this::addProjFakeProjInfoCard).setParamVal("projids", "1"); + page.addFunction("创建并保存ID卡(所有项目)", this::addAllProjFakeProjInfoCard); + extApiPageMgr.addPage(page); + } +} diff --git a/src/main/java/a8k/extui/page/test/frond_end_test/VirtualEventGeneratorPage.java b/src/main/java/a8k/extui/page/extapp/debug_assistant/VirtualEventGeneratorPage.java similarity index 98% rename from src/main/java/a8k/extui/page/test/frond_end_test/VirtualEventGeneratorPage.java rename to src/main/java/a8k/extui/page/extapp/debug_assistant/VirtualEventGeneratorPage.java index 227dc32..7b79cf2 100644 --- a/src/main/java/a8k/extui/page/test/frond_end_test/VirtualEventGeneratorPage.java +++ b/src/main/java/a8k/extui/page/extapp/debug_assistant/VirtualEventGeneratorPage.java @@ -1,4 +1,4 @@ -package a8k.extui.page.test.frond_end_test; +package a8k.extui.page.extapp.debug_assistant; import a8k.app.a8ktype.appevent.*; import a8k.app.a8ktype.ui.*;