sige 1 year ago
parent
commit
1846512bf7
  1. 2
      src/main/java/a8k/appbean/ecode/AppRet.java
  2. 61
      src/main/java/a8k/hardware/controler/Controler.java
  3. 13
      src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java
  4. 1
      src/main/java/a8k/utils/HardwareServiceAction.java

2
src/main/java/a8k/appbean/ecode/AppRet.java

@ -52,7 +52,7 @@ public class AppRet<T> {
r.success = true;
r.ecode = null;
r.data = data;
r.dataType = data.getClass().getSimpleName();
r.dataType = null == data ? null : data.getClass().getSimpleName();
return r;
}

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

@ -236,19 +236,8 @@ public class Controler {
@ResponseBody
public AppRet<Object> serviceActionExecute( @RequestBody Map<String, Object> params ) throws Throwable {
String serviceKey = (String)params.get("serviceKey");
Class<?> serviceClass = null;
var classes = UfClassHelper.getAllClassesInPackage("a8k");
for (var clazz : classes) {
var hardwareServiceAnnotation = clazz.getAnnotation(HardwareService.class);
if (null == hardwareServiceAnnotation || !clazz.getSimpleName().equals(serviceKey)) {
continue ;
}
serviceClass = clazz;
break;
}
if ( null == serviceClass ) {
return AppRet.success();
}
var service = this.getServiceInstanceByServiceKey(serviceKey);
assert service != null;
var actionName = (String)params.get("action");
var actionParams = (List<Object>)params.get("params");
@ -258,7 +247,7 @@ public class Controler {
var name = actionParamTypes.get(i);
parameterTypes[i] = Class.forName(name);
}
Method method = serviceClass.getMethod(actionName, parameterTypes);
Method method = service.getClass().getMethod(actionName, parameterTypes);
var parameters = method.getParameters();
for ( int i=0; i<parameters.length; i++ ) {
@ -270,20 +259,30 @@ public class Controler {
}
}
var service = UfApplication.getContext().getBean(serviceClass);
Object actionResult = null;
try {
if ( method.getReturnType().equals(Void.TYPE) ) {
method.invoke(service, actionParams.toArray());
return AppRet.success();
var actionParamList = actionParams.toArray();
var methodAnnotation = method.getAnnotation(HardwareServiceAction.class);
var beforeExecute = methodAnnotation.beforeExecute();
if ( !beforeExecute.isEmpty() ) {
var beforeExecuteMethod = service.getClass().getMethod(beforeExecute, new Class[]{Method.class, List.class});
beforeExecuteMethod.invoke(service, method, actionParams);
}
var actionResult = method.invoke(service, actionParams.toArray());
if ( actionResult instanceof AppRet ) {
return (AppRet)actionResult;
if ( method.getReturnType().equals(Void.TYPE) ) {
method.invoke(service, actionParamList);
} else {
actionResult = method.invoke(service, actionParamList);
}
return AppRet.success(actionResult);
} catch ( InvocationTargetException e ) {
throw e.getTargetException();
}
if ( actionResult instanceof AppRet ) {
return (AppRet<Object>)actionResult;
}
return AppRet.success(actionResult);
}
@PostMapping("/api/service-config/class-struct-info-get")
@ -296,6 +295,24 @@ public class Controler {
return AppRet.success(struct);
}
// get service instance by service key
private Object getServiceInstanceByServiceKey( String serviceKey ) {
Class<?> serviceClass = null;
var classes = UfClassHelper.getAllClassesInPackage("a8k");
for (var clazz : classes) {
var hardwareServiceAnnotation = clazz.getAnnotation(HardwareService.class);
if (null == hardwareServiceAnnotation || !clazz.getSimpleName().equals(serviceKey)) {
continue ;
}
serviceClass = clazz;
break;
}
if ( null == serviceClass ) {
return null;
}
return UfApplication.getContext().getBean(serviceClass);
}
// get service param handler by given service key
private Object getServiceParamHandlerByServiceKey( String serviceKey ) {
var classes = UfClassHelper.getAllClassesInPackage("a8k");

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

@ -12,6 +12,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.lang.reflect.Method;
import java.util.List;
@Component
@HardwareService(name = "样本预处理模块")
@HardwareServiceParams(service = SamplesPreProcessModuleCtrlService.class)
@ -467,7 +470,11 @@ public class SamplesPreProcessModuleCtrlService implements HardwareCtrlModule {
/**
* 气溶胶风扇控制
*/
@HardwareServiceAction(name = "气溶胶风扇控制", order = 1)
@HardwareServiceAction(
name = "气溶胶风扇控制",
order = 1,
beforeExecute="beforeActionExec"
)
public void setAeroslFanPower(Boolean enable) throws HardwareException, InterruptedException {
if (enable) {
canBus.fanControlerSetSpeed(MId.WbTubeFanMod, 99);
@ -475,4 +482,8 @@ public class SamplesPreProcessModuleCtrlService implements HardwareCtrlModule {
canBus.fanControlerSetSpeed(MId.WbTubeFanMod, 0);
}
}
public void beforeActionExec( Method method, List<Object> params ) {
System.out.println("beforeActionExec");
}
}

1
src/main/java/a8k/utils/HardwareServiceAction.java

@ -10,4 +10,5 @@ public @interface HardwareServiceAction {
String group() default "";
int order() default 0;
boolean newline() default false;
String beforeExecute() default "";
}
Loading…
Cancel
Save