zhaohe 1 year ago
parent
commit
0a57e15d9d
  1. 23
      src/main/java/a8k/controller/SamplesPreProcessModuleCtrlController.java
  2. 51
      src/main/java/a8k/service/db/dao/SamplesPreProcessModuleCtrlParamsService.java
  3. 44
      src/main/java/a8k/service/db/entity/HardwareServiceSetting.java
  4. 2
      src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java
  5. 4
      src/main/resources/db/migration/V100_0__create_table_A8kStateDBTable.sql

23
src/main/java/a8k/controller/SamplesPreProcessModuleCtrlController.java

@ -1,4 +1,5 @@
package a8k.controller;
import a8k.service.db.dao.SamplesPreProcessModuleCtrlParamsService;
import a8k.service.hardware.SamplesPreProcessModuleCtrlService;
import com.iflytop.uf.controller.UfApiControllerBase;
import com.iflytop.uf.controller.UfApiResponse;
@ -14,6 +15,8 @@ import java.util.Map;
public class SamplesPreProcessModuleCtrlController extends UfApiControllerBase {
@Resource
private SamplesPreProcessModuleCtrlService samplesPreProcessModuleCtrlService;
@Resource
private SamplesPreProcessModuleCtrlParamsService samplesPreProcessModuleCtrlParamsService;
@PostMapping("/api/sample-pre-process-module-ctrl/execute-service-method")
@ResponseBody
@ -24,4 +27,24 @@ public class SamplesPreProcessModuleCtrlController extends UfApiControllerBase {
Object result = UfClassHelper.invokeMethod(service, methodName, methodArgs);
return this.success(result);
}
@PostMapping("/api/sample-pre-process-module-ctrl/list-options")
@ResponseBody
public UfApiResponse listAllOptions() throws NoSuchMethodException {
var list = this.samplesPreProcessModuleCtrlParamsService.listOptions();
return this.success(list);
}
@PostMapping("/api/sample-pre-process-module-ctrl/update-options")
@ResponseBody
public UfApiResponse updateOptions(@RequestBody Map<String,Object> params ) throws Exception {
var options = (List<Map<String,Object>>)params.get("options");
for (Map<String,Object> item : options) {
var name = (String)item.get("name");
var option = this.samplesPreProcessModuleCtrlParamsService.getOption(name);
option.setValue(item.get("value"));
option.save();
}
return this.success();
}
}

51
src/main/java/a8k/service/db/dao/SamplesPreProcessModuleCtrlParamsService.java

