diff --git a/src/main/java/a8k/db/ProjectInfo.java b/src/main/java/a8k/db/ProjectInfo.java index db025cf..de698e4 100644 --- a/src/main/java/a8k/db/ProjectInfo.java +++ b/src/main/java/a8k/db/ProjectInfo.java @@ -3,6 +3,8 @@ package a8k.db; import com.iflytop.uf.UfActiveRecord; import com.iflytop.uf.UfActiveRecordField; +import java.util.Date; + //ref:https://iflytop1.feishu.cn/wiki/HvDlwbEWDi4fgkkL6qSc2iLGnte public class ProjectInfo extends UfActiveRecord { @@ -14,7 +16,7 @@ public class ProjectInfo extends UfActiveRecord { public Integer buildIn;//是否是内置,如果是内置则不显示,作为项目的默认值使用 @UfActiveRecordField - public String insertTime; //插入时间 + public String insertTime = new Date().toString(); //插入时间 @UfActiveRecordField public String projectName; //项目名称 diff --git a/src/main/java/a8k/service/base/A8kDeviceState.java b/src/main/java/a8k/service/base/A8kDeviceState.java index ca0a13a..69373fc 100644 --- a/src/main/java/a8k/service/base/A8kDeviceState.java +++ b/src/main/java/a8k/service/base/A8kDeviceState.java @@ -1,5 +1,6 @@ package a8k.service.base; +import a8k.db.ProjectInfo; import a8k.service.base.consumable.ConsumableItemGroup; import a8k.service.base.plate.ReactingPlateState; import a8k.service.base.reaction_result.ReactionResult; @@ -13,19 +14,21 @@ import java.util.List; public class A8kDeviceState { //耗材 - public ConsumableItemGroup consumableItemGroup = null; + public ConsumableItemGroup consumableItemGroup = null; //急诊位状态 - public EmergencyPosState emergencyPosState = EmergencyPosState.IDLE; + public EmergencyPosState emergencyPosState = EmergencyPosState.IDLE; //急诊位样本信息 - public SampleInfo emergencySampleInfo = null; + public SampleInfo emergencySampleInfo = null; //急诊位反应结果 - public ReactionResult emergencyResult = null; + public ReactionResult emergencyResult = null; //正在孵育的任务状态 - public List incubatingPlateStates = null; + public List incubatingPlateStates = null; //当前正在被处理的试管架状态 - public TubeHolder processingTubeHolder = null; + public TubeHolder processingTubeHolder = null; //温度 - public Integer temperature; + public Integer temperature; + //当前ID卡信息 + public ProjectInfo curIdCardInfo = null; Boolean deviceInited = false; //设备是否初始化过 Boolean devicePoweredOffNormally = false; //设备是否正常关机 diff --git a/src/main/java/a8k/service/project_mgr/ProjectItemMgrService.java b/src/main/java/a8k/service/project_mgr/ProjectItemMgrService.java index f8c506e..b90ab9b 100644 --- a/src/main/java/a8k/service/project_mgr/ProjectItemMgrService.java +++ b/src/main/java/a8k/service/project_mgr/ProjectItemMgrService.java @@ -14,6 +14,9 @@ import a8k.service.appeventbus.appevent.AppEvent; import a8k.service.hardware.canbus.A8kCanBusService; import a8k.service.hardware.canbus.protocol.A8kPacket; import a8k.service.hardware.canbus.protocol.CmdId; +import a8k.service.hardware.canbus.protocol.MId; +import a8k.service.hardware.canbus.protocol.RegIndex; +import a8k.service.state_service.A8kStateMgrService; import a8k.utils.wq.ZWorkQueue; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; @@ -35,10 +38,21 @@ public class ProjectItemMgrService implements AppEventListener { @Resource AppEventBusService eventBus; + @Resource + A8kStateMgrService stateMgr; + ZWorkQueue workQueue = new ZWorkQueue(2, 1); @PostConstruct public void init() { + try { + if (canBus.moduleGetReg(MId.A8kIdCardReader, RegIndex.kreg_id_card_reader_is_online) == 1) { + logger.info("ID卡读卡器在线"); + workQueue.addTask(this::readIDCard); + } + } catch (HardwareException e) { + throw new RuntimeException(e); + } eventBus.regListener(this); } @@ -85,7 +99,8 @@ public class ProjectItemMgrService implements AppEventListener { // 判断是否是新的ProjectInfo (by call isNewProjectInfo) // 构造NewAppIDCardDetectEvent // 发送事件到事件总线上去,事件将由 FrontEndEventRouter 路由到前端 - // + // 存储项目信息到数据库中 + // 调用 stateMgr.setCurrentIdCardInfo(); 将ID卡信息存储到状态管理器中 } catch (HardwareException e) { throw new RuntimeException(e); } @@ -101,17 +116,17 @@ public class ProjectItemMgrService implements AppEventListener { return AppRet.success(dbGetProjectInfos()); } - @EnginnerPageAction(name = "插入项目信息") - public AppRet InsertProjectInfo(ProjectInfo newpinfo) { + @EnginnerPageAction(name = "添加项目信息") + public AppRet addProjectInfo(ProjectInfo newpinfo) { var pinfo = ProjectInfo.findOne(ProjectInfo.class, Map.of("lotName", newpinfo.lotName)); if (pinfo != null && newpinfo.updateChipVersion < pinfo.updateChipVersion) { - return AppRet.message("新项目版本低于数据库中的项目版本,不更新",""); + return AppRet.success("新项目版本低于数据库中的项目版本,不更新"); } else { if (pinfo != null) { pinfo.delete(); } newpinfo.save(); } - return AppRet.message("插入成功",""); + return AppRet.success("添加成功"); } } diff --git a/src/main/java/a8k/service/state_service/A8kStateMgrService.java b/src/main/java/a8k/service/state_service/A8kStateMgrService.java index dde8d2a..4af8c93 100644 --- a/src/main/java/a8k/service/state_service/A8kStateMgrService.java +++ b/src/main/java/a8k/service/state_service/A8kStateMgrService.java @@ -2,6 +2,7 @@ package a8k.service.state_service; import a8k.controler.engineer.utils.EngineerPageTab; import a8k.controler.engineer.utils.EnginnerPageAction; +import a8k.db.ProjectInfo; import a8k.service.base.A8kDeviceState; import jakarta.annotation.PostConstruct; import org.slf4j.Logger; @@ -28,6 +29,9 @@ public class A8kStateMgrService { return deviceState; } + public void setCurrentIdCardInfo(ProjectInfo projectInfo) { + deviceState.curIdCardInfo = projectInfo; + } }