Browse Source

update

tags/v0
zhaohe 1 year ago
parent
commit
02c77469e9
  1. 12
      src/main/java/a8k/appbase/sampleinfo/SampleInfo.java
  2. 2
      src/main/java/a8k/appbase/type/A8kTubeType.java
  3. 2
      src/main/java/a8k/appbase/type/BloodType.java
  4. 2
      src/main/java/a8k/service/FrontEndEventRouter.java
  5. 28
      src/main/java/a8k/service/appbase/A8kDeviceState.java
  6. 8
      src/main/java/a8k/service/appbase/progress/EmergencySampleProgress.java
  7. 17
      src/main/java/a8k/service/appbase/progress/ReactionPlateProgress.java
  8. 4
      src/main/java/a8k/service/appbase/progress/TubeHolderProgress.java
  9. 4
      src/main/java/a8k/service/appbase/progress/TubeProcessProgress.java
  10. 13
      src/main/java/a8k/service/appbase/result/ReactionResult.java
  11. 14
      src/main/java/a8k/service/appbase/runstate/EmergencyPosRunState.java
  12. 15
      src/main/java/a8k/service/appbase/runstate/ReactingPlateRunState.java
  13. 20
      src/main/java/a8k/service/appbase/runstate/TubeHolderRunState.java
  14. 12
      src/main/java/a8k/service/appbase/runstate/TubeRunState.java
  15. 12
      src/main/java/a8k/service/appcfgs/A8kDeviceCfg.java
  16. 34
      src/main/java/a8k/service/appcfgs/A8kDeviceCfgMgrService.java
  17. 10
      src/main/java/a8k/service/appcfgs/base/A8kDeviceCfg.java
  18. 19
      src/main/java/a8k/service/appcfgs/base/EmergencyCfg.java
  19. 6
      src/main/java/a8k/service/appcfgs/base/SampleTubeCfg.java
  20. 5
      src/main/java/a8k/service/appcfgs/base/SampleTubeHolderCfg.java
  21. 54
      src/main/java/a8k/service/appconsumable/AppConsumableMgrService.java
  22. 19
      src/main/java/a8k/service/appconsumable/base/ConsumableItemGroup.java
  23. 2
      src/main/java/a8k/service/appconsumable/base/ReactantItem.java
  24. 2
      src/main/java/a8k/service/appconsumable/base/TipGroupInfo.java
  25. 53
      src/main/java/a8k/service/appctrl/AppCtrlService.java
  26. 2
      src/main/java/a8k/service/appctrl/DeviceInitializationCtrlService.java
  27. 2
      src/main/java/a8k/service/appctrl/DeviceShutdowCtrlService.java
  28. 6
      src/main/java/a8k/service/appctrl/DeviceShutdownCtrlService.java
  29. 1
      src/main/java/a8k/service/appeventbus/AppEventBusService.java
  30. 2
      src/main/java/a8k/service/appeventbus/AppEventListener.java
  31. 12
      src/main/java/a8k/service/appstate/AppStateMgrService.java
  32. 35
      src/main/java/a8k/service/base/A8kDeviceState.java
  33. 10
      src/main/java/a8k/service/base/consumable/ConsumableItemGroup.java
  34. 12
      src/main/java/a8k/service/base/plate/PlateState.java
  35. 13
      src/main/java/a8k/service/base/reaction_result/ReactionResult.java
  36. 7
      src/main/java/a8k/service/base/sample/EmergencyPosState.java
  37. 6
      src/main/java/a8k/service/base/sample/EmergencySampleInfo.java
  38. 9
      src/main/java/a8k/service/base/sample/SampleInfo.java
  39. 8
      src/main/java/a8k/service/base/sample/Tube.java
  40. 12
      src/main/java/a8k/service/base/sample/TubeHolder.java
  41. 22
      src/main/java/a8k/service/ctrl_service/ConsumableLoadingService.java
  42. 2
      src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java
  43. 2
      src/main/java/a8k/service/hardware/canbus/A8kModParamInitializer.java
  44. 27
      src/main/java/a8k/service/project_mgr/ProjectItemMgrService.java
  45. 5
      src/main/java/a8k/service/state_service/A8kState.java
  46. 17
      src/main/java/a8k/service/state_service/A8kStateDB.java
  47. BIN
      zhaohe_app.db