@ -1,7 +1,12 @@
package a8k.service.db.dao;
import a8k.service.db.entity.HardwareServiceSetting;
import com.iflytop.uf.UfActiveRecord;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* 样本预处理相关参数访问
*/
@ -17,13 +22,13 @@ public class SamplesPreProcessModuleCtrlParamsService {
// 回零超时时间
public int getMoveToZeroOvertime() {
// 索引为 "SamplesPreProcessModuleCtrlService" "MoveToZeroOvertime"
return 0;
return HardwareServiceSetting.getInteger(this.serviceName, "MoveToZeroOvertime", 0);
}
// 执行动作的超时时间该超时时间适用于当前模块在当前产品中所有动作的最大时间
public int getActionOvertime() {
// 索引为 "SamplesPreProcessModuleCtrlService" "MoveToZeroOvertime"
return 0;
return HardwareServiceSetting.getInteger(this.serviceName, "ActionOvertime", 0);
}
/**
@ -32,27 +37,27 @@ public class SamplesPreProcessModuleCtrlParamsService {
// 高全血试管取帽位置
public int getZMotor_HighBloodTakeCapHeight() {
return 0;
return HardwareServiceSetting.getInteger(this.serviceName, "ZMotor_HighBloodTakeCapHeight", 0);
}
// 矮全血试管取帽位置
public int getZMotor_ShortBloodTakeCapHeight() {
return 0;
return HardwareServiceSetting.getInteger(this.serviceName, "ZMotor_ShortBloodTakeCapHeight", 0);
}
// 高试管帽子判断位置
public int getZMotor_HighBloodCapJudgeHeight() {
return 0;
return HardwareServiceSetting.getInteger(this.serviceName, "ZMotor_HighBloodCapJudgeHeight", 0);
}
// 矮全血试管帽子判断位置
public int getZMotor_ShortBloodCapJudgeHeight() {
return 0;
return HardwareServiceSetting.getInteger(this.serviceName, "ZMotor_ShortBloodCapJudgeHeight", 0);
}
// 摇匀位放置高度
public int getZMotor_placeShakeHeight() {
return 0;
return HardwareServiceSetting.getInteger(this.serviceName, "ZMotor_placeShakeHeight", 0);
}
/*
@ -61,17 +66,17 @@ public class SamplesPreProcessModuleCtrlParamsService {
// 水平移动电机待机位置
public int getHorizontalMotor_standbyPos() {
return 0;
return HardwareServiceSetting.getInteger(this.serviceName, "HorizontalMotor_standbyPos", 0);
}
// 水平移动电机取帽位置
public int getHorizontalMotor_takeCapPos() {
return 0;
return HardwareServiceSetting.getInteger(this.serviceName, "HorizontalMotor_takeCapPos", 0);
}
// 水平移动电机放帽位置
public int getHorizontalMotor_takePushCapPos() {
return 0;
return HardwareServiceSetting.getInteger(this.serviceName, "HorizontalMotor_takePushCapPos", 0);
}
/*
@ -80,22 +85,22 @@ public class SamplesPreProcessModuleCtrlParamsService {
// 抓手舵机待机位置
public int getGripperServo_standbyPos() {
return 0;
return HardwareServiceSetting.getInteger(this.serviceName, "GripperServo_standbyPos", 0);
}
// 抓手舵机取帽扭矩
public int getGripperServo_takeCapTorque() {
return 0;
return HardwareServiceSetting.getInteger(this.serviceName, "GripperServo_takeCapTorque", 0);
}
// 抓手舵机取试管位置
public int getGripperServo_takeTubePos() {
return 0;
return HardwareServiceSetting.getInteger(this.serviceName, "GripperServo_takeTubePos", 0);
}
// 判断是否有帽子的位置阈值
public int getGripperServo_hatDeterminesPosThres() {
return 0;
return HardwareServiceSetting.getInteger(this.serviceName, "GripperServo_hatDeterminesPosThres", 0);
}
/*
@ -104,12 +109,12 @@ public class SamplesPreProcessModuleCtrlParamsService {
// 摇匀电机待机位置
public int getShakeMotor_standbyPos() {
return 0;
return HardwareServiceSetting.getInteger(this.serviceName, "ShakeMotor_standbyPos", 0);
}
// 摇匀电机摇匀角度
public int getShakeMotor_shakeDegree() {
return 0;
return HardwareServiceSetting.getInteger(this.serviceName, "ShakeMotor_shakeDegree", 0);
}
/*
@ -118,12 +123,12 @@ public class SamplesPreProcessModuleCtrlParamsService {
// 试管夹紧电机待机位置
public int getTubeClampMotor_standbyPos() {
return 0;
return HardwareServiceSetting.getInteger(this.serviceName, "TubeClampMotor_standbyPos", 0);
}
// 试管夹紧电机夹紧位置
public int getTubeClampMotor_ClampPos() {
return 0;
return HardwareServiceSetting.getInteger(this.serviceName, "TubeClampMotor_ClampPos", 0);
}
/*
@ -131,6 +136,14 @@ public class SamplesPreProcessModuleCtrlParamsService {
*/
// 气溶胶风扇风力大小(0->100)
public int getAerosolFanLevel() {
return 0;
return HardwareServiceSetting.getInteger(this.serviceName, "AerosolFanLevel", 100);
}
public List<HardwareServiceSetting> listOptions() {
return UfActiveRecord.find(HardwareServiceSetting.class, Map.of("serviceName", this.serviceName));
}
public HardwareServiceSetting getOption(String optionName) {
return HardwareServiceSetting.getOption(this.serviceName, optionName);
}
}

44
src/main/java/a8k/service/db/entity/HardwareServiceSetting.java

@ -1,8 +1,12 @@
package a8k.service.db.entity;
import com.iflytop.uf.UfActiveRecord;
import com.iflytop.uf.UfActiveRecordField;
public class HardwareServiceSetting {
import java.util.HashMap;
import java.util.Map;
public class HardwareServiceSetting extends UfActiveRecord {
@UfActiveRecordField
public String key;
@UfActiveRecordField
@ -12,7 +16,45 @@ public class HardwareServiceSetting {
@UfActiveRecordField
public String val;
public void setValue( Object value ) throws Exception {
if ( value instanceof String ) {
this.val = (String) value;
} else if ( value instanceof Integer ) {
this.val = String.valueOf((Integer)value);
} else {
throw new Exception("不支持的配置数据类型");
}
}
public static String getTableName() {
return "HardwareServiceSetting" + "Table";
}
public static HardwareServiceSetting getOption( String service, String key ) {
var option = UfActiveRecord.findOne(HardwareServiceSetting.class, Map.of(
"serviceName", service,
"key", key
));
if ( null == option ) {
option = new HardwareServiceSetting();
option.serviceName = service;
option.key = key;
option.val = null;
}
return option;
}
public static Integer getInteger( String service, String key, Integer defaultValue ) {
var option = HardwareServiceSetting.getOption(service, key);
if ( null == option.val ) {
return defaultValue;
}
return Integer.parseInt(option.val);
}
public static void setInteger( String service, String key, Integer value ) {
var option = HardwareServiceSetting.getOption(service, key);
option.val = String.valueOf(value);
option.save();
}
}

2
src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java

@ -76,7 +76,7 @@ public class SamplesPreProcessModuleCtrlService {
* 使能模组
* @param enable 是否使能模组
*/
public void enableModule(boolean enable) throws HardwareException {
public void enableModule(Boolean enable) throws HardwareException {
this.a8kCanBusService.callcmd(
ModuleId.ShakeModShakeM,
CmdId.kstep_motor_enable,

4
src/main/resources/db/migration/V100_0__create_table_A8kStateDBTable.sql

@ -0,0 +1,4 @@
CREATE TABLE "A8kStateDBTable" (
"stateJson" TEXT,
"id" text
);
Loading…
Cancel
Save