From 26f674ab0ae31a51ecad3bd5ea2f56df42624dd7 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 21 Sep 2024 20:17:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=85=8D=E7=BD=AE=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- app.db | Bin 204800 -> 212992 bytes .../extapi/pagecontrol/ExtApiTabConfig.java | 6 +- .../java/a8k/dbservice/AppSettingDBService.java | 218 +++++++++++++++++++++ src/main/java/a8k/dbservice/type/AppSetting.java | 55 ++++++ .../dbservice/type/appsetting/AppSettingName.java | 35 ++++ .../dbservice/type/appsetting/AppSettingTab.java | 12 ++ .../dbservice/type/appsetting/AppSettingType.java | 19 ++ .../appsetting/settingenum/AutoLogoutOption.java | 21 ++ .../type/appsetting/settingenum/LISIFType.java | 16 ++ .../appsetting/settingenum/LISProtocolEnum.java | 14 ++ .../appsetting/settingenum/LISSerialBaudrate.java | 6 + .../type/appsetting/settingenum/LISTypeEnum.java | 17 ++ .../type/appsetting/settingenum/LanguageType.java | 5 + src/main/java/a8k/olddbservice/AppSetting.java | 201 ------------------- src/main/java/a8k/service/app/AppSettingsMgr.java | 138 +++++++++++++ .../app/app_settings_mgr/AppSettingsMgr.java | 135 ------------- .../app/app_settings_mgr/base/AppOptionName.java | 35 ---- .../app/app_settings_mgr/base/AppSettingTab.java | 9 - .../app/app_settings_mgr/base/AppSettingType.java | 16 -- .../settingenum/AutoLogoutTime.java | 23 --- .../app_settings_mgr/settingenum/LISProtocol.java | 14 -- .../app/app_settings_mgr/settingenum/LISType.java | 17 -- src/main/java/a8k/utils/ZEnumHelper.java | 14 ++ .../com/iflytop/a800/BoditechA800Application.java | 2 +- 25 files changed, 575 insertions(+), 455 deletions(-) create mode 100644 src/main/java/a8k/dbservice/AppSettingDBService.java create mode 100644 src/main/java/a8k/dbservice/type/AppSetting.java create mode 100644 src/main/java/a8k/dbservice/type/appsetting/AppSettingName.java create mode 100644 src/main/java/a8k/dbservice/type/appsetting/AppSettingTab.java create mode 100644 src/main/java/a8k/dbservice/type/appsetting/AppSettingType.java create mode 100644 src/main/java/a8k/dbservice/type/appsetting/settingenum/AutoLogoutOption.java create mode 100644 src/main/java/a8k/dbservice/type/appsetting/settingenum/LISIFType.java create mode 100644 src/main/java/a8k/dbservice/type/appsetting/settingenum/LISProtocolEnum.java create mode 100644 src/main/java/a8k/dbservice/type/appsetting/settingenum/LISSerialBaudrate.java create mode 100644 src/main/java/a8k/dbservice/type/appsetting/settingenum/LISTypeEnum.java create mode 100644 src/main/java/a8k/dbservice/type/appsetting/settingenum/LanguageType.java delete mode 100644 src/main/java/a8k/olddbservice/AppSetting.java create mode 100644 src/main/java/a8k/service/app/AppSettingsMgr.java delete mode 100644 src/main/java/a8k/service/app/app_settings_mgr/AppSettingsMgr.java delete mode 100644 src/main/java/a8k/service/app/app_settings_mgr/base/AppOptionName.java delete mode 100644 src/main/java/a8k/service/app/app_settings_mgr/base/AppSettingTab.java delete mode 100644 src/main/java/a8k/service/app/app_settings_mgr/base/AppSettingType.java delete mode 100644 src/main/java/a8k/service/app/app_settings_mgr/settingenum/AutoLogoutTime.java delete mode 100644 src/main/java/a8k/service/app/app_settings_mgr/settingenum/LISProtocol.java delete mode 100644 src/main/java/a8k/service/app/app_settings_mgr/settingenum/LISType.java create mode 100644 src/main/java/a8k/utils/ZEnumHelper.java diff --git a/README.md b/README.md index 5e6d1d8..192345c 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ TODO: FrontEndEventRouter 前端事件路由器 - 用户服务: + 用户服务:(OK) 1.添加 2.删除 3.修改 diff --git a/app.db b/app.db index 152246acc7abe5f02584ddc6c704fda26d496127..1dcd7687f7149c172422f02171ef8aa433602101 100644 GIT binary patch delta 1750 zcmc&!O>g5w7`BtNO*e5|6;)A)qNW>FY1B;dc&3gmKqXDBs@gP;5~orRt8{FS+lVAo zZCdRI!YwN}!>O0OA;f_LNGrqz2`=y(I3O-?<+fT52*KEC)9j&8i367Hcjlevc|V>R z`|P{;*_rUstFyDq9LHhyTwQlRF3O?V<@3D{_V};%LXY3`uqz|iRV1L5hy}1lC7>!2 z2Fz8W1d~;$qMQab=(^IxL@O;sp(hvg_C2yDgjG)NqXuq5YP*Tx!@!T|*#mAaZ{0ZFnjz>cK=4MG>l z5?hfigfPN6RdHQbY$#w@B}iNuDgYzu0PG?MST1BDnxV>;Tmw>{U`VTX8fMBf==EtfD(i!AUX3iCFwljEP@}_r)KdEo6UBcuV0H ze;W}eec)}hoA81EAlXQO-bSEMKHQr2b@?}01ph?Mu;RGeAUe&YXE7_%d$H`|q{Q=#lN5yP@@bHl4vjh5I;7^D(8uv->dco-&A9l$@Z=7i# zQ2Xs2(ru9bK0{uI>~;FgozEUo(q%z=9 zXC@pD@xmv3eP&+lb8+D*Fa9F_AYKSh#Z2O-#HWeVL^ZJ>yb!);2j*Qt$wy*bI<+v( zMWbAD-7uv2 z)ifD;v!SyXO?|u4YVYWc=9W=Ag)7pERJd~!v|O*h3|*S`p~Iq57vH=Q$_OCpyYfMz z%!T-7=&rXq731b!S@d1Y8NJrpu5LBi&1yDGqheIo-*GwvY9ADvogVEUUrpC0eOkt+ ztu2nx%-y=)Wc63|w%I6G?iDwT7W+Delko*(f(1zBJU>D^pO z1BV9r1`eI_&>&`p2=-+!U2VeL4Vy4HI-wMV{nSD2x%IA04zSwIc1e gTg_mY4l&hIbAf8YaC?Tenp@j?n!jOjgZ&!*28Nf$i_yUYNdg5P zgzSpFQYNMcB05f_BG5%oK+$&~k`SB;Tg%pP6sDDGPhzk-Ad+%*nnG>BX getAllSettings() { + return jdbcTemplate.query("select * from " + tableName, this::rowMapper); + } + + public AppSetting getSettingByName(AppSettingName name) { + List settings = jdbcTemplate.query("select * from " + tableName + " where name = ?;", this::rowMapper, name.name()); + if (settings.isEmpty()) { + return null; + } + return settings.get(0); + } + + public List getSettingsByTab(AppSettingTab tab) { + return jdbcTemplate.query("select * from " + tableName + " where tab = ?;", this::rowMapper, tab.name()); + } + + public void clearAllSettings() { + jdbcTemplate.execute("delete from " + tableName); + } + + public void updateSetting(AppSettingName name, String val) { + jdbcTemplate.update("update " + tableName + " set value = ? where name = ?;", val, name.name()); + } + + public void addSetting(AppSetting setting) { + jdbcTemplate.update("insert into " + tableName + " (type, tab, name, display, minVal, maxVal, valueEnumRange, value) values (?, ?, ?, ?, ?, ?, ?, ?);", + setting.type != null ? setting.type.name() : null, + setting.tab != null ? setting.tab.name() : null, + setting.name != null ? setting.name.name() : null, + setting.display ? 1 : 0, + setting.minVal, + setting.maxVal, + setting.valueEnumRange != null ? String.join(",", setting.valueEnumRange) : null, + setting.value); + } + + + public void addIntegerSetting(AppSettingTab tab, AppSettingName name, Integer value, Integer minVal, Integer maxVal) { + AppSetting setting = new AppSetting(); + setting.type = AppSettingType.INTEGER; + setting.tab = tab; + setting.name = name; + setting.value = value.toString(); + setting.minVal = minVal.doubleValue(); + setting.maxVal = maxVal.doubleValue(); + addSetting(setting); + } + + public void addDoubleSetting(AppSettingTab tab, AppSettingName name, Double value, Double minVal, Double maxVal) { + AppSetting setting = new AppSetting(); + setting.type = AppSettingType.DOUBLE; + setting.tab = tab; + setting.name = name; + setting.value = value.toString(); + setting.minVal = minVal; + setting.maxVal = maxVal; + addSetting(setting); + } + + public void addStringSetting(AppSettingTab tab, AppSettingName name, String value) { + AppSetting setting = new AppSetting(); + setting.type = AppSettingType.STRING; + setting.tab = tab; + setting.name = name; + setting.value = value; + addSetting(setting); + } + + public void addBooleanSetting(AppSettingTab tab, AppSettingName name, Boolean value) { + AppSetting setting = new AppSetting(); + setting.type = AppSettingType.BOOLEAN; + setting.tab = tab; + setting.name = name; + setting.value = value.toString(); + addSetting(setting); + } + + public void addEnumSetting(AppSettingTab tab, AppSettingName name, Class valueEnumRange, Enum value) { + AppSetting setting = new AppSetting(); + setting.type = AppSettingType.ENUM; + setting.tab = tab; + setting.name = name; + setting.valueEnumRange = ZEnumHelper.enum2strs(valueEnumRange); + setting.value = value.name(); + addSetting(setting); + } + + public void addDateSetting(AppSettingTab tab, AppSettingName name) { + AppSetting setting = new AppSetting(); + setting.type = AppSettingType.DATE; + setting.tab = tab; + setting.name = name; + setting.value = ""; + addSetting(setting); + } + + public void addTimeSetting(AppSettingTab tab, AppSettingName name) { + AppSetting setting = new AppSetting(); + setting.type = AppSettingType.TIME; + setting.tab = tab; + setting.name = name; + setting.value = ""; + addSetting(setting); + } + + public void addTimeZoneSetting(AppSettingTab tab, AppSettingName name) { + AppSetting setting = new AppSetting(); + setting.type = AppSettingType.TIMEZONE; + setting.tab = tab; + setting.name = name; + setting.value = ""; + addSetting(setting); + } + + public void addIpSetting(AppSettingTab tab, AppSettingName name, String value) { + AppSetting setting = new AppSetting(); + setting.type = AppSettingType.IP; + setting.tab = tab; + setting.name = name; + setting.value = value; + addSetting(setting); + } + + public void addPortSetting(AppSettingTab tab, AppSettingName name, Integer value) { + AppSetting setting = new AppSetting(); + setting.type = AppSettingType.PORT; + setting.tab = tab; + setting.name = name; + setting.value = value.toString(); + addSetting(setting); + } + + public void addFixStringSetting(AppSettingTab tab, AppSettingName name, String value) { + AppSetting setting = new AppSetting(); + setting.type = AppSettingType.FIX_STRING; + setting.tab = tab; + setting.name = name; + setting.value = value; + addSetting(setting); + } + + public void addSettingVersion(Integer version) { + AppSetting setting = new AppSetting(); + setting.type = AppSettingType.INTEGER; + setting.name = AppSettingName.SETTING_PAGE_VERSION; + setting.value = version.toString(); + setting.display = false; + addSetting(setting); + } + +} diff --git a/src/main/java/a8k/dbservice/type/AppSetting.java b/src/main/java/a8k/dbservice/type/AppSetting.java new file mode 100644 index 0000000..eb0280f --- /dev/null +++ b/src/main/java/a8k/dbservice/type/AppSetting.java @@ -0,0 +1,55 @@ +package a8k.dbservice.type; + + +import a8k.dbservice.type.appsetting.AppSettingName; +import a8k.dbservice.type.appsetting.AppSettingTab; +import a8k.dbservice.type.appsetting.AppSettingType; +import a8k.utils.ZEnumHelper; +import a8k.utils.ZJsonHelper; +import com.fasterxml.jackson.annotation.JsonIgnore; + +public class AppSetting { + public int id = 0; + // + // 基础属性 + // + public AppSettingType type; // 支持类型范围 AppSettingType + public AppSettingTab tab; // 返回名字为英文,前端需要根据英文名字进行翻译 + public AppSettingName name; // 返回名字为英文,前端需要根据英文名字进行翻译 + public Boolean display = true;// 是否显示 + + // + //整形和浮点型的单位数值范围 + // + public Double minVal = 0.0; //最小值 + public Double maxVal = 0.0; //最大值 + + // + // 枚举单位数值范围 + // + public String[] valueEnumRange = {}; //枚举范围,用逗号分隔 + + // + //值 + // + public String value; //Value + + @Override + public String toString() { + return ZJsonHelper.objectToJson(this); + } + + @JsonIgnore + public Integer getValueAsInt() {return Integer.parseInt(value);} + + @JsonIgnore + public String getValueAsStr() {return value;} + + @JsonIgnore + public Boolean getValueAsBool() {return Boolean.parseBoolean(value);} + + + + + +} \ No newline at end of file diff --git a/src/main/java/a8k/dbservice/type/appsetting/AppSettingName.java b/src/main/java/a8k/dbservice/type/appsetting/AppSettingName.java new file mode 100644 index 0000000..42d0e88 --- /dev/null +++ b/src/main/java/a8k/dbservice/type/appsetting/AppSettingName.java @@ -0,0 +1,35 @@ +package a8k.dbservice.type.appsetting; + +public enum AppSettingName { + SETTING_PAGE_VERSION,// 用来更新配置项目 + //DEVICE + DATE,//日期 + TIME,//时间 + TIMEZONE,//时区 + LANGUAGE,//语言 + AUTO_PRINT,//是否自动打印 + AUTO_LOGOUT,//自动登出 + + //USR_MGR + + //RELEASE + DEVICE_SERIAL, + OS_VERSION, + APP_VERSION, + MCU_VERSION, + + //LIS + LIS_TYPE, + LIS_PROTOCOL, + LIS_IF, + LIS_AUTO_EXPORT, + LIS_SERIAL_BAUDRATE, + LIS_NET_IP, + LIS_NET_PORT, + + //NET + NET_IP, + NET_PORT, + +} + diff --git a/src/main/java/a8k/dbservice/type/appsetting/AppSettingTab.java b/src/main/java/a8k/dbservice/type/appsetting/AppSettingTab.java new file mode 100644 index 0000000..b9309bf --- /dev/null +++ b/src/main/java/a8k/dbservice/type/appsetting/AppSettingTab.java @@ -0,0 +1,12 @@ +package a8k.dbservice.type.appsetting; + +/** + * 配置页面 + */ +public enum AppSettingTab { + DEVICE, //设备配置页面 + USRMGR, //用户管理页面 + LIS, //LIS配置页面 + NETWORK,//网络管理页面 + RELEASE,//版本信息页面 +} diff --git a/src/main/java/a8k/dbservice/type/appsetting/AppSettingType.java b/src/main/java/a8k/dbservice/type/appsetting/AppSettingType.java new file mode 100644 index 0000000..f70c4cf --- /dev/null +++ b/src/main/java/a8k/dbservice/type/appsetting/AppSettingType.java @@ -0,0 +1,19 @@ +package a8k.dbservice.type.appsetting; + +// +// 配置类型 +// +public enum AppSettingType { + INTEGER,//整数 + DOUBLE,//浮点,前端一律显示两位小数 + STRING,//字符串 + BOOLEAN,//布尔 + DATE,//日期, + TIME,//时间, + TIMEZONE,//时区 + IP,//点分十进制字符串存入数据库,前端显示为字符串 + PORT,//端口号 + ENUM,//枚举 + FIX_STRING,//固定字符串,不可编辑 + ; +} diff --git a/src/main/java/a8k/dbservice/type/appsetting/settingenum/AutoLogoutOption.java b/src/main/java/a8k/dbservice/type/appsetting/settingenum/AutoLogoutOption.java new file mode 100644 index 0000000..e317d7b --- /dev/null +++ b/src/main/java/a8k/dbservice/type/appsetting/settingenum/AutoLogoutOption.java @@ -0,0 +1,21 @@ +package a8k.dbservice.type.appsetting.settingenum; + +public enum AutoLogoutOption { + T00_00, + T00_10, + T00_30, + T01_00, + T02_00, + T03_00 + ; + + public static String[] cgetValues() { + String[] values = new String[AutoLogoutOption.values().length]; + int i = 0; + for (AutoLogoutOption value : AutoLogoutOption.values()) { + values[i] = value.name(); + i++; + } + return values; + } +} diff --git a/src/main/java/a8k/dbservice/type/appsetting/settingenum/LISIFType.java b/src/main/java/a8k/dbservice/type/appsetting/settingenum/LISIFType.java new file mode 100644 index 0000000..a6519f4 --- /dev/null +++ b/src/main/java/a8k/dbservice/type/appsetting/settingenum/LISIFType.java @@ -0,0 +1,16 @@ +package a8k.dbservice.type.appsetting.settingenum; + +public enum LISIFType { + SERIAL, + NETWORK; + + public static String[] getValues() { + String[] values = new String[LISIFType.values().length]; + int i = 0; + for (LISIFType value : LISIFType.values()) { + values[i] = value.name(); + i++; + } + return values; + } +} diff --git a/src/main/java/a8k/dbservice/type/appsetting/settingenum/LISProtocolEnum.java b/src/main/java/a8k/dbservice/type/appsetting/settingenum/LISProtocolEnum.java new file mode 100644 index 0000000..73f0f13 --- /dev/null +++ b/src/main/java/a8k/dbservice/type/appsetting/settingenum/LISProtocolEnum.java @@ -0,0 +1,14 @@ +package a8k.dbservice.type.appsetting.settingenum; + +public enum LISProtocolEnum { + Boditech, Simens; + + public static String[] getValues() { + String[] values = new String[LISProtocolEnum.values().length]; + int i = 0; + for (LISProtocolEnum value : LISProtocolEnum.values()) { + values[i++] = value.name(); + } + return values; + } +} diff --git a/src/main/java/a8k/dbservice/type/appsetting/settingenum/LISSerialBaudrate.java b/src/main/java/a8k/dbservice/type/appsetting/settingenum/LISSerialBaudrate.java new file mode 100644 index 0000000..350cec1 --- /dev/null +++ b/src/main/java/a8k/dbservice/type/appsetting/settingenum/LISSerialBaudrate.java @@ -0,0 +1,6 @@ +package a8k.dbservice.type.appsetting.settingenum; + +public enum LISSerialBaudrate { + B9600, + B115200, +} diff --git a/src/main/java/a8k/dbservice/type/appsetting/settingenum/LISTypeEnum.java b/src/main/java/a8k/dbservice/type/appsetting/settingenum/LISTypeEnum.java new file mode 100644 index 0000000..260152e --- /dev/null +++ b/src/main/java/a8k/dbservice/type/appsetting/settingenum/LISTypeEnum.java @@ -0,0 +1,17 @@ +package a8k.dbservice.type.appsetting.settingenum; + +public enum LISTypeEnum { + //单向,双向 + SINGLE_TRACK, + DOUBLE_TRACK, + ; + + public static String[] getValues() { + String[] values = new String[LISTypeEnum.values().length]; + int i = 0; + for (LISTypeEnum value : LISTypeEnum.values()) { + values[i++] = value.name(); + } + return values; + } +} diff --git a/src/main/java/a8k/dbservice/type/appsetting/settingenum/LanguageType.java b/src/main/java/a8k/dbservice/type/appsetting/settingenum/LanguageType.java new file mode 100644 index 0000000..f7e9c60 --- /dev/null +++ b/src/main/java/a8k/dbservice/type/appsetting/settingenum/LanguageType.java @@ -0,0 +1,5 @@ +package a8k.dbservice.type.appsetting.settingenum; + +public enum LanguageType { + zh_CN, en_US +} diff --git a/src/main/java/a8k/olddbservice/AppSetting.java b/src/main/java/a8k/olddbservice/AppSetting.java deleted file mode 100644 index 4084bc1..0000000 --- a/src/main/java/a8k/olddbservice/AppSetting.java +++ /dev/null @@ -1,201 +0,0 @@ -package a8k.olddbservice; - -import a8k.service.app.app_settings_mgr.base.AppSettingTab; -import a8k.service.app.app_settings_mgr.base.AppOptionName; -import a8k.service.app.app_settings_mgr.base.AppSettingType; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.iflytop.uf.UfActiveRecord; -import com.iflytop.uf.UfActiveRecordField; -import com.iflytop.uf.util.UfJsonHelper; - - -public class AppSetting extends UfActiveRecord { - @UfActiveRecordField - public String type; //支持类型范围 AppSettingType - @UfActiveRecordField - public String tab; //返回名字为英文,前端需要根据英文名字进行翻译 - @UfActiveRecordField - public String name; //返回名字为英文,前端需要根据英文名字进行翻译 - @UfActiveRecordField - public Integer display = 1;// 是否显示 - @UfActiveRecordField - public Integer priority;// 优先级 数值越大越靠后 - - // - //整形和浮点型的单位数值范围 - // - @UfActiveRecordField - public Integer checkValRange;//是否检查输入参数范围 - @UfActiveRecordField - public Double minVal; //最小值 - @UfActiveRecordField - public Double maxVal; //最大值 - - //枚举单位数值范围 - @UfActiveRecordField - public String valueEnumRange; //枚举范围,用逗号分隔 - - //值 - @UfActiveRecordField - public String value; //Value - - @JsonIgnore - public static String getTableName() { - return "AppSetting" + "Table"; - } - - public void setPriority(Integer priority) { - this.priority = priority; - } - - @JsonIgnore - public Integer getIntegerValue() { - return Integer.parseInt(value); - } - - // - // BUILDER - // - - @JsonIgnore - static AppSettingTab currentBuildGroup; - @JsonIgnore - static Integer buildPriority = 0; - static Boolean buildHidden = false; - - static public void setBuildGroup(AppSettingTab group) { - currentBuildGroup = group; - buildPriority = 0; - buildHidden = false; - } - - static public void setBuildHidden(Boolean hidden) { - buildHidden = hidden; - } - - - public static void addIntegerOption(AppOptionName name, Boolean checkValRange, Double minVal, Double maxVal, Integer value) { - var option = new AppSetting(); - option.type = AppSettingType.INTEGER.name(); - option.tab = currentBuildGroup.name(); - option.name = name.name(); - option.checkValRange = checkValRange ? 1 : 0; - option.minVal = minVal; - option.maxVal = maxVal; - option.value = String.valueOf(value); - option.priority = buildPriority++; - option.save(); - } - - public static void addIntegerOption(AppOptionName name, Integer value) { - addIntegerOption(name, false, 0.0, 0.0, value); - } - - public static void addDoubleOption(AppOptionName name, Boolean checkValRange, Double minVal, Double maxVal, Double value) { - var option = new AppSetting(); - option.type = AppSettingType.DOUBLE.name(); - option.tab = currentBuildGroup.name(); - option.name = name.name(); - option.checkValRange = checkValRange ? 1 : 0; - option.minVal = minVal; - option.maxVal = maxVal; - option.value = String.valueOf(value); - option.priority = buildPriority++; - option.save(); - } - - public static void addDoubleOption(AppOptionName name, Double value) { - addDoubleOption(name, false, 0.0, 0.0, value); - } - - public static void addStringOption(AppOptionName name, String value) { - var option = new AppSetting(); - option.type = AppSettingType.STRING.name(); - option.tab = currentBuildGroup.name(); - option.name = name.name(); - option.value = value; - option.priority = buildPriority++; - option.save(); - } - - public static void addBooleanOption(AppOptionName name, Boolean value) { - var option = new AppSetting(); - option.type = AppSettingType.BOOLEAN.name(); - option.tab = currentBuildGroup.name(); - option.name = name.name(); - option.value = value ? "1" : "0"; - option.priority = buildPriority++; - option.save(); - } - - public static void addDateOption(AppOptionName name, String value) { - var option = new AppSetting(); - option.type = AppSettingType.DATE.name(); - option.tab = currentBuildGroup.name(); - option.name = name.name(); - option.value = value; - option.priority = buildPriority++; - option.save(); - } - - public static void addTimeOption(AppOptionName name, String value) { - var option = new AppSetting(); - option.type = AppSettingType.TIME.name(); - option.tab = currentBuildGroup.name(); - option.name = name.name(); - option.value = value; - option.priority = buildPriority++; - option.save(); - } - - public static void addTimezoneOption(AppOptionName name, String value) { - var option = new AppSetting(); - option.type = AppSettingType.TIMEZONE.name(); - option.tab = currentBuildGroup.name(); - option.name = name.name(); - option.value = value; - option.priority = buildPriority++; - option.save(); - } - - public static void addIpOption(AppOptionName name, String value) { - var option = new AppSetting(); - option.type = AppSettingType.IP.name(); - option.tab = currentBuildGroup.name(); - option.name = name.name(); - option.value = value; - option.priority = buildPriority++; - option.save(); - } - - public static void addEnumOption(AppOptionName name, String[] valueEnumRange, String value) { - var option = new AppSetting(); - option.type = AppSettingType.ENUM.name(); - option.tab = currentBuildGroup.name(); - option.name = name.name(); - option.valueEnumRange = UfJsonHelper.objectToJson(valueEnumRange); - option.value = value; - option.priority = buildPriority++; - option.save(); - } - - public static void addFixStringOption(AppOptionName name, String value) { - var option = new AppSetting(); - option.type = AppSettingType.FIX_STRING.name(); - option.tab = currentBuildGroup.name(); - option.name = name.name(); - option.value = value; - option.priority = buildPriority++; - option.save(); - } - // public static void addSpecialPageOption(AppSettingName name, String value) { - // var option = new AppSetting(); - // option.type = AppSettingType.SPECIAL_PAGE.name(); - // option.group = currentBuildGroup.name(); - // option.name = name.name(); - // option.value = value; - // option.priority = buildPriority++; - // option.save(); - // } - -} diff --git a/src/main/java/a8k/service/app/AppSettingsMgr.java b/src/main/java/a8k/service/app/AppSettingsMgr.java new file mode 100644 index 0000000..0d23e7a --- /dev/null +++ b/src/main/java/a8k/service/app/AppSettingsMgr.java @@ -0,0 +1,138 @@ +package a8k.service.app; + +import a8k.dbservice.AppSettingDBService; +import a8k.dbservice.type.AppSetting; +import a8k.dbservice.type.appsetting.AppSettingType; +import a8k.dbservice.type.appsetting.settingenum.*; +import a8k.type.appret.AppRet; +import a8k.controler.extapi.utils.ExtApiTab; +import a8k.controler.extapi.utils.ExtApiFn; +import a8k.controler.extapi.pagecontrol.ExtApiTabConfig; + +import a8k.dbservice.type.appsetting.AppSettingTab; +import a8k.dbservice.type.appsetting.AppSettingName; +import a8k.hardware.type.a8kcanprotocol.A8kEcode; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import org.slf4j.Logger; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +@ExtApiTab(cfg = ExtApiTabConfig.AppSettingsMgr) +public class AppSettingsMgr { + Logger logger = org.slf4j.LoggerFactory.getLogger(AppSettingsMgr.class); + + static class ORDER { + static final int getAppSettings = 1; + static final int getAppSetting = 2; + static final int getTabs = 3; + static final int getAppSettingTypesRange = 4; + static final int getAppSettingNamesRange = 5; + static final int setOptionVal = 6; + static final int setSysDate = 7; + static final int setSysTime = 8; + } + + static Integer settingPageVersion = 4;// 如果配置项发生改变,修改这个数字,可以重置数据库 + + @Resource + AppSettingDBService appSettingDBService; + + @PostConstruct + public void init() { + logger.info("AppSettingsMgr init"); + var SETTING_PAGE_VERSION = appSettingDBService.getSettingByName(AppSettingName.SETTING_PAGE_VERSION); + if (SETTING_PAGE_VERSION == null || !SETTING_PAGE_VERSION.getValueAsInt().equals(settingPageVersion)) { + appSettingDBService.clearAllSettings(); + initsettingdb(); + } + } + + public void initsettingdb() { + appSettingDBService.addSettingVersion(settingPageVersion); + + //AppSettingTab.DEVICE + appSettingDBService.addStringSetting(AppSettingTab.DEVICE, AppSettingName.DATE, ""); + appSettingDBService.addStringSetting(AppSettingTab.DEVICE, AppSettingName.TIME, ""); + appSettingDBService.addEnumSetting(AppSettingTab.DEVICE, AppSettingName.LANGUAGE, LanguageType.class, LanguageType.zh_CN); + appSettingDBService.addBooleanSetting(AppSettingTab.DEVICE, AppSettingName.AUTO_PRINT, false); + appSettingDBService.addEnumSetting(AppSettingTab.DEVICE, AppSettingName.AUTO_LOGOUT, AutoLogoutOption.class, AutoLogoutOption.T00_10); + + + // AppSettingTab.LIS + appSettingDBService.addEnumSetting(AppSettingTab.LIS, AppSettingName.LIS_TYPE, LISTypeEnum.class, LISTypeEnum.SINGLE_TRACK); + appSettingDBService.addEnumSetting(AppSettingTab.LIS, AppSettingName.LIS_PROTOCOL, LISProtocolEnum.class, LISProtocolEnum.Boditech); + appSettingDBService.addEnumSetting(AppSettingTab.LIS, AppSettingName.LIS_IF, LISIFType.class, LISIFType.NETWORK); + appSettingDBService.addEnumSetting(AppSettingTab.LIS, AppSettingName.LIS_SERIAL_BAUDRATE, LISSerialBaudrate.class, LISSerialBaudrate.B9600); + appSettingDBService.addIpSetting(AppSettingTab.LIS, AppSettingName.LIS_NET_IP, "127.0.0.1"); + appSettingDBService.addPortSetting(AppSettingTab.LIS, AppSettingName.LIS_NET_PORT, 8080); + + //RELEASE + appSettingDBService.addFixStringSetting(AppSettingTab.RELEASE, AppSettingName.DEVICE_SERIAL, "TEST-001"); + appSettingDBService.addFixStringSetting(AppSettingTab.RELEASE, AppSettingName.OS_VERSION, "v1.0.0"); + appSettingDBService.addFixStringSetting(AppSettingTab.RELEASE, AppSettingName.APP_VERSION, "v1.0.0"); + appSettingDBService.addFixStringSetting(AppSettingTab.RELEASE, AppSettingName.MCU_VERSION, "v1.0.0"); + } + + Boolean isOptionLegal(AppSettingName name, String val) { + // TODO:添加校验逻辑 + return true; + } + + // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + // EXT FUNC + // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + @ExtApiFn(name = "getAppSettings", order = ORDER.getAppSettings) + public AppRet> getAppSettings() { + return AppRet.success(appSettingDBService.getAllSettings()); + } + + @ExtApiFn(name = "getAppSetting", order = ORDER.getAppSetting) + public AppRet getAppSetting(AppSettingName name) { + return AppRet.success(appSettingDBService.getSettingByName(name)); + } + + @ExtApiFn(name = "getTabs", order = ORDER.getTabs) + public AppRet getTabs() { + return AppRet.success(AppSettingTab.values()); + } + + @ExtApiFn(name = "getAppSettingTypesRange", order = ORDER.getAppSettingTypesRange) + public AppRet getAppSettingTypesRange() { + return AppRet.success(AppSettingType.values()); + } + + @ExtApiFn(name = "getAppSettingNamesRange", order = ORDER.getAppSettingNamesRange) + public AppRet getAppSettingNamesRange() { + return AppRet.success(AppSettingName.values()); + } + + @ExtApiFn(name = "setOptionVal", order = ORDER.setOptionVal) + public AppRet setOptionVal(AppSettingName optionName, String val) { + logger.info("setOptionVal {}={}", optionName, val); + if (!isOptionLegal(optionName, val)) { + return AppRet.fail(A8kEcode.AppOptionIsInvalid); + } + appSettingDBService.updateSetting(optionName, val); + return getAppSetting(optionName); + } + + // + // DATA API + // + + @ExtApiFn(name = "setSysDate", order = ORDER.setSysDate) + public void setSysDate(Integer Year, Integer Month, Integer Day) { + // TODO 完成它 + logger.info("setSysDate {}-{}-{}", Year, Month, Day); + } + + @ExtApiFn(name = "setSysTime", order = ORDER.setSysTime) + public void setSysTime(Integer Hour, Integer Minute, Integer Second) { + // TODO 完成它 + logger.info("setSysTime {}:{}:{}", Hour, Minute, Second); + } +} diff --git a/src/main/java/a8k/service/app/app_settings_mgr/AppSettingsMgr.java b/src/main/java/a8k/service/app/app_settings_mgr/AppSettingsMgr.java deleted file mode 100644 index 6788c4a..0000000 --- a/src/main/java/a8k/service/app/app_settings_mgr/AppSettingsMgr.java +++ /dev/null @@ -1,135 +0,0 @@ -package a8k.service.app.app_settings_mgr; - -import a8k.type.appret.AppRet; -import a8k.controler.extapi.utils.ExtApiTab; -import a8k.controler.extapi.utils.ExtApiFn; -import a8k.controler.extapi.pagecontrol.ExtApiTabConfig; - -import a8k.olddbservice.AppSetting; -import a8k.service.app.app_settings_mgr.base.AppSettingTab; -import a8k.service.app.app_settings_mgr.base.AppOptionName; -import a8k.service.app.app_settings_mgr.settingenum.AutoLogoutTime; -import a8k.service.app.app_settings_mgr.settingenum.LISProtocol; -import a8k.service.app.app_settings_mgr.settingenum.LISType; -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.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; - -@Component -@ExtApiTab(cfg = ExtApiTabConfig.AppSettingsMgr) -public class AppSettingsMgr { - Logger logger = org.slf4j.LoggerFactory.getLogger(AppSettingsMgr.class); - - static class ORDER { - static final int getAppSettings = 1; - static final int getTabs = 2; - static final int setSysDate = 3; - static final int setSysTime = 4; - static final int setOptionVal = 5; - } - - static Integer settingPageVersion = 3; - - - @PostConstruct - public void init() { - logger.info("AppSettingsMgr init"); - - AppSetting spversion = dbGetAppSetting(AppOptionName.SETTING_PAGE_VERSION); - if (spversion == null || !Objects.equals(spversion.getIntegerValue(), settingPageVersion)) { - dbClearAppSettings(); - initsettingdb(); - } - } - - - public void initsettingdb() { - AppSetting.setBuildGroup(AppSettingTab.DEVICE); - AppSetting.addIntegerOption(AppOptionName.SETTING_PAGE_VERSION, settingPageVersion); - AppSetting.addDateOption(AppOptionName.DATE, ""); - AppSetting.addTimeOption(AppOptionName.TIME, ""); - AppSetting.addEnumOption(AppOptionName.LANGUAGE, new String[]{"zh_CN", "en_US"}, "zh_CN"); - AppSetting.addBooleanOption(AppOptionName.AUTO_PRINT, false); - AppSetting.addEnumOption(AppOptionName.AUTO_LOGOUT, AutoLogoutTime.cgetValues(), AutoLogoutTime.T03_00.name()); - - AppSetting.setBuildGroup(AppSettingTab.LIS); - AppSetting.addEnumOption(AppOptionName.LIS_TYPE, LISType.getValues(), LISType.SINGLE_TRACK.name()); - AppSetting.addEnumOption(AppOptionName.LIS_PROTOCOL, LISProtocol.getValues(), LISProtocol.Boditech.name()); - - AppSetting.setBuildGroup(AppSettingTab.RELEASE); - AppSetting.addFixStringOption(AppOptionName.DEVICE_SERIAL, "TEST-001"); - AppSetting.addFixStringOption(AppOptionName.OS_VERSION, "v1.0.0"); - AppSetting.addFixStringOption(AppOptionName.APP_VERSION, "v1.0.0"); - AppSetting.addFixStringOption(AppOptionName.MCU_VERSION, "v1.0.0"); - } - - List dbGetAppSettings() { - return UfActiveRecord.find(AppSetting.class); - } - - AppSetting dbGetAppSetting(AppOptionName name) { - return UfActiveRecord.findOne(AppSetting.class, Map.of("name", name.name())); - } - - Boolean isOptionLegal(AppOptionName name, String val) { - //TODO:添加校验逻辑 - return true; - } - - void dbClearAppSettings() { - var items = dbGetAppSettings(); - for (var item : items) { - item.delete(); - } - } - - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - // EXT FUNC - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - - @ExtApiFn(name = "getAppSettings", order = ORDER.getAppSettings) - public AppRet> getAppSettings() { - return AppRet.success(dbGetAppSettings()); - } - - @ExtApiFn(name = "getTabs", order = ORDER.getTabs) - public AppRet> getTabs() { - List groups = new ArrayList<>(); - for (AppSettingTab group : AppSettingTab.values()) { - groups.add(group.name()); - } - return AppRet.success(groups); - } - - @ExtApiFn(name = "setSysDate", order = ORDER.setSysDate) - public void setSysDate(Integer Year, Integer Month, Integer Day) { - logger.info("setSysDate {}-{}-{}", Year, Month, Day); - } - - @ExtApiFn(name = "setSysTime", order = ORDER.setSysTime) - public void setSysTime(Integer Hour, Integer Minute, Integer Second) { - logger.info("setSysTime {}:{}:{}", Hour, Minute, Second); - } - - @ExtApiFn(name = "setOptionVal", order = ORDER.setOptionVal) - public AppRet setOptionVal(AppOptionName optionName, String val) { - logger.info("setOptionVal {}={}", optionName, val); - if (!isOptionLegal(optionName, val)) { - return AppRet.fail(A8kEcode.AppOptionIsInvalid); - } - AppSetting appSetting = dbGetAppSetting(optionName); - if (appSetting != null) { - appSetting.value = val; - appSetting.save(); - } - return AppRet.success(); - } - -} diff --git a/src/main/java/a8k/service/app/app_settings_mgr/base/AppOptionName.java b/src/main/java/a8k/service/app/app_settings_mgr/base/AppOptionName.java deleted file mode 100644 index 9902e7e..0000000 --- a/src/main/java/a8k/service/app/app_settings_mgr/base/AppOptionName.java +++ /dev/null @@ -1,35 +0,0 @@ -package a8k.service.app.app_settings_mgr.base; - -public enum AppOptionName { - //DEVICE - SETTING_PAGE_VERSION, - DATE, - TIME, - TIMEZONE, - LANGUAGE, - AUTO_PRINT, - AUTO_LOGOUT, - - //USR_MGR - - //RELEASE - DEVICE_SERIAL, - OS_VERSION, - APP_VERSION, - MCU_VERSION, - - //LIS - LIS_TYPE, - LIS_PROTOCOL, - LIS_IF, - LIS_AUTO_EXPORT, - LIS_SERIAL_BAUDRATE, - LIS_NET_IP, - LIS_NET_PORT, - - //NET - NET_IP, - NET_PORT, - -} - diff --git a/src/main/java/a8k/service/app/app_settings_mgr/base/AppSettingTab.java b/src/main/java/a8k/service/app/app_settings_mgr/base/AppSettingTab.java deleted file mode 100644 index 3f8bc66..0000000 --- a/src/main/java/a8k/service/app/app_settings_mgr/base/AppSettingTab.java +++ /dev/null @@ -1,9 +0,0 @@ -package a8k.service.app.app_settings_mgr.base; - -public enum AppSettingTab { - DEVICE, - USRMGR, - LIS, - NETWORK, - RELEASE, -} diff --git a/src/main/java/a8k/service/app/app_settings_mgr/base/AppSettingType.java b/src/main/java/a8k/service/app/app_settings_mgr/base/AppSettingType.java deleted file mode 100644 index 7035dfc..0000000 --- a/src/main/java/a8k/service/app/app_settings_mgr/base/AppSettingType.java +++ /dev/null @@ -1,16 +0,0 @@ -package a8k.service.app.app_settings_mgr.base; - -public enum AppSettingType { - INTEGER,//整数 - DOUBLE,//浮点,前端一律显示两位小数 - STRING,//字符串 - BOOLEAN,//布尔 - DATE,//日期, - TIME,//时间, - TIMEZONE,//时区 - IP,//点分十进制字符串存入数据库,前端显示为字符串 - ENUM,//枚举 - SPECIAL_PAGE,//只是起到占位符的作用,相当于添加一个空白页面,页面中的内容,前端根据GROUP_NAME进行填充 - FIX_STRING,//固定字符串,不可编辑 - ; -} diff --git a/src/main/java/a8k/service/app/app_settings_mgr/settingenum/AutoLogoutTime.java b/src/main/java/a8k/service/app/app_settings_mgr/settingenum/AutoLogoutTime.java deleted file mode 100644 index 28ed253..0000000 --- a/src/main/java/a8k/service/app/app_settings_mgr/settingenum/AutoLogoutTime.java +++ /dev/null @@ -1,23 +0,0 @@ -package a8k.service.app.app_settings_mgr.settingenum; - -public enum AutoLogoutTime { - T00_00, - T00_10, - T00_30, - T01_00, - T02_00, - T03_00 - ; - - - - public static String[] cgetValues() { - String[] values = new String[AutoLogoutTime.values().length]; - int i = 0; - for (AutoLogoutTime value : AutoLogoutTime.values()) { - values[i] = value.name(); - i++; - } - return values; - } -} diff --git a/src/main/java/a8k/service/app/app_settings_mgr/settingenum/LISProtocol.java b/src/main/java/a8k/service/app/app_settings_mgr/settingenum/LISProtocol.java deleted file mode 100644 index 33c5f53..0000000 --- a/src/main/java/a8k/service/app/app_settings_mgr/settingenum/LISProtocol.java +++ /dev/null @@ -1,14 +0,0 @@ -package a8k.service.app.app_settings_mgr.settingenum; - -public enum LISProtocol { - Boditech, Simens; - - public static String[] getValues() { - String[] values = new String[LISProtocol.values().length]; - int i = 0; - for (LISProtocol value : LISProtocol.values()) { - values[i++] = value.name(); - } - return values; - } -} diff --git a/src/main/java/a8k/service/app/app_settings_mgr/settingenum/LISType.java b/src/main/java/a8k/service/app/app_settings_mgr/settingenum/LISType.java deleted file mode 100644 index 3eab1a6..0000000 --- a/src/main/java/a8k/service/app/app_settings_mgr/settingenum/LISType.java +++ /dev/null @@ -1,17 +0,0 @@ -package a8k.service.app.app_settings_mgr.settingenum; - -public enum LISType { - //单向,双向 - SINGLE_TRACK, - DOUBLE_TRACK, - ; - - public static String[] getValues() { - String[] values = new String[LISType.values().length]; - int i = 0; - for (LISType value : LISType.values()) { - values[i++] = value.name(); - } - return values; - } -} diff --git a/src/main/java/a8k/utils/ZEnumHelper.java b/src/main/java/a8k/utils/ZEnumHelper.java new file mode 100644 index 0000000..6e4d370 --- /dev/null +++ b/src/main/java/a8k/utils/ZEnumHelper.java @@ -0,0 +1,14 @@ +package a8k.utils; + +public class ZEnumHelper { + public static String[] enum2strs(Class tClass) { + String[] values = new String[tClass.getEnumConstants().length]; + int i = 0; + for (var value : tClass.getEnumConstants()) { + Enum e = (Enum) value; + values[i] = e.name(); + i++; + } + return values; + } +} diff --git a/src/main/java/com/iflytop/a800/BoditechA800Application.java b/src/main/java/com/iflytop/a800/BoditechA800Application.java index 3933665..ae554cc 100644 --- a/src/main/java/com/iflytop/a800/BoditechA800Application.java +++ b/src/main/java/com/iflytop/a800/BoditechA800Application.java @@ -7,7 +7,7 @@ import org.springframework.context.annotation.ComponentScan; @SpringBootApplication @ComponentScan({"com.iflytop.uf", "com.iflytop.a800", "a8k"}) -@MapperScan({"a8k.db.mapper","com.iflytop.uf"}) +@MapperScan({"com.iflytop.uf"}) public class BoditechA800Application { public static void main(String[] args) { SpringApplication.run(BoditechA800Application.class, args);