sige 1 year ago
parent
commit
6e059659c5
  1. 71
      src/main/java/a8k/hardware/controler/Controler.java
  2. 69
      src/main/java/a8k/service/db/dao/SamplesPreProcessModuleCtrlParamsService.java
  3. 11
      src/main/java/a8k/utils/HardwareServiceParam.java
  4. 10
      src/main/java/a8k/utils/HardwareServiceParams.java

71
src/main/java/a8k/hardware/controler/Controler.java

@ -1,10 +1,16 @@
package a8k.hardware.controler;
import a8k.appbean.ecode.AppRet;
import a8k.service.db.entity.HardwareServiceSetting;
import a8k.utils.HardwareService;
import a8k.utils.HardwareServiceParam;
import a8k.utils.HardwareServiceParams;
import com.iflytop.uf.UfApplication;
import com.iflytop.uf.util.UfClassHelper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -29,4 +35,69 @@ public class Controler {
}
return AppRet.success(services);
}
@PostMapping("/api/service-config/service-params-list")
@ResponseBody
public AppRet<Object> serviceParams( @RequestBody Map<String, Object> params )
throws InvocationTargetException, IllegalAccessException {
String serviceKey = (String)params.get("serviceKey");
Class<?> paramClass = null;
var classes = UfClassHelper.getAllClassesInPackage("a8k");
for (var clazz : classes) {
var hardwareServiceParamsAnnotation = clazz.getAnnotation(HardwareServiceParams.class);
if (null == hardwareServiceParamsAnnotation) {
continue ;
}
var serviceClass = hardwareServiceParamsAnnotation.service();
if (!serviceClass.getSimpleName().equals(serviceKey)) {
continue ;
}
paramClass = clazz;
break;
}
List<Map<String,Object>> list = new ArrayList<>();
if ( null == paramClass ) {
return AppRet.success(list);
}
var paramService = UfApplication.getContext().getBean(paramClass);
var methods = paramClass.getMethods();
for ( var method : methods ) {
var methodName = method.getName();
if ( !methodName.startsWith("get") ) {
continue;
}
var paramAnnotation = method.getAnnotation(HardwareServiceParam.class);
if (null == paramAnnotation) {
continue ;
}
Map<String,Object> param = new HashMap<>();
param.put("key", methodName.substring(3));
param.put("type", method.getReturnType().getSimpleName());
param.put("group", paramAnnotation.group());
param.put("name",paramAnnotation.name());
param.put("value", method.invoke(paramService));
list.add(param);
}
return AppRet.success(list);
}
@PostMapping("/api/service-config/service-params-update")
@ResponseBody
public AppRet<Object> serviceParamsUpdate( @RequestBody Map<String, Object> params ) throws Exception {
String serviceKey = (String)params.get("serviceKey");
Map<String,Object> newParams = (Map<String,Object>)params.get("params");
for ( var param : newParams.entrySet() ) {
var name = param.getKey();
var value = param.getValue();
var options = HardwareServiceSetting.getOption(serviceKey, name);
options.setValue(value);
options.save();
}
return AppRet.success();
}
}

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

