Browse Source

update

tags/v0
zhaohe 1 year ago
parent
commit
84c2b6a7e2
  1. 12
      src/main/java/a8k/service/appcfgs/A8kDeviceCfg.java
  2. 107
      src/main/java/a8k/service/appcfgs/A8kDeviceCfgMgrService.java
  3. 2
      src/main/java/a8k/service/base/A8kDeviceState.java
  4. 9
      src/main/java/a8k/service/base/sample/SampleInfo.java
  5. 11
      src/main/java/a8k/service/base/samplecfg/SampleTubeCfg.java
  6. 21
      src/main/java/a8k/service/base/samplecfg/SampleTubeHolderCfg.java
  7. 6
      src/main/java/a8k/service/hardware/HbotControlService.java
  8. 3
      src/main/java/a8k/service/hardware/canbus/protocol/A8kEcode.java
  9. 129
      src/main/java/a8k/service/state_service/A8kStateMgrService.java
  10. BIN
      zhaohe_app.db

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

@ -0,0 +1,12 @@
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<>();
}

107
src/main/java/a8k/service/appcfgs/A8kDeviceCfgMgrService.java

@ -0,0 +1,107 @@
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.hardware.canbus.protocol.A8kEcode;
import org.springframework.stereotype.Component;
@Component
@EngineerPageTab(name = "A8kDeviceCfgMgrService")
public class A8kDeviceCfgMgrService {
A8kDeviceCfg deviceCfg = new A8kDeviceCfg();
private SampleTubeHolderCfg dbFindCfg(String tubeHolderCfgUUID) {
for (SampleTubeHolderCfg cfg : deviceCfg.cfgs) {
if (cfg.uuid.equals(tubeHolderCfgUUID)) {
return cfg;
}
}
return null;
}
private void dbRemoveCfg(String tubeHolderCfgUUID) {
deviceCfg.cfgs.removeIf(cfg -> cfg.uuid.equals(tubeHolderCfgUUID));
}
private SampleTubeCfg dbFindTubeCfg(String tubeHolderCfgUUID, Integer tubeIndex) {
SampleTubeHolderCfg cfg = dbFindCfg(tubeHolderCfgUUID);
if (cfg == null) {
return null;
}
return cfg.tubeCfgs.get(tubeIndex);
}
@EnginnerPageAction(name = "获取设备配置",group = "基础",groupOrder = 1)
public A8kDeviceCfg getA8kDeviceCfg() {
return deviceCfg;
}
@EnginnerPageAction(name = "添加<试管架>配置",group = "试管架",groupOrder = 2)
public AppRet<SampleTubeHolderCfg> addCfg() {
SampleTubeHolderCfg cfg = new SampleTubeHolderCfg();
deviceCfg.cfgs.add(cfg);
return AppRet.success(cfg);
}
@EnginnerPageAction(name = "删除<试管架>配置",group = "试管架")
public AppRet<Object> removeCfg(String tubeHolderCfgUUID) {
dbRemoveCfg(tubeHolderCfgUUID);
return AppRet.success();
}
@EnginnerPageAction(name = "激活<试管架>配置",group = "试管架")
public AppRet<SampleTubeHolderCfg> activeCfg(String tubeHolderCfgUUID, Boolean active) {
SampleTubeHolderCfg cfg = dbFindCfg(tubeHolderCfgUUID);
if (cfg == null) {
return AppRet.fail(A8kEcode.TubeHolderCfgNotExist);
}
cfg.active = active;
return AppRet.success();
}
@EnginnerPageAction(name = "修改<试管>用户信息配置",group = "试管",groupOrder = 3)
public AppRet<SampleTubeCfg> updateTubeUsrCfg(String uuid, Integer tubeIndex, String udpid, String barcodeid) {
SampleTubeHolderCfg cfg = dbFindCfg(uuid);
assert cfg != null;
cfg.tubeCfgs.get(tubeIndex).barcodeid = barcodeid;
cfg.tubeCfgs.get(tubeIndex).udpid = udpid;
return AppRet.success(cfg.tubeCfgs.get(tubeIndex));
}
@EnginnerPageAction(name = "清除<试管>项目信息",group = "试管")
public AppRet<SampleTubeCfg> clearTubeProjectCfg(String uuid, Integer tubeIndex) {
SampleTubeHolderCfg cfg = dbFindCfg(uuid);
assert cfg != null;
cfg.tubeCfgs.get(tubeIndex).projectCodes.clear();
cfg.tubeCfgs.get(tubeIndex).bloodType = BloodType.WHOLE_BLOOD;
return AppRet.success(cfg.tubeCfgs.get(tubeIndex));
}
@EnginnerPageAction(name = "添加<试管>项目信息",group = "试管")
public AppRet<SampleTubeCfg> addTubeProjectCode(String uuid, Integer tubeIndex, String pjc) {
SampleTubeHolderCfg cfg = dbFindCfg(uuid);
assert cfg != null;
SampleTubeCfg tubeCfg = new SampleTubeCfg();
tubeCfg.projectCodes.add(pjc);
cfg.tubeCfgs.add(tubeCfg);
return AppRet.success(tubeCfg);
}
@EnginnerPageAction(name = "设置<试管>血型",group = "试管")
public AppRet<SampleTubeCfg> setTubeBloodType(String uuid, Integer tubeIndex, BloodType bloodType) {
SampleTubeCfg tubeCfg = dbFindTubeCfg(uuid, tubeIndex);
assert tubeCfg != null;
tubeCfg.bloodType = bloodType;
return AppRet.success();
}
}

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

@ -26,8 +26,6 @@ public class A8kDeviceState {
public TubeHolder processingTubeHolder = null;
//温度
public Integer temperature;
//配置
public List<SampleTubeHolderCfg> cfgs = new ArrayList<>();
Boolean deviceInited = false; //设备是否初始化过
Boolean devicePoweredOffNormally = false; //设备是否正常关机

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

@ -5,14 +5,5 @@ import a8k.appbase.A8kTubeType;
import java.util.List;
public class SampleInfo {
A8kTubeType tubeType; //管子类型
String sampleUUID; //样本UUID 系统自动生成
String projectId; //项目id,用于查找项目相关信息
String sampleUDPID; //用户输入的样本ID不做逻辑只做展示
String sampleBarcodeID; //用于请求用户信息的条码ID
List<String> projectIds; //项目id,用于查找项目相关信息
}

11
src/main/java/a8k/service/base/samplecfg/SampleTubeCfg.java

@ -1,8 +1,17 @@
package a8k.service.base.samplecfg;
import a8k.service.base.BloodType;
import a8k.service.base.sample.SampleInfo;
import java.util.List;
import java.util.UUID;
public class SampleTubeCfg extends SampleInfo {
public class SampleTubeCfg {
public String tubeHolderUUID;
public int tubeIndex;
public String udpid; //用户输入的样本ID不做逻辑只做展示
public String barcodeid; //用于请求用户信息的条码ID
public List<String> projectCodes; //项目编码,用于查找项目相关信息
public BloodType bloodType = BloodType.WHOLE_BLOOD; //血型
}

21
src/main/java/a8k/service/base/samplecfg/SampleTubeHolderCfg.java

@ -2,8 +2,23 @@ package a8k.service.base.samplecfg;
import a8k.appbase.A8kTubeType;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class SampleTubeHolderCfg {
Boolean active;//是否激活
A8kTubeType tubeHolderType = A8kTubeType.BloodTube; //试管架类型
SampleTubeCfg[] sampleTubeCfgs = new SampleTubeCfg[10]; //试管配置
public String uuid = UUID.randomUUID().toString(); //唯一标识
public Boolean active = false;//是否激活
public A8kTubeType tubeHolderType = A8kTubeType.BloodTube; //试管架类型
public ArrayList<SampleTubeCfg> tubeCfgs = new ArrayList<>(); //试管配置
public Integer index = 0;//试管架索引
public SampleTubeHolderCfg() {
for (int i = 0; i < 10; i++) {
var tubeCfg = new SampleTubeCfg();
tubeCfg.tubeHolderUUID = uuid;
tubeCfg.tubeIndex = i;
tubeCfgs.add(tubeCfg);
}
}
}

6
src/main/java/a8k/service/hardware/HbotControlService.java

@ -71,9 +71,9 @@ public class HbotControlService implements HardwareCtrlModule {
new Pos2d(3947, -15),
92.3,
92.15,
585,
585,
588
578,
580,
585
));
}

3
src/main/java/a8k/service/hardware/canbus/protocol/A8kEcode.java