12
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<String> projectCodes = null; //项目代码
public BloodType bloodType = BloodType.WHOLE_BLOOD; //血型
}

2
src/main/java/a8k/appbase/A8kTubeType.java → src/main/java/a8k/appbase/type/A8kTubeType.java

@ -1,4 +1,4 @@
package a8k.appbase;
package a8k.appbase.type;
public enum A8kTubeType {

2
src/main/java/a8k/service/base/BloodType.java → 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,

2
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;

28
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<ReactingPlateRunState> incubatingPlateStates = null;
//当前正在被处理的试管架状态
public TubeHolderRunState tubeHolderRunState = new TubeHolderRunState();
//温度
public Integer temperature = 25;
//当前ID卡信息
public ProjectInfo curIdCardInfo = null;
Boolean deviceInited = false; //设备是否初始化过
Boolean devicePoweredOffNormally = false; //设备是否正常关机
}

8
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,//
}

17
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,
}

4
src/main/java/a8k/service/base/sample/TubeHolderState.java → 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, //处理完成

4
src/main/java/a8k/service/base/sample/TubeState.java → 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,
//待处理

13
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;
}

14
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();
}

15
src/main/java/a8k/service/base/plate/ReactingPlateState.java → 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; //反应结果
}

20
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;
}
}

12
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(); //绑定的样本运行状态
}

12
src/main/java/a8k/service/appcfgs/A8kDeviceCfg.java

@ -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<SampleTubeHolderCfg> cfgs = new ArrayList<>();
}

34
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<SampleTubeHolderCfg> addCfg() {
SampleTubeHolderCfg cfg = new SampleTubeHolderCfg();
deviceCfg.cfgs.add(cfg);
return AppRet.success(cfg);
}
@EnginnerPageAction(name = "删除<试管架>配置",group = "试管架")
@EnginnerPageAction(name = "删除<试管架>配置", group = "试管架")
public AppRet<Object> removeCfg(String tubeHolderCfgUUID) {
dbRemoveCfg(tubeHolderCfgUUID);
return AppRet.success();
}
@EnginnerPageAction(name = "激活<试管架>配置",group = "试管架")
@EnginnerPageAction(name = "激活<试管架>配置", group = "试管架")
public AppRet<SampleTubeHolderCfg> 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<SampleTubeCfg> 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<SampleTubeCfg> 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<SampleTubeCfg> 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<SampleTubeCfg> 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<EmergencyCfg> getEmergencyCfg() {
return AppRet.success(deviceCfg.emergencyCfg);
}
@EnginnerPageAction(name = "添加<急诊位>配置", group = "急诊位")
public AppRet<EmergencyCfg> addEmergencyCfg(EmergencyCfg cfg) {
deviceCfg.emergencyCfg = cfg;
return AppRet.success(deviceCfg.emergencyCfg);
}
}

10
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<SampleTubeHolderCfg> cfgs = new ArrayList<>();
public EmergencyCfg emergencyCfg = null;
}

19
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<String> 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;
}

6
src/main/java/a8k/service/base/samplecfg/SampleTubeCfg.java → 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;

5
src/main/java/a8k/service/base/samplecfg/SampleTubeHolderCfg.java → 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 {

54
src/main/java/a8k/service/ctrl_service/AppCtrlService.java → 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<Object> initDevice() {
return AppRet.success();
}
//启动
@EnginnerPageAction(name = "启动")
public AppRet<Object> startProcess() {
return AppRet.success();
}
//暂停
@EnginnerPageAction(name = "暂停")
public AppRet<Object> pauseProcess() {
return AppRet.success();
}
//急停
@EnginnerPageAction(name = "急停")
public AppRet<Object> forceStopProcess() {
return AppRet.success();
}
//停止
@EnginnerPageAction(name = "停止")
public AppRet<Object> stopProcess() {
return AppRet.success();
}
//关机
@EnginnerPageAction(name = "关机")
public AppRet<Object> 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);
}
}