@ -1,16 +1,18 @@
package a8k.service.db.dao;
import a8k.service.db.entity.HardwareServiceSetting;
import a8k.service.hardware.SamplesPreProcessModuleCtrlService;
import a8k.utils.HardwareServiceParam;
import a8k.utils.HardwareServiceParams;
import com.iflytop.uf.UfActiveRecord;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* 样本预处理相关参数访问
*/
@Component
@HardwareServiceParams(service=SamplesPreProcessModuleCtrlService.class)
public class SamplesPreProcessModuleCtrlParamsService {
/**
@ -19,130 +21,109 @@ public class SamplesPreProcessModuleCtrlParamsService {
*/
public final String serviceName = "SamplesPreProcessModuleCtrlService";
// 回零超时时间
@HardwareServiceParam(name="回零超时时间")
public int getMoveToZeroOvertime() {
// 索引为 "SamplesPreProcessModuleCtrlService" "MoveToZeroOvertime"
return HardwareServiceSetting.getInteger(this.serviceName, "MoveToZeroOvertime", 0);
}
// 执行动作的超时时间该超时时间适用于当前模块在当前产品中所有动作的最大时间
@HardwareServiceParam(name="执行动作的超时时间")
public int getActionOvertime() {
// 索引为 "SamplesPreProcessModuleCtrlService" "MoveToZeroOvertime"
return HardwareServiceSetting.getInteger(this.serviceName, "ActionOvertime", 0);
}
/**
* 升降电机相关位置
*/
@HardwareServiceParam(name="5ML全血试管取试管位置", group="升降电机")
public int getZMotor_HighBloodTakeTubeHeight() {
return HardwareServiceSetting.getInteger(this.serviceName, "ZMotor_HighBloodTakeTubeHeight", 0);
}
@HardwareServiceParam(name="3ML全血试管取试管位置", group="升降电机")
public int getZMotor_ShortBloodTakeTubeHeight() {
return HardwareServiceSetting.getInteger(this.serviceName, "ZMotor_ShortBloodTakeTubeHeight", 0);
}
// 高全血试管取帽位置
@HardwareServiceParam(name="5ML全血试管取帽位置", group="升降电机")
public int getZMotor_HighBloodTakeCapHeight() {
return HardwareServiceSetting.getInteger(this.serviceName, "ZMotor_HighBloodTakeCapHeight", 0);
}
// 矮全血试管取帽位置
@HardwareServiceParam(name="3ML全血试管取帽位置", group="升降电机")
public int getZMotor_ShortBloodTakeCapHeight() {
return HardwareServiceSetting.getInteger(this.serviceName, "ZMotor_ShortBloodTakeCapHeight", 0);
}
// 高试管帽子判断位置
@HardwareServiceParam(name="5ML全血试管帽子判断位置", group="升降电机")
public int getZMotor_HighBloodCapJudgeHeight() {
return HardwareServiceSetting.getInteger(this.serviceName, "ZMotor_HighBloodCapJudgeHeight", 0);
}
// 矮全血试管帽子判断位置
@HardwareServiceParam(name="3ML全血试管帽子判断位置", group="升降电机")
public int getZMotor_ShortBloodCapJudgeHeight() {
return HardwareServiceSetting.getInteger(this.serviceName, "ZMotor_ShortBloodCapJudgeHeight", 0);
}
// 摇匀位放置高度
@HardwareServiceParam(name="摇匀位放置高度", group="升降电机")
public int getZMotor_placeShakeHeight() {
return HardwareServiceSetting.getInteger(this.serviceName, "ZMotor_placeShakeHeight", 0);
}
/*
* 平移电机相关参数
*/
// 水平移动电机待机位置
@HardwareServiceParam(name="待机位置", group="水平移动电机")
public int getHorizontalMotor_standbyPos() {
return HardwareServiceSetting.getInteger(this.serviceName, "HorizontalMotor_standbyPos", 0);
}
// 水平移动电机取帽位置
@HardwareServiceParam(name="取帽位置", group="水平移动电机")
public int getHorizontalMotor_takeCapPos() {
return HardwareServiceSetting.getInteger(this.serviceName, "HorizontalMotor_takeCapPos", 0);
}
// 水平移动电机放帽位置
@HardwareServiceParam(name="放帽位置", group="水平移动电机")
public int getHorizontalMotor_takePushCapPos() {
return HardwareServiceSetting.getInteger(this.serviceName, "HorizontalMotor_takePushCapPos", 0);
}
/*
* 抓手
*/
// 抓手舵机待机位置
@HardwareServiceParam(name="待机位置", group="抓手舵机")
public int getGripperServo_standbyPos() {
return HardwareServiceSetting.getInteger(this.serviceName, "GripperServo_standbyPos", 0);
}
// 抓手舵机取帽扭矩
@HardwareServiceParam(name="取帽扭矩", group="抓手舵机")
public int getGripperServo_takeCapTorque() {
return HardwareServiceSetting.getInteger(this.serviceName, "GripperServo_takeCapTorque", 0);
}
// 抓手舵机取试管位置
@HardwareServiceParam(name="取试管位置", group="抓手舵机")
public int getGripperServo_takeTubePos() {
return HardwareServiceSetting.getInteger(this.serviceName, "GripperServo_takeTubePos", 0);
}
// 判断是否有帽子的位置阈值
@HardwareServiceParam(name="判断是否有帽子的位置阈值", group="抓手舵机")
public int getGripperServo_hatDeterminesPosThres() {
return HardwareServiceSetting.getInteger(this.serviceName, "GripperServo_hatDeterminesPosThres", 0);
}
/*
* 摇匀电机
*/
// 摇匀电机待机位置
@HardwareServiceParam(name="待机位置", group="摇匀电机")
public int getShakeMotor_standbyPos() {
return HardwareServiceSetting.getInteger(this.serviceName, "ShakeMotor_standbyPos", 0);
}
// 摇匀电机摇匀角度
@HardwareServiceParam(name="摇匀角度", group="摇匀电机")
public int getShakeMotor_shakeDegree() {
return HardwareServiceSetting.getInteger(this.serviceName, "ShakeMotor_shakeDegree", 0);
}
/*
* 夹紧电机
*/
// 试管夹紧电机待机位置
@HardwareServiceParam(name="待机位置", group="试管夹紧电机")
public int getTubeClampMotor_standbyPos() {
return HardwareServiceSetting.getInteger(this.serviceName, "TubeClampMotor_standbyPos", 0);
}
// 试管夹紧电机夹紧位置
@HardwareServiceParam(name="夹紧位置", group="试管夹紧电机")
public int getTubeClampMotor_ClampPos() {
return HardwareServiceSetting.getInteger(this.serviceName, "TubeClampMotor_ClampPos", 0);
}
/*
* 气溶胶风扇控制参数
*/
// 气溶胶风扇风力大小(0->100)
@HardwareServiceParam(name="气溶胶风扇风力大小")
public int getAerosolFanLevel() {
return HardwareServiceSetting.getInteger(this.serviceName, "AerosolFanLevel", 100);
}

11
src/main/java/a8k/utils/HardwareServiceParam.java

@ -0,0 +1,11 @@
package a8k.utils;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface HardwareServiceParam {
String name();
String group() default "";
}

10
src/main/java/a8k/utils/HardwareServiceParams.java

@ -0,0 +1,10 @@
package a8k.utils;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface HardwareServiceParams {
Class<?> service();
}
Loading…
Cancel
Save