Browse Source

update

tags/v0
zhaohe 10 months ago
parent
commit
0755c22315
  1. BIN
      app.db
  2. 2
      src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java
  3. 23
      src/main/java/a8k/service/app/appctrl/AppDeviceCtrlService.java
  4. 159
      src/main/java/a8k/service/app/appsetting/AppSettingsMgr.java
  5. 23
      src/main/java/a8k/service/bases/FrontEndEventRouter.java
  6. 8
      src/main/java/a8k/service/bases/appevent/A8kStateChangeEvent.java
  7. 2
      src/main/java/a8k/service/bases/appevent/AppEvent.java
  8. 5
      src/main/java/a8k/service/bases/appevent/AppIDCardMountEvent.java
  9. 15
      src/main/java/a8k/service/bases/appevent/AppStepNotifyEvent.java
  10. 212
      src/main/java/a8k/service/db/AppSettingDBService.java
  11. 59
      src/main/java/a8k/service/db/type/AppSetting.java
  12. 2
      src/main/java/a8k/service/db/type/appsetting/settingenum/LISSerialBaudrateType.java
  13. 3
      src/main/java/a8k/utils/ZSqliteJdbcHelper.java

BIN
app.db

2
src/main/java/a8k/extapi_controler/pagecontrol/ExtApiTabConfig.java

@ -2,6 +2,7 @@ package a8k.extapi_controler.pagecontrol;
public enum ExtApiTabConfig { public enum ExtApiTabConfig {
AppDebugHelperService("调试助手", true), AppDebugHelperService("调试助手", true),
FrontEndEventRouter("基础组件.前端事件路由", true),
AppDeviceCtrlService("应用控制.应用控制", true), AppDeviceCtrlService("应用控制.应用控制", true),
AppTubeSettingMgrService("应用控制.试管(样本)配置", true),//OK AppTubeSettingMgrService("应用控制.试管(样本)配置", true),//OK
@ -15,7 +16,6 @@ public enum ExtApiTabConfig {
AppProjInfoMgrService("应用数据.项目信息管理", true), //OK AppProjInfoMgrService("应用数据.项目信息管理", true), //OK
AppReactionResultMgrService("应用数据.反应结果管理", true), //OK AppReactionResultMgrService("应用数据.反应结果管理", true), //OK
AppSampleMgrService("应用数据.样本管理", true), //OK AppSampleMgrService("应用数据.样本管理", true), //OK
AppFrontEndEventRouter("基础组件.前端事件路由", true),
ActionReactorService("底层调试.单步调试", false),//OK ActionReactorService("底层调试.单步调试", false),//OK

23
src/main/java/a8k/service/app/appctrl/AppDeviceCtrlService.java

@ -110,18 +110,37 @@ public class AppDeviceCtrlService {
return gstate; return gstate;
} }
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
* 系统控制 * 系统控制
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
@ExtApiFn(name = "关机", group = "系统")
@ExtApiFn(name = "关机", group = "主机")
public void shutdown() { public void shutdown() {
//TODO: //TODO:
} }
@ExtApiFn(name = "获取设备IP", group = "系统")
@ExtApiFn(name = "获取设备IP", group = "主机")
public String readdeviceip() { public String readdeviceip() {
//TODO: //TODO:
return "192.168.8.10"; return "192.168.8.10";
} }
Boolean beepState = false;
@ExtApiFn(name = "打开蜂鸣器", group = "主机")
public void startBeepWarning() {
beepState = true;
}
@ExtApiFn(name = "关闭蜂鸣器", group = "主机")
public void stopBeepWarning() {
beepState = false;
}
@ExtApiFn(name = "获取蜂鸣器状态", group = "主机")
public Boolean getBeepWarningStatus() {
return false;
}
} }

159
src/main/java/a8k/service/app/appsetting/AppSettingsMgr.java

