Browse Source

Merge remote-tracking branch 'origin/master'

tags/v0
sige 1 year ago
parent
commit
37a9a1d638
  1. 15
      src/main/java/a8k/controler/engineer/utils/EnginnerPageTabOrder.java
  2. 4
      src/main/java/a8k/service/AddSampleService.java
  3. 6
      src/main/java/a8k/service/appbase/A8kDeviceState.java
  4. 4
      src/main/java/a8k/service/appcfgs/AppCfgMgrService.java
  5. 16
      src/main/java/a8k/service/appconsumable/AppConsumablesMgrService.java
  6. 4
      src/main/java/a8k/service/appconsumable/base/Consumables.java
  7. 31
      src/main/java/a8k/service/appctrl/AppCtrlService.java
  8. 6
      src/main/java/a8k/service/appfrontend/AppFrontEndEventRouter.java
  9. 7
      src/main/java/a8k/service/appstate/AppStateMgrService.java
  10. 6
      src/main/java/a8k/service/hardware/HardwareTestScript.java
  11. 59
      src/main/java/a8k/service/project_mgr/AppProjectItemMgrService.java
  12. BIN
      zhaohe_app.db

15
src/main/java/a8k/controler/engineer/utils/EnginnerPageTabOrder.java

@ -1,6 +1,21 @@
package a8k.controler.engineer.utils;
public enum EnginnerPageTabOrder {
AppCtrlService,
AppConsumablesMgrService,
AppProjectItemMgrService,
AppSettingsMgr,
AppStateMgrService,
AppUserMgrService,
AppCfgMgrService,
AppFrontEndEventRouter,
SamplesPreProcessModuleCtrlService,
ReactionPlatesTransmitCtrlService,
MotorTubeRackMoveCtrlService,
HbotControlService,
HardwareTestScript,
Max;
}

4
src/main/java/a8k/service/AddSampleService.java

@ -1,4 +0,0 @@
package a8k.service;
public class AddSampleService {
}

6
src/main/java/a8k/service/appbase/A8kDeviceState.java

