From 11214f2c6e2648c364a6232a1e6e783b96449a30 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Wed, 22 Jan 2025 21:48:29 +0800 Subject: [PATCH] update --- .../app/dao/db/type/DeviceAdvanceSettingIterm.java | 4 + .../a8k/app/dao/db/type/DeviceAdvancedSetting.java | 1 + .../app/service/data/ProjIdCardInfoMgrService.java | 8 + .../a8k/app/service/statemgr/GStateMgrService.java | 5 + .../java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java | 24 +- .../a8k/extui/page/debug/P01ProjInfoDebugPage.java | 43 +-- .../page/debug/P02ConsumablesMgrDebugPage.java | 296 ++++++++++++++------- .../extui/page/debug/P02TubeSettingDebugPage.java | 25 -- .../debug/P22UserOperaionInRunOnlyModePage.java | 61 ----- .../a8k/extui/page/extapp/CodeGeneratorPage.java | 60 +++++ .../extui/page/extapp/UsrOperationSimulation.java | 128 +++++++++ .../FakeReactionRecordGeneratorPage.java | 106 ++++++++ .../debug_assistant/FakeStateGeneratorPage.java | 75 ++++++ .../debug_assistant/IDCardDataGeneratorPage.java | 81 ++++++ .../debug_assistant/VirtualEventGeneratorPage.java | 78 ++++++ .../FakeReactionRecordGeneratorPage.java | 110 -------- .../frond_end_test/FakeStateGeneratorPage.java | 75 ------ .../frond_end_test/VirtualEventGeneratorPage.java | 78 ------ 18 files changed, 765 insertions(+), 493 deletions(-) create mode 100644 src/main/java/a8k/app/dao/db/type/DeviceAdvanceSettingIterm.java create mode 100644 src/main/java/a8k/app/dao/db/type/DeviceAdvancedSetting.java delete mode 100644 src/main/java/a8k/extui/page/debug/P22UserOperaionInRunOnlyModePage.java create mode 100644 src/main/java/a8k/extui/page/extapp/CodeGeneratorPage.java create mode 100644 src/main/java/a8k/extui/page/extapp/UsrOperationSimulation.java create mode 100644 src/main/java/a8k/extui/page/extapp/debug_assistant/FakeReactionRecordGeneratorPage.java create mode 100644 src/main/java/a8k/extui/page/extapp/debug_assistant/FakeStateGeneratorPage.java create mode 100644 src/main/java/a8k/extui/page/extapp/debug_assistant/IDCardDataGeneratorPage.java create mode 100644 src/main/java/a8k/extui/page/extapp/debug_assistant/VirtualEventGeneratorPage.java delete mode 100644 src/main/java/a8k/extui/page/test/frond_end_test/FakeReactionRecordGeneratorPage.java delete mode 100644 src/main/java/a8k/extui/page/test/frond_end_test/FakeStateGeneratorPage.java delete mode 100644 src/main/java/a8k/extui/page/test/frond_end_test/VirtualEventGeneratorPage.java 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/extapp/debug_assistant/FakeReactionRecordGeneratorPage.java b/src/main/java/a8k/extui/page/extapp/debug_assistant/FakeReactionRecordGeneratorPage.java new file mode 100644 index 0000000..1f8fbb5 --- /dev/null +++ b/src/main/java/a8k/extui/page/extapp/debug_assistant/FakeReactionRecordGeneratorPage.java @@ -0,0 +1,106 @@ +package a8k.extui.page.extapp.debug_assistant; + +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.type.a8kidcard.A8kResultBuilderFn; +import a8k.app.dao.db.type.a8kidcard.zenum.A8kOptType; +import a8k.app.dao.db.type.a8kidcard.zenum.A8kResultUnit; +import a8k.app.factory.FakeOptScanResultFactory; +import a8k.app.factory.ProjExtInfoCardFactory; +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.extui.mgr.ExtApiPageMgr; +import a8k.extui.type.ExtUIPageCfg; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +@Component +public class FakeReactionRecordGeneratorPage { + @Resource + GStateMgrService gstate; + @Resource + ExtApiPageMgr extApiPageMgr; + + @Resource + ReactionRecordMgrService reactionRecordMgrService; + + @Resource + ProjInfoMgrService projInfoMgrService; + + @PostConstruct + void init() { + ExtUIPageCfg page = new ExtUIPageCfg(this); + page.addFunction("添加1条反应结果记录", this::addVirtualReactionRecord); + page.addFunction("添加多条反应记录(每个项目添加一条)", this::addSomeVirtualReactionRecord); + extApiPageMgr.addPage(page); + } + + public void addSomeVirtualReactionRecord() throws AppException { + var allproj = projInfoMgrService.getAllProjBuildInInfo(); + for (var proj : allproj) { + addVirtualReactionRecord(false, "SAMPLEID-123456", proj.projId); + } + for (var proj : allproj) { + addVirtualReactionRecord(true, "SAMPLEID-123456", proj.projId); + } + } + + public void addVirtualReactionRecord(Boolean error, String sampleId, Integer projNum) throws AppException { + + SampleInfo sampleInfo = new SampleInfo(); + sampleInfo.sampleId = sampleId; + sampleInfo.isHighTube = false; + sampleInfo.isEmergency = false; + sampleInfo.bloodType = BloodType.WHOLE_BLOOD; //血液类型 + sampleInfo.sampleBarcode = "BARCODE-111222333"; + sampleInfo.userid = "USERID-ABCDEFG"; + + ProjInfo projInfo = new ProjInfo(projInfoMgrService.getProjBuildInInfo(projNum), ProjExtInfoCardFactory.buildProjExtInfoCard(1, "LOTID123")); + + A8kResultBuilderFn resultBuilder0 = new A8kResultBuilderFn(A8kResultUnit.coi, A8kResultUnit.iuPml, A8kResultUnit.uPl, 2.0, 2.0, 3.0, 3.0); + A8kResultBuilderFn resultBuilder1 = new A8kResultBuilderFn(A8kResultUnit.coi, A8kResultUnit.iuPml, A8kResultUnit.uPl, 2.0, 2.0, 3.0, 3.0); + A8kResultBuilderFn resultBuilder2 = new A8kResultBuilderFn(A8kResultUnit.coi, A8kResultUnit.iuPml, A8kResultUnit.uPl, 2.0, 2.0, 3.0, 3.0); + + List reactionResults = new ArrayList<>(); + + if (!error) { + for (int i = 0; i < projInfo.buildIn.getSubProjNum(); i++) { + if (i == 0) + reactionResults.add(new ReactionResult("Tn-I", "Tn-I", 1.0, resultBuilder0.toResultUnitConverters())); + if (i == 1) + reactionResults.add(new ReactionResult("CK-MB", "CK-MB", 2.0, resultBuilder1.toResultUnitConverters())); + if (i == 2) + reactionResults.add(new ReactionResult("Myoglobin", "MG", 3.0, resultBuilder2.toResultUnitConverters())); + } + } else { + for (int i = 0; i < projInfo.buildIn.getSubProjNum(); i++) { + if (i == 0) + reactionResults.add(new ReactionResult("Tn-I", "Tn-I", ReactionResultStatus.ERROR_RESULT_OUT_OF_RANGE, "结果超出范围")); + if (i == 1) + reactionResults.add(new ReactionResult("CK-MB", "CK-MB", ReactionResultStatus.ERROR_LOST_PEAK_R, "R峰丢失")); + if (i == 2) + reactionResults.add(new ReactionResult("Myoglobin", "MG", ReactionResultStatus.ERROR_QUALITY_PEAK_DETECTION, "质峰检测错误")); + } + } + List optScanResults = new ArrayList<>(); + + if (projInfo.buildIn.getFoptCfg() != null) { + optScanResults.add(FakeOptScanResultFactory.buildOptScanResult(A8kOptType.FOPT)); + } + if (projInfo.buildIn.getToptCfg() != null) { + optScanResults.add(FakeOptScanResultFactory.buildOptScanResult(A8kOptType.TOPT)); + } + reactionRecordMgrService.addRecord(sampleInfo, projInfo, optScanResults, reactionResults); + } + +} diff --git a/src/main/java/a8k/extui/page/extapp/debug_assistant/FakeStateGeneratorPage.java b/src/main/java/a8k/extui/page/extapp/debug_assistant/FakeStateGeneratorPage.java new file mode 100644 index 0000000..d6ea578 --- /dev/null +++ b/src/main/java/a8k/extui/page/extapp/debug_assistant/FakeStateGeneratorPage.java @@ -0,0 +1,75 @@ +package a8k.extui.page.extapp.debug_assistant; + +import a8k.SpringBootBeanUtil; +import a8k.app.a8ktype.device.BloodType; +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.A8kResultUnit; +import a8k.app.service.statemgr.GStateMgrService; +import a8k.app.utils.ZDateUtils; +import a8k.extui.mgr.ExtApiPageMgr; +import a8k.extui.type.ExtApiStatu; +import a8k.extui.type.ExtUIPageCfg; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Component; + +@Component +public class FakeStateGeneratorPage { + @Resource + GStateMgrService gstate; + @Resource + ExtApiPageMgr extApiPageMgr; + + @PostConstruct + void init() { + ExtUIPageCfg page = new ExtUIPageCfg(this); + page.addFunction("添加1条反应结果记录", this::addVirtualReactionRecord); + page.addFunction("添加100条反应结果记录", this::add100VirtualReactionRecord); + extApiPageMgr.addPage(page); + } + + public void add100VirtualReactionRecord() { + for (int i = 0; i < 100; i++) { + addVirtualReactionRecord(String.format("SAMPLE%03d", i)); + } + } + + @ExtApiStatu(name = "", group = "使用说明") + public String usage() { + return "生成虚拟状态生成,用于测试,如果设备运行起来了,请勿调用此接口会造成设备状态混乱"; + } + + + public void addVirtualReactionRecord(String sampleId) { + ReactionReportDao service = SpringBootBeanUtil.getBean(ReactionReportDao.class); + ReactionReport record = new ReactionReport(); + + record.sampleBloodType = BloodType.WHOLE_BLOOD; + record.sampleBarcode = "XXXXXXXXXXXXXXX"; + record.sampleUserid = "ABCDEFG"; + record.projName = "Tn-I/CK-MB/Myoglobin"; + record.projShortName = "TC"; + record.lotId = "CAHAC46U"; + record.projId = 1; + record.sampleId = sampleId; + record.setExpiryDate(ZDateUtils.nextDay()); + record.operator = "admin"; // 操作员 + record.appVersion = gstate.getAppVersion();// 上层应用版本 + record.mcuVersion = gstate.getMcuVersion(); // MCU软件版本 + record.sn = gstate.getSn(); // 仪器序列号 =; + + A8kResultBuilderFn resultBuilder0 = new A8kResultBuilderFn(A8kResultUnit.coi, A8kResultUnit.iuPml, A8kResultUnit.iuPml, 2.0, 2.0, 3.0, 3.0); + A8kResultBuilderFn resultBuilder1 = new A8kResultBuilderFn(A8kResultUnit.coi, A8kResultUnit.iuPml, A8kResultUnit.iuPml, 2.0, 2.0, 3.0, 3.0); + A8kResultBuilderFn resultBuilder2 = new A8kResultBuilderFn(A8kResultUnit.coi, A8kResultUnit.iuPml, A8kResultUnit.iuPml, 2.0, 2.0, 3.0, 3.0); + + record.results.add(new ReactionResult("Tn-I", "Tn-I", 1.0, resultBuilder0.toResultUnitConverters())); + record.results.add(new ReactionResult("CK-MB", "CK-MB", 2.0, resultBuilder1.toResultUnitConverters())); + record.results.add(new ReactionResult("Myoglobin", "MG", 3.0, resultBuilder2.toResultUnitConverters())); + record.subProjNum = 3; + service.add(record); + } + +} 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/extapp/debug_assistant/VirtualEventGeneratorPage.java b/src/main/java/a8k/extui/page/extapp/debug_assistant/VirtualEventGeneratorPage.java new file mode 100644 index 0000000..7b79cf2 --- /dev/null +++ b/src/main/java/a8k/extui/page/extapp/debug_assistant/VirtualEventGeneratorPage.java @@ -0,0 +1,78 @@ +package a8k.extui.page.extapp.debug_assistant; + +import a8k.app.a8ktype.appevent.*; +import a8k.app.a8ktype.ui.*; +import a8k.app.service.bases.AppEventBusService; +import a8k.app.service.bases.FrontEndMessageBoxAndEventMgr; +import a8k.extui.mgr.ExtApiPageMgr; +import a8k.extui.type.ExtUIPageCfg; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +@Component +public class VirtualEventGeneratorPage { + @Resource + AppEventBusService eventBus; + + @Resource + ExtApiPageMgr extApiPageMgr; + + ZAppPromoptTable buildZAppPromoptTable() { + ZAppPromoptTable table = new ZAppPromoptTable(); + table.addHeader("耗材名称", "需求量", "使用量"); + table.addType("String", "String", "String"); + table.addVar(new ZAppPromoptTable.Val("小缓冲液"), new ZAppPromoptTable.Val("11"), new ZAppPromoptTable.Val(MessageLevel.Error, "20")); + table.addVar(new ZAppPromoptTable.Val("大瓶缓冲液"), new ZAppPromoptTable.Val("22"), new ZAppPromoptTable.Val(MessageLevel.Info, "10")); + table.addVar(new ZAppPromoptTable.Val("板夹"), new ZAppPromoptTable.Val("33"), new ZAppPromoptTable.Val(MessageLevel.Warn, "33")); + return table; + } + + List buildZAppPromoptFormsItem() { + List formsItems = new ArrayList<>(); + formsItems.add(new ZAppPromoptFormsItem("相关指令", "motorMoveTo")); + formsItems.add(new ZAppPromoptFormsItem("相关模块", "板夹仓横向移动电机")); + formsItems.add(new ZAppPromoptFormsItem("详细错误", "指令超时")); + return formsItems; + } + + + public void buildInfoPromoptEvent(MessageLevel level, ZAppPromoptDetailInfoType infoType) { + switch (infoType) { + case Text: + eventBus.pushEvent(new AppPromptEvent(new ZAppPromopt(level, "硬件异常", null, "子设备断开连接了......"))); + break; + case Forms: + eventBus.pushEvent(new AppPromptEvent(new ZAppPromopt(level, "板夹仓硬件异常", null, buildZAppPromoptFormsItem()))); + break; + case Table: + eventBus.pushEvent(new AppPromptEvent(new ZAppPromopt(level, "耗材不足", null, buildZAppPromoptTable()))); + break; + } + } + + @Resource + FrontEndMessageBoxAndEventMgr frontEndMessageBoxAndEventMgr; + + + public void pushMessageBoxEvent(MessageLevel level, String info) { + frontEndMessageBoxAndEventMgr.pushMessageBox(new MessageBox(level, info)); + } + + public void pushTubeHolderUpdateEvent() { + eventBus.pushEvent(new AppTubeholderSettingUpdateEvent()); + } + + @PostConstruct + void init() { + ExtUIPageCfg page = new ExtUIPageCfg(this); + page.addFunction("构建弹窗事件", this::buildInfoPromoptEvent); + page.addFunction("构造消息", this::pushMessageBoxEvent) + .setParamVal("info", "测试消息"); + page.addFunction("构造TubeHolderUpdateEvent", this::pushTubeHolderUpdateEvent); + 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/test/frond_end_test/FakeReactionRecordGeneratorPage.java deleted file mode 100644 index b91a258..0000000 --- a/src/main/java/a8k/extui/page/test/frond_end_test/FakeReactionRecordGeneratorPage.java +++ /dev/null @@ -1,110 +0,0 @@ -package a8k.extui.page.test.frond_end_test; - -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; -import a8k.app.factory.FakeOptScanResultFactory; -import a8k.app.factory.ProjExtInfoCardFactory; -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; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; - -@Component -public class FakeReactionRecordGeneratorPage { - @Resource - GStateMgrService gstate; - @Resource - ExtApiPageMgr extApiPageMgr; - - @Resource - ReactionRecordMgrService reactionRecordMgrService; - - @Resource - ProjInfoMgrService projInfoMgrService; - - @PostConstruct - void init() { - ExtUIPageCfg page = new ExtUIPageCfg(this); - page.addFunction("添加1条反应结果记录", this::addVirtualReactionRecord); - page.addFunction("添加多条反应记录(每个项目添加一条)", this::addSomeVirtualReactionRecord); - extApiPageMgr.addPage(page); - } - - public void addSomeVirtualReactionRecord() throws AppException { - var allproj = projInfoMgrService.getAllProjBuildInInfo(); - for (var proj : allproj) { - addVirtualReactionRecord(false, "SAMPLEID-123456", proj.projId); - } - for (var proj : allproj) { - addVirtualReactionRecord(true, "SAMPLEID-123456", proj.projId); - } - } - - public void addVirtualReactionRecord(Boolean error, String sampleId, Integer projNum) throws AppException { - - SampleInfo sampleInfo = new SampleInfo(); - sampleInfo.sampleId = sampleId; - sampleInfo.isHighTube = false; - sampleInfo.isEmergency = false; - sampleInfo.bloodType = BloodType.WHOLE_BLOOD; //血液类型 - sampleInfo.sampleBarcode = "BARCODE-111222333"; - sampleInfo.userid = "USERID-ABCDEFG"; - - ProjInfo projInfo = new ProjInfo(projInfoMgrService.getProjBuildInInfo(projNum), ProjExtInfoCardFactory.buildProjExtInfoCard(1, "LOTID123")); - - A8kResultBuilderFn resultBuilder0 = new A8kResultBuilderFn(A8kResultUnit.coi, A8kResultUnit.iuPml, A8kResultUnit.uPl, 2.0, 2.0, 3.0, 3.0); - A8kResultBuilderFn resultBuilder1 = new A8kResultBuilderFn(A8kResultUnit.coi, A8kResultUnit.iuPml, A8kResultUnit.uPl, 2.0, 2.0, 3.0, 3.0); - A8kResultBuilderFn resultBuilder2 = new A8kResultBuilderFn(A8kResultUnit.coi, A8kResultUnit.iuPml, A8kResultUnit.uPl, 2.0, 2.0, 3.0, 3.0); - - List reactionResults = new ArrayList<>(); - - if (!error) { - for (int i = 0; i < projInfo.buildIn.getSubProjNum(); i++) { - if (i == 0) - reactionResults.add(new ReactionResult("Tn-I", "Tn-I", 1.0, resultBuilder0.toResultUnitConverters())); - if (i == 1) - reactionResults.add(new ReactionResult("CK-MB", "CK-MB", 2.0, resultBuilder1.toResultUnitConverters())); - if (i == 2) - reactionResults.add(new ReactionResult("Myoglobin", "MG", 3.0, resultBuilder2.toResultUnitConverters())); - } - } else { - for (int i = 0; i < projInfo.buildIn.getSubProjNum(); i++) { - if (i == 0) - reactionResults.add(new ReactionResult("Tn-I", "Tn-I", ReactionResultStatus.ERROR_RESULT_OUT_OF_RANGE, "结果超出范围")); - if (i == 1) - reactionResults.add(new ReactionResult("CK-MB", "CK-MB", ReactionResultStatus.ERROR_LOST_PEAK_R, "R峰丢失")); - if (i == 2) - reactionResults.add(new ReactionResult("Myoglobin", "MG", ReactionResultStatus.ERROR_QUALITY_PEAK_DETECTION, "质峰检测错误")); - } - } - List optScanResults = new ArrayList<>(); - - if (projInfo.buildIn.getFoptCfg() != null) { - optScanResults.add(FakeOptScanResultFactory.buildOptScanResult(A8kOptType.FOPT)); - } - if (projInfo.buildIn.getToptCfg() != null) { - optScanResults.add(FakeOptScanResultFactory.buildOptScanResult(A8kOptType.TOPT)); - } - reactionRecordMgrService.addRecord(sampleInfo, projInfo, optScanResults, reactionResults); - } - -} diff --git a/src/main/java/a8k/extui/page/test/frond_end_test/FakeStateGeneratorPage.java b/src/main/java/a8k/extui/page/test/frond_end_test/FakeStateGeneratorPage.java deleted file mode 100644 index 4f0a520..0000000 --- a/src/main/java/a8k/extui/page/test/frond_end_test/FakeStateGeneratorPage.java +++ /dev/null @@ -1,75 +0,0 @@ -package a8k.extui.page.test.frond_end_test; - -import a8k.SpringBootBeanUtil; -import a8k.app.a8ktype.device.BloodType; -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.A8kResultUnit; -import a8k.app.service.statemgr.GStateMgrService; -import a8k.app.utils.ZDateUtils; -import a8k.extui.mgr.ExtApiPageMgr; -import a8k.extui.type.ExtApiStatu; -import a8k.extui.type.ExtUIPageCfg; -import jakarta.annotation.PostConstruct; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Component; - -@Component -public class FakeStateGeneratorPage { - @Resource - GStateMgrService gstate; - @Resource - ExtApiPageMgr extApiPageMgr; - - @PostConstruct - void init() { - ExtUIPageCfg page = new ExtUIPageCfg(this); - page.addFunction("添加1条反应结果记录", this::addVirtualReactionRecord); - page.addFunction("添加100条反应结果记录", this::add100VirtualReactionRecord); - extApiPageMgr.addPage(page); - } - - public void add100VirtualReactionRecord() { - for (int i = 0; i < 100; i++) { - addVirtualReactionRecord(String.format("SAMPLE%03d", i)); - } - } - - @ExtApiStatu(name = "", group = "使用说明") - public String usage() { - return "生成虚拟状态生成,用于测试,如果设备运行起来了,请勿调用此接口会造成设备状态混乱"; - } - - - public void addVirtualReactionRecord(String sampleId) { - ReactionReportDao service = SpringBootBeanUtil.getBean(ReactionReportDao.class); - ReactionReport record = new ReactionReport(); - - record.sampleBloodType = BloodType.WHOLE_BLOOD; - record.sampleBarcode = "XXXXXXXXXXXXXXX"; - record.sampleUserid = "ABCDEFG"; - record.projName = "Tn-I/CK-MB/Myoglobin"; - record.projShortName = "TC"; - record.lotId = "CAHAC46U"; - record.projId = 1; - record.sampleId = sampleId; - record.setExpiryDate(ZDateUtils.nextDay()); - record.operator = "admin"; // 操作员 - record.appVersion = gstate.getAppVersion();// 上层应用版本 - record.mcuVersion = gstate.getMcuVersion(); // MCU软件版本 - record.sn = gstate.getSn(); // 仪器序列号 =; - - A8kResultBuilderFn resultBuilder0 = new A8kResultBuilderFn(A8kResultUnit.coi, A8kResultUnit.iuPml, A8kResultUnit.iuPml, 2.0, 2.0, 3.0, 3.0); - A8kResultBuilderFn resultBuilder1 = new A8kResultBuilderFn(A8kResultUnit.coi, A8kResultUnit.iuPml, A8kResultUnit.iuPml, 2.0, 2.0, 3.0, 3.0); - A8kResultBuilderFn resultBuilder2 = new A8kResultBuilderFn(A8kResultUnit.coi, A8kResultUnit.iuPml, A8kResultUnit.iuPml, 2.0, 2.0, 3.0, 3.0); - - record.results.add(new ReactionResult("Tn-I", "Tn-I", 1.0, resultBuilder0.toResultUnitConverters())); - record.results.add(new ReactionResult("CK-MB", "CK-MB", 2.0, resultBuilder1.toResultUnitConverters())); - record.results.add(new ReactionResult("Myoglobin", "MG", 3.0, resultBuilder2.toResultUnitConverters())); - record.subProjNum = 3; - service.add(record); - } - -} diff --git a/src/main/java/a8k/extui/page/test/frond_end_test/VirtualEventGeneratorPage.java b/src/main/java/a8k/extui/page/test/frond_end_test/VirtualEventGeneratorPage.java deleted file mode 100644 index 227dc32..0000000 --- a/src/main/java/a8k/extui/page/test/frond_end_test/VirtualEventGeneratorPage.java +++ /dev/null @@ -1,78 +0,0 @@ -package a8k.extui.page.test.frond_end_test; - -import a8k.app.a8ktype.appevent.*; -import a8k.app.a8ktype.ui.*; -import a8k.app.service.bases.AppEventBusService; -import a8k.app.service.bases.FrontEndMessageBoxAndEventMgr; -import a8k.extui.mgr.ExtApiPageMgr; -import a8k.extui.type.ExtUIPageCfg; -import jakarta.annotation.PostConstruct; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; - -@Component -public class VirtualEventGeneratorPage { - @Resource - AppEventBusService eventBus; - - @Resource - ExtApiPageMgr extApiPageMgr; - - ZAppPromoptTable buildZAppPromoptTable() { - ZAppPromoptTable table = new ZAppPromoptTable(); - table.addHeader("耗材名称", "需求量", "使用量"); - table.addType("String", "String", "String"); - table.addVar(new ZAppPromoptTable.Val("小缓冲液"), new ZAppPromoptTable.Val("11"), new ZAppPromoptTable.Val(MessageLevel.Error, "20")); - table.addVar(new ZAppPromoptTable.Val("大瓶缓冲液"), new ZAppPromoptTable.Val("22"), new ZAppPromoptTable.Val(MessageLevel.Info, "10")); - table.addVar(new ZAppPromoptTable.Val("板夹"), new ZAppPromoptTable.Val("33"), new ZAppPromoptTable.Val(MessageLevel.Warn, "33")); - return table; - } - - List buildZAppPromoptFormsItem() { - List formsItems = new ArrayList<>(); - formsItems.add(new ZAppPromoptFormsItem("相关指令", "motorMoveTo")); - formsItems.add(new ZAppPromoptFormsItem("相关模块", "板夹仓横向移动电机")); - formsItems.add(new ZAppPromoptFormsItem("详细错误", "指令超时")); - return formsItems; - } - - - public void buildInfoPromoptEvent(MessageLevel level, ZAppPromoptDetailInfoType infoType) { - switch (infoType) { - case Text: - eventBus.pushEvent(new AppPromptEvent(new ZAppPromopt(level, "硬件异常", null, "子设备断开连接了......"))); - break; - case Forms: - eventBus.pushEvent(new AppPromptEvent(new ZAppPromopt(level, "板夹仓硬件异常", null, buildZAppPromoptFormsItem()))); - break; - case Table: - eventBus.pushEvent(new AppPromptEvent(new ZAppPromopt(level, "耗材不足", null, buildZAppPromoptTable()))); - break; - } - } - - @Resource - FrontEndMessageBoxAndEventMgr frontEndMessageBoxAndEventMgr; - - - public void pushMessageBoxEvent(MessageLevel level, String info) { - frontEndMessageBoxAndEventMgr.pushMessageBox(new MessageBox(level, info)); - } - - public void pushTubeHolderUpdateEvent() { - eventBus.pushEvent(new AppTubeholderSettingUpdateEvent()); - } - - @PostConstruct - void init() { - ExtUIPageCfg page = new ExtUIPageCfg(this); - page.addFunction("构建弹窗事件", this::buildInfoPromoptEvent); - page.addFunction("构造消息", this::pushMessageBoxEvent) - .setParamVal("info", "测试消息"); - page.addFunction("构造TubeHolderUpdateEvent", this::pushTubeHolderUpdateEvent); - extApiPageMgr.addPage(page); - } -}