From 719d42a737163fa0706eb8c6a2a8c7ff276d8eed Mon Sep 17 00:00:00 2001 From: zhaohe Date: Fri, 20 Sep 2024 18:48:35 +0800 Subject: [PATCH] update --- README.md | 166 ++++++--------------- app.db | Bin 188416 -> 188416 bytes .../controler/engineer/EngineerPageControler.java | 6 +- .../engineer/pagecontrol/EnginnerPageTabCfg.java | 53 +++++++ .../engineer/pagecontrol/EnginnerPageTabOrder.java | 35 ----- .../controler/engineer/utils/EngineerPageTab.java | 6 +- .../java/a8k/hardware/A8kPipetteCtrlModule.java | 4 +- .../java/a8k/service/app/AppUserMgrService.java | 160 ++++++++++++++++++++ .../java/a8k/service/appcfgs/AppCfgMgrService.java | 138 ----------------- .../service/appcfgs/SampleFormulaMgrService.java | 135 +++++++++++++++++ .../appconsumable/AppConsumablesMgrService.java | 5 +- .../java/a8k/service/appctrl/AppCtrlService.java | 5 +- .../appfrontend/AppFrontEndEventRouter.java | 4 +- .../a8k/service/appsettings/AppSettingsMgr.java | 4 +- .../a8k/service/appstate/AppStateMgrService.java | 4 +- .../calibration/PositionCalibration.java | 5 +- .../devicectrl/commonctrl/HardwareCommonCtrl.java | 5 +- .../devicectrl/ctrl/HbotControlService.java | 5 +- .../ctrl/ReactionPlatesTransmitCtrl.java | 5 +- .../devicectrl/ctrl/SamplesPreProcesCtrl.java | 5 +- .../service/devicectrl/ctrl/TubeRackMoveCtrl.java | 5 +- .../a8k/service/devicectrl/param/DebugParam.java | 4 +- .../a8k/service/devicectrl/param/PosParam.java | 5 +- .../a8k/service/devicectrl/param/TimeParam.java | 5 +- .../service/devicectrl/status/DeviceStatus.java | 4 +- .../service/devicectrl/testscript/TestScript.java | 5 +- .../project_mgr/AppProjectItemMgrService.java | 4 +- .../a8k/service/usermgr/AppUserMgrService.java | 158 -------------------- 28 files changed, 435 insertions(+), 505 deletions(-) create mode 100644 src/main/java/a8k/controler/engineer/pagecontrol/EnginnerPageTabCfg.java delete mode 100644 src/main/java/a8k/controler/engineer/pagecontrol/EnginnerPageTabOrder.java create mode 100644 src/main/java/a8k/service/app/AppUserMgrService.java delete mode 100644 src/main/java/a8k/service/appcfgs/AppCfgMgrService.java create mode 100644 src/main/java/a8k/service/appcfgs/SampleFormulaMgrService.java delete mode 100644 src/main/java/a8k/service/usermgr/AppUserMgrService.java diff --git a/README.md b/README.md index 5ea5fdc..5e6d1d8 100644 --- a/README.md +++ b/README.md @@ -48,144 +48,70 @@ TODO: ``` -``` - -``` -==========================模块参数-维护=========================== - -参数类型,模块参数: - 模块名称,模块ID,参数ID,参数数值,参数名称 - -前端页面: +第一层服务 + FrontEndEventRouter 前端事件路由器 + + + 用户服务: + 1.添加 + 2.删除 + 3.修改 + ID卡服务: + 1.插入检测,插入事件上报(Service,Fn) + 2.删除 + 3.查询 + 系统服务: + 1.时间修改 + 2.本机IP + 系统配置服务: + 1. - 一级菜单,模块名称 - 二级菜单,参数列表 - - 功能: - 改,查,刷新到硬件 - -后端逻辑: - 执行刷新到硬件后,参数全刷新到底层硬件 - - 设备开机后, - 首先自动刷新所有参数到硬件。 - -``` + 设备初始化服务: + 设备初始化运行前检查 + 耗材扫描服务: -``` -硬件服务目标 - 单独调试每一个业务动作 - -硬件服务参数维护 - 1. 每个服务一个数据库 - 2. 数据格式为key-val - -表单格式: - key,chName,valType,val + 样本添加服务: + 主运行服务: + 入料与预处理控制服务: + 滴定 + 反应 + 设备运行状态服务: -valType: - float - int - bool - Pos3d - RectangularPosSet - -``` + ------------------------------------------------ +第二层服务: + 硬件层 -前后端交互: -``` - 前端的代码: - 1. 弹出提示框 - 2. 用户交互 - 3. 提交数据 - 4. 触发机械动作 - - 后端代码:业务逻辑 - - 约定: - 1.只要是触发短暂的机械动作,前端均弹出蒙板加载页面。(短暂意味着,不可中断,几分钟的执行完成) - 2.设备主逻辑(非阻塞,调用后端方法) - 启动 - 停止 - 暂停 - - 3.配置提交,无机械动作,直接提交到数据库。 -``` + 光学标定服务: + 报表打印服务: -``` -具体业务: - 1. 系统初始化 - 登录后,弹出提示话,询问用户是否进行设备初始化。 - 如何实现: - 页面切换,弹出提示框,用户点击确认,提交初始化请求到后台。 - 后台Service阻塞执行动作,返回执行结果。执行结果中携带是否执行成功。 - 2. -前端: - 1. 弹窗信息提示 - 2. + 开机---> 设备不动 -错误信息的展示: - 后端抛出错误事件 - 异常中携带用于展示的错误信息。 - - 后端执行方法,返回错误码,前端直接显示错误码的信息即可。 - 错误码对应的中英文字符串存储在数据库中。 - 执行动作,需要执行一些前置动作。由前端进行状态检查,确定需要执行前置动作后,弹出提示框,用户点击确认,然后执行动作。 +service + core_service + event_bus - 哪些动作需要蒙版: - 1. 非设备启动动作外均需要蒙版 - 2. 项目手动配置中,根据耗材的减少自动更新状态信息。 - 1.总数从后端拿到 - 2.用户每提交和选中一个项目后,向后台提交配置,同时返回剩余量。 - 3. - - *:前端每一次点击,将更新的内容提交到后台,后台返回前端当前页面所有状态信息。(非表单信息) - *: - - - 后台存储: - 耗材总数 - - - -``` - - -``` - -``` -1. 急诊逻辑 - 点击急诊位 - ---> 弹出是否添加急诊 - ---> 点击确认 - ---> 弹出急诊添加涉及到的信息框 - 配置好信息后 ---> 点击添加 - - - -``` - -``` - -1. 执行机械相关的动作都需要加载一个蒙版 -2. 非机械相关的动作,无须蒙版 -3. 每次提交一次请求,都返回两类信息 - 1. 是否弹出错误提示框 - 2. 全部的前端状态信息。 - -4. + app_service + hardware_service + setting_service + appSettingService +TODO: + 初始化服务 + 物料扫描服务 + 入料服务 + 预处理服务 + 孵育服务 + 取样与反应服务 ``` -``` diff --git a/app.db b/app.db index 8e193a573e3eb4d56fc719e580cb5963e6c689a6..83330faeb802b495e82e68ad35369df301008515 100644 GIT binary patch delta 613 zcma*jyGjF55P;#`+%PV2?IWn9&}Q(=xeqpid4-fh&SlR_2yQI2)+bR2Vw=bCO)RwV zWD7en#dPz}z_;2|t4;MZE$7ci*X8_v`LHbCmc84%)}eAvkpx2mK?*CtCF0;!&_q0v z(qcwPm=YTf7t_g})`sh39C+a+$VM4(N_sFMUy4D9;QY**By%z73a30rvIfwqTxg%b z2^j#BZ@KeQaWC~Or637eze|uYY`6&!n6V(EV?aa*Ci&!Sa82Xo%<7b^X1%TmhEY(t za1G-ikqe;48?dV3(F=t_r2Hcn$jYu@(azF{cX_3#LkFN9i{pw+rzpaYfyUwBYj-dt56a^ua1yr&Hj_3lF zBob~KLk*3QjK|BxY)^6&vUM6*^d=EhfHNV0az-)9BXy28sG~^4Xdoi$z!Y!6^qYmG z91QauqUD{pngnSWZ({VqP*M(vQZ1(%Ian_O2(Jw|r73vP2JO71!N~?yjHpO45Fv08 zM5I7cYY>zvuqF^NUZZ8L)Y9s7BN3G31HrU&mo4`a3}@+gv<3`%1=zPkp#pK35M;>r zvn-p`RaSr0qJFHa`lY_voSu9hbm!$V-$ml25ANb_+z0DAZq`{=d!zW4!IeU+yG diff --git a/src/main/java/a8k/controler/engineer/EngineerPageControler.java b/src/main/java/a8k/controler/engineer/EngineerPageControler.java index 766999c..4388d8b 100644 --- a/src/main/java/a8k/controler/engineer/EngineerPageControler.java +++ b/src/main/java/a8k/controler/engineer/EngineerPageControler.java @@ -25,14 +25,14 @@ public class EngineerPageControler { var classes = UfClassHelper.getAllClassesInPackage("a8k"); for (var clazz : classes) { var hardwareServiceAnnotation = clazz.getAnnotation(EngineerPageTab.class); - if (null == hardwareServiceAnnotation || !hardwareServiceAnnotation.display() ) { + if (null == hardwareServiceAnnotation || !hardwareServiceAnnotation.cfg().isDisplay() ) { continue ; } Map service = new HashMap<>(); service.put("key", clazz.getSimpleName()); - service.put("name", hardwareServiceAnnotation.name()); - service.put("order", hardwareServiceAnnotation.order().ordinal()); + service.put("name", hardwareServiceAnnotation.cfg().getName()); + service.put("order", hardwareServiceAnnotation.cfg().ordinal()); services.add(service); } return AppRet.success(services); diff --git a/src/main/java/a8k/controler/engineer/pagecontrol/EnginnerPageTabCfg.java b/src/main/java/a8k/controler/engineer/pagecontrol/EnginnerPageTabCfg.java new file mode 100644 index 0000000..95acc3c --- /dev/null +++ b/src/main/java/a8k/controler/engineer/pagecontrol/EnginnerPageTabCfg.java @@ -0,0 +1,53 @@ +package a8k.controler.engineer.pagecontrol; + +public enum EnginnerPageTabCfg { + AppFrontEndEventRouter("基础组件.前端事件路由", true), + + AppCtrlService("应用.设备控制", true), + AppConsumablesMgrService("应用.耗材", true), + AppProjectItemMgrService("应用.ID卡管理", true), + AppUserMgrService("应用.用户", true), + AppSettingsMgr("应用.配置", true), + AppStateMgrService("应用.状态", true), + SampleFormulaMgrService("应用.配方管理", true), + + //底层硬件 + A8kPipetteCtrlModule("A8kPipetteCtrlModule", true), + + PosParam("PosParam", true), + TimeParam("TimeParam", true), + DeviceStatus("DeviceStatus", true), + + HardwareCommonCtrl("HardwareCommonCtrl", true), + TubeRackMoveCtrl("TubeRackMoveCtrl", true), + SamplesPreProcesCtrl("SamplesPreProcesCtrl", true), + ReactionPlatesTransmitCtrl("ReactionPlatesTransmitCtrl", true), + HbotControlService("HbotControlService", true), + + + PositionCalibration("PositionCalibration", true), + CodeDebugParam("CodeDebugParam", true), + TestScript("TestScript", true), + + DebugParam("DebugParam", true), + + Max("max", false); + + final String name; + final boolean display; + + EnginnerPageTabCfg(String name, boolean display) { + this.name = name; + this.display = display; + } + + public String getName() { + return name; + } + + public boolean isDisplay() { + return display; + } + + +} diff --git a/src/main/java/a8k/controler/engineer/pagecontrol/EnginnerPageTabOrder.java b/src/main/java/a8k/controler/engineer/pagecontrol/EnginnerPageTabOrder.java deleted file mode 100644 index e9527bd..0000000 --- a/src/main/java/a8k/controler/engineer/pagecontrol/EnginnerPageTabOrder.java +++ /dev/null @@ -1,35 +0,0 @@ -package a8k.controler.engineer.pagecontrol; - -public enum EnginnerPageTabOrder { - - AppCtrlService, - AppConsumablesMgrService, - AppProjectItemMgrService, - AppUserMgrService, - AppSettingsMgr, - AppStateMgrService, - AppCfgMgrService, - AppFrontEndEventRouter, - - //底层硬件 - A8kPipetteCtrlModule, - - - PosParam, - TimeParam, - - DeviceStatus, - - HardwareCommonCtrl, - TubeRackMoveCtrl, - SamplesPreProcesCtrl, - ReactionPlatesTransmitCtrl, - HbotControlService, - - - PositionCalibration, - CodeDebugParam, - TestScript, - - Max; -} diff --git a/src/main/java/a8k/controler/engineer/utils/EngineerPageTab.java b/src/main/java/a8k/controler/engineer/utils/EngineerPageTab.java index 7b3e5f7..be186d0 100644 --- a/src/main/java/a8k/controler/engineer/utils/EngineerPageTab.java +++ b/src/main/java/a8k/controler/engineer/utils/EngineerPageTab.java @@ -1,5 +1,5 @@ package a8k.controler.engineer.utils; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -8,7 +8,5 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) public @interface EngineerPageTab { - String name(); - EnginnerPageTabOrder order() default EnginnerPageTabOrder.Max; - boolean display() default true; + EnginnerPageTabCfg cfg(); } diff --git a/src/main/java/a8k/hardware/A8kPipetteCtrlModule.java b/src/main/java/a8k/hardware/A8kPipetteCtrlModule.java index 5070ed6..98d0a02 100644 --- a/src/main/java/a8k/hardware/A8kPipetteCtrlModule.java +++ b/src/main/java/a8k/hardware/A8kPipetteCtrlModule.java @@ -1,6 +1,6 @@ package a8k.hardware; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; import a8k.controler.engineer.utils.EngineerPageTab; import a8k.controler.engineer.utils.EnginnerPageAction; import a8k.hardware.type.LldType; @@ -30,7 +30,7 @@ import java.util.List; */ @Component -@EngineerPageTab(name = "底层硬件-移动液枪控制", order = EnginnerPageTabOrder.A8kPipetteCtrlModule) +@EngineerPageTab(cfg = EnginnerPageTabCfg.A8kPipetteCtrlModule) public class A8kPipetteCtrlModule { @Resource diff --git a/src/main/java/a8k/service/app/AppUserMgrService.java b/src/main/java/a8k/service/app/AppUserMgrService.java new file mode 100644 index 0000000..a84e5b1 --- /dev/null +++ b/src/main/java/a8k/service/app/AppUserMgrService.java @@ -0,0 +1,160 @@ +package a8k.service.app; + +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; +import a8k.controler.engineer.utils.EngineerPageTab; +import a8k.type.appret.AppRet; +import a8k.controler.engineer.utils.EnginnerPageAction; +import a8k.dbservice.AppUser; +import a8k.hardware.type.a8kcanprotocol.A8kEcode; +import com.iflytop.uf.UfActiveRecord; +import jakarta.annotation.PostConstruct; +import org.slf4j.Logger; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; + + +@Component +@EngineerPageTab(cfg = EnginnerPageTabCfg.AppUserMgrService) +public class AppUserMgrService { + static Logger logger = org.slf4j.LoggerFactory.getLogger(AppUserMgrService.class); + + static class ORDER { + static final int login = 1; + static final int getLoginUsr = 2; + static final int getUsrlist = 3; + static final int addUser = 5; + static final int delUser = 6; + static final int modifyUser = 7; + static final int modifyUsrPwd = 8; + static final int modifyUsrRole = 9; + static final int verifyUser = 10; + + } + + AppUser loginUsr; + + @PostConstruct + public void init() { + logger.info("UserMgrService init"); + AppUser admin = dbGetUser("Admin"); + if (admin == null) { + admin = new AppUser(); + admin.account = "Admin"; + admin.password = "0000"; + admin.isAdmin = 1; + admin.isBuiltInUser = 1; + admin.save(); + } + + } + + List dbGetUserList() { + return UfActiveRecord.find(AppUser.class); + } + + AppUser dbGetUser(String account) { + return UfActiveRecord.findOne(AppUser.class, Map.of("account", account)); + } + + // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + // EXT FUNC + // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + @EnginnerPageAction(name = "用户登录", order = ORDER.login) + public AppRet login(String account, String password) { + var user = dbGetUser(account); + if (user == null) { + return AppRet.fail(A8kEcode.UsrNotExitError); + } + if (!user.matchPassword(password)) { + return AppRet.fail(A8kEcode.PasswdError); + } + loginUsr = user; + return AppRet.success(user); + } + + @EnginnerPageAction(name = "获取当前用户", order = ORDER.getLoginUsr) + public AppRet getLoginUsr() { + return AppRet.success(loginUsr); + } + + @EnginnerPageAction(name = "获取用户列表", order = ORDER.getUsrlist) + public AppRet> getUsrlist() { + return AppRet.success(dbGetUserList()); + } + + + @EnginnerPageAction(name = "用户添加", order = ORDER.addUser) + public AppRet addUser(String account, String password, Integer isAdmin) { + if (dbGetUser(account) != null) { + return AppRet.fail(A8kEcode.UsrExistError); + } + var user = new AppUser(); + user.account = account; + user.password = password; + user.isAdmin = isAdmin; + user.save(); + return AppRet.success(user); + } + + @EnginnerPageAction(name = "删除用户", order = ORDER.delUser) + public AppRet delUser(String account) { + var user = dbGetUser(account); + if (user == null) { + return AppRet.fail(A8kEcode.UsrNotExitError); + } + if (user.isBuiltInUser == 1) { + return AppRet.fail(A8kEcode.UsrNotAllowBeDeleted); + } + user.delete(); + return AppRet.success(user); + } + + @EnginnerPageAction(name = "修改用户", order = ORDER.modifyUser) + public AppRet modifyUser(String account, String password, Integer isAdmin) { + var user = dbGetUser(account); + if (user == null) { + return AppRet.fail(A8kEcode.UsrNotExitError); + } + user.password = password; + user.isAdmin = isAdmin; + user.save(); + return AppRet.success(user); + } + + + @EnginnerPageAction(name = "修改用户密码", order = ORDER.modifyUsrPwd) + public AppRet modifyUsrPwd(String account, String password) { + var user = dbGetUser(account); + if (user == null) { + return AppRet.fail(A8kEcode.UsrNotExitError); + } + user.password = password; + return AppRet.success(user); + } + + @EnginnerPageAction(name = "修改用户权限", order = ORDER.modifyUsrRole) + public AppRet modifyUsrRole(String account, Boolean isAdmin) { + var user = dbGetUser(account); + if (user == null) { + return AppRet.fail(A8kEcode.UsrNotExitError); + } + user.isAdmin = isAdmin ? 1 : 0; + return AppRet.success(user); + } + + @EnginnerPageAction(name = "用户验证", order = ORDER.verifyUser) + public AppRet verifyUser(String account, String password) { + var user = dbGetUser(account); + if (user == null) { + return AppRet.fail(A8kEcode.UsrNotExitError); + } + if (!user.matchPassword(password)) { + return AppRet.fail(A8kEcode.PasswdError); + } + return AppRet.success(true); + } + +} diff --git a/src/main/java/a8k/service/appcfgs/AppCfgMgrService.java b/src/main/java/a8k/service/appcfgs/AppCfgMgrService.java deleted file mode 100644 index 645f2e1..0000000 --- a/src/main/java/a8k/service/appcfgs/AppCfgMgrService.java +++ /dev/null @@ -1,138 +0,0 @@ -package a8k.service.appcfgs; - -import a8k.type.appret.AppRet; -import a8k.controler.engineer.utils.EngineerPageTab; -import a8k.controler.engineer.utils.EnginnerPageAction; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; -import a8k.controler.engineer.pagecontrol.TabDisplay; -import a8k.service.appcfgs.base.A8kDeviceCfg; -import a8k.service.appcfgs.base.EmergencyCfg; -import a8k.type.type.BloodType; -import a8k.service.appcfgs.base.SampleTubeCfg; -import a8k.service.appcfgs.base.SampleTubeHolderCfg; -import a8k.hardware.type.a8kcanprotocol.A8kEcode; -import org.springframework.stereotype.Component; - -@Component -@EngineerPageTab(name = "应用-测试任务提交", order = EnginnerPageTabOrder.AppCfgMgrService,display = TabDisplay.AppCfgMgrService) -public class AppCfgMgrService { - A8kDeviceCfg deviceCfg = new A8kDeviceCfg(); - - static class ORDER { - static final int getA8kDeviceCfg = 1; - static final int addCfg = 2; - static final int removeCfg = 3; - static final int activeCfg = 4; - static final int updateTubeUsrCfg = 5; - static final int clearTubeProjectCfg = 6; - static final int addTubeProjectCode = 7; - static final int setTubeBloodType = 8; - static final int getEmergencyCfg = 9; - static final int addEmergencyCfg = 10; - } - - - private SampleTubeHolderCfg dbFindCfg(String tubeHolderCfgUUID) { - for (SampleTubeHolderCfg cfg : deviceCfg.cfgs) { - if (cfg.uuid.equals(tubeHolderCfgUUID)) { - return cfg; - } - } - return null; - } - - private void dbRemoveCfg(String tubeHolderCfgUUID) { - deviceCfg.cfgs.removeIf(cfg -> cfg.uuid.equals(tubeHolderCfgUUID)); - } - - private SampleTubeCfg dbFindTubeCfg(String tubeHolderCfgUUID, Integer tubeIndex) { - SampleTubeHolderCfg cfg = dbFindCfg(tubeHolderCfgUUID); - if (cfg == null) { - return null; - } - return cfg.tubeCfgs.get(tubeIndex); - } - - - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - // EXTERNAL API - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - - @EnginnerPageAction(name = "获取设备配置", group = "基础", order = ORDER.getA8kDeviceCfg) - public A8kDeviceCfg getA8kDeviceCfg() { - return deviceCfg; - } - - @EnginnerPageAction(name = "添加<试管架>配置", group = "试管架", order = ORDER.addCfg) - public AppRet addCfg() { - SampleTubeHolderCfg cfg = new SampleTubeHolderCfg(); - deviceCfg.cfgs.add(cfg); - return AppRet.success(cfg); - } - - @EnginnerPageAction(name = "删除<试管架>配置", group = "试管架", order = ORDER.removeCfg) - public AppRet removeCfg(String tubeHolderCfgUUID) { - dbRemoveCfg(tubeHolderCfgUUID); - return AppRet.success(); - } - - - @EnginnerPageAction(name = "激活<试管架>配置", group = "试管架", order = ORDER.activeCfg) - public AppRet activeCfg(String tubeHolderCfgUUID, Boolean active) { - SampleTubeHolderCfg cfg = dbFindCfg(tubeHolderCfgUUID); - if (cfg == null) { - return AppRet.fail(A8kEcode.TubeHolderCfgNotExist); - } - cfg.active = active; - return AppRet.success(); - } - - - @EnginnerPageAction(name = "修改<试管>用户信息配置", group = "试管", order = ORDER.updateTubeUsrCfg) - public AppRet updateTubeUsrCfg(String uuid, Integer tubeIndex, String udpid, String barcodeid) { - SampleTubeHolderCfg cfg = dbFindCfg(uuid); - assert cfg != null; - cfg.tubeCfgs.get(tubeIndex).barcodeid = barcodeid; - cfg.tubeCfgs.get(tubeIndex).udpid = udpid; - return AppRet.success(cfg.tubeCfgs.get(tubeIndex)); - } - - - @EnginnerPageAction(name = "清除<试管>项目信息", group = "试管", order = ORDER.clearTubeProjectCfg) - public AppRet clearTubeProjectCfg(String uuid, Integer tubeIndex) { - SampleTubeHolderCfg cfg = dbFindCfg(uuid); - assert cfg != null; - cfg.tubeCfgs.get(tubeIndex).projectCodes.clear(); - cfg.tubeCfgs.get(tubeIndex).bloodType = BloodType.WHOLE_BLOOD; - return AppRet.success(cfg.tubeCfgs.get(tubeIndex)); - } - - @EnginnerPageAction(name = "添加<试管>项目信息", group = "试管", order = ORDER.addTubeProjectCode) - public AppRet addTubeProjectCode(String uuid, Integer tubeIndex, String pjc) { - SampleTubeHolderCfg cfg = dbFindCfg(uuid); - assert cfg != null; - SampleTubeCfg tubeCfg = new SampleTubeCfg(); - tubeCfg.projectCodes.add(pjc); - cfg.tubeCfgs.add(tubeCfg); - return AppRet.success(tubeCfg); - } - - @EnginnerPageAction(name = "设置<试管>血型", group = "试管", order = ORDER.setTubeBloodType) - public AppRet setTubeBloodType(String uuid, Integer tubeIndex, BloodType bloodType) { - SampleTubeCfg tubeCfg = dbFindTubeCfg(uuid, tubeIndex); - assert tubeCfg != null; - tubeCfg.bloodType = bloodType; - return AppRet.success(); - } - - @EnginnerPageAction(name = "获取<急诊位>配置", group = "急诊位", order = ORDER.getEmergencyCfg) - public AppRet getEmergencyCfg() { - return AppRet.success(deviceCfg.emergencyCfg); - } - - @EnginnerPageAction(name = "添加<急诊位>配置", group = "急诊位", order = ORDER.addEmergencyCfg) - public AppRet addEmergencyCfg(EmergencyCfg cfg) { - deviceCfg.emergencyCfg = cfg; - return AppRet.success(deviceCfg.emergencyCfg); - } -} diff --git a/src/main/java/a8k/service/appcfgs/SampleFormulaMgrService.java b/src/main/java/a8k/service/appcfgs/SampleFormulaMgrService.java new file mode 100644 index 0000000..adc3533 --- /dev/null +++ b/src/main/java/a8k/service/appcfgs/SampleFormulaMgrService.java @@ -0,0 +1,135 @@ +package a8k.service.appcfgs; + +import a8k.type.appret.AppRet; +import a8k.controler.engineer.utils.EngineerPageTab; +import a8k.controler.engineer.utils.EnginnerPageAction; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; +import a8k.service.appcfgs.base.A8kDeviceCfg; +import a8k.service.appcfgs.base.EmergencyCfg; +import a8k.type.type.BloodType; +import a8k.service.appcfgs.base.SampleTubeCfg; +import a8k.service.appcfgs.base.SampleTubeHolderCfg; +import a8k.hardware.type.a8kcanprotocol.A8kEcode; +import org.springframework.stereotype.Component; + +@Component +@EngineerPageTab(cfg = EnginnerPageTabCfg.SampleFormulaMgrService) +public class SampleFormulaMgrService { + A8kDeviceCfg deviceCfg = new A8kDeviceCfg(); + + static class ORDER { + static final int getA8kDeviceCfg = 1; + static final int addCfg = 2; + static final int removeCfg = 3; + static final int activeCfg = 4; + static final int updateTubeUsrCfg = 5; + static final int clearTubeProjectCfg = 6; + static final int addTubeProjectCode = 7; + static final int setTubeBloodType = 8; + static final int getEmergencyCfg = 9; + static final int addEmergencyCfg = 10; + } + + + private SampleTubeHolderCfg dbFindCfg(String tubeHolderCfgUUID) { + for (SampleTubeHolderCfg cfg : deviceCfg.cfgs) { + if (cfg.uuid.equals(tubeHolderCfgUUID)) { + return cfg; + } + } + return null; + } + + private void dbRemoveCfg(String tubeHolderCfgUUID) { + deviceCfg.cfgs.removeIf(cfg -> cfg.uuid.equals(tubeHolderCfgUUID)); + } + + private SampleTubeCfg dbFindTubeCfg(String tubeHolderCfgUUID, Integer tubeIndex) { + SampleTubeHolderCfg cfg = dbFindCfg(tubeHolderCfgUUID); + if (cfg == null) { + return null; + } + return cfg.tubeCfgs.get(tubeIndex); + } + // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + // EXTERNAL API + // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + @EnginnerPageAction(name = "获取设备配置", group = "基础", order = ORDER.getA8kDeviceCfg) + public A8kDeviceCfg getA8kDeviceCfg() { + return deviceCfg; + } + + @EnginnerPageAction(name = "添加<试管架>配置", group = "试管架", order = ORDER.addCfg) + public AppRet addCfg() { + SampleTubeHolderCfg cfg = new SampleTubeHolderCfg(); + deviceCfg.cfgs.add(cfg); + return AppRet.success(cfg); + } + + @EnginnerPageAction(name = "删除<试管架>配置", group = "试管架", order = ORDER.removeCfg) + public AppRet removeCfg(String tubeHolderCfgUUID) { + dbRemoveCfg(tubeHolderCfgUUID); + return AppRet.success(); + } + + + @EnginnerPageAction(name = "激活<试管架>配置", group = "试管架", order = ORDER.activeCfg) + public AppRet activeCfg(String tubeHolderCfgUUID, Boolean active) { + SampleTubeHolderCfg cfg = dbFindCfg(tubeHolderCfgUUID); + if (cfg == null) { + return AppRet.fail(A8kEcode.TubeHolderCfgNotExist); + } + cfg.active = active; + return AppRet.success(); + } + + + @EnginnerPageAction(name = "修改<试管>用户信息配置", group = "试管", order = ORDER.updateTubeUsrCfg) + public AppRet updateTubeUsrCfg(String uuid, Integer tubeIndex, String udpid, String barcodeid) { + SampleTubeHolderCfg cfg = dbFindCfg(uuid); + assert cfg != null; + cfg.tubeCfgs.get(tubeIndex).barcodeid = barcodeid; + cfg.tubeCfgs.get(tubeIndex).udpid = udpid; + return AppRet.success(cfg.tubeCfgs.get(tubeIndex)); + } + + + @EnginnerPageAction(name = "清除<试管>项目信息", group = "试管", order = ORDER.clearTubeProjectCfg) + public AppRet clearTubeProjectCfg(String uuid, Integer tubeIndex) { + SampleTubeHolderCfg cfg = dbFindCfg(uuid); + assert cfg != null; + cfg.tubeCfgs.get(tubeIndex).projectCodes.clear(); + cfg.tubeCfgs.get(tubeIndex).bloodType = BloodType.WHOLE_BLOOD; + return AppRet.success(cfg.tubeCfgs.get(tubeIndex)); + } + + @EnginnerPageAction(name = "添加<试管>项目信息", group = "试管", order = ORDER.addTubeProjectCode) + public AppRet addTubeProjectCode(String uuid, Integer tubeIndex, String pjc) { + SampleTubeHolderCfg cfg = dbFindCfg(uuid); + assert cfg != null; + SampleTubeCfg tubeCfg = new SampleTubeCfg(); + tubeCfg.projectCodes.add(pjc); + cfg.tubeCfgs.add(tubeCfg); + return AppRet.success(tubeCfg); + } + + @EnginnerPageAction(name = "设置<试管>血型", group = "试管", order = ORDER.setTubeBloodType) + public AppRet setTubeBloodType(String uuid, Integer tubeIndex, BloodType bloodType) { + SampleTubeCfg tubeCfg = dbFindTubeCfg(uuid, tubeIndex); + assert tubeCfg != null; + tubeCfg.bloodType = bloodType; + return AppRet.success(); + } + + @EnginnerPageAction(name = "获取<急诊位>配置", group = "急诊位", order = ORDER.getEmergencyCfg) + public AppRet getEmergencyCfg() { + return AppRet.success(deviceCfg.emergencyCfg); + } + + @EnginnerPageAction(name = "添加<急诊位>配置", group = "急诊位", order = ORDER.addEmergencyCfg) + public AppRet addEmergencyCfg(EmergencyCfg cfg) { + deviceCfg.emergencyCfg = cfg; + return AppRet.success(deviceCfg.emergencyCfg); + } +} diff --git a/src/main/java/a8k/service/appconsumable/AppConsumablesMgrService.java b/src/main/java/a8k/service/appconsumable/AppConsumablesMgrService.java index bf1f7fd..bcb4555 100644 --- a/src/main/java/a8k/service/appconsumable/AppConsumablesMgrService.java +++ b/src/main/java/a8k/service/appconsumable/AppConsumablesMgrService.java @@ -3,8 +3,7 @@ package a8k.service.appconsumable; import a8k.type.appret.AppRet; import a8k.controler.engineer.utils.EngineerPageTab; import a8k.controler.engineer.utils.EnginnerPageAction; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; -import a8k.controler.engineer.pagecontrol.TabDisplay; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; import a8k.service.ProjectColorAllocer; import a8k.service.appconsumable.base.Consumables; import a8k.service.appconsumable.base.ReactantItem; @@ -15,7 +14,7 @@ import org.slf4j.Logger; import org.springframework.stereotype.Component; -@EngineerPageTab(name = "应用-耗材管理服务", order = EnginnerPageTabOrder.AppConsumablesMgrService,display = TabDisplay.AppConsumablesMgrService) +@EngineerPageTab(cfg = EnginnerPageTabCfg.AppConsumablesMgrService) @Component public class AppConsumablesMgrService { static Logger logger = org.slf4j.LoggerFactory.getLogger(AppConsumablesMgrService.class); diff --git a/src/main/java/a8k/service/appctrl/AppCtrlService.java b/src/main/java/a8k/service/appctrl/AppCtrlService.java index ce2c2dc..752bb29 100644 --- a/src/main/java/a8k/service/appctrl/AppCtrlService.java +++ b/src/main/java/a8k/service/appctrl/AppCtrlService.java @@ -3,12 +3,11 @@ package a8k.service.appctrl; import a8k.type.appret.AppRet; import a8k.controler.engineer.utils.EngineerPageTab; import a8k.controler.engineer.utils.EnginnerPageAction; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; -import a8k.controler.engineer.pagecontrol.TabDisplay; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; import org.slf4j.Logger; import org.springframework.stereotype.Component; -@EngineerPageTab(name = "应用-设备控制", order = EnginnerPageTabOrder.AppCtrlService,display = TabDisplay.AppCtrlService) +@EngineerPageTab(cfg = EnginnerPageTabCfg.AppCtrlService) @Component public class AppCtrlService { static final Logger logger = org.slf4j.LoggerFactory.getLogger(AppCtrlService.class); diff --git a/src/main/java/a8k/service/appfrontend/AppFrontEndEventRouter.java b/src/main/java/a8k/service/appfrontend/AppFrontEndEventRouter.java index de9eb9b..9721064 100644 --- a/src/main/java/a8k/service/appfrontend/AppFrontEndEventRouter.java +++ b/src/main/java/a8k/service/appfrontend/AppFrontEndEventRouter.java @@ -1,6 +1,6 @@ package a8k.service.appfrontend; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; import a8k.controler.engineer.pagecontrol.TabDisplay; import a8k.baseservice.appeventbus.AppEventListener; import a8k.type.appret.AppRet; @@ -17,7 +17,7 @@ import org.springframework.stereotype.Component; import java.util.Queue; @Component -@EngineerPageTab(name = "应用-前端事件路由器", order = EnginnerPageTabOrder.AppFrontEndEventRouter,display = TabDisplay.AppFrontEndEventRouter) +@EngineerPageTab(cfg = EnginnerPageTabCfg.AppFrontEndEventRouter) public class AppFrontEndEventRouter implements AppEventListener { static Logger logger = org.slf4j.LoggerFactory.getLogger(AppFrontEndEventRouter.class); diff --git a/src/main/java/a8k/service/appsettings/AppSettingsMgr.java b/src/main/java/a8k/service/appsettings/AppSettingsMgr.java index 707a0ba..5ea4a5c 100644 --- a/src/main/java/a8k/service/appsettings/AppSettingsMgr.java +++ b/src/main/java/a8k/service/appsettings/AppSettingsMgr.java @@ -3,7 +3,7 @@ package a8k.service.appsettings; import a8k.type.appret.AppRet; import a8k.controler.engineer.utils.EngineerPageTab; import a8k.controler.engineer.utils.EnginnerPageAction; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; import a8k.controler.engineer.pagecontrol.TabDisplay; import a8k.dbservice.AppSetting; import a8k.service.appsettings.base.AppSettingTab; @@ -23,7 +23,7 @@ import java.util.Map; import java.util.Objects; @Component -@EngineerPageTab(name = "应用-系统设置", order = EnginnerPageTabOrder.AppSettingsMgr, display = TabDisplay.AppSettingsMgr) +@EngineerPageTab(cfg = EnginnerPageTabCfg.AppSettingsMgr) public class AppSettingsMgr { Logger logger = org.slf4j.LoggerFactory.getLogger(AppSettingsMgr.class); diff --git a/src/main/java/a8k/service/appstate/AppStateMgrService.java b/src/main/java/a8k/service/appstate/AppStateMgrService.java index c11296d..49f7b64 100644 --- a/src/main/java/a8k/service/appstate/AppStateMgrService.java +++ b/src/main/java/a8k/service/appstate/AppStateMgrService.java @@ -2,7 +2,7 @@ package a8k.service.appstate; import a8k.controler.engineer.utils.EngineerPageTab; import a8k.controler.engineer.utils.EnginnerPageAction; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; import a8k.controler.engineer.pagecontrol.TabDisplay; import a8k.dbservice.ProjectInfo; import a8k.service.appconsumable.base.Consumables; @@ -13,7 +13,7 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; @Component -@EngineerPageTab(name = "应用-系统状态", order = EnginnerPageTabOrder.AppStateMgrService, display = TabDisplay.AppStateMgrService) +@EngineerPageTab(cfg = EnginnerPageTabCfg.AppStateMgrService) public class AppStateMgrService { public static final Logger logger = LoggerFactory.getLogger(AppStateMgrService.class); diff --git a/src/main/java/a8k/service/devicectrl/calibration/PositionCalibration.java b/src/main/java/a8k/service/devicectrl/calibration/PositionCalibration.java index c152f2f..b88093a 100644 --- a/src/main/java/a8k/service/devicectrl/calibration/PositionCalibration.java +++ b/src/main/java/a8k/service/devicectrl/calibration/PositionCalibration.java @@ -1,6 +1,6 @@ package a8k.service.devicectrl.calibration; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; import a8k.type.HardwareException; import a8k.type.appret.AppRet; import a8k.type.cfg.Pos2d; @@ -14,8 +14,7 @@ import jakarta.annotation.Resource; import org.springframework.stereotype.Component; @Component -@EngineerPageTab(name = "校准工具-位置校准工具", order = EnginnerPageTabOrder.PositionCalibration) -@EnginnerPageParams(service = PositionCalibration.class) +@EngineerPageTab(cfg = EnginnerPageTabCfg.PositionCalibration) public class PositionCalibration { @Resource diff --git a/src/main/java/a8k/service/devicectrl/commonctrl/HardwareCommonCtrl.java b/src/main/java/a8k/service/devicectrl/commonctrl/HardwareCommonCtrl.java index 367b6c0..f0e4fda 100644 --- a/src/main/java/a8k/service/devicectrl/commonctrl/HardwareCommonCtrl.java +++ b/src/main/java/a8k/service/devicectrl/commonctrl/HardwareCommonCtrl.java @@ -6,7 +6,7 @@ import a8k.type.appret.AppRet; import a8k.controler.engineer.utils.EngineerPageTab; import a8k.controler.engineer.utils.EnginnerPageAction; import a8k.controler.engineer.utils.EnginnerPageParams; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; import a8k.hardware.A8kCanBusService; import a8k.hardware.type.a8kcanprotocol.A8kEcode; import a8k.hardware.type.a8kcanprotocol.IOId; @@ -18,8 +18,7 @@ import org.slf4j.Logger; import org.springframework.stereotype.Component; @Component -@EngineerPageTab(name = "硬件控制-通用控制", order = EnginnerPageTabOrder.HardwareCommonCtrl) -@EnginnerPageParams(service = HardwareCommonCtrl.class) +@EngineerPageTab(cfg = EnginnerPageTabCfg.HardwareCommonCtrl) public class HardwareCommonCtrl { static Logger logger = org.slf4j.LoggerFactory.getLogger(HardwareCommonCtrl.class); diff --git a/src/main/java/a8k/service/devicectrl/ctrl/HbotControlService.java b/src/main/java/a8k/service/devicectrl/ctrl/HbotControlService.java index dd8316e..d0fd5ea 100644 --- a/src/main/java/a8k/service/devicectrl/ctrl/HbotControlService.java +++ b/src/main/java/a8k/service/devicectrl/ctrl/HbotControlService.java @@ -1,6 +1,6 @@ package a8k.service.devicectrl.ctrl; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; import a8k.type.ConsumableGroup; import a8k.type.HardwareException; import a8k.type.appret.AppRet; @@ -24,8 +24,7 @@ import org.springframework.stereotype.Component; * Hbot控制服务 */ @Component -@EngineerPageTab(name = "硬件-Hbot控制", order = EnginnerPageTabOrder.HbotControlService) -@EnginnerPageParams(service = HbotControlService.class) +@EngineerPageTab(cfg = EnginnerPageTabCfg.HbotControlService) public class HbotControlService { static Logger logger = LoggerFactory.getLogger(HbotControlService.class); diff --git a/src/main/java/a8k/service/devicectrl/ctrl/ReactionPlatesTransmitCtrl.java b/src/main/java/a8k/service/devicectrl/ctrl/ReactionPlatesTransmitCtrl.java index 3208543..fe9e317 100644 --- a/src/main/java/a8k/service/devicectrl/ctrl/ReactionPlatesTransmitCtrl.java +++ b/src/main/java/a8k/service/devicectrl/ctrl/ReactionPlatesTransmitCtrl.java @@ -1,6 +1,6 @@ package a8k.service.devicectrl.ctrl; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; import a8k.utils.opt_algo.A8kOptAlgo; import a8k.type.*; import a8k.type.appret.AppRet; @@ -22,8 +22,7 @@ import java.util.ArrayList; import java.util.List; @Component -@EngineerPageTab(name = "硬件控制-反应板条搬移", order = EnginnerPageTabOrder.ReactionPlatesTransmitCtrl) -@EnginnerPageParams(service = ReactionPlatesTransmitCtrl.class) +@EngineerPageTab(cfg = EnginnerPageTabCfg.ReactionPlatesTransmitCtrl) public class ReactionPlatesTransmitCtrl { static Logger logger = LoggerFactory.getLogger(ReactionPlatesTransmitCtrl.class); EnginnerParamReader hpReader = new EnginnerParamReader(ReactionPlatesTransmitCtrl.class); diff --git a/src/main/java/a8k/service/devicectrl/ctrl/SamplesPreProcesCtrl.java b/src/main/java/a8k/service/devicectrl/ctrl/SamplesPreProcesCtrl.java index d3bfe4a..fdd0087 100644 --- a/src/main/java/a8k/service/devicectrl/ctrl/SamplesPreProcesCtrl.java +++ b/src/main/java/a8k/service/devicectrl/ctrl/SamplesPreProcesCtrl.java @@ -1,6 +1,6 @@ package a8k.service.devicectrl.ctrl; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; import a8k.type.HardwareException; import a8k.type.appret.AppRet; import a8k.controler.engineer.utils.*; @@ -18,8 +18,7 @@ import org.springframework.stereotype.Component; @Component -@EngineerPageTab(name = "硬件控制-样本预处理模块", order = EnginnerPageTabOrder.SamplesPreProcesCtrl) -@EnginnerPageParams(service = SamplesPreProcesCtrl.class) +@EngineerPageTab(cfg = EnginnerPageTabCfg.SamplesPreProcesCtrl) public class SamplesPreProcesCtrl { static Logger logger = LoggerFactory.getLogger(SamplesPreProcesCtrl.class); diff --git a/src/main/java/a8k/service/devicectrl/ctrl/TubeRackMoveCtrl.java b/src/main/java/a8k/service/devicectrl/ctrl/TubeRackMoveCtrl.java index 06eeefc..3206f3f 100644 --- a/src/main/java/a8k/service/devicectrl/ctrl/TubeRackMoveCtrl.java +++ b/src/main/java/a8k/service/devicectrl/ctrl/TubeRackMoveCtrl.java @@ -1,6 +1,6 @@ package a8k.service.devicectrl.ctrl; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; import a8k.type.HardwareException; import a8k.type.TargetPosMeasureDirection; import a8k.type.appret.AppRet; @@ -18,8 +18,7 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; @Component -@EngineerPageTab(name = "硬件控制-进出料", order = EnginnerPageTabOrder.TubeRackMoveCtrl) -@EnginnerPageParams(service = TubeRackMoveCtrl.class) +@EngineerPageTab(cfg = EnginnerPageTabCfg.TubeRackMoveCtrl) public class TubeRackMoveCtrl { static Logger logger = LoggerFactory.getLogger(TubeRackMoveCtrl.class); diff --git a/src/main/java/a8k/service/devicectrl/param/DebugParam.java b/src/main/java/a8k/service/devicectrl/param/DebugParam.java index 0b0892a..1b4adba 100644 --- a/src/main/java/a8k/service/devicectrl/param/DebugParam.java +++ b/src/main/java/a8k/service/devicectrl/param/DebugParam.java @@ -3,11 +3,11 @@ package a8k.service.devicectrl.param; import a8k.controler.engineer.utils.EngineerPageTab; import a8k.controler.engineer.utils.EnginnerPageAction; import a8k.controler.engineer.utils.EnginnerPageStatu; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; import org.springframework.stereotype.Component; @Component -@EngineerPageTab(name = "调试-代码调试", order = EnginnerPageTabOrder.CodeDebugParam) +@EngineerPageTab(cfg = EnginnerPageTabCfg.DebugParam) public class DebugParam { Boolean debugMode = false; diff --git a/src/main/java/a8k/service/devicectrl/param/PosParam.java b/src/main/java/a8k/service/devicectrl/param/PosParam.java index ee59c34..28c5925 100644 --- a/src/main/java/a8k/service/devicectrl/param/PosParam.java +++ b/src/main/java/a8k/service/devicectrl/param/PosParam.java @@ -1,13 +1,12 @@ package a8k.service.devicectrl.param; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; import a8k.type.cfg.*; import a8k.controler.engineer.utils.*; import org.springframework.stereotype.Component; @Component -@EngineerPageTab(name = "硬件参数-坐标参数", order = EnginnerPageTabOrder.PosParam) -@EnginnerPageParams(service = PosParam.class) +@EngineerPageTab(cfg = EnginnerPageTabCfg.PosParam) public class PosParam { EnginnerParamReader hpReader = new EnginnerParamReader(PosParam.class); diff --git a/src/main/java/a8k/service/devicectrl/param/TimeParam.java b/src/main/java/a8k/service/devicectrl/param/TimeParam.java index 85a5123..6ade34d 100644 --- a/src/main/java/a8k/service/devicectrl/param/TimeParam.java +++ b/src/main/java/a8k/service/devicectrl/param/TimeParam.java @@ -1,13 +1,12 @@ package a8k.service.devicectrl.param; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; import a8k.controler.engineer.utils.*; import org.springframework.stereotype.Component; @Component -@EngineerPageTab(name = "硬件参数-时间参数", order = EnginnerPageTabOrder.TimeParam) -@EnginnerPageParams(service = TimeParam.class) +@EngineerPageTab(cfg = EnginnerPageTabCfg.TimeParam) public class TimeParam { EnginnerParamReader hpReader = new EnginnerParamReader(EnginnerPageParams.class); diff --git a/src/main/java/a8k/service/devicectrl/status/DeviceStatus.java b/src/main/java/a8k/service/devicectrl/status/DeviceStatus.java index 005987e..d90f509 100644 --- a/src/main/java/a8k/service/devicectrl/status/DeviceStatus.java +++ b/src/main/java/a8k/service/devicectrl/status/DeviceStatus.java @@ -3,7 +3,7 @@ package a8k.service.devicectrl.status; import a8k.type.HardwareException; import a8k.controler.engineer.utils.EngineerPageTab; import a8k.controler.engineer.utils.EnginnerPageStatu; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; import a8k.hardware.A8kCanBusService; import a8k.hardware.type.a8kcanprotocol.IOId; import a8k.hardware.type.a8kcanprotocol.MId; @@ -12,7 +12,7 @@ import jakarta.annotation.Resource; import org.springframework.stereotype.Component; @Component -@EngineerPageTab(name = "硬件状态-状态", order = EnginnerPageTabOrder.DeviceStatus) +@EngineerPageTab(cfg = EnginnerPageTabCfg.DeviceStatus) public class DeviceStatus { @Resource A8kCanBusService canBus; diff --git a/src/main/java/a8k/service/devicectrl/testscript/TestScript.java b/src/main/java/a8k/service/devicectrl/testscript/TestScript.java index d21b748..9303561 100644 --- a/src/main/java/a8k/service/devicectrl/testscript/TestScript.java +++ b/src/main/java/a8k/service/devicectrl/testscript/TestScript.java @@ -1,6 +1,6 @@ package a8k.service.devicectrl.testscript; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; import a8k.type.ConsumableGroup; import a8k.type.HardwareException; import a8k.type.IncubatorPos; @@ -30,8 +30,7 @@ import java.util.HashMap; import java.util.Map; @Component -@EngineerPageTab(name = "测试-测试脚本", order = EnginnerPageTabOrder.TestScript) -@EnginnerPageParams(service = TestScript.class) +@EngineerPageTab(cfg = EnginnerPageTabCfg.TestScript) public class TestScript { static Logger logger = LoggerFactory.getLogger(TestScript.class); diff --git a/src/main/java/a8k/service/project_mgr/AppProjectItemMgrService.java b/src/main/java/a8k/service/project_mgr/AppProjectItemMgrService.java index 8c3b6af..8c7a20a 100644 --- a/src/main/java/a8k/service/project_mgr/AppProjectItemMgrService.java +++ b/src/main/java/a8k/service/project_mgr/AppProjectItemMgrService.java @@ -1,7 +1,7 @@ package a8k.service.project_mgr; -import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder; +import a8k.controler.engineer.pagecontrol.EnginnerPageTabCfg; import a8k.controler.engineer.pagecontrol.TabDisplay; import a8k.controler.engineer.utils.*; import a8k.baseservice.appeventbus.AppEventListener; @@ -28,7 +28,7 @@ import java.util.List; import java.util.Map; @Component -@EngineerPageTab(name = "应用-项目管理", order = EnginnerPageTabOrder.AppProjectItemMgrService, display = TabDisplay.AppProjectItemMgrService) +@EngineerPageTab(cfg = EnginnerPageTabCfg.AppProjectItemMgrService) public class AppProjectItemMgrService implements AppEventListener { static Logger logger = org.slf4j.LoggerFactory.getLogger(AppProjectItemMgrService.class); diff --git a/src/main/java/a8k/service/usermgr/AppUserMgrService.java b/src/main/java/a8k/service/usermgr/AppUserMgrService.java deleted file mode 100644 index 3816595..0000000 --- a/src/main/java/a8k/service/usermgr/AppUserMgrService.java +++ /dev/null @@ -1,158 +0,0 @@ -package a8k.service.usermgr; - -import a8k.type.appret.AppRet; -import a8k.controler.engineer.utils.EnginnerPageAction; -import a8k.dbservice.AppUser; -import a8k.hardware.type.a8kcanprotocol.A8kEcode; -import com.iflytop.uf.UfActiveRecord; -import jakarta.annotation.PostConstruct; -import org.slf4j.Logger; -import org.springframework.stereotype.Component; - -import java.util.List; -import java.util.Map; - - -@Component -//@EngineerPageTab(name = "应用-用户管理", order = EnginnerPageTabOrder.AppUserMgrService) -public class AppUserMgrService { - static Logger logger = org.slf4j.LoggerFactory.getLogger(AppUserMgrService.class); - - static class ORDER { - static final int login = 1; - static final int getLoginUsr = 2; - static final int getUsrlist = 3; - static final int addUser = 5; - static final int delUser = 6; - static final int modifyUser = 7; - static final int modifyUsrPwd = 8; - static final int modifyUsrRole = 9; - static final int verifyUser = 10; - - } - - AppUser loginUsr; - - @PostConstruct - public void init() { - logger.info("UserMgrService init"); - AppUser admin = dbGetUser("Admin"); - if (admin == null) { - admin = new AppUser(); - admin.account = "Admin"; - admin.password = "0000"; - admin.isAdmin = 1; - admin.isBuiltInUser = 1; - admin.save(); - } - - } - - List dbGetUserList() { - return UfActiveRecord.find(AppUser.class); - } - - AppUser dbGetUser(String account) { - return UfActiveRecord.findOne(AppUser.class, Map.of("account", account)); - } - - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - // EXT FUNC - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - - @EnginnerPageAction(name = "用户登录", order = ORDER.login) - public AppRet login(String account, String password) { - var user = dbGetUser(account); - if (user == null) { - return AppRet.fail(A8kEcode.UsrNotExitError); - } - if (!user.matchPassword(password)) { - return AppRet.fail(A8kEcode.PasswdError); - } - loginUsr = user; - return AppRet.success(user); - } - - @EnginnerPageAction(name = "获取当前用户", order = ORDER.getLoginUsr) - public AppRet getLoginUsr() { - return AppRet.success(loginUsr); - } - - @EnginnerPageAction(name = "获取用户列表", order = ORDER.getUsrlist) - public AppRet> getUsrlist() { - return AppRet.success(dbGetUserList()); - } - - - @EnginnerPageAction(name = "用户添加", order = ORDER.addUser) - public AppRet addUser(String account, String password, Integer isAdmin) { - if (dbGetUser(account) != null) { - return AppRet.fail(A8kEcode.UsrExistError); - } - var user = new AppUser(); - user.account = account; - user.password = password; - user.isAdmin = isAdmin; - user.save(); - return AppRet.success(user); - } - - @EnginnerPageAction(name = "删除用户", order = ORDER.delUser) - public AppRet delUser(String account) { - var user = dbGetUser(account); - if (user == null) { - return AppRet.fail(A8kEcode.UsrNotExitError); - } - if (user.isBuiltInUser == 1) { - return AppRet.fail(A8kEcode.UsrNotAllowBeDeleted); - } - user.delete(); - return AppRet.success(user); - } - - @EnginnerPageAction(name = "修改用户", order = ORDER.modifyUser) - public AppRet modifyUser(String account, String password, Integer isAdmin) { - var user = dbGetUser(account); - if (user == null) { - return AppRet.fail(A8kEcode.UsrNotExitError); - } - user.password = password; - user.isAdmin = isAdmin; - user.save(); - return AppRet.success(user); - } - - - @EnginnerPageAction(name = "修改用户密码", order = ORDER.modifyUsrPwd) - public AppRet modifyUsrPwd(String account, String password) { - var user = dbGetUser(account); - if (user == null) { - return AppRet.fail(A8kEcode.UsrNotExitError); - } - user.password = password; - return AppRet.success(user); - } - - @EnginnerPageAction(name = "修改用户权限", order = ORDER.modifyUsrRole) - public AppRet modifyUsrRole(String account, Boolean isAdmin) { - var user = dbGetUser(account); - if (user == null) { - return AppRet.fail(A8kEcode.UsrNotExitError); - } - user.isAdmin = isAdmin ? 1 : 0; - return AppRet.success(user); - } - - @EnginnerPageAction(name = "用户验证", order = ORDER.verifyUser) - public AppRet verifyUser(String account, String password) { - var user = dbGetUser(account); - if (user == null) { - return AppRet.fail(A8kEcode.UsrNotExitError); - } - if (!user.matchPassword(password)) { - return AppRet.fail(A8kEcode.PasswdError); - } - return AppRet.success(true); - } - -}