diff --git a/src/main/java/a8k/appbean/ecode/AppRet.java b/src/main/java/a8k/appbean/ecode/AppRet.java index bb7cd07..0d5a4fd 100644 --- a/src/main/java/a8k/appbean/ecode/AppRet.java +++ b/src/main/java/a8k/appbean/ecode/AppRet.java @@ -52,7 +52,7 @@ public class AppRet { r.success = true; r.ecode = null; r.data = data; - r.dataType = data.getClass().getSimpleName(); + r.dataType = null == data ? null : data.getClass().getSimpleName(); return r; } diff --git a/src/main/java/a8k/hardware/controler/Controler.java b/src/main/java/a8k/hardware/controler/Controler.java index 8db34a3..ba0c283 100644 --- a/src/main/java/a8k/hardware/controler/Controler.java +++ b/src/main/java/a8k/hardware/controler/Controler.java @@ -236,19 +236,8 @@ public class Controler { @ResponseBody public AppRet serviceActionExecute( @RequestBody Map 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)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)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"); diff --git a/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java b/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java index 3bef7e9..a241f98 100644 --- a/src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java +++ b/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 params ) { + System.out.println("beforeActionExec"); + } } diff --git a/src/main/java/a8k/utils/HardwareServiceAction.java b/src/main/java/a8k/utils/HardwareServiceAction.java index 96bbb71..479a7e6 100644 --- a/src/main/java/a8k/utils/HardwareServiceAction.java +++ b/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 ""; }