diff --git a/src/main/java/a8k/appbase/sampleinfo/SampleInfo.java b/src/main/java/a8k/appbase/sampleinfo/SampleInfo.java new file mode 100644 index 0000000..47c44b3 --- /dev/null +++ b/src/main/java/a8k/appbase/sampleinfo/SampleInfo.java @@ -0,0 +1,12 @@ +package a8k.appbase.sampleinfo; + +import a8k.appbase.type.BloodType; + +import java.util.List; + +public class SampleInfo { + public String udpid; //用户输入的样本ID,不做逻辑,只做展示 + public String barcodeid; //用于请求用户信息的条码ID + public List projectCodes = null; //项目代码 + public BloodType bloodType = BloodType.WHOLE_BLOOD; //血型 +} diff --git a/src/main/java/a8k/appbase/A8kTubeType.java b/src/main/java/a8k/appbase/type/A8kTubeType.java similarity index 93% rename from src/main/java/a8k/appbase/A8kTubeType.java rename to src/main/java/a8k/appbase/type/A8kTubeType.java index b0a32e3..603249a 100644 --- a/src/main/java/a8k/appbase/A8kTubeType.java +++ b/src/main/java/a8k/appbase/type/A8kTubeType.java @@ -1,4 +1,4 @@ -package a8k.appbase; +package a8k.appbase.type; public enum A8kTubeType { diff --git a/src/main/java/a8k/service/base/BloodType.java b/src/main/java/a8k/appbase/type/BloodType.java similarity index 65% rename from src/main/java/a8k/service/base/BloodType.java rename to src/main/java/a8k/appbase/type/BloodType.java index 965d1a0..b2e4846 100644 --- a/src/main/java/a8k/service/base/BloodType.java +++ b/src/main/java/a8k/appbase/type/BloodType.java @@ -1,4 +1,4 @@ -package a8k.service.base; +package a8k.appbase.type; public enum BloodType { WHOLE_BLOOD, diff --git a/src/main/java/a8k/service/FrontEndEventRouter.java b/src/main/java/a8k/service/FrontEndEventRouter.java index 090fb2b..b6467f3 100644 --- a/src/main/java/a8k/service/FrontEndEventRouter.java +++ b/src/main/java/a8k/service/FrontEndEventRouter.java @@ -1,6 +1,6 @@ package a8k.service; -import a8k.appbase.AppEventListener; +import a8k.service.appeventbus.AppEventListener; import a8k.appbase.appret.AppRet; import a8k.controler.engineer.utils.EngineerPageTab; import a8k.controler.engineer.utils.EnginnerPageAction; diff --git a/src/main/java/a8k/service/appbase/A8kDeviceState.java b/src/main/java/a8k/service/appbase/A8kDeviceState.java new file mode 100644 index 0000000..90a7b4b --- /dev/null +++ b/src/main/java/a8k/service/appbase/A8kDeviceState.java @@ -0,0 +1,28 @@ +package a8k.service.appbase; + +import a8k.db.ProjectInfo; +import a8k.service.appconsumable.base.ConsumableItemGroup; +import a8k.service.appbase.runstate.ReactingPlateRunState; +import a8k.service.appbase.runstate.EmergencyPosRunState; +import a8k.service.appbase.runstate.TubeHolderRunState; + +import java.util.List; + +public class A8kDeviceState { + //耗材状态 + public ConsumableItemGroup consumable = new ConsumableItemGroup(); + //急诊为状态 + public EmergencyPosRunState emergencyPosRunState = new EmergencyPosRunState(); + //正在孵育的任务状态 + public List incubatingPlateStates = null; + //当前正在被处理的试管架状态 + public TubeHolderRunState tubeHolderRunState = new TubeHolderRunState(); + //温度 + public Integer temperature = 25; + //当前ID卡信息 + public ProjectInfo curIdCardInfo = null; + + Boolean deviceInited = false; //设备是否初始化过 + Boolean devicePoweredOffNormally = false; //设备是否正常关机 + +} diff --git a/src/main/java/a8k/service/appbase/progress/EmergencySampleProgress.java b/src/main/java/a8k/service/appbase/progress/EmergencySampleProgress.java new file mode 100644 index 0000000..a7206e5 --- /dev/null +++ b/src/main/java/a8k/service/appbase/progress/EmergencySampleProgress.java @@ -0,0 +1,8 @@ +package a8k.service.appbase.progress; + +public enum EmergencySampleProgress { + IDLE,// + WAITING_SAMPLE,// + PROCESSING,// + PROCESS_COMPLETE,// +} diff --git a/src/main/java/a8k/service/appbase/progress/ReactionPlateProgress.java b/src/main/java/a8k/service/appbase/progress/ReactionPlateProgress.java new file mode 100644 index 0000000..59384e2 --- /dev/null +++ b/src/main/java/a8k/service/appbase/progress/ReactionPlateProgress.java @@ -0,0 +1,17 @@ +package a8k.service.appbase.progress; + +//反应板条状态 +public enum ReactionPlateProgress { + //板夹仓中 + InThePlateBox, + //等待滴液 + WaitingForDrip, + //赋予中 + Incubating, + //孵育完成 + Incubated, + //孵育异常 + IncubateError, + //板条码异常 + PlateCodeError, +} diff --git a/src/main/java/a8k/service/base/sample/TubeHolderState.java b/src/main/java/a8k/service/appbase/progress/TubeHolderProgress.java similarity index 62% rename from src/main/java/a8k/service/base/sample/TubeHolderState.java rename to src/main/java/a8k/service/appbase/progress/TubeHolderProgress.java index 4c61c43..261cef5 100644 --- a/src/main/java/a8k/service/base/sample/TubeHolderState.java +++ b/src/main/java/a8k/service/appbase/progress/TubeHolderProgress.java @@ -1,6 +1,6 @@ -package a8k.service.base.sample; +package a8k.service.appbase.progress; -public enum TubeHolderState { +public enum TubeHolderProgress { TubeHolderStateIdle, //空闲 TubeHolderStateProcessing, //处理中 TubeHolderStateProcessed, //处理完成 diff --git a/src/main/java/a8k/service/base/sample/TubeState.java b/src/main/java/a8k/service/appbase/progress/TubeProcessProgress.java similarity index 72% rename from src/main/java/a8k/service/base/sample/TubeState.java rename to src/main/java/a8k/service/appbase/progress/TubeProcessProgress.java index c48b320..4e739ba 100644 --- a/src/main/java/a8k/service/base/sample/TubeState.java +++ b/src/main/java/a8k/service/appbase/progress/TubeProcessProgress.java @@ -1,6 +1,6 @@ -package a8k.service.base.sample; +package a8k.service.appbase.progress; -public enum TubeState { +public enum TubeProcessProgress { //空 EMPTY, //待处理 diff --git a/src/main/java/a8k/service/appbase/result/ReactionResult.java b/src/main/java/a8k/service/appbase/result/ReactionResult.java new file mode 100644 index 0000000..33dacad --- /dev/null +++ b/src/main/java/a8k/service/appbase/result/ReactionResult.java @@ -0,0 +1,13 @@ +package a8k.service.appbase.result; + +public class ReactionResult { + + public Boolean result0Error; + public Boolean result1Error; + public Boolean result2Error; + + public String result0; + public String result1; + public String result2; + +} diff --git a/src/main/java/a8k/service/appbase/runstate/EmergencyPosRunState.java b/src/main/java/a8k/service/appbase/runstate/EmergencyPosRunState.java new file mode 100644 index 0000000..f650df4 --- /dev/null +++ b/src/main/java/a8k/service/appbase/runstate/EmergencyPosRunState.java @@ -0,0 +1,14 @@ +package a8k.service.appbase.runstate; + +import a8k.appbase.sampleinfo.SampleInfo; +import a8k.service.appbase.result.ReactionResult; +import a8k.service.appbase.progress.EmergencySampleProgress; + +public class EmergencyPosRunState { + //急诊位状态 + public EmergencySampleProgress emergencySampleProgress = EmergencySampleProgress.IDLE; + // + SampleInfo bindSample = new SampleInfo(); //绑定的样本运行状态 + //急诊位反应结果 + public ReactionResult emergencyResult = new ReactionResult(); +} diff --git a/src/main/java/a8k/service/base/plate/ReactingPlateState.java b/src/main/java/a8k/service/appbase/runstate/ReactingPlateRunState.java similarity index 52% rename from src/main/java/a8k/service/base/plate/ReactingPlateState.java rename to src/main/java/a8k/service/appbase/runstate/ReactingPlateRunState.java index e6ec8de..db7aa99 100644 --- a/src/main/java/a8k/service/base/plate/ReactingPlateState.java +++ b/src/main/java/a8k/service/appbase/runstate/ReactingPlateRunState.java @@ -1,15 +1,16 @@ -package a8k.service.base.plate; +package a8k.service.appbase.runstate; -import a8k.service.base.reaction_result.ReactionResult; -import a8k.service.base.sample.SampleInfo; -import a8k.service.base.sample.Tube; +import a8k.service.appbase.result.ReactionResult; +import a8k.appbase.sampleinfo.SampleInfo; +import a8k.service.appbase.progress.ReactionPlateProgress; import java.util.Date; -public class ReactingPlateState { +public class ReactingPlateRunState { + ReactionPlateProgress progress; //孵育盘状态 String sampleUUID; //样本UUID 系统自动生成 - String projectId;//项目id + String projectId; //项目id SampleInfo bindSample; //绑定的样本运行状态 @@ -17,7 +18,5 @@ public class ReactingPlateState { Date startIncubatedTime; //开始孵育时间 Integer targetIncubatedTimeS; //目标孵育时间 - PlateState plateState; //孵育盘状态 - ReactionResult reactionResult; //反应结果 } diff --git a/src/main/java/a8k/service/appbase/runstate/TubeHolderRunState.java b/src/main/java/a8k/service/appbase/runstate/TubeHolderRunState.java new file mode 100644 index 0000000..612bc83 --- /dev/null +++ b/src/main/java/a8k/service/appbase/runstate/TubeHolderRunState.java @@ -0,0 +1,20 @@ +package a8k.service.appbase.runstate; + +import a8k.appbase.type.A8kTubeType; +import a8k.appbase.type.BloodType; +import a8k.service.appbase.progress.TubeHolderProgress; + +public class TubeHolderRunState { + public BloodType bloodType = BloodType.WHOLE_BLOOD; //血型 + public A8kTubeType tubeHolderType = A8kTubeType.BloodTube; //管子类型 + public TubeHolderProgress tubeHolderProgress = TubeHolderProgress.TubeHolderStateIdle; //管子状态 + public TubeRunState[] tubeRunStates = new TubeRunState[10]; //管子 + public Integer processingTubeIndex = -1; //当前正在被处理的试管索引 + + public TubeHolderRunState() { + for (int i = 0; i < tubeRunStates.length; i++) { + tubeRunStates[i] = new TubeRunState(); + } + processingTubeIndex = 1; + } +} diff --git a/src/main/java/a8k/service/appbase/runstate/TubeRunState.java b/src/main/java/a8k/service/appbase/runstate/TubeRunState.java new file mode 100644 index 0000000..e5bc326 --- /dev/null +++ b/src/main/java/a8k/service/appbase/runstate/TubeRunState.java @@ -0,0 +1,12 @@ +package a8k.service.appbase.runstate; + +import a8k.appbase.sampleinfo.SampleInfo; +import a8k.appbase.type.BloodType; +import a8k.service.appbase.progress.TubeProcessProgress; + +import java.util.List; + +public class TubeRunState { + public TubeProcessProgress tubeProcessProgress = TubeProcessProgress.EMPTY; //样本运行状态 + public SampleInfo bindSample = new SampleInfo(); //绑定的样本运行状态 +} diff --git a/src/main/java/a8k/service/appcfgs/A8kDeviceCfg.java b/src/main/java/a8k/service/appcfgs/A8kDeviceCfg.java deleted file mode 100644 index e1f377d..0000000 --- a/src/main/java/a8k/service/appcfgs/A8kDeviceCfg.java +++ /dev/null @@ -1,12 +0,0 @@ -package a8k.service.appcfgs; - -import a8k.service.base.samplecfg.SampleTubeHolderCfg; - -import java.util.ArrayList; -import java.util.List; - -public class A8kDeviceCfg { - //配置 - public List cfgs = new ArrayList<>(); - -} diff --git a/src/main/java/a8k/service/appcfgs/A8kDeviceCfgMgrService.java b/src/main/java/a8k/service/appcfgs/A8kDeviceCfgMgrService.java index 5bdb7ed..acf9f48 100644 --- a/src/main/java/a8k/service/appcfgs/A8kDeviceCfgMgrService.java +++ b/src/main/java/a8k/service/appcfgs/A8kDeviceCfgMgrService.java @@ -3,9 +3,11 @@ package a8k.service.appcfgs; import a8k.appbase.appret.AppRet; import a8k.controler.engineer.utils.EngineerPageTab; import a8k.controler.engineer.utils.EnginnerPageAction; -import a8k.service.base.BloodType; -import a8k.service.base.samplecfg.SampleTubeCfg; -import a8k.service.base.samplecfg.SampleTubeHolderCfg; +import a8k.service.appcfgs.base.A8kDeviceCfg; +import a8k.service.appcfgs.base.EmergencyCfg; +import a8k.appbase.type.BloodType; +import a8k.service.appcfgs.base.SampleTubeCfg; +import a8k.service.appcfgs.base.SampleTubeHolderCfg; import a8k.service.hardware.canbus.protocol.A8kEcode; import org.springframework.stereotype.Component; @@ -37,26 +39,26 @@ public class A8kDeviceCfgMgrService { } - @EnginnerPageAction(name = "获取设备配置",group = "基础",groupOrder = 1) + @EnginnerPageAction(name = "获取设备配置", group = "基础", groupOrder = 1) public A8kDeviceCfg getA8kDeviceCfg() { return deviceCfg; } - @EnginnerPageAction(name = "添加<试管架>配置",group = "试管架",groupOrder = 2) + @EnginnerPageAction(name = "添加<试管架>配置", group = "试管架", groupOrder = 2) public AppRet addCfg() { SampleTubeHolderCfg cfg = new SampleTubeHolderCfg(); deviceCfg.cfgs.add(cfg); return AppRet.success(cfg); } - @EnginnerPageAction(name = "删除<试管架>配置",group = "试管架") + @EnginnerPageAction(name = "删除<试管架>配置", group = "试管架") public AppRet removeCfg(String tubeHolderCfgUUID) { dbRemoveCfg(tubeHolderCfgUUID); return AppRet.success(); } - @EnginnerPageAction(name = "激活<试管架>配置",group = "试管架") + @EnginnerPageAction(name = "激活<试管架>配置", group = "试管架") public AppRet activeCfg(String tubeHolderCfgUUID, Boolean active) { SampleTubeHolderCfg cfg = dbFindCfg(tubeHolderCfgUUID); if (cfg == null) { @@ -67,7 +69,7 @@ public class A8kDeviceCfgMgrService { } - @EnginnerPageAction(name = "修改<试管>用户信息配置",group = "试管",groupOrder = 3) + @EnginnerPageAction(name = "修改<试管>用户信息配置", group = "试管", groupOrder = 3) public AppRet updateTubeUsrCfg(String uuid, Integer tubeIndex, String udpid, String barcodeid) { SampleTubeHolderCfg cfg = dbFindCfg(uuid); assert cfg != null; @@ -77,7 +79,7 @@ public class A8kDeviceCfgMgrService { } - @EnginnerPageAction(name = "清除<试管>项目信息",group = "试管") + @EnginnerPageAction(name = "清除<试管>项目信息", group = "试管") public AppRet clearTubeProjectCfg(String uuid, Integer tubeIndex) { SampleTubeHolderCfg cfg = dbFindCfg(uuid); assert cfg != null; @@ -86,7 +88,7 @@ public class A8kDeviceCfgMgrService { return AppRet.success(cfg.tubeCfgs.get(tubeIndex)); } - @EnginnerPageAction(name = "添加<试管>项目信息",group = "试管") + @EnginnerPageAction(name = "添加<试管>项目信息", group = "试管") public AppRet addTubeProjectCode(String uuid, Integer tubeIndex, String pjc) { SampleTubeHolderCfg cfg = dbFindCfg(uuid); assert cfg != null; @@ -96,7 +98,7 @@ public class A8kDeviceCfgMgrService { return AppRet.success(tubeCfg); } - @EnginnerPageAction(name = "设置<试管>血型",group = "试管") + @EnginnerPageAction(name = "设置<试管>血型", group = "试管") public AppRet setTubeBloodType(String uuid, Integer tubeIndex, BloodType bloodType) { SampleTubeCfg tubeCfg = dbFindTubeCfg(uuid, tubeIndex); assert tubeCfg != null; @@ -104,4 +106,14 @@ public class A8kDeviceCfgMgrService { return AppRet.success(); } + @EnginnerPageAction(name = "获取<急诊位>配置", group = "急诊位", groupOrder = 4) + public AppRet getEmergencyCfg() { + return AppRet.success(deviceCfg.emergencyCfg); + } + + @EnginnerPageAction(name = "添加<急诊位>配置", group = "急诊位") + public AppRet addEmergencyCfg(EmergencyCfg cfg) { + deviceCfg.emergencyCfg = cfg; + return AppRet.success(deviceCfg.emergencyCfg); + } } diff --git a/src/main/java/a8k/service/appcfgs/base/A8kDeviceCfg.java b/src/main/java/a8k/service/appcfgs/base/A8kDeviceCfg.java new file mode 100644 index 0000000..3e30b5b --- /dev/null +++ b/src/main/java/a8k/service/appcfgs/base/A8kDeviceCfg.java @@ -0,0 +1,10 @@ +package a8k.service.appcfgs.base; + +import java.util.ArrayList; +import java.util.List; + +public class A8kDeviceCfg { + //配置 + public List cfgs = new ArrayList<>(); + public EmergencyCfg emergencyCfg = null; +} diff --git a/src/main/java/a8k/service/appcfgs/base/EmergencyCfg.java b/src/main/java/a8k/service/appcfgs/base/EmergencyCfg.java new file mode 100644 index 0000000..7679ae7 --- /dev/null +++ b/src/main/java/a8k/service/appcfgs/base/EmergencyCfg.java @@ -0,0 +1,19 @@ +package a8k.service.appcfgs.base; + +import a8k.appbase.type.BloodType; + +import java.util.List; + +public class EmergencyCfg { + public String udpid; //用户输入的样本ID,不做逻辑,只做展示 + public String barcodeid; //用于请求用户信息的条码ID + public List projectCodes; //项目编码,用于查找项目相关信息 + public BloodType bloodType = BloodType.WHOLE_BLOOD; //血型 + + public String projectCodes0; + public String projectCodes1; + public String projectCodes2; + public String projectCodes3; + public String projectCodes4; + public String projectCodes5; +} diff --git a/src/main/java/a8k/service/base/samplecfg/SampleTubeCfg.java b/src/main/java/a8k/service/appcfgs/base/SampleTubeCfg.java similarity index 75% rename from src/main/java/a8k/service/base/samplecfg/SampleTubeCfg.java rename to src/main/java/a8k/service/appcfgs/base/SampleTubeCfg.java index 3b25d63..0db00e6 100644 --- a/src/main/java/a8k/service/base/samplecfg/SampleTubeCfg.java +++ b/src/main/java/a8k/service/appcfgs/base/SampleTubeCfg.java @@ -1,10 +1,8 @@ -package a8k.service.base.samplecfg; +package a8k.service.appcfgs.base; -import a8k.service.base.BloodType; -import a8k.service.base.sample.SampleInfo; +import a8k.appbase.type.BloodType; import java.util.List; -import java.util.UUID; public class SampleTubeCfg { public String tubeHolderUUID; diff --git a/src/main/java/a8k/service/base/samplecfg/SampleTubeHolderCfg.java b/src/main/java/a8k/service/appcfgs/base/SampleTubeHolderCfg.java similarity index 88% rename from src/main/java/a8k/service/base/samplecfg/SampleTubeHolderCfg.java rename to src/main/java/a8k/service/appcfgs/base/SampleTubeHolderCfg.java index ceb0bad..2da9d61 100644 --- a/src/main/java/a8k/service/base/samplecfg/SampleTubeHolderCfg.java +++ b/src/main/java/a8k/service/appcfgs/base/SampleTubeHolderCfg.java @@ -1,9 +1,8 @@ -package a8k.service.base.samplecfg; +package a8k.service.appcfgs.base; -import a8k.appbase.A8kTubeType; +import a8k.appbase.type.A8kTubeType; import java.util.ArrayList; -import java.util.List; import java.util.UUID; public class SampleTubeHolderCfg { diff --git a/src/main/java/a8k/service/ctrl_service/AppCtrlService.java b/src/main/java/a8k/service/appconsumable/AppConsumableMgrService.java similarity index 54% rename from src/main/java/a8k/service/ctrl_service/AppCtrlService.java rename to src/main/java/a8k/service/appconsumable/AppConsumableMgrService.java index d1afd28..15d06fa 100644 --- a/src/main/java/a8k/service/ctrl_service/AppCtrlService.java +++ b/src/main/java/a8k/service/appconsumable/AppConsumableMgrService.java @@ -1,60 +1,25 @@ -package a8k.service.ctrl_service; +package a8k.service.appconsumable; import a8k.appbase.appret.AppRet; import a8k.controler.engineer.utils.EngineerPageTab; import a8k.controler.engineer.utils.EnginnerPageAction; import a8k.service.ProjectColorAllocer; -import a8k.service.base.consumable.ConsumableItemGroup; -import a8k.service.base.consumable.ReactantItem; -import a8k.service.base.consumable.TipGroupInfo; +import a8k.service.appconsumable.base.ConsumableItemGroup; +import a8k.service.appconsumable.base.ReactantItem; +import a8k.service.appconsumable.base.TipGroupInfo; +import a8k.service.appstate.AppStateMgrService; import jakarta.annotation.Resource; import org.springframework.stereotype.Component; -@EngineerPageTab(name = "AppCtrlService") +@EngineerPageTab(name = "AppConsumableMgrService") @Component -public class AppCtrlService { - +public class AppConsumableMgrService { @Resource ProjectColorAllocer projectColorAllocer; - - @EnginnerPageAction(name = "初始化设备") - public AppRet initDevice() { - return AppRet.success(); - - } - - //启动 - @EnginnerPageAction(name = "启动") - public AppRet startProcess() { - return AppRet.success(); - } - - //暂停 - @EnginnerPageAction(name = "暂停") - public AppRet pauseProcess() { - return AppRet.success(); - } - - //急停 - @EnginnerPageAction(name = "急停") - public AppRet forceStopProcess() { - return AppRet.success(); - } - - //停止 - @EnginnerPageAction(name = "停止") - public AppRet stopProcess() { - return AppRet.success(); - } - - //关机 - @EnginnerPageAction(name = "关机") - public AppRet shutdown() { - return AppRet.success(); - } - + @Resource + AppStateMgrService stateMgrService; //扫描耗材 @EnginnerPageAction(name = "扫描耗材") @@ -73,6 +38,7 @@ public class AppCtrlService { var.tip[0] = new TipGroupInfo(); var.tip[1] = new TipGroupInfo(); var.tip[2] = new TipGroupInfo(); + stateMgrService.setConsumable(var); return AppRet.success(var); } } diff --git a/src/main/java/a8k/service/appconsumable/base/ConsumableItemGroup.java b/src/main/java/a8k/service/appconsumable/base/ConsumableItemGroup.java new file mode 100644 index 0000000..0971b23 --- /dev/null +++ b/src/main/java/a8k/service/appconsumable/base/ConsumableItemGroup.java @@ -0,0 +1,19 @@ +package a8k.service.appconsumable.base; + +import java.util.Date; + +public class ConsumableItemGroup { + + public Date scanDate = new Date(); + public ReactantItem[] reactantItems = new ReactantItem[6]; + public TipGroupInfo[] tip = new TipGroupInfo[3]; + + public ConsumableItemGroup() { + for (int i = 0; i < reactantItems.length; i++) { + reactantItems[i] = new ReactantItem(); + } + for (int i = 0; i < tip.length; i++) { + tip[i] = new TipGroupInfo(); + } + } +} diff --git a/src/main/java/a8k/service/base/consumable/ReactantItem.java b/src/main/java/a8k/service/appconsumable/base/ReactantItem.java similarity index 93% rename from src/main/java/a8k/service/base/consumable/ReactantItem.java rename to src/main/java/a8k/service/appconsumable/base/ReactantItem.java index e6027ba..1151b38 100644 --- a/src/main/java/a8k/service/base/consumable/ReactantItem.java +++ b/src/main/java/a8k/service/appconsumable/base/ReactantItem.java @@ -1,4 +1,4 @@ -package a8k.service.base.consumable; +package a8k.service.appconsumable.base; //反应物,诸如反应板夹,小瓶缓冲液,大瓶缓冲液... public class ReactantItem { diff --git a/src/main/java/a8k/service/base/consumable/TipGroupInfo.java b/src/main/java/a8k/service/appconsumable/base/TipGroupInfo.java similarity index 66% rename from src/main/java/a8k/service/base/consumable/TipGroupInfo.java rename to src/main/java/a8k/service/appconsumable/base/TipGroupInfo.java index 2c07a99..18dd975 100644 --- a/src/main/java/a8k/service/base/consumable/TipGroupInfo.java +++ b/src/main/java/a8k/service/appconsumable/base/TipGroupInfo.java @@ -1,4 +1,4 @@ -package a8k.service.base.consumable; +package a8k.service.appconsumable.base; public class TipGroupInfo { public Integer tipNum = 0;//剩余可用数量 diff --git a/src/main/java/a8k/service/appctrl/AppCtrlService.java b/src/main/java/a8k/service/appctrl/AppCtrlService.java new file mode 100644 index 0000000..55c008f --- /dev/null +++ b/src/main/java/a8k/service/appctrl/AppCtrlService.java @@ -0,0 +1,53 @@ +package a8k.service.appctrl; + +import a8k.appbase.appret.AppRet; +import a8k.controler.engineer.utils.EngineerPageTab; +import a8k.controler.engineer.utils.EnginnerPageAction; +import org.springframework.stereotype.Component; + +@EngineerPageTab(name = "AppCtrlService") +@Component +public class AppCtrlService { + + + + + @EnginnerPageAction(name = "初始化设备") + public AppRet initDevice() { + return AppRet.success(); + + } + + //启动 + @EnginnerPageAction(name = "启动") + public AppRet startProcess() { + return AppRet.success(); + } + + //暂停 + @EnginnerPageAction(name = "暂停") + public AppRet pauseProcess() { + return AppRet.success(); + } + + //急停 + @EnginnerPageAction(name = "急停") + public AppRet forceStopProcess() { + return AppRet.success(); + } + + //停止 + @EnginnerPageAction(name = "停止") + public AppRet stopProcess() { + return AppRet.success(); + } + + //关机 + @EnginnerPageAction(name = "关机") + public AppRet shutdown() { + return AppRet.success(); + } + + + +} diff --git a/src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java b/src/main/java/a8k/service/appctrl/DeviceInitializationCtrlService.java similarity index 99% rename from src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java rename to src/main/java/a8k/service/appctrl/DeviceInitializationCtrlService.java index 6df12d6..0700987 100644 --- a/src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java +++ b/src/main/java/a8k/service/appctrl/DeviceInitializationCtrlService.java @@ -1,4 +1,4 @@ -package a8k.service.ctrl_service; +package a8k.service.appctrl; import a8k.service.hardware.canbus.protocol.A8kEcode; import a8k.service.hardware.canbus.protocol.IOId; diff --git a/src/main/java/a8k/service/ctrl_service/DeviceShutdowCtrlService.java b/src/main/java/a8k/service/appctrl/DeviceShutdowCtrlService.java similarity index 75% rename from src/main/java/a8k/service/ctrl_service/DeviceShutdowCtrlService.java rename to src/main/java/a8k/service/appctrl/DeviceShutdowCtrlService.java index c210612..8fc0c8d 100644 --- a/src/main/java/a8k/service/ctrl_service/DeviceShutdowCtrlService.java +++ b/src/main/java/a8k/service/appctrl/DeviceShutdowCtrlService.java @@ -1,4 +1,4 @@ -package a8k.service.ctrl_service; +package a8k.service.appctrl; import org.springframework.stereotype.Component; diff --git a/src/main/java/a8k/service/ctrl_service/DeviceShutdownCtrlService.java b/src/main/java/a8k/service/appctrl/DeviceShutdownCtrlService.java similarity index 58% rename from src/main/java/a8k/service/ctrl_service/DeviceShutdownCtrlService.java rename to src/main/java/a8k/service/appctrl/DeviceShutdownCtrlService.java index b5484c2..9374f5c 100644 --- a/src/main/java/a8k/service/ctrl_service/DeviceShutdownCtrlService.java +++ b/src/main/java/a8k/service/appctrl/DeviceShutdownCtrlService.java @@ -1,9 +1,11 @@ -package a8k.service.ctrl_service; +package a8k.service.appctrl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +@Component public class DeviceShutdownCtrlService { - public static final Logger logger = LoggerFactory.getLogger(DeviceInitializationCtrlService.class); + public static final Logger logger = LoggerFactory.getLogger(DeviceShutdownCtrlService.class); } diff --git a/src/main/java/a8k/service/appeventbus/AppEventBusService.java b/src/main/java/a8k/service/appeventbus/AppEventBusService.java index bcbce25..2aa0061 100644 --- a/src/main/java/a8k/service/appeventbus/AppEventBusService.java +++ b/src/main/java/a8k/service/appeventbus/AppEventBusService.java @@ -1,6 +1,5 @@ package a8k.service.appeventbus; -import a8k.appbase.AppEventListener; import a8k.service.appeventbus.appevent.AppEvent; import jakarta.annotation.PostConstruct; import org.slf4j.Logger; diff --git a/src/main/java/a8k/appbase/AppEventListener.java b/src/main/java/a8k/service/appeventbus/AppEventListener.java similarity index 79% rename from src/main/java/a8k/appbase/AppEventListener.java rename to src/main/java/a8k/service/appeventbus/AppEventListener.java index e7ff6c2..48f0fdc 100644 --- a/src/main/java/a8k/appbase/AppEventListener.java +++ b/src/main/java/a8k/service/appeventbus/AppEventListener.java @@ -1,4 +1,4 @@ -package a8k.appbase; +package a8k.service.appeventbus; import a8k.service.appeventbus.appevent.AppEvent; diff --git a/src/main/java/a8k/service/state_service/A8kStateMgrService.java b/src/main/java/a8k/service/appstate/AppStateMgrService.java similarity index 75% rename from src/main/java/a8k/service/state_service/A8kStateMgrService.java rename to src/main/java/a8k/service/appstate/AppStateMgrService.java index 4af8c93..2e19806 100644 --- a/src/main/java/a8k/service/state_service/A8kStateMgrService.java +++ b/src/main/java/a8k/service/appstate/AppStateMgrService.java @@ -1,9 +1,10 @@ -package a8k.service.state_service; +package a8k.service.appstate; import a8k.controler.engineer.utils.EngineerPageTab; import a8k.controler.engineer.utils.EnginnerPageAction; import a8k.db.ProjectInfo; -import a8k.service.base.A8kDeviceState; +import a8k.service.appconsumable.base.ConsumableItemGroup; +import a8k.service.appbase.A8kDeviceState; import jakarta.annotation.PostConstruct; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -11,13 +12,13 @@ import org.springframework.stereotype.Component; @Component @EngineerPageTab(name = "A8kStateMgrService") -public class A8kStateMgrService { +public class AppStateMgrService { /* * 该服务约定: * 1. 前端只能读取该服务中的状态,不能设置,设置只能通过其他服务进行设置 */ - public static final Logger logger = LoggerFactory.getLogger(A8kStateMgrService.class); + public static final Logger logger = LoggerFactory.getLogger(AppStateMgrService.class); public A8kDeviceState deviceState = new A8kDeviceState(); @PostConstruct @@ -33,5 +34,8 @@ public class A8kStateMgrService { deviceState.curIdCardInfo = projectInfo; } + public void setConsumable(ConsumableItemGroup cig) { + deviceState.consumable = cig; + } } diff --git a/src/main/java/a8k/service/base/A8kDeviceState.java b/src/main/java/a8k/service/base/A8kDeviceState.java deleted file mode 100644 index 69373fc..0000000 --- a/src/main/java/a8k/service/base/A8kDeviceState.java +++ /dev/null @@ -1,35 +0,0 @@ -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; -import a8k.service.base.sample.EmergencyPosState; -import a8k.service.base.sample.SampleInfo; -import a8k.service.base.sample.TubeHolder; -import a8k.service.base.samplecfg.SampleTubeHolderCfg; - -import java.util.ArrayList; -import java.util.List; - -public class A8kDeviceState { - //耗材 - public ConsumableItemGroup consumableItemGroup = null; - //急诊位状态 - public EmergencyPosState emergencyPosState = EmergencyPosState.IDLE; - //急诊位样本信息 - public SampleInfo emergencySampleInfo = null; - //急诊位反应结果 - public ReactionResult emergencyResult = null; - //正在孵育的任务状态 - public List incubatingPlateStates = null; - //当前正在被处理的试管架状态 - public TubeHolder processingTubeHolder = null; - //温度 - public Integer temperature; - //当前ID卡信息 - public ProjectInfo curIdCardInfo = null; - - Boolean deviceInited = false; //设备是否初始化过 - Boolean devicePoweredOffNormally = false; //设备是否正常关机 -} diff --git a/src/main/java/a8k/service/base/consumable/ConsumableItemGroup.java b/src/main/java/a8k/service/base/consumable/ConsumableItemGroup.java deleted file mode 100644 index 02b2bb2..0000000 --- a/src/main/java/a8k/service/base/consumable/ConsumableItemGroup.java +++ /dev/null @@ -1,10 +0,0 @@ -package a8k.service.base.consumable; - -import java.util.Date; - -public class ConsumableItemGroup { - - public Date scanDate = new Date(); - public ReactantItem[] reactantItems = new ReactantItem[6]; - public TipGroupInfo[] tip = new TipGroupInfo[3]; -} diff --git a/src/main/java/a8k/service/base/plate/PlateState.java b/src/main/java/a8k/service/base/plate/PlateState.java deleted file mode 100644 index 4e72696..0000000 --- a/src/main/java/a8k/service/base/plate/PlateState.java +++ /dev/null @@ -1,12 +0,0 @@ -package a8k.service.base.plate; - -public enum PlateState { - //赋予中 - Incubating, - //孵育完成 - Incubated, - //孵育异常 - IncubateError, - //板条码异常 - PlateCodeError, -} diff --git a/src/main/java/a8k/service/base/reaction_result/ReactionResult.java b/src/main/java/a8k/service/base/reaction_result/ReactionResult.java deleted file mode 100644 index 4dce008..0000000 --- a/src/main/java/a8k/service/base/reaction_result/ReactionResult.java +++ /dev/null @@ -1,13 +0,0 @@ -package a8k.service.base.reaction_result; - -public class ReactionResult { - - Boolean result0Error; - Boolean result1Error; - Boolean result2Error; - - String result0; - String result1; - String result2; - -} diff --git a/src/main/java/a8k/service/base/sample/EmergencyPosState.java b/src/main/java/a8k/service/base/sample/EmergencyPosState.java deleted file mode 100644 index 0eae39f..0000000 --- a/src/main/java/a8k/service/base/sample/EmergencyPosState.java +++ /dev/null @@ -1,7 +0,0 @@ -package a8k.service.base.sample; - -public enum EmergencyPosState { - IDLE,// - PROCESSING,// - PROCESS_COMPLETE,// -} diff --git a/src/main/java/a8k/service/base/sample/EmergencySampleInfo.java b/src/main/java/a8k/service/base/sample/EmergencySampleInfo.java deleted file mode 100644 index 0c90999..0000000 --- a/src/main/java/a8k/service/base/sample/EmergencySampleInfo.java +++ /dev/null @@ -1,6 +0,0 @@ -package a8k.service.base.sample; - -public class EmergencySampleInfo { - - -} diff --git a/src/main/java/a8k/service/base/sample/SampleInfo.java b/src/main/java/a8k/service/base/sample/SampleInfo.java deleted file mode 100644 index 000aa1b..0000000 --- a/src/main/java/a8k/service/base/sample/SampleInfo.java +++ /dev/null @@ -1,9 +0,0 @@ -package a8k.service.base.sample; - -import a8k.appbase.A8kTubeType; - -import java.util.List; - -public class SampleInfo { - -} diff --git a/src/main/java/a8k/service/base/sample/Tube.java b/src/main/java/a8k/service/base/sample/Tube.java deleted file mode 100644 index 86fc734..0000000 --- a/src/main/java/a8k/service/base/sample/Tube.java +++ /dev/null @@ -1,8 +0,0 @@ -package a8k.service.base.sample; - -import a8k.appbase.A8kTubeType; - -public class Tube { - TubeState tubeState = TubeState.EMPTY; //样本运行状态 - SampleInfo sampleInfo; //样本信息 -} diff --git a/src/main/java/a8k/service/base/sample/TubeHolder.java b/src/main/java/a8k/service/base/sample/TubeHolder.java deleted file mode 100644 index 39b97ba..0000000 --- a/src/main/java/a8k/service/base/sample/TubeHolder.java +++ /dev/null @@ -1,12 +0,0 @@ -package a8k.service.base.sample; - -import a8k.appbase.A8kTubeType; -import a8k.service.base.BloodType; - -public class TubeHolder { - public BloodType bloodType = BloodType.WHOLE_BLOOD; //血型 - public A8kTubeType tubeHolderType = A8kTubeType.BloodTube; //管子类型 - public TubeHolderState tubeHolderState = TubeHolderState.TubeHolderStateIdle; //管子状态 - public Tube[] tubes = new Tube[10]; //管子 - public Integer processingTubeIndex = -1; //当前管子索引 -} diff --git a/src/main/java/a8k/service/ctrl_service/ConsumableLoadingService.java b/src/main/java/a8k/service/ctrl_service/ConsumableLoadingService.java deleted file mode 100644 index a585435..0000000 --- a/src/main/java/a8k/service/ctrl_service/ConsumableLoadingService.java +++ /dev/null @@ -1,22 +0,0 @@ -package a8k.service.ctrl_service; - -import jakarta.annotation.PostConstruct; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - -@Component -public class ConsumableLoadingService implements Runnable { - public static final Logger LOG = LoggerFactory.getLogger(ConsumableLoadingService.class); - - @Override - public void run() { - - } - - @PostConstruct - public void init(){ - //启动线程实例 - } - -} diff --git a/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java b/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java index ac6a9c9..6ed80f7 100644 --- a/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java +++ b/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java @@ -3,7 +3,7 @@ package a8k.service.hardware; import a8k.controler.engineer.utils.*; import a8k.service.hardware.canbus.protocol.A8kEcode; import a8k.service.hardware.canbus.protocol.MId; -import a8k.appbase.A8kTubeType; +import a8k.appbase.type.A8kTubeType; import a8k.appbase.HardwareException; import a8k.appbase.appret.AppRet; import a8k.service.hardware.canbus.A8kCanBusService; diff --git a/src/main/java/a8k/service/hardware/canbus/A8kModParamInitializer.java b/src/main/java/a8k/service/hardware/canbus/A8kModParamInitializer.java index 940da0e..df05dbf 100644 --- a/src/main/java/a8k/service/hardware/canbus/A8kModParamInitializer.java +++ b/src/main/java/a8k/service/hardware/canbus/A8kModParamInitializer.java @@ -3,7 +3,7 @@ package a8k.service.hardware.canbus; import a8k.service.appeventbus.AppEventBusService; import a8k.service.appeventbus.appevent.A8kCanBusOnConnectEvent; import a8k.service.appeventbus.appevent.AppEvent; -import a8k.appbase.AppEventListener; +import a8k.service.appeventbus.AppEventListener; import a8k.appbase.HardwareException; import a8k.service.hardware.canbus.custom_param_mgr.ModCustomParamId; import a8k.service.hardware.canbus.custom_param_mgr.A8kModCustomParamMgr; diff --git a/src/main/java/a8k/service/project_mgr/ProjectItemMgrService.java b/src/main/java/a8k/service/project_mgr/ProjectItemMgrService.java index b90ab9b..0f77ead 100644 --- a/src/main/java/a8k/service/project_mgr/ProjectItemMgrService.java +++ b/src/main/java/a8k/service/project_mgr/ProjectItemMgrService.java @@ -1,7 +1,7 @@ package a8k.service.project_mgr; -import a8k.appbase.AppEventListener; +import a8k.service.appeventbus.AppEventListener; import a8k.appbase.HardwareException; import a8k.appbase.ProjectInfoSimple; import a8k.appbase.appret.AppRet; @@ -9,6 +9,7 @@ import a8k.controler.engineer.utils.EngineerPageTab; import a8k.controler.engineer.utils.EnginnerPageAction; import a8k.db.ProjectInfo; import a8k.service.appeventbus.AppEventBusService; +import a8k.service.appeventbus.appevent.A8kCanBusOnConnectEvent; import a8k.service.appeventbus.appevent.A8kHardwareReport; import a8k.service.appeventbus.appevent.AppEvent; import a8k.service.hardware.canbus.A8kCanBusService; @@ -16,7 +17,7 @@ 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.service.appstate.AppStateMgrService; import a8k.utils.wq.ZWorkQueue; import jakarta.annotation.PostConstruct; import jakarta.annotation.Resource; @@ -28,7 +29,7 @@ import java.util.List; import java.util.Map; @Component -@EngineerPageTab(name = "ProjectItemMgr") +@EngineerPageTab(name = "ProjectItemMgrService") public class ProjectItemMgrService implements AppEventListener { static Logger logger = org.slf4j.LoggerFactory.getLogger(ProjectItemMgrService.class); @@ -39,20 +40,13 @@ public class ProjectItemMgrService implements AppEventListener { AppEventBusService eventBus; @Resource - A8kStateMgrService stateMgr; + AppStateMgrService 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); } @@ -66,6 +60,15 @@ public class ProjectItemMgrService implements AppEventListener { } else if (CmdId.event_a8000_idcard_offline.equals(cmdId)) { logger.info("拔出ID卡"); } + } else if (event instanceof A8kCanBusOnConnectEvent canPacket) { + 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); + } } } diff --git a/src/main/java/a8k/service/state_service/A8kState.java b/src/main/java/a8k/service/state_service/A8kState.java deleted file mode 100644 index dea242a..0000000 --- a/src/main/java/a8k/service/state_service/A8kState.java +++ /dev/null @@ -1,5 +0,0 @@ -package a8k.service.state_service; - -public class A8kState { - public Boolean devicePoweredOffNormally = false; //设备是否正常关机 -} diff --git a/src/main/java/a8k/service/state_service/A8kStateDB.java b/src/main/java/a8k/service/state_service/A8kStateDB.java deleted file mode 100644 index 720d535..0000000 --- a/src/main/java/a8k/service/state_service/A8kStateDB.java +++ /dev/null @@ -1,17 +0,0 @@ -package a8k.service.state_service; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.iflytop.uf.UfActiveRecord; -import com.iflytop.uf.UfActiveRecordField; - -public class A8kStateDB extends UfActiveRecord { - - @UfActiveRecordField - public String stateJson; //A8k状态Json - - public static String getTableName() { - return "A8kStateDB" + "Table"; - } - -} diff --git a/zhaohe_app.db b/zhaohe_app.db deleted file mode 100644 index cc5fe55..0000000 Binary files a/zhaohe_app.db and /dev/null differ