@ -1,7 +1,7 @@
package a8k.service.appbase;
import a8k.db.ProjectInfo;
import a8k.service.appconsumable.base.ConsumableItemGroup;
import a8k.service.appconsumable.base.Consumables;
import a8k.service.appbase.runstate.ReactingPlateRunState;
import a8k.service.appbase.runstate.EmergencyPosRunState;
import a8k.service.appbase.runstate.TubeHolderRunState;
@ -10,9 +10,9 @@ import java.util.List;
public class A8kDeviceState {
//耗材状态
public ConsumableItemGroup consumable = new ConsumableItemGroup();
public Consumables consumable = new Consumables();
//急诊为状态
public EmergencyPosRunState emergencyPosRunState = new EmergencyPosRunState();
public EmergencyPosRunState emergencyPosRunState = new EmergencyPosRunState();
//正在孵育的任务状态
public List<ReactingPlateRunState> incubatingPlateStates = null;
//当前正在被处理的试管架状态

4
src/main/java/a8k/service/appcfgs/A8kDeviceCfgMgrService.java → src/main/java/a8k/service/appcfgs/AppCfgMgrService.java

@ -12,8 +12,8 @@ import a8k.service.hardware.canbus.protocol.A8kEcode;
import org.springframework.stereotype.Component;
@Component
@EngineerPageTab(name = "A8kDeviceCfgMgrService")
public class A8kDeviceCfgMgrService {
@EngineerPageTab(name = "AppCfgMgrService")
public class AppCfgMgrService {
A8kDeviceCfg deviceCfg = new A8kDeviceCfg();

16
src/main/java/a8k/service/appconsumable/AppConsumableMgrService.java → src/main/java/a8k/service/appconsumable/AppConsumablesMgrService.java

@ -3,17 +3,18 @@ package a8k.service.appconsumable;
import a8k.appbase.appret.AppRet;
import a8k.controler.engineer.utils.EngineerPageTab;
import a8k.controler.engineer.utils.EnginnerPageAction;
import a8k.controler.engineer.utils.EnginnerPageTabOrder;
import a8k.service.ProjectColorAllocer;
import a8k.service.appconsumable.base.ConsumableItemGroup;
import a8k.service.appconsumable.base.Consumables;
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 = "AppConsumableMgrService")
@EngineerPageTab(name = "应用-耗材管理服务", order = EnginnerPageTabOrder.AppConsumablesMgrService)
@Component
public class AppConsumableMgrService {
public class AppConsumablesMgrService {
@Resource
ProjectColorAllocer projectColorAllocer;
@ -23,8 +24,8 @@ public class AppConsumableMgrService {
//扫描耗材
@EnginnerPageAction(name = "扫描耗材")
public AppRet<ConsumableItemGroup> scanningConsumables() {
ConsumableItemGroup var = new ConsumableItemGroup();
public AppRet<Consumables> scanningConsumables() {
Consumables var = new Consumables();
for (int i = 0; i < 6; i++) {
var.reactantItems[i] = new ReactantItem();
var.reactantItems[i].projId = "PROJECT_" + i;
@ -41,4 +42,9 @@ public class AppConsumableMgrService {
stateMgrService.setConsumable(var);
return AppRet.success(var);
}
@EnginnerPageAction(name = "获取耗材状态")
public AppRet<Consumables> getConsumables() {
return AppRet.success(stateMgrService.getConsumable());
}
}

4
src/main/java/a8k/service/appconsumable/base/ConsumableItemGroup.java → src/main/java/a8k/service/appconsumable/base/Consumables.java

@ -2,13 +2,13 @@ package a8k.service.appconsumable.base;
import java.util.Date;
public class ConsumableItemGroup {
public class Consumables {
public Date scanDate = new Date();
public ReactantItem[] reactantItems = new ReactantItem[6];
public TipGroupInfo[] tip = new TipGroupInfo[3];
public ConsumableItemGroup() {
public Consumables() {
for (int i = 0; i < reactantItems.length; i++) {
reactantItems[i] = new ReactantItem();
}

31
src/main/java/a8k/service/appctrl/AppCtrlService.java

@ -3,51 +3,54 @@ package a8k.service.appctrl;
import a8k.appbase.appret.AppRet;
import a8k.controler.engineer.utils.EngineerPageTab;
import a8k.controler.engineer.utils.EnginnerPageAction;
import a8k.controler.engineer.utils.EnginnerPageTabOrder;
import org.slf4j.Logger;
import org.springframework.stereotype.Component;
@EngineerPageTab(name = "AppCtrlService")
@EngineerPageTab(name = "应用-设备控制", order = EnginnerPageTabOrder.AppCtrlService)
@Component
public class AppCtrlService {
static final Logger logger = org.slf4j.LoggerFactory.getLogger(AppCtrlService.class);
static class ORDER {
static final int initDevice = 1;
}
@EnginnerPageAction(name = "初始化设备")
@EnginnerPageAction(name = "初始化设备", group = "设备基础控制", order = ORDER.initDevice)
public AppRet<Object> initDevice() {
return AppRet.success();
}
//关机
@EnginnerPageAction(name = "关机", group = "设备基础控制", order = 1)
public AppRet<Object> shutdown() {
return AppRet.success();
}
//启动
@EnginnerPageAction(name = "启动")
@EnginnerPageAction(name = "启动", group = "应用控制", groupOrder = 1, order = 1)
public AppRet<Object> startProcess() {
return AppRet.success();
}
//暂停
@EnginnerPageAction(name = "暂停")
@EnginnerPageAction(name = "暂停", group = "应用控制", order = 2)
public AppRet<Object> pauseProcess() {
return AppRet.success();
}
//急停
@EnginnerPageAction(name = "急停")
@EnginnerPageAction(name = "急停", group = "应用控制", order = 3)
public AppRet<Object> forceStopProcess() {
return AppRet.success();
}
//停止
@EnginnerPageAction(name = "停止")
@EnginnerPageAction(name = "停止", group = "应用控制", order = 4)
public AppRet<Object> stopProcess() {
return AppRet.success();
}
//关机
@EnginnerPageAction(name = "关机")
public AppRet<Object> shutdown() {
return AppRet.success();
}
}

6
src/main/java/a8k/service/FrontEndEventRouter.java → src/main/java/a8k/service/appfrontend/AppFrontEndEventRouter.java

@ -1,4 +1,4 @@
package a8k.service;
package a8k.service.appfrontend;
import a8k.service.appeventbus.AppEventListener;
import a8k.appbase.appret.AppRet;
@ -16,8 +16,8 @@ import java.util.Queue;
@Component
@EngineerPageTab(name = "FrontEndEventRouter")
public class FrontEndEventRouter implements AppEventListener {
static Logger logger = org.slf4j.LoggerFactory.getLogger(FrontEndEventRouter.class);
public class AppFrontEndEventRouter implements AppEventListener {
static Logger logger = org.slf4j.LoggerFactory.getLogger(AppFrontEndEventRouter.class);
@Resource
AppEventBusService eventBus;

7
src/main/java/a8k/service/appstate/AppStateMgrService.java

@ -3,7 +3,7 @@ package a8k.service.appstate;
import a8k.controler.engineer.utils.EngineerPageTab;
import a8k.controler.engineer.utils.EnginnerPageAction;
import a8k.db.ProjectInfo;
import a8k.service.appconsumable.base.ConsumableItemGroup;
import a8k.service.appconsumable.base.Consumables;
import a8k.service.appbase.A8kDeviceState;
import jakarta.annotation.PostConstruct;
import org.slf4j.Logger;
@ -34,8 +34,11 @@ public class AppStateMgrService {
deviceState.curIdCardInfo = projectInfo;
}
public void setConsumable(ConsumableItemGroup cig) {
public void setConsumable(Consumables cig) {
deviceState.consumable = cig;
}
public Consumables getConsumable() {
return deviceState.consumable;
}
}

6
src/main/java/a8k/service/hardware/TestScript.java → src/main/java/a8k/service/hardware/HardwareTestScript.java

@ -23,9 +23,9 @@ import java.util.Map;
@Component
@EngineerPageTab(name = "测试脚本")
@EnginnerPageParams(service = TestScript.class)
public class TestScript {
static Logger logger = LoggerFactory.getLogger(TestScript.class);
@EnginnerPageParams(service = HardwareTestScript.class)
public class HardwareTestScript {
static Logger logger = LoggerFactory.getLogger(HardwareTestScript.class);
@Resource
A8kCanBusService canBus;

59
src/main/java/a8k/service/project_mgr/ProjectItemMgrService.java → src/main/java/a8k/service/project_mgr/AppProjectItemMgrService.java

@ -1,6 +1,8 @@
package a8k.service.project_mgr;
import a8k.controler.engineer.utils.EnginnerPageStatu;
import a8k.controler.engineer.utils.EnginnerPageTabOrder;
import a8k.service.appeventbus.AppEventListener;
import a8k.appbase.HardwareException;
import a8k.appbase.ProjectInfoSimple;
@ -29,9 +31,9 @@ import java.util.List;
import java.util.Map;
@Component
@EngineerPageTab(name = "ProjectItemMgrService")
public class ProjectItemMgrService implements AppEventListener {
static Logger logger = org.slf4j.LoggerFactory.getLogger(ProjectItemMgrService.class);
@EngineerPageTab(name = "应用-项目管理", order = EnginnerPageTabOrder.AppProjectItemMgrService)
public class AppProjectItemMgrService implements AppEventListener {
static Logger logger = org.slf4j.LoggerFactory.getLogger(AppProjectItemMgrService.class);
@Resource
A8kCanBusService canBus;
@ -61,13 +63,9 @@ public class ProjectItemMgrService implements AppEventListener {
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);
if (idCardStatus()) {
logger.info("ID卡读卡器在线");
workQueue.addTask(this::readIDCard);
}
}
}
@ -90,7 +88,7 @@ public class ProjectItemMgrService implements AppEventListener {
return pinfo == null || newpinfo.updateChipVersion >= pinfo.updateChipVersion;
}
void readIDCard() {
private ProjectInfo readAndConstructProjectInfo() {
//读取ID卡信息
byte[] data = null;
try {
@ -99,14 +97,24 @@ public class ProjectItemMgrService implements AppEventListener {
//TODO:
// 解析ID
// 构造ProjectInfo
// 判断是否是新的ProjectInfo by call isNewProjectInfo
// 构造NewAppIDCardDetectEvent
// 发送事件到事件总线上去事件将由 FrontEndEventRouter 路由到前端
// 存储项目信息到数据库中
// 调用 stateMgr.setCurrentIdCardInfo(); 将ID卡信息存储到状态管理器中
} catch (HardwareException e) {
throw new RuntimeException(e);
}
return null;
}
void readIDCard() {
//读取ID卡信息
//TODO:
// 解析ID
// 构造ProjectInfo
// 判断是否是新的ProjectInfo by call isNewProjectInfo
// 构造NewAppIDCardDetectEvent
// 发送事件到事件总线上去事件将由 FrontEndEventRouter 路由到前端
// 存储项目信息到数据库中
// 调用 stateMgr.setCurrentIdCardInfo(); 将ID卡信息存储到状态管理器中
ProjectInfo pjinfo = readAndConstructProjectInfo();
}
@ -114,12 +122,12 @@ public class ProjectItemMgrService implements AppEventListener {
// PUBLIC
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@EnginnerPageAction(name = "获取项目信息(简单)")
@EnginnerPageAction(name = "获取项目信息(简单)", order = 1)
public AppRet<List<ProjectInfoSimple>> getProjectInfoSimple() {
return AppRet.success(dbGetProjectInfos());
}
@EnginnerPageAction(name = "添加项目信息")
@EnginnerPageAction(name = "添加项目信息", order = 2)
public AppRet<String> addProjectInfo(ProjectInfo newpinfo) {
var pinfo = ProjectInfo.findOne(ProjectInfo.class, Map.of("lotName", newpinfo.lotName));
if (pinfo != null && newpinfo.updateChipVersion < pinfo.updateChipVersion) {
@ -132,4 +140,19 @@ public class ProjectItemMgrService implements AppEventListener {
}
return AppRet.success("添加成功");
}
@EnginnerPageAction(name = "读取ID卡信息", order = 3)
public AppRet<ProjectInfo> readIDCardInfo() {
ProjectInfo pinfo = readAndConstructProjectInfo();
return AppRet.success(pinfo);
}
@EnginnerPageStatu(name = "ID卡状态")
public Boolean idCardStatus() {
try {
return canBus.moduleGetReg(MId.A8kIdCardReader, RegIndex.kreg_id_card_reader_is_online) == 1;
} catch (HardwareException ignored) {
}
return false;
}
}

BIN
zhaohe_app.db

Loading…
Cancel
Save