@ -2,67 +2,42 @@ package a8k.service.app.appsetting;
import a8k.service.db.AppSettingDBService; import a8k.service.db.AppSettingDBService;
import a8k.service.db.type.AppSetting; import a8k.service.db.type.AppSetting;
import a8k.service.db.type.appsetting.AppSettingType;
import a8k.service.db.type.appsetting.settingenum.*; import a8k.service.db.type.appsetting.settingenum.*;
import a8k.extapi_controler.utils.ExtApiTab; import a8k.extapi_controler.utils.ExtApiTab;
import a8k.extapi_controler.utils.ExtApiFn; import a8k.extapi_controler.utils.ExtApiFn;
import a8k.extapi_controler.pagecontrol.ExtApiTabConfig; import a8k.extapi_controler.pagecontrol.ExtApiTabConfig;
import a8k.service.db.type.appsetting.AppSettingTab;
import a8k.service.db.type.appsetting.AppSettingName; import a8k.service.db.type.appsetting.AppSettingName;
import a8k.hardware.type.a8kcanprotocol.A8kEcode;
import a8k.type.exception.AppException;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List;
@Component @Component
@ExtApiTab(cfg = ExtApiTabConfig.AppSettingsMgr) @ExtApiTab(cfg = ExtApiTabConfig.AppSettingsMgr)
public class AppSettingsMgr { public class AppSettingsMgr {
Logger logger = org.slf4j.LoggerFactory.getLogger(AppSettingsMgr.class); Logger logger = org.slf4j.LoggerFactory.getLogger(AppSettingsMgr.class);
static class ORDER { static class ORDER {
static final int getAppSettings = 1;
static final int getAppSettingByName = 2;
static final int getAppSettingByTab = 2;
static final int getTabs = 3;
static final int getAppSettingTypesRange = 4;
static final int getAppSettingNamesRange = 5;
static final int setOptionVal = 6;
final static int getAppSetting = 1;
final static int setLanguage = 2;
final static int setAutoPrint = 3;
final static int setAutoLogout = 4;
final static int setLISType = 5;
final static int setLISProtocol = 6;
final static int setLIFIf = 7;
final static int setLISAutoExport = 8;
final static int setLISSerialBaudrate = 9;
final static int setLISNetIp = 10;
final static int setLISNetPort = 11;
} }
static Integer settingPageVersion = 1;// 如果配置项发生改变修改这个数字可以重置数据库
@Resource @Resource
AppSettingDBService appSettingDBService; AppSettingDBService appSettingDBService;
@PostConstruct @PostConstruct
public void init() { 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.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);
} }
Boolean isOptionLegal(AppSettingName name, String val) { Boolean isOptionLegal(AppSettingName name, String val) {
@ -74,50 +49,104 @@ public class AppSettingsMgr {
// EXT FUNC // EXT FUNC
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@ExtApiFn(name = "getAppSettings", order = ORDER.getAppSettings)
public List<AppSetting> getAppSettings() {
return (appSettingDBService.getAllSettings());
@ExtApiFn(name = "getAppSetting", group = "读取", order = ORDER.getAppSetting)
public AppSetting getAppSettings() {
return appSettingDBService.get();
}
@ExtApiFn(name = "getEnumRangeLanguageType", group = "枚举类型")
public LanguageType[] getEnumRangeLanguageType() {
return LanguageType.values();
}
@ExtApiFn(name = "getEnumRangeAppSettingType", group = "枚举类型")
public LISTypeEnum[] getEnumRangeLISTypeEnum() {
return LISTypeEnum.values();
}
@ExtApiFn(name = "getEnumRangeLISProtocolEnum", group = "枚举类型")
public LISProtocolEnum[] getEnumRangeLISProtocolEnum() {
return LISProtocolEnum.values();
}
@ExtApiFn(name = "getEnumRangeLISIFTypeEnum", group = "枚举类型")
public LISIFType[] getEnumRangeLISIFType() {
return LISIFType.values();
}
@ExtApiFn(name = "getEnumRangeLISSerialBaudrateType", group = "枚举类型")
public LISSerialBaudrateType[] getEnumRangeLISSerialBaudrateType() {
return LISSerialBaudrateType.values();
} }
@ExtApiFn(name = "getAppSettingByName", order = ORDER.getAppSettingByName)
public AppSetting getAppSettingByName(AppSettingName name) {
return (appSettingDBService.getSettingByName(name));
@ExtApiFn(name = "setLanguage", group = "设置", order = ORDER.setLanguage)
public void setLanguage(LanguageType val) {
AppSetting setting = appSettingDBService.get();
setting.language = val;
appSettingDBService.update(setting);
} }
@ExtApiFn(name = "getAppSettingByTab", order = ORDER.getAppSettingByTab)
public List<AppSetting> getAppSettingByTab(AppSettingTab tab) {
return (appSettingDBService.getSettingsByTab(tab));
@ExtApiFn(name = "setAutoPrint", group = "设置", order = ORDER.setAutoPrint)
public void setAutoPrint(Boolean val) {
AppSetting setting = appSettingDBService.get();
setting.autoPrint = val;
appSettingDBService.update(setting);
} }
@ExtApiFn(name = "setAutoLogout", group = "设置", order = ORDER.setAutoLogout)
public void setAutoLogout(Boolean val) {
AppSetting setting = appSettingDBService.get();
setting.autoLogout = val;
appSettingDBService.update(setting);
}
@ExtApiFn(name = "getTabs", order = ORDER.getTabs)
public AppSettingTab[] getTabs() {
return (AppSettingTab.values());
@ExtApiFn(name = "setLISType", group = "设置", order = ORDER.setLISType)
public void setLISType(LISTypeEnum val) {
AppSetting setting = appSettingDBService.get();
setting.LISType = val;
appSettingDBService.update(setting);
} }
@ExtApiFn(name = "getAppSettingTypesRange", order = ORDER.getAppSettingTypesRange)
public AppSettingType[] getAppSettingTypesRange() {
return (AppSettingType.values());
@ExtApiFn(name = "setLISProtocol", group = "设置", order = ORDER.setLISProtocol)
public void setLISProtocol(LISProtocolEnum val) {
AppSetting setting = appSettingDBService.get();
setting.LISProtocol = val;
appSettingDBService.update(setting);
} }
@ExtApiFn(name = "getAppSettingNamesRange", order = ORDER.getAppSettingNamesRange)
public AppSettingName[] getAppSettingNamesRange() {
return (AppSettingName.values());
@ExtApiFn(name = "setLIFIf", group = "设置", order = ORDER.setLIFIf)
public void setLIFIf(LISIFType val) {
AppSetting setting = appSettingDBService.get();
setting.LIFIf = val;
appSettingDBService.update(setting);
} }
@ExtApiFn(name = "setOptionVal", order = ORDER.setOptionVal)
public AppSetting setOptionVal(AppSettingName optionName, String val) throws AppException {
logger.info("setOptionVal {}={}", optionName, val);
if (!isOptionLegal(optionName, val)) {
throw new AppException(A8kEcode.FrontendParamTypeError);
@ExtApiFn(name = "setLISAutoExport", group = "设置", order = ORDER.setLISAutoExport)
public void setLISAutoExport(Boolean val) {
AppSetting setting = appSettingDBService.get();
setting.LISAutoExport = val;
appSettingDBService.update(setting);
} }
appSettingDBService.updateSetting(optionName, val);
return getAppSettingByName(optionName);
@ExtApiFn(name = "setLISSerialBaudrate", group = "设置", order = ORDER.setLISSerialBaudrate)
public void setLISSerialBaudrate(LISSerialBaudrateType val) {
AppSetting setting = appSettingDBService.get();
setting.LISSerialBaudrate = val;
appSettingDBService.update(setting);
} }
@ExtApiFn(name = "factoryReset")
public void factoryReset() {
appSettingDBService.clearAllSettings();
initsettingdb();
@ExtApiFn(name = "setLISNetIp", group = "设置", order = ORDER.setLISNetIp)
public void setLISNetIp(String val) {
AppSetting setting = appSettingDBService.get();
setting.LISNetIp = val;
appSettingDBService.update(setting);
} }
@ExtApiFn(name = "setLISNetPort", group = "设置", order = ORDER.setLISNetPort)
public void setLISNetPort(Integer val) {
AppSetting setting = appSettingDBService.get();
setting.LISNetPort = val;
appSettingDBService.update(setting);
}
} }

23
src/main/java/a8k/service/bases/FrontEndEventRouter.java

@ -3,8 +3,7 @@ package a8k.service.bases;
import a8k.extapi_controler.pagecontrol.ExtApiTabConfig; import a8k.extapi_controler.pagecontrol.ExtApiTabConfig;
import a8k.extapi_controler.utils.ExtApiTab; import a8k.extapi_controler.utils.ExtApiTab;
import a8k.extapi_controler.utils.ExtApiFn; import a8k.extapi_controler.utils.ExtApiFn;
import a8k.service.bases.appevent.A8kHardwareReport;
import a8k.service.bases.appevent.AppEvent;
import a8k.service.bases.appevent.*;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -14,7 +13,7 @@ import java.util.List;
import java.util.Queue; import java.util.Queue;
@Component @Component
@ExtApiTab(cfg = ExtApiTabConfig.AppFrontEndEventRouter)
@ExtApiTab(cfg = ExtApiTabConfig.FrontEndEventRouter)
public class FrontEndEventRouter { public class FrontEndEventRouter {
static Logger logger = org.slf4j.LoggerFactory.getLogger(FrontEndEventRouter.class); static Logger logger = org.slf4j.LoggerFactory.getLogger(FrontEndEventRouter.class);
@ -27,7 +26,6 @@ public class FrontEndEventRouter {
private final Queue<AppEvent> appEventQueue = new java.util.concurrent.ConcurrentLinkedQueue<>(); private final Queue<AppEvent> appEventQueue = new java.util.concurrent.ConcurrentLinkedQueue<>();
@PostConstruct @PostConstruct
public void init() { public void init() {
eventBus.regListener(this::onAppEvent); eventBus.regListener(this::onAppEvent);
@ -45,6 +43,8 @@ public class FrontEndEventRouter {
Boolean filterEvent(AppEvent event) { Boolean filterEvent(AppEvent event) {
if (event instanceof A8kHardwareReport) { if (event instanceof A8kHardwareReport) {
return true; return true;
} else if (event instanceof A8kCanBusOnConnectEvent) {
return true;
} }
return false; return false;
} }
@ -61,12 +61,7 @@ public class FrontEndEventRouter {
if (filterEvent(event)) { if (filterEvent(event)) {
return; return;
} }
appEventQueue.add(event); appEventQueue.add(event);
if (appEventQueue.size() >= 20) {
logger.warn("too many events in queue, drop some");
pollAppEventFromQueue();
}
} }
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@ -78,10 +73,12 @@ public class FrontEndEventRouter {
return (pollAppEventFromQueue()); return (pollAppEventFromQueue());
} }
@ExtApiFn(name = "读取所有事件(不清空)")
@ExtApiFn(name = "读取所有事件")
public List<AppEvent> readAllAppEvents() { public List<AppEvent> readAllAppEvents() {
return (new java.util.ArrayList<>(appEventQueue));
List<AppEvent> ret = new java.util.ArrayList<>();
while (!appEventQueue.isEmpty()) {
ret.add(pollAppEventFromQueue());
}
return ret;
} }
} }

8
src/main/java/a8k/service/bases/appevent/A8kStateChangeEvent.java

@ -1,8 +0,0 @@
package a8k.service.bases.appevent;
public class A8kStateChangeEvent extends AppEvent {
A8kStateChangeEvent(String displayInfo) {
super(A8kStateChangeEvent.class.getSimpleName());
}
}

2
src/main/java/a8k/service/bases/appevent/AppEvent.java

@ -5,7 +5,7 @@ import java.util.UUID;
public class AppEvent { public class AppEvent {
public String typeName; public String typeName;
public Date date = new Date();
public Integer timestamp = (int) (new Date().getTime() / 1000);
public String id = UUID.randomUUID().toString(); public String id = UUID.randomUUID().toString();
public AppEvent(String typeName) { public AppEvent(String typeName) {

5
src/main/java/a8k/service/bases/appevent/AppIDCardMountEvent.java

@ -1,14 +1,15 @@
package a8k.service.bases.appevent; package a8k.service.bases.appevent;
import a8k.service.db.type.A8kIdCardBreifInfo;
import a8k.service.db.type.A8kIdCardInfo; import a8k.service.db.type.A8kIdCardInfo;
public class AppIDCardMountEvent extends AppEvent { public class AppIDCardMountEvent extends AppEvent {
public A8kIdCardInfo projectInfo;
public A8kIdCardBreifInfo projectInfo;
public AppIDCardMountEvent(A8kIdCardInfo projectInfo) { public AppIDCardMountEvent(A8kIdCardInfo projectInfo) {
super(AppIDCardMountEvent.class.getSimpleName()); super(AppIDCardMountEvent.class.getSimpleName());
this.projectInfo = projectInfo;
this.projectInfo = projectInfo.toBreif();
} }
} }

15
src/main/java/a8k/service/bases/appevent/AppStepNotifyEvent.java

@ -1,15 +0,0 @@
package a8k.service.bases.appevent;
public class AppStepNotifyEvent extends AppEvent {
String displayInfo;
AppStepNotifyEvent(String displayInfo) {
super(AppStepNotifyEvent.class.getSimpleName());
this.displayInfo = displayInfo;
}
public String getDisplayInfo() {
return displayInfo;
}
}

212
src/main/java/a8k/service/db/AppSettingDBService.java

@ -1,218 +1,70 @@
package a8k.service.db; package a8k.service.db;
import a8k.service.app.appdata.UtilsProjectColorAllocer;
import a8k.service.db.type.AppSetting; import a8k.service.db.type.AppSetting;
import a8k.service.db.type.appsetting.AppSettingName;
import a8k.service.db.type.appsetting.AppSettingTab;
import a8k.service.db.type.appsetting.AppSettingType;
import a8k.utils.ZEnumHelper;
import a8k.service.debug.AppDebugHelperService;
import a8k.utils.ZSqliteJdbcHelper; import a8k.utils.ZSqliteJdbcHelper;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.SneakyThrows;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List; import java.util.List;
/**
* ID卡数据库服务
*/
@Component @Component
public class AppSettingDBService { public class AppSettingDBService {
private static final Logger logger = LoggerFactory.getLogger(AppSettingDBService.class); private static final Logger logger = LoggerFactory.getLogger(AppSettingDBService.class);
private static final String tableName = "zapp_setting";
private static final String tableName = "zapp_a8k_appsetting";
private static Class<?> tClass = AppSetting.class;
@Resource @Resource
JdbcTemplate jdbcTemplate; JdbcTemplate jdbcTemplate;
@PostConstruct
void init() {
if (!ZSqliteJdbcHelper.isTableExist(jdbcTemplate, tableName)) {
createTable();
}
}
private AppSetting rowMapper(ResultSet rs, int rowNum) throws SQLException {
AppSetting obj = new AppSetting();
obj.id = rs.getInt("id");
obj.type = rs.getString("type") != null ? AppSettingType.valueOf(rs.getString("type")) : null;
obj.tab = rs.getString("tab") != null ? AppSettingTab.valueOf(rs.getString("tab")) : null;
obj.name = rs.getString("name") != null ? AppSettingName.valueOf(rs.getString("name")) : null;
obj.display = rs.getBoolean("display");
obj.minVal = rs.getDouble("minVal");
obj.maxVal = rs.getDouble("maxVal");
String valueEnumRange = rs.getString("valueEnumRange");
if (valueEnumRange != null)
obj.valueEnumRange = valueEnumRange.split(",");
obj.value = rs.getString("value");
return obj;
}
private void createTable() {
jdbcTemplate.execute("create table " + tableName + " ('id' integer,"
+ " 'type' text,"
+ " 'tab' text,"
+ " 'name' text,"
+ " 'display' integer,"
+ " 'minVal' real,"
+ " 'maxVal' real,"
+ " 'valueEnumRange' text, "
+ "'value' text,"
+ " PRIMARY KEY ('id' DESC));");
}
public List<AppSetting> getAllSettings() {
return jdbcTemplate.query("select * from " + tableName, this::rowMapper);
}
public AppSetting getSettingByName(AppSettingName name) {
List<AppSetting> settings = jdbcTemplate.query("select * from " + tableName + " where name = ?;", this::rowMapper, name.name());
if (settings.isEmpty()) {
return null;
}
return settings.get(0);
}
public List<AppSetting> 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);
}
@Resource
UtilsProjectColorAllocer colorAllocer;
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);
}
@Resource
AppDebugHelperService appDebugHelper;
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);
@PostConstruct
void init() {
if (appDebugHelper.isDebug()) {
ZSqliteJdbcHelper.forceDeleteTable(jdbcTemplate, tableName);
ZSqliteJdbcHelper.createTable(jdbcTemplate, tableName, tClass);
ZSqliteJdbcHelper.addObj(jdbcTemplate, tableName, AppSetting.class, new AppSetting());
return;
} }
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);
if (!ZSqliteJdbcHelper.isTableExist(jdbcTemplate, tableName)) {
ZSqliteJdbcHelper.createTable(jdbcTemplate, tableName, tClass);
} }
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);
@SneakyThrows private AppSetting rowMapper(ResultSet rs, int rowNum) {
return (AppSetting) ZSqliteJdbcHelper.rowMapper(rs, tClass);
} }
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 AppSetting get() {
List<AppSetting> list = jdbcTemplate.query("select * from " + tableName, this::rowMapper);
if (list.isEmpty()) {
AppSetting appSetting = new AppSetting();
jdbcTemplate.update("insert into " + tableName + " values(?)", appSetting);
return appSetting;
} }
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);
return list.get(0);
} }
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 update(AppSetting appSetting) {
ZSqliteJdbcHelper.updateObj(jdbcTemplate, tableName, AppSetting.class, appSetting);
} }
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);
}
} }

