diff --git a/src/main/java/a8k/app/dao/DeviceExSettingDao.java b/src/main/java/a8k/app/dao/DeviceExSettingDao.java index ca3cee2..fcedc9e 100644 --- a/src/main/java/a8k/app/dao/DeviceExSettingDao.java +++ b/src/main/java/a8k/app/dao/DeviceExSettingDao.java @@ -1,12 +1,15 @@ package a8k.app.dao; +import a8k.app.dao.type.db.DeviceExSetting; import a8k.app.dao.type.db.KeyVal; +import a8k.app.utils.ZJsonHelper; import a8k.app.utils.ZSqlite; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; +import org.springframework.util.Assert; @Component @Slf4j @@ -18,6 +21,43 @@ public class DeviceExSettingDao extends ZSqlite { @PostConstruct void init() { init(jdbcTemplate, "device_ex_setting", KeyVal.class, false); + if (findByKey("DeviceExSetting") == null) { + KeyVal keyVal = new KeyVal(); + keyVal.key = "DeviceExSetting"; + keyVal.val = ZJsonHelper.objectToJson(new DeviceExSetting()); + add(keyVal); + } + + + } + + private KeyVal findByKey(String key) { + return queryOne("select * from " + tableName + " where key = ?;", key); } + public DeviceExSetting getExSetting() { + KeyVal keyVal = findByKey("DeviceExSetting"); + if (keyVal == null || keyVal.val == null) { + log.warn("No DeviceExSetting found, returning default"); + return new DeviceExSetting(); + } + return ZJsonHelper.objectFromJson(keyVal.val, DeviceExSetting.class); + } + + public void setExSetting(DeviceExSetting deviceExSetting) { + if (deviceExSetting == null) { + log.error("DeviceExSetting is null, cannot set"); + return; + } + KeyVal existingKeyVal = findByKey("DeviceExSetting"); + if (existingKeyVal != null) { + existingKeyVal.val = ZJsonHelper.objectToJson(deviceExSetting); + update(existingKeyVal); + } else { + KeyVal newKeyVal = new KeyVal(); + newKeyVal.key = "DeviceExSetting"; + newKeyVal.val = ZJsonHelper.objectToJson(deviceExSetting); + add(newKeyVal); + } + } } diff --git a/src/main/java/a8k/app/dao/type/db/DeviceExSetting.java b/src/main/java/a8k/app/dao/type/db/DeviceExSetting.java new file mode 100644 index 0000000..4c4d30f --- /dev/null +++ b/src/main/java/a8k/app/dao/type/db/DeviceExSetting.java @@ -0,0 +1,6 @@ +package a8k.app.dao.type.db; + +public class DeviceExSetting { + public Boolean disableLargeBufferSolutionG3 = false; + public Boolean disableLargeBufferSolutionG6 = false; +} diff --git a/src/main/java/a8k/app/service/lowerctrl/ConsumablesScanCtrlService.java b/src/main/java/a8k/app/service/lowerctrl/ConsumablesScanCtrlService.java index 7947dfb..7210fbb 100644 --- a/src/main/java/a8k/app/service/lowerctrl/ConsumablesScanCtrlService.java +++ b/src/main/java/a8k/app/service/lowerctrl/ConsumablesScanCtrlService.java @@ -1,5 +1,6 @@ package a8k.app.service.lowerctrl; +import a8k.app.dao.DeviceExSettingDao; import a8k.app.iflytophald.driver.CodeScanerDriver; import a8k.app.teststate.VirtualDevice; import a8k.app.type.exception.AppException; @@ -35,7 +36,7 @@ public class ConsumablesScanCtrlService { private final VirtualDevice virtualDevice; private final CodeScanerDriver codeScaner; private final HbotMoveExCtrlService hbotMoveExCtrlService; - + private final DeviceExSettingDao deviceExSettingDao; // // VIRTUAL // @@ -107,6 +108,13 @@ public class ConsumablesScanCtrlService { } public String scanLarBS(int ch) throws AppException { + if (ch == 2 && deviceExSettingDao.getExSetting().disableLargeBufferSolutionG3) { + return null; + } + if (ch == 5 && deviceExSettingDao.getExSetting().disableLargeBufferSolutionG6) { + return null; + } + hbotMoveExCtrlService.moveToLargeBSCodeScanPos(ch); return codeScaner.pipetteModCodeScannerScanCode(); } diff --git a/src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java b/src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java index 79fafe2..15ba45a 100644 --- a/src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java +++ b/src/main/java/a8k/extui/mgr/ExtApiPageGroupCfgMgr.java @@ -96,6 +96,7 @@ public class ExtApiPageGroupCfgMgr { new Menu(ProjInfoMgrPage.class, "项目信息管理"), new Menu(ReactionRecordMgrDebugPage.class, "反应记录") )), + new Menu(DeviceExSettingPage.class, "设备扩展配置"), new Menu(A8kSubModuleRegAndConfigSyncPage.class, "单片机-配置管理"), new Menu("坐标设置", ZList.of( new Menu(DeviceActionParameterSettingPage.class, "设备动作参数设置"), @@ -140,7 +141,7 @@ public class ExtApiPageGroupCfgMgr { new Menu(CodeScannerDriverCtrlPage.class, "条码扫描仪"), new Menu(PrinterDebugPage.class, "打印机"), new Menu(OptScannerCtrlPage.class, "光学模组"), - new Menu(WaterCoolingTempCtrlDriverPage.class,"水冷控温驱动") + new Menu(WaterCoolingTempCtrlDriverPage.class, "水冷控温驱动") ))); diff --git a/src/main/java/a8k/extui/page/extsetting/db/DeviceExSettingPage.java b/src/main/java/a8k/extui/page/extsetting/db/DeviceExSettingPage.java new file mode 100644 index 0000000..4b9fbdb --- /dev/null +++ b/src/main/java/a8k/extui/page/extsetting/db/DeviceExSettingPage.java @@ -0,0 +1,49 @@ +package a8k.extui.page.extsetting.db; + +import a8k.app.controler.filemgr.StorageControler; +import a8k.app.dao.DeviceActionParameterDao; +import a8k.app.dao.DeviceExSettingDao; +import a8k.app.dao.type.db.DeviceExSetting; +import a8k.app.dao.type.db.Parameter; +import a8k.extui.mgr.ExtApiPageMgr; +import a8k.extui.type.ExtUIPageCfg; +import a8k.extui.type.ExtUiTable; +import a8k.extui.type.param.ExtUIFile; +import a8k.extui.type.ret.FileToBeDownload; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +@RequiredArgsConstructor +public class DeviceExSettingPage { + + private final ExtApiPageMgr extApiPageMgr; + private final DeviceExSettingDao deviceExSettingDao; + + + public void setDisableLargeBufferSolutionG3(Boolean disableLargeBufferSolutionG3) { + var setting = deviceExSettingDao.getExSetting(); + setting.disableLargeBufferSolutionG3 = disableLargeBufferSolutionG3; + deviceExSettingDao.setExSetting(setting); + } + + public void setDisableLargeBufferSolutionG6(Boolean disableLargeBufferSolutionG6) { + var setting = deviceExSettingDao.getExSetting(); + setting.disableLargeBufferSolutionG6 = disableLargeBufferSolutionG6; + deviceExSettingDao.setExSetting(setting); + } + + @PostConstruct + void init() throws NoSuchMethodException { + ExtUIPageCfg page = new ExtUIPageCfg(this); + page.addFunction("失能大瓶缓冲液G3扫码", this::setDisableLargeBufferSolutionG3) + .setParamVal("disableLargeBufferSolutionG3", () -> deviceExSettingDao.getExSetting().disableLargeBufferSolutionG3); + page.addFunction("失能大瓶缓冲液G6扫码", this::setDisableLargeBufferSolutionG6) + .setParamVal("disableLargeBufferSolutionG6", () -> deviceExSettingDao.getExSetting().disableLargeBufferSolutionG6); + extApiPageMgr.addPage(page); + } +}