19
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();
}
}
}

2
src/main/java/a8k/service/base/consumable/ReactantItem.java → 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 {

2
src/main/java/a8k/service/base/consumable/TipGroupInfo.java → 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;//剩余可用数量

53
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<Object> initDevice() {
return AppRet.success();
}
//启动
@EnginnerPageAction(name = "启动")
public AppRet<Object> startProcess() {
return AppRet.success();
}
//暂停
@EnginnerPageAction(name = "暂停")
public AppRet<Object> pauseProcess() {
return AppRet.success();
}
//急停
@EnginnerPageAction(name = "急停")
public AppRet<Object> forceStopProcess() {
return AppRet.success();
}
//停止
@EnginnerPageAction(name = "停止")
public AppRet<Object> stopProcess() {
return AppRet.success();
}
//关机
@EnginnerPageAction(name = "关机")
public AppRet<Object> shutdown() {
return AppRet.success();
}
}

2
src/main/java/a8k/service/ctrl_service/DeviceInitializationCtrlService.java → 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;

2
src/main/java/a8k/service/ctrl_service/DeviceShutdowCtrlService.java → 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;

6
src/main/java/a8k/service/ctrl_service/DeviceShutdownCtrlService.java → 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);
}

1
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;

2
src/main/java/a8k/appbase/AppEventListener.java → 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;

12
src/main/java/a8k/service/state_service/A8kStateMgrService.java → 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;
}
}

35
src/main/java/a8k/service/base/A8kDeviceState.java

@ -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<ReactingPlateState> incubatingPlateStates = null;
//当前正在被处理的试管架状态
public TubeHolder processingTubeHolder = null;
//温度
public Integer temperature;
//当前ID卡信息
public ProjectInfo curIdCardInfo = null;
Boolean deviceInited = false; //设备是否初始化过
Boolean devicePoweredOffNormally = false; //设备是否正常关机
}

10
src/main/java/a8k/service/base/consumable/ConsumableItemGroup.java

@ -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];
}

12
src/main/java/a8k/service/base/plate/PlateState.java

@ -1,12 +0,0 @@
package a8k.service.base.plate;
public enum PlateState {
//赋予中
Incubating,
//孵育完成
Incubated,
//孵育异常
IncubateError,
//板条码异常
PlateCodeError,
}

13
src/main/java/a8k/service/base/reaction_result/ReactionResult.java

@ -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;
}

7
src/main/java/a8k/service/base/sample/EmergencyPosState.java

@ -1,7 +0,0 @@
package a8k.service.base.sample;
public enum EmergencyPosState {
IDLE,//
PROCESSING,//
PROCESS_COMPLETE,//
}

6
src/main/java/a8k/service/base/sample/EmergencySampleInfo.java

@ -1,6 +0,0 @@
package a8k.service.base.sample;
public class EmergencySampleInfo {
}

9
src/main/java/a8k/service/base/sample/SampleInfo.java

@ -1,9 +0,0 @@
package a8k.service.base.sample;
import a8k.appbase.A8kTubeType;
import java.util.List;
public class SampleInfo {
}

8
src/main/java/a8k/service/base/sample/Tube.java

@ -1,8 +0,0 @@
package a8k.service.base.sample;
import a8k.appbase.A8kTubeType;
public class Tube {
TubeState tubeState = TubeState.EMPTY; //样本运行状态
SampleInfo sampleInfo; //样本信息
}

12
src/main/java/a8k/service/base/sample/TubeHolder.java

@ -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; //当前管子索引
}

22
src/main/java/a8k/service/ctrl_service/ConsumableLoadingService.java

@ -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(){
//启动线程实例
}
}

2
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;

2
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;

27
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);
}
}
}

5
src/main/java/a8k/service/state_service/A8kState.java

@ -1,5 +0,0 @@
package a8k.service.state_service;
public class A8kState {
public Boolean devicePoweredOffNormally = false; //设备是否正常关机
}

17
src/main/java/a8k/service/state_service/A8kStateDB.java

@ -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";
}
}

BIN
zhaohe_app.db

Loading…
Cancel
Save