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. 4
      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. 51
      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; package a8k.controler.engineer.utils;
public enum EnginnerPageTabOrder { public enum EnginnerPageTabOrder {
AppCtrlService,
AppConsumablesMgrService,
AppProjectItemMgrService,
AppSettingsMgr,
AppStateMgrService,
AppUserMgrService,
AppCfgMgrService,
AppFrontEndEventRouter,
SamplesPreProcessModuleCtrlService, SamplesPreProcessModuleCtrlService,
ReactionPlatesTransmitCtrlService, ReactionPlatesTransmitCtrlService,
MotorTubeRackMoveCtrlService,
HbotControlService,
HardwareTestScript,
Max; Max;
} }

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

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

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

@ -1,7 +1,7 @@
package a8k.service.appbase; package a8k.service.appbase;
import a8k.db.ProjectInfo; 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.ReactingPlateRunState;
import a8k.service.appbase.runstate.EmergencyPosRunState; import a8k.service.appbase.runstate.EmergencyPosRunState;
import a8k.service.appbase.runstate.TubeHolderRunState; import a8k.service.appbase.runstate.TubeHolderRunState;
@ -10,7 +10,7 @@ import java.util.List;
public class A8kDeviceState { public class A8kDeviceState {
//耗材状态 //耗材状态
public ConsumableItemGroup consumable = new ConsumableItemGroup();
public Consumables consumable = new Consumables();
//急诊为状态 //急诊为状态
public EmergencyPosRunState emergencyPosRunState = new EmergencyPosRunState(); public EmergencyPosRunState emergencyPosRunState = new EmergencyPosRunState();
//正在孵育的任务状态 //正在孵育的任务状态

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; import org.springframework.stereotype.Component;
@Component @Component
@EngineerPageTab(name = "A8kDeviceCfgMgrService")
public class A8kDeviceCfgMgrService {
@EngineerPageTab(name = "AppCfgMgrService")
public class AppCfgMgrService {
A8kDeviceCfg deviceCfg = new A8kDeviceCfg(); 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.appbase.appret.AppRet;
import a8k.controler.engineer.utils.EngineerPageTab; import a8k.controler.engineer.utils.EngineerPageTab;
import a8k.controler.engineer.utils.EnginnerPageAction; import a8k.controler.engineer.utils.EnginnerPageAction;
import a8k.controler.engineer.utils.EnginnerPageTabOrder;
import a8k.service.ProjectColorAllocer; 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.ReactantItem;
import a8k.service.appconsumable.base.TipGroupInfo; import a8k.service.appconsumable.base.TipGroupInfo;
import a8k.service.appstate.AppStateMgrService; import a8k.service.appstate.AppStateMgrService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@EngineerPageTab(name = "AppConsumableMgrService")
@EngineerPageTab(name = "应用-耗材管理服务", order = EnginnerPageTabOrder.AppConsumablesMgrService)
@Component @Component
public class AppConsumableMgrService {
public class AppConsumablesMgrService {
@Resource @Resource
ProjectColorAllocer projectColorAllocer; ProjectColorAllocer projectColorAllocer;
@ -23,8 +24,8 @@ public class AppConsumableMgrService {
//扫描耗材 //扫描耗材
@EnginnerPageAction(name = "扫描耗材") @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++) { for (int i = 0; i < 6; i++) {
var.reactantItems[i] = new ReactantItem(); var.reactantItems[i] = new ReactantItem();
var.reactantItems[i].projId = "PROJECT_" + i; var.reactantItems[i].projId = "PROJECT_" + i;
@ -41,4 +42,9 @@ public class AppConsumableMgrService {
stateMgrService.setConsumable(var); stateMgrService.setConsumable(var);
return AppRet.success(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; import java.util.Date;
public class ConsumableItemGroup {
public class Consumables {
public Date scanDate = new Date(); public Date scanDate = new Date();
public ReactantItem[] reactantItems = new ReactantItem[6]; public ReactantItem[] reactantItems = new ReactantItem[6];
public TipGroupInfo[] tip = new TipGroupInfo[3]; public TipGroupInfo[] tip = new TipGroupInfo[3];
public ConsumableItemGroup() {
public Consumables() {
for (int i = 0; i < reactantItems.length; i++) { for (int i = 0; i < reactantItems.length; i++) {
reactantItems[i] = new ReactantItem(); 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.appbase.appret.AppRet;
import a8k.controler.engineer.utils.EngineerPageTab; import a8k.controler.engineer.utils.EngineerPageTab;
import a8k.controler.engineer.utils.EnginnerPageAction; import a8k.controler.engineer.utils.EnginnerPageAction;
import a8k.controler.engineer.utils.EnginnerPageTabOrder;
import org.slf4j.Logger;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@EngineerPageTab(name = "AppCtrlService")
@EngineerPageTab(name = "应用-设备控制", order = EnginnerPageTabOrder.AppCtrlService)
@Component @Component
public class AppCtrlService { 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() { public AppRet<Object> initDevice() {
return AppRet.success(); 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() { public AppRet<Object> startProcess() {
return AppRet.success(); return AppRet.success();
} }
//暂停 //暂停
@EnginnerPageAction(name = "暂停")
@EnginnerPageAction(name = "暂停", group = "应用控制", order = 2)
public AppRet<Object> pauseProcess() { public AppRet<Object> pauseProcess() {
return AppRet.success(); return AppRet.success();
} }
//急停 //急停
@EnginnerPageAction(name = "急停")
@EnginnerPageAction(name = "急停", group = "应用控制", order = 3)
public AppRet<Object> forceStopProcess() { public AppRet<Object> forceStopProcess() {
return AppRet.success(); return AppRet.success();
} }
//停止 //停止
@EnginnerPageAction(name = "停止")
@EnginnerPageAction(name = "停止", group = "应用控制", order = 4)
public AppRet<Object> stopProcess() { public AppRet<Object> stopProcess() {
return AppRet.success(); 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.service.appeventbus.AppEventListener;
import a8k.appbase.appret.AppRet; import a8k.appbase.appret.AppRet;
@ -16,8 +16,8 @@ import java.util.Queue;
@Component @Component
@EngineerPageTab(name = "FrontEndEventRouter") @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 @Resource
AppEventBusService eventBus; 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.EngineerPageTab;
import a8k.controler.engineer.utils.EnginnerPageAction; import a8k.controler.engineer.utils.EnginnerPageAction;
import a8k.db.ProjectInfo; import a8k.db.ProjectInfo;
import a8k.service.appconsumable.base.ConsumableItemGroup;
import a8k.service.appconsumable.base.Consumables;
import a8k.service.appbase.A8kDeviceState; import a8k.service.appbase.A8kDeviceState;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -34,8 +34,11 @@ public class AppStateMgrService {
deviceState.curIdCardInfo = projectInfo; deviceState.curIdCardInfo = projectInfo;
} }
public void setConsumable(ConsumableItemGroup cig) {
public void setConsumable(Consumables cig) {
deviceState.consumable = 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 @Component
@EngineerPageTab(name = "测试脚本") @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 @Resource
A8kCanBusService canBus; A8kCanBusService canBus;

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