59
src/main/java/a8k/service/db/type/AppSetting.java

@ -1,54 +1,17 @@
package a8k.service.db.type; package a8k.service.db.type;
import a8k.service.db.type.appsetting.AppSettingName;
import a8k.service.db.type.appsetting.AppSettingTab;
import a8k.service.db.type.appsetting.AppSettingType;
import a8k.utils.ZJsonHelper;
import com.fasterxml.jackson.annotation.JsonIgnore;
import a8k.service.db.type.appsetting.settingenum.*;
public class AppSetting { public class AppSetting {
public int id =0; 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);}
public LanguageType language = LanguageType.zh_CN;
public Boolean autoPrint = false;
public Boolean autoLogout = false;
public LISTypeEnum LISType = LISTypeEnum.SINGLE_TRACK;
public LISProtocolEnum LISProtocol = LISProtocolEnum.Boditech;
public LISIFType LIFIf = LISIFType.NETWORK;
public Boolean LISAutoExport = true;
public LISSerialBaudrateType LISSerialBaudrate = LISSerialBaudrateType.B9600;
public String LISNetIp = "127.0.0.1";
public Integer LISNetPort = 9973;
} }

2
src/main/java/a8k/service/db/type/appsetting/settingenum/LISSerialBaudrate.java → src/main/java/a8k/service/db/type/appsetting/settingenum/LISSerialBaudrateType.java

@ -1,6 +1,6 @@
package a8k.service.db.type.appsetting.settingenum; package a8k.service.db.type.appsetting.settingenum;
public enum LISSerialBaudrate {
public enum LISSerialBaudrateType {
B9600, B9600,
B115200, B115200,
} }

3
src/main/java/a8k/utils/ZSqliteJdbcHelper.java

@ -115,7 +115,8 @@ public class ZSqliteJdbcHelper {
// args.add( field.getDouble(obj)); // args.add( field.getDouble(obj));
args.add(field.get(obj)); args.add(field.get(obj));
} else if (field.getType().equals(Boolean.class)) { } else if (field.getType().equals(Boolean.class)) {
args.add(field.getBoolean(obj) ? 1 : 0);
Boolean value = (Boolean) field.get(obj);
args.add(value ? 1 : 0);
} else if (field.getType().equals(String.class)) { } else if (field.getType().equals(String.class)) {
args.add(field.get(obj)); args.add(field.get(obj));
} else if (field.getType().equals(Date.class)) { } else if (field.getType().equals(Date.class)) {

Loading…
Cancel
Save