diff --git a/app.db b/app.db
index c681789..a0307a4 100644
Binary files a/app.db and b/app.db differ
diff --git a/pom.xml b/pom.xml
index bb586cd..d145171 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.2.5
+ 3.2.6
com.iflytop
@@ -28,6 +28,11 @@
RELEASE
compile
+
+ org.projectlombok
+ lombok
+ annotationProcessor
+
diff --git a/src/main/java/a8k/controler/engineer/utils/EnginnerPageTabOrder.java b/src/main/java/a8k/controler/engineer/pagecontrol/EnginnerPageTabOrder.java
similarity index 90%
rename from src/main/java/a8k/controler/engineer/utils/EnginnerPageTabOrder.java
rename to src/main/java/a8k/controler/engineer/pagecontrol/EnginnerPageTabOrder.java
index 44a491d..2c227d0 100644
--- a/src/main/java/a8k/controler/engineer/utils/EnginnerPageTabOrder.java
+++ b/src/main/java/a8k/controler/engineer/pagecontrol/EnginnerPageTabOrder.java
@@ -1,4 +1,4 @@
-package a8k.controler.engineer.utils;
+package a8k.controler.engineer.pagecontrol;
public enum EnginnerPageTabOrder {
diff --git a/src/main/java/a8k/controler/engineer/utils/TabDisplay.java b/src/main/java/a8k/controler/engineer/pagecontrol/TabDisplay.java
similarity index 96%
rename from src/main/java/a8k/controler/engineer/utils/TabDisplay.java
rename to src/main/java/a8k/controler/engineer/pagecontrol/TabDisplay.java
index a98ce04..7efde0a 100644
--- a/src/main/java/a8k/controler/engineer/utils/TabDisplay.java
+++ b/src/main/java/a8k/controler/engineer/pagecontrol/TabDisplay.java
@@ -1,4 +1,4 @@
-package a8k.controler.engineer.utils;
+package a8k.controler.engineer.pagecontrol;
public class TabDisplay {
public static final boolean AppCtrlService = false;
diff --git a/src/main/java/a8k/controler/engineer/utils/EngineerPageTab.java b/src/main/java/a8k/controler/engineer/utils/EngineerPageTab.java
index fac565e..7b3e5f7 100644
--- a/src/main/java/a8k/controler/engineer/utils/EngineerPageTab.java
+++ b/src/main/java/a8k/controler/engineer/utils/EngineerPageTab.java
@@ -1,4 +1,6 @@
package a8k.controler.engineer.utils;
+import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder;
+
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
diff --git a/src/main/java/a8k/db/AppSettingDBService.java b/src/main/java/a8k/db/AppSettingDBService.java
new file mode 100644
index 0000000..5b302a9
--- /dev/null
+++ b/src/main/java/a8k/db/AppSettingDBService.java
@@ -0,0 +1,63 @@
+package a8k.db;
+
+import a8k.db.bean.AppSetting;
+import a8k.db.mapper.AppSettingMapper;
+import jakarta.annotation.PostConstruct;
+import jakarta.annotation.Resource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Component;
+
+import java.sql.ResultSet;
+import java.util.List;
+
+@Component
+public class AppSettingDBService {
+ public static final Logger logger = LoggerFactory.getLogger(AppSettingDBService.class);
+
+
+ @Resource
+ JdbcTemplate jdbcTemplate;
+
+ @Resource
+ AppSettingMapper mapper;
+
+ @PostConstruct
+ void init() {
+ var allSettings = getAllSettings();
+ for (var setting : allSettings) {
+ logger.info("setting: {}", setting);
+ }
+ isTableExist("");
+ }
+
+ public List getAllSettings() {
+ return jdbcTemplate.query("select * from AppSettingTable;", (ResultSet rs, int rowNum) -> {
+ AppSetting setting = new AppSetting();
+ setting.type = rs.getString("type");
+ setting.tab = rs.getString("tab");
+ setting.name = rs.getString("name");
+ setting.display = rs.getInt("display");
+ setting.priority = rs.getInt("priority");
+ setting.checkValRange = rs.getInt("checkValRange");
+ setting.minVal = rs.getDouble("minVal");
+ setting.maxVal = rs.getDouble("maxVal");
+ setting.valueEnumRange = rs.getString("valueEnumRange");
+ setting.value = rs.getString("value");
+ return setting;
+ });
+ }
+
+ public boolean isTableExist(String tableName) {
+ String sql = "select * from sqlite_master where type = 'table'";
+ List result = jdbcTemplate.query(sql, (ResultSet rs, int rowNum) -> {
+ return rs.toString();
+ });
+ for (String s : result) {
+ logger.info("table: {}", s);
+ }
+ return !result.isEmpty();
+ }
+
+}
diff --git a/src/main/java/a8k/db/bean/AppSetting.java b/src/main/java/a8k/db/bean/AppSetting.java
new file mode 100644
index 0000000..98c39cb
--- /dev/null
+++ b/src/main/java/a8k/db/bean/AppSetting.java
@@ -0,0 +1,27 @@
+package a8k.db.bean;
+
+import a8k.utils.ZJsonHelper;
+
+public class AppSetting {
+ public String id = null;
+ public String type; //支持类型范围 AppSettingType
+ public String tab; //返回名字为英文,前端需要根据英文名字进行翻译
+ public String name; //返回名字为英文,前端需要根据英文名字进行翻译
+ public Integer display = 1;// 是否显示
+ public Integer priority;// 优先级 数值越大越靠后
+ //
+ //整形和浮点型的单位数值范围
+ //
+ public Integer checkValRange;//是否检查输入参数范围
+ public Double minVal; //最小值
+ public Double maxVal; //最大值
+ //枚举单位数值范围
+ public String valueEnumRange; //枚举范围,用逗号分隔
+ //值
+ public String value; //Value
+
+ @Override
+ public String toString() {
+ return ZJsonHelper.objectToJson(this);
+ }
+}
diff --git a/src/main/java/a8k/db/mapper/AppSettingMapper.java b/src/main/java/a8k/db/mapper/AppSettingMapper.java
new file mode 100644
index 0000000..e7b82f2
--- /dev/null
+++ b/src/main/java/a8k/db/mapper/AppSettingMapper.java
@@ -0,0 +1,11 @@
+package a8k.db.mapper;
+
+import a8k.db.bean.AppSetting;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+public interface AppSettingMapper {
+ @Select("SELECT * FROM AppSettingTable")
+ List getAllSetting();
+}
diff --git a/src/main/java/a8k/service/appcfgs/AppCfgMgrService.java b/src/main/java/a8k/service/appcfgs/AppCfgMgrService.java
index 1db9913..f8c245e 100644
--- a/src/main/java/a8k/service/appcfgs/AppCfgMgrService.java
+++ b/src/main/java/a8k/service/appcfgs/AppCfgMgrService.java
@@ -3,8 +3,8 @@ 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.utils.EnginnerPageTabOrder;
-import a8k.controler.engineer.utils.TabDisplay;
+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;
diff --git a/src/main/java/a8k/service/appconsumable/AppConsumablesMgrService.java b/src/main/java/a8k/service/appconsumable/AppConsumablesMgrService.java
index 8e9381a..bf1f7fd 100644
--- a/src/main/java/a8k/service/appconsumable/AppConsumablesMgrService.java
+++ b/src/main/java/a8k/service/appconsumable/AppConsumablesMgrService.java
@@ -3,8 +3,8 @@ 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.utils.EnginnerPageTabOrder;
-import a8k.controler.engineer.utils.TabDisplay;
+import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder;
+import a8k.controler.engineer.pagecontrol.TabDisplay;
import a8k.service.ProjectColorAllocer;
import a8k.service.appconsumable.base.Consumables;
import a8k.service.appconsumable.base.ReactantItem;
diff --git a/src/main/java/a8k/service/appctrl/AppCtrlService.java b/src/main/java/a8k/service/appctrl/AppCtrlService.java
index dcb911d..ce2c2dc 100644
--- a/src/main/java/a8k/service/appctrl/AppCtrlService.java
+++ b/src/main/java/a8k/service/appctrl/AppCtrlService.java
@@ -3,8 +3,8 @@ 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.utils.EnginnerPageTabOrder;
-import a8k.controler.engineer.utils.TabDisplay;
+import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder;
+import a8k.controler.engineer.pagecontrol.TabDisplay;
import org.slf4j.Logger;
import org.springframework.stereotype.Component;
diff --git a/src/main/java/a8k/service/appfrontend/AppFrontEndEventRouter.java b/src/main/java/a8k/service/appfrontend/AppFrontEndEventRouter.java
index 7c724d1..de9eb9b 100644
--- a/src/main/java/a8k/service/appfrontend/AppFrontEndEventRouter.java
+++ b/src/main/java/a8k/service/appfrontend/AppFrontEndEventRouter.java
@@ -1,7 +1,7 @@
package a8k.service.appfrontend;
-import a8k.controler.engineer.utils.EnginnerPageTabOrder;
-import a8k.controler.engineer.utils.TabDisplay;
+import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder;
+import a8k.controler.engineer.pagecontrol.TabDisplay;
import a8k.baseservice.appeventbus.AppEventListener;
import a8k.type.appret.AppRet;
import a8k.controler.engineer.utils.EngineerPageTab;
diff --git a/src/main/java/a8k/service/appsettings/AppSettingsMgr.java b/src/main/java/a8k/service/appsettings/AppSettingsMgr.java
index 68dafe6..ee22881 100644
--- a/src/main/java/a8k/service/appsettings/AppSettingsMgr.java
+++ b/src/main/java/a8k/service/appsettings/AppSettingsMgr.java
@@ -3,8 +3,8 @@ 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.utils.EnginnerPageTabOrder;
-import a8k.controler.engineer.utils.TabDisplay;
+import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder;
+import a8k.controler.engineer.pagecontrol.TabDisplay;
import a8k.dbservice.AppSetting;
import a8k.service.appsettings.base.AppSettingTab;
import a8k.service.appsettings.base.AppOptionName;
diff --git a/src/main/java/a8k/service/appstate/AppStateMgrService.java b/src/main/java/a8k/service/appstate/AppStateMgrService.java
index 441b624..c11296d 100644
--- a/src/main/java/a8k/service/appstate/AppStateMgrService.java
+++ b/src/main/java/a8k/service/appstate/AppStateMgrService.java
@@ -2,8 +2,8 @@ package a8k.service.appstate;
import a8k.controler.engineer.utils.EngineerPageTab;
import a8k.controler.engineer.utils.EnginnerPageAction;
-import a8k.controler.engineer.utils.EnginnerPageTabOrder;
-import a8k.controler.engineer.utils.TabDisplay;
+import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder;
+import a8k.controler.engineer.pagecontrol.TabDisplay;
import a8k.dbservice.ProjectInfo;
import a8k.service.appconsumable.base.Consumables;
import a8k.service.appbase.A8kDeviceState;
diff --git a/src/main/java/a8k/service/devicectrl/calibration/PositionCalibration.java b/src/main/java/a8k/service/devicectrl/calibration/PositionCalibration.java
index 65ea09f..b47aa35 100644
--- a/src/main/java/a8k/service/devicectrl/calibration/PositionCalibration.java
+++ b/src/main/java/a8k/service/devicectrl/calibration/PositionCalibration.java
@@ -1,5 +1,6 @@
package a8k.service.devicectrl.calibration;
+import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder;
import a8k.type.HardwareException;
import a8k.type.appret.AppRet;
import a8k.type.cfg.Pos2d;
diff --git a/src/main/java/a8k/service/devicectrl/commonctrl/HardwareCommonCtrl.java b/src/main/java/a8k/service/devicectrl/commonctrl/HardwareCommonCtrl.java
index 0b288f5..db141bb 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.utils.EnginnerPageTabOrder;
+import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder;
import a8k.hardware.A8kCanBusService;
import a8k.type.a8kcanprotocol.A8kEcode;
import a8k.type.a8kcanprotocol.IOId;
diff --git a/src/main/java/a8k/service/devicectrl/ctrl/HbotControlService.java b/src/main/java/a8k/service/devicectrl/ctrl/HbotControlService.java
index a11937a..b9901b7 100644
--- a/src/main/java/a8k/service/devicectrl/ctrl/HbotControlService.java
+++ b/src/main/java/a8k/service/devicectrl/ctrl/HbotControlService.java
@@ -1,5 +1,6 @@
package a8k.service.devicectrl.ctrl;
+import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder;
import a8k.type.ConsumableGroup;
import a8k.type.HardwareException;
import a8k.type.appret.AppRet;
diff --git a/src/main/java/a8k/service/devicectrl/ctrl/ReactionPlatesTransmitCtrl.java b/src/main/java/a8k/service/devicectrl/ctrl/ReactionPlatesTransmitCtrl.java
index 15b8199..309c822 100644
--- a/src/main/java/a8k/service/devicectrl/ctrl/ReactionPlatesTransmitCtrl.java
+++ b/src/main/java/a8k/service/devicectrl/ctrl/ReactionPlatesTransmitCtrl.java
@@ -1,5 +1,6 @@
package a8k.service.devicectrl.ctrl;
+import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder;
import a8k.utils.opt_algo.A8kOptAlgo;
import a8k.type.*;
import a8k.type.appret.AppRet;
diff --git a/src/main/java/a8k/service/devicectrl/ctrl/SamplesPreProcesCtrl.java b/src/main/java/a8k/service/devicectrl/ctrl/SamplesPreProcesCtrl.java
index 6bd90ee..03ff87a 100644
--- a/src/main/java/a8k/service/devicectrl/ctrl/SamplesPreProcesCtrl.java
+++ b/src/main/java/a8k/service/devicectrl/ctrl/SamplesPreProcesCtrl.java
@@ -1,5 +1,6 @@
package a8k.service.devicectrl.ctrl;
+import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder;
import a8k.type.HardwareException;
import a8k.type.appret.AppRet;
import a8k.controler.engineer.utils.*;
diff --git a/src/main/java/a8k/service/devicectrl/ctrl/TubeRackMoveCtrl.java b/src/main/java/a8k/service/devicectrl/ctrl/TubeRackMoveCtrl.java
index d9b0bb7..db8818c 100644
--- a/src/main/java/a8k/service/devicectrl/ctrl/TubeRackMoveCtrl.java
+++ b/src/main/java/a8k/service/devicectrl/ctrl/TubeRackMoveCtrl.java
@@ -1,5 +1,6 @@
package a8k.service.devicectrl.ctrl;
+import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder;
import a8k.type.HardwareException;
import a8k.type.TargetPosMeasureDirection;
import a8k.type.appret.AppRet;
diff --git a/src/main/java/a8k/service/devicectrl/param/DebugParam.java b/src/main/java/a8k/service/devicectrl/param/DebugParam.java
index 1d0ba24..0b0892a 100644
--- a/src/main/java/a8k/service/devicectrl/param/DebugParam.java
+++ b/src/main/java/a8k/service/devicectrl/param/DebugParam.java
@@ -3,7 +3,7 @@ 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.utils.EnginnerPageTabOrder;
+import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder;
import org.springframework.stereotype.Component;
@Component
diff --git a/src/main/java/a8k/service/devicectrl/param/PosParam.java b/src/main/java/a8k/service/devicectrl/param/PosParam.java
index 467dc2e..ee59c34 100644
--- a/src/main/java/a8k/service/devicectrl/param/PosParam.java
+++ b/src/main/java/a8k/service/devicectrl/param/PosParam.java
@@ -1,5 +1,6 @@
package a8k.service.devicectrl.param;
+import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder;
import a8k.type.cfg.*;
import a8k.controler.engineer.utils.*;
import org.springframework.stereotype.Component;
diff --git a/src/main/java/a8k/service/devicectrl/param/TimeParam.java b/src/main/java/a8k/service/devicectrl/param/TimeParam.java
index 9c5b31c..85a5123 100644
--- a/src/main/java/a8k/service/devicectrl/param/TimeParam.java
+++ b/src/main/java/a8k/service/devicectrl/param/TimeParam.java
@@ -1,6 +1,7 @@
package a8k.service.devicectrl.param;
+import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder;
import a8k.controler.engineer.utils.*;
import org.springframework.stereotype.Component;
diff --git a/src/main/java/a8k/service/devicectrl/status/DeviceStatus.java b/src/main/java/a8k/service/devicectrl/status/DeviceStatus.java
index 142f2fc..1e2e78a 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.utils.EnginnerPageTabOrder;
+import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder;
import a8k.hardware.A8kCanBusService;
import a8k.type.a8kcanprotocol.IOId;
import a8k.type.a8kcanprotocol.MId;
diff --git a/src/main/java/a8k/service/devicectrl/testscript/TestScript.java b/src/main/java/a8k/service/devicectrl/testscript/TestScript.java
index 9c24496..0ba9fc1 100644
--- a/src/main/java/a8k/service/devicectrl/testscript/TestScript.java
+++ b/src/main/java/a8k/service/devicectrl/testscript/TestScript.java
@@ -1,5 +1,6 @@
package a8k.service.devicectrl.testscript;
+import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder;
import a8k.type.ConsumableGroup;
import a8k.type.HardwareException;
import a8k.type.IncubatorPos;
diff --git a/src/main/java/a8k/service/project_mgr/AppProjectItemMgrService.java b/src/main/java/a8k/service/project_mgr/AppProjectItemMgrService.java
index 4950288..0b294d4 100644
--- a/src/main/java/a8k/service/project_mgr/AppProjectItemMgrService.java
+++ b/src/main/java/a8k/service/project_mgr/AppProjectItemMgrService.java
@@ -1,6 +1,8 @@
package a8k.service.project_mgr;
+import a8k.controler.engineer.pagecontrol.EnginnerPageTabOrder;
+import a8k.controler.engineer.pagecontrol.TabDisplay;
import a8k.controler.engineer.utils.*;
import a8k.baseservice.appeventbus.AppEventListener;
import a8k.type.HardwareException;
diff --git a/src/main/java/a8k/utils/ZJdbcHelper.java b/src/main/java/a8k/utils/ZJdbcHelper.java
new file mode 100644
index 0000000..20e62ec
--- /dev/null
+++ b/src/main/java/a8k/utils/ZJdbcHelper.java
@@ -0,0 +1,12 @@
+package a8k.utils;
+
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ZJdbcHelper {
+ String resultSet2String(ResultSet rs) {
+ return "";
+ }
+}
diff --git a/src/main/java/a8k/utils/ZJsonHelper.java b/src/main/java/a8k/utils/ZJsonHelper.java
new file mode 100644
index 0000000..f51a7e2
--- /dev/null
+++ b/src/main/java/a8k/utils/ZJsonHelper.java
@@ -0,0 +1,17 @@
+package a8k.utils;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class ZJsonHelper {
+ public static String objectToJson(Object obj) {
+ ObjectMapper mapper = new ObjectMapper();
+
+ try {
+ return mapper.writeValueAsString(obj);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+
+}
diff --git a/src/main/java/com/iflytop/a800/BoditechA800Application.java b/src/main/java/com/iflytop/a800/BoditechA800Application.java
index fa33cc2..3933665 100644
--- a/src/main/java/com/iflytop/a800/BoditechA800Application.java
+++ b/src/main/java/com/iflytop/a800/BoditechA800Application.java
@@ -1,11 +1,13 @@
package com.iflytop.a800;
+import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan({"com.iflytop.uf", "com.iflytop.a800", "a8k"})
+@MapperScan({"a8k.db.mapper","com.iflytop.uf"})
public class BoditechA800Application {
public static void main(String[] args) {
SpringApplication.run(BoditechA800Application.class, args);