Browse Source

update

tags/v0
zhaohe 10 months ago
parent
commit
1e60a5f324
  1. BIN
      app.db
  2. 1
      src/main/java/a8k/controler/extapi/pagecontrol/ExtApiTabConfig.java
  3. 3
      src/main/java/a8k/dbservice/type/SampleRecord.java
  4. 69
      src/main/java/a8k/service/appdata/AppSampleMgrService.java
  5. 13
      src/main/java/a8k/service/appdevicectrl/action/DO_ENTER_TUBEHOLDER_AND_SCAN.java
  6. 2
      src/main/java/a8k/service/appstate/type/TubeState.java
  7. 16
      src/main/java/a8k/utils/ZSqliteJdbcHelper.java

BIN
app.db

1
src/main/java/a8k/controler/extapi/pagecontrol/ExtApiTabConfig.java

@ -14,6 +14,7 @@ public enum ExtApiTabConfig {
AppProjInfoMgrService("应用数据.项目信息管理", true), //OK
AppSampleMgrService("应用数据.样本管理", true), //OK
ActionReactorService("基础组件.单步调试", true),//OK
AppFrontEndEventRouter("基础组件.前端事件路由", true),
UtilsProjectColorAllocer("基础组件.项目颜色分配", true),

3
src/main/java/a8k/dbservice/type/SampleRecord.java

@ -12,8 +12,7 @@ import java.util.List;
public class SampleRecord {
public int id = 0;
public String sampleid; // generated by system , year%100+month+day+时分 241230_1203_01
public Date data;
public Boolean isHighTube = false;
public Date date;
public BloodType bloodType = BloodType.WHOLE_BLOOD; //血液类型
public String sampleBarcode = ""; //用于请求用户信息的条码ID
public String userid = ""; //用户输入的样本ID不做逻辑只做展示

69
src/main/java/a8k/service/appdata/AppSampleMgrService.java

@ -1,15 +1,84 @@
package a8k.service.appdata;
import a8k.controler.extapi.pagecontrol.ExtApiTabConfig;
import a8k.controler.extapi.utils.ExtApiFn;
import a8k.controler.extapi.utils.ExtApiTab;
import a8k.dbservice.SampleRecordDBService;
import a8k.dbservice.type.SampleRecord;
import a8k.service.appstate.type.TubeState;
import a8k.type.type.BloodType;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@Component
@ExtApiTab(cfg = ExtApiTabConfig.AppSettingsMgr)
public class AppSampleMgrService {
@Resource
SampleRecordDBService sampleRecordDBService;
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@PostConstruct
public void init() {
}
String generateSampleId(Date date, Integer tubePos) {
String sampleid = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd_HHmmss");
sampleid = String.format("%s_%s", sdf.format(date), tubePos);
return sampleid;
}
@ExtApiFn(name = "addSampleRecordExtApi")
public SampleRecord addSampleRecordExtApi(Integer tuebPos, BloodType bloodType, String sampleBarcode, String userid, String projIndex) {
return addSampleRecord(new Date(), tuebPos, bloodType, sampleBarcode, userid, projIndex);
}
@ExtApiFn(name = "getAllSampleRecordsExtApi")
public List<SampleRecord> getAllSampleRecords() {
return sampleRecordDBService.getAll();
}
public SampleRecord addSampleRecord(Date intertime, Integer tuebPos, BloodType bloodType, String sampleBarcode, String userid, String projIndex) {
SampleRecord record = new SampleRecord();
record.bloodType = bloodType;
record.sampleBarcode = sampleBarcode;
record.userid = userid;
record.date = intertime;
record.sampleid = generateSampleId(intertime, tuebPos);
for (String s : projIndex.split(",")) {
record.projIndex.add(Integer.parseInt(s));
}
sampleRecordDBService.add(record);
return record;
}
public void addSampleRecord(TubeState[] state) {
Date intertime = new Date();
for (int i = 0; i < state.length; i++) {
if (state[i] == null) {
continue;
}
if (!state[i].isTubeExist) {
continue;
}
SampleRecord record = new SampleRecord();
record.bloodType = state[i].bloodType;
record.sampleBarcode = state[i].sampleBarcode;
record.userid = state[i].userid;
record.date = intertime;
record.sampleid = generateSampleId(intertime, i);
record.projIndex = state[i].projIndex;
state[i].sampleid = record.sampleid;
sampleRecordDBService.add(record);
}
}
}

13
src/main/java/a8k/service/appdevicectrl/action/DO_ENTER_TUBEHOLDER_AND_SCAN.java

@ -5,11 +5,13 @@ import a8k.baseservice.appeventbus.appevent.AppWarningNotifyEvent;
import a8k.hardware.A8kCanBusService;
import a8k.hardware.type.a8kcanprotocol.A8kEcode;
import a8k.hardware.type.a8kcanprotocol.IOId;
import a8k.service.appdata.AppSampleMgrService;
import a8k.service.appdevicectrl.AppTubeSettingMgrService;
import a8k.service.appstate.AppA8kGStateService;
import a8k.service.appstate.MainFlowCtrlState;
import a8k.service.appstate.resource.A8kPublicResourceType;
import a8k.service.appstate.type.TubeHolderState;
import a8k.service.appstate.type.TubeState;
import a8k.service.appstate.type.state.A8kWorkState;
import a8k.service.appstate.type.state.TubeHolderProcessState;
import a8k.service.devicedriver.ctrl.SampleScanTransportCtrl;
@ -23,6 +25,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
@Component
@ -56,6 +59,8 @@ public class DO_ENTER_TUBEHOLDER_AND_SCAN extends A8kStepAction {
A8kCanBusService canBus;
@Resource
AppTubeSettingMgrService appTubeSettingMgrService;
@Resource
AppSampleMgrService appSampleMgrService; //样本管理服务
MainFlowCtrlState mfcs;
@ -191,19 +196,21 @@ public class DO_ENTER_TUBEHOLDER_AND_SCAN extends A8kStepAction {
@Override public void doaction() throws AppException {
//扫描试管架信息
logger.info("开始扫描试管架");
var scanResult = scanTubeHodler();
if (scanResult == null) {
return;
}
//解析扫描结果
logger.info("解析扫描结果");
TubeHolderState state = parseScanResult(scanResult);
if (state == null) {
return;
}
//更新试管架状态
logger.info("将样本信息写入数据库");
appSampleMgrService.addSampleRecord(state.tubeStates);
logger.info("更新试管架状态");
gstate.setTubeHolderState(state);
}

2
src/main/java/a8k/service/appstate/type/TubeState.java

@ -7,6 +7,8 @@ import java.util.ArrayList;
import java.util.List;
public class TubeState {
public String sampleid; //样本ID-系统生成-唯一标识一个样本
public Boolean isHighTube = false;
public Boolean isTubeExist = false;

16
src/main/java/a8k/utils/ZSqliteJdbcHelper.java

@ -6,6 +6,8 @@ import org.springframework.jdbc.core.JdbcTemplate;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
@ -50,13 +52,13 @@ public class ZSqliteJdbcHelper {
static public Object rowMapper(ResultSet rs, Class<?> tClass) throws SQLException, InstantiationException, IllegalAccessException {
Object obj = tClass.newInstance();
for (java.lang.reflect.Field field : tClass.getDeclaredFields()) {
if (field.getType().equals(Integer.class) ) {
if (field.getType().equals(Integer.class)) {
field.set(obj, rs.getInt(field.getName()));
} else if (field.getType().equals(int.class)) {
field.set(obj, rs.getInt(field.getName()));
} else if (field.getType().equals(Float.class)) {
field.set(obj, rs.getFloat(field.getName()));
} else if (field.getType().equals(Double.class) ) {
} else if (field.getType().equals(Double.class)) {
field.set(obj, rs.getDouble(field.getName()));
} else if (field.getType().equals(Boolean.class)) {
field.set(obj, rs.getBoolean(field.getName()));
@ -105,7 +107,7 @@ public class ZSqliteJdbcHelper {
} else if (field.getType().equals(Date.class)) {
Date date = (Date) field.get(obj);
// 按照 yyyy-MM-dd HH:mm:ss 存储
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
args.add(date.getTime());
} else if (field.getType().isEnum()) {
args.add(field.get(obj).toString());
@ -123,8 +125,8 @@ public class ZSqliteJdbcHelper {
}
public static void addObj(JdbcTemplate jdbcTemplate, String tableName, Class<?> tClass, Object obj) {
StringBuilder sql = new StringBuilder("insert into " + tableName + "(");
StringBuilder values = new StringBuilder(" values(");
StringBuilder sql = new StringBuilder("insert into " + tableName + "(");
StringBuilder values = new StringBuilder(" values(");
for (java.lang.reflect.Field field : tClass.getDeclaredFields()) {
if (field.getName().equals("id"))
@ -140,8 +142,8 @@ public class ZSqliteJdbcHelper {
}
public static void updateObj(JdbcTemplate jdbcTemplate, String tableName, Class<?> tClass, Object obj) {
StringBuilder sql = new StringBuilder("update " + tableName + " set ");
int id = 0;
StringBuilder sql = new StringBuilder("update " + tableName + " set ");
int id = 0;
for (java.lang.reflect.Field field : tClass.getDeclaredFields()) {
if (field.getName().equals("id")) {

Loading…
Cancel
Save