@ -37,6 +37,9 @@ public enum A8kEcode {
UsrExistError(102, "用户已存在"), //
UsrNotAllowBeDeleted(103, "用户不允许被删除"), //
TubeHolderCfgNotExist(200, "试管架配置不存在"), //
TubeCfgNotExist(201, "试管配置不存在"), //
//
// FOR HARDWARE
//

129
src/main/java/a8k/service/state_service/A8kStateMgrService.java

@ -1,16 +1,11 @@
package a8k.service.state_service;
import a8k.controler.engineer.utils.EngineerPageTab;
import a8k.controler.engineer.utils.EnginnerPageAction;
import a8k.service.base.A8kDeviceState;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.iflytop.uf.UfActiveRecord;
import com.iflytop.uf.util.UfJsonHelper;
import jakarta.annotation.PostConstruct;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.json.JacksonJsonParser;
import org.springframework.stereotype.Component;
@Component
@ -21,118 +16,18 @@ public class A8kStateMgrService {
* 1. 前端只能读取该服务中的状态不能设置设置只能通过其他服务进行设置
*/
public static final Logger logger = LoggerFactory.getLogger(A8kStateMgrService.class);
public A8kDeviceState deviceState = new A8kDeviceState();
public static final Logger logger = LoggerFactory.getLogger(A8kStateMgrService.class);
public A8kDeviceState deviceState = new A8kDeviceState();
// AppUsr appusr; //用户是否登录
// AppUsr debugPageUsr; //调试页面用户是否登录
@PostConstruct
public void init() {
}
@EnginnerPageAction(name = "获取设备状态")
public A8kDeviceState getDeviceState() {
return deviceState;
}
// @PostConstruct
// public void init() {
// var list = UfActiveRecord.find(A8kStateDB.class);
// if (list.isEmpty()) {
// updateA8kState(new A8kState());
// }
}
//
// 用户状态
//
// public void loginAppUsr(@NotNull AppUsr appusr) {
// this.appusr = appusr;
// }
//
// public void unloginAppUsr() {
// this.appusr = null;
// }
//
// public boolean isAppUsrLogin() {
// return appusr != null;
// }
//
//
// public void loginDebugPageUsr(@NotNull AppUsr debugPageUsr) {
// this.debugPageUsr = debugPageUsr;
// }
//
// public void unloginDebugPageUsr() {
// this.debugPageUsr = null;
// }
//
// public boolean isDebugPageUsrLogin() {
// return debugPageUsr != null;
// }
// //
// // 设备初始化状态
// //
//
// /**
// * 机器是否初始化过
// * @return 机器是否初始化过
// */
// public boolean isDeviceInited() {
// return deviceInited;
// }
//
// /**
// * @return 返回上一次设备是否正常关机
// */
// public boolean isTheDevicePoweredOffNormally() {
// return devicePoweredOffNormally;
// }
//
// /**
// * 设备初始化完成开机后设备初始化完成时候调用该方法
// */
// public void setDeviceInited() {
// this.deviceInited = true;
// this.devicePoweredOffNormally = false;
//
// A8kState state = getA8kState();
// state.devicePoweredOffNormally = false;
// updateA8kState(state);
// }
//
// public void setDevicePoweredOffNormally() {
// this.devicePoweredOffNormally = true;
//
// A8kState state = getA8kState();
// state.devicePoweredOffNormally = true;
// updateA8kState(state);
// }
//
//
// A8kState getA8kState() {
// var one = UfActiveRecord.find(A8kStateDB.class).get(0);
// assert one != null;
//
// ObjectMapper mapper = new ObjectMapper();
// try {
// return mapper.readValue(one.stateJson, A8kState.class);
// } catch (JsonProcessingException e) {
// assert false;
// return null;
// }
// }
//
// void updateA8kState(A8kState state) {
// var list = UfActiveRecord.find(A8kStateDB.class);
//
// A8kStateDB one;
// if (list.isEmpty()) {
// one = new A8kStateDB();
// } else {
// one = list.get(0);
// }
//
// ObjectMapper mapper = new ObjectMapper();
//
// try {
// one.stateJson = mapper.writeValueAsString(state);
// one.save();
// } catch (JsonProcessingException e) {
// throw new RuntimeException(e);
// }
// }
//}
}

BIN
zhaohe_app.db

Loading…
Cancel
Save