Browse Source
Merge branch 'master' of http://47.92.195.73:8081/project_boditech_vidas_a8000_v3/a8k_app
tags/v0
Merge branch 'master' of http://47.92.195.73:8081/project_boditech_vidas_a8000_v3/a8k_app
tags/v0
23 changed files with 393 additions and 98 deletions
-
247src/main/java/a8k/hardware/controler/Controler.java
-
69src/main/java/a8k/service/db/dao/SamplesPreProcessModuleCtrlParamsService.java
-
4src/main/java/a8k/service/hardware/HbotControlService.java
-
2src/main/java/a8k/service/hardware/ModuleRegConfigMgrService.java
-
2src/main/java/a8k/service/hardware/ReactionPlatesTransmitCtrlService.java
-
20src/main/java/a8k/service/hardware/SamplesPreProcessModuleCtrlService.java
-
10src/main/java/a8k/utils/HardwareService.java
-
11src/main/java/a8k/utils/HardwareServiceAction.java
-
11src/main/java/a8k/utils/HardwareServiceActionParam.java
-
11src/main/java/a8k/utils/HardwareServiceParam.java
-
10src/main/java/a8k/utils/HardwareServiceParams.java
-
12src/main/java/a8k/utils/HardwareServiceStatus.java
-
2src/main/resources/static/test/css/app.904d7563.css
-
2src/main/resources/static/test/index.html
-
2src/main/resources/static/test/js/app.0f059b0e.js
-
1src/main/resources/static/test/js/app.0f059b0e.js.map
-
2src/main/resources/static/test/js/app.e8dec210.js
-
1src/main/resources/static/test/js/app.e8dec210.js.map
-
33src/main/resources/static/test/js/chunk-vendors.c938f438.js
-
1src/main/resources/static/test/js/chunk-vendors.c938f438.js.map
-
33src/main/resources/static/test/js/chunk-vendors.feed1d4c.js
-
1src/main/resources/static/test/js/chunk-vendors.feed1d4c.js.map
@ -1,4 +1,249 @@ |
|||
package a8k.hardware.controler; |
|||
|
|||
import a8k.appbean.ecode.AppRet; |
|||
import a8k.service.db.entity.HardwareServiceSetting; |
|||
import a8k.utils.*; |
|||
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.lang.reflect.Method; |
|||
import java.util.ArrayList; |
|||
import java.util.HashMap; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
@Controller |
|||
public class Controler { |
|||
@PostMapping("/api/service-config/service-list") |
|||
@ResponseBody |
|||
public AppRet<Object> services() { |
|||
List<Map<String, Object>> services = new ArrayList<>(); |
|||
var classes = UfClassHelper.getAllClassesInPackage("a8k"); |
|||
for (var clazz : classes) { |
|||
var hardwareServiceAnnotation = clazz.getAnnotation(HardwareService.class); |
|||
if (null == hardwareServiceAnnotation) { |
|||
continue ; |
|||
} |
|||
|
|||
Map<String,Object> service = new HashMap<>(); |
|||
service.put("key", clazz.getSimpleName()); |
|||
service.put("name", hardwareServiceAnnotation.name()); |
|||
services.add(service); |
|||
} |
|||
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(); |
|||
} |
|||
|
|||
@PostMapping("/api/service-config/service-status-list") |
|||
@ResponseBody |
|||
public AppRet<Object> serviceStatus( @RequestBody Map<String, Object> params ) throws InvocationTargetException, IllegalAccessException { |
|||
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; |
|||
} |
|||
|
|||
List<Map<String,Object>> statusList = new ArrayList<>(); |
|||
if ( null == serviceClass ) { |
|||
return AppRet.success(statusList); |
|||
} |
|||
|
|||
var service = UfApplication.getContext().getBean(serviceClass); |
|||
var methods = serviceClass.getMethods(); |
|||
for ( var method : methods ) { |
|||
var statusAnnotation = method.getAnnotation(HardwareServiceStatus.class); |
|||
if ( null == statusAnnotation ) { |
|||
continue; |
|||
} |
|||
|
|||
var status = new HashMap<String,Object>(); |
|||
status.put("name", statusAnnotation.name()); |
|||
var value = method.invoke(service); |
|||
status.put("value", value); |
|||
statusList.add(status); |
|||
} |
|||
return AppRet.success(statusList); |
|||
} |
|||
|
|||
@PostMapping("/api/service-config/service-action-list") |
|||
@ResponseBody |
|||
public AppRet<Object> serviceActionList( @RequestBody Map<String, Object> params ) throws Exception { |
|||
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; |
|||
} |
|||
|
|||
List<Map<String,Object>> actions = new ArrayList<>(); |
|||
if ( null == serviceClass ) { |
|||
return AppRet.success(actions); |
|||
} |
|||
|
|||
var methodList = serviceClass.getMethods(); |
|||
for ( var method : methodList ) { |
|||
var actionAnnotation = method.getAnnotation(HardwareServiceAction.class); |
|||
if ( null == actionAnnotation ) { |
|||
continue ; |
|||
} |
|||
var action = new HashMap<String,Object>(); |
|||
action.put("key", method.getName()); |
|||
action.put("name", actionAnnotation.name()); |
|||
action.put("group", actionAnnotation.group()); |
|||
|
|||
var actionParams = new ArrayList<Map<String,Object>>(); |
|||
var actionParamList = method.getParameters(); |
|||
for ( var param : actionParamList ) { |
|||
var actionParam = new HashMap<String, Object>(); |
|||
actionParam.put("key", param.getName()); |
|||
actionParam.put("type", param.getType().getName()); |
|||
if ( param.getType().isEnum() ) { |
|||
actionParam.put("type", "Enum"); |
|||
actionParam.put("typeEnum", param.getType().getName()); |
|||
var paramOptions = new ArrayList<Map<String,Object>>(); |
|||
var values = param.getType().getEnumConstants(); |
|||
for ( var value : values ) { |
|||
var str = value.toString(); |
|||
var paramOption = new HashMap<String, Object>(); |
|||
paramOption.put("name", str); |
|||
paramOption.put("value", str); |
|||
paramOptions.add(paramOption); |
|||
} |
|||
actionParam.put("options", paramOptions); |
|||
} |
|||
actionParam.put("name", param.getName()); |
|||
var annotation = param.getAnnotation(HardwareServiceActionParam.class); |
|||
if ( null != annotation ) { |
|||
actionParam.put("name", annotation.name()); |
|||
} |
|||
actionParams.add(actionParam); |
|||
} |
|||
action.put("params", actionParams); |
|||
actions.add(action); |
|||
} |
|||
return AppRet.success(actions); |
|||
} |
|||
|
|||
@PostMapping("/api/service-config/service-action-exec") |
|||
@ResponseBody |
|||
public AppRet<Object> serviceActionExecute( @RequestBody Map<String, Object> params ) throws Exception { |
|||
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 actionName = (String)params.get("action"); |
|||
var actionParams = (List<Object>)params.get("params"); |
|||
var actionParamTypes = (List<String>)params.get("paramTypes"); |
|||
Class<?>[] parameterTypes = new Class[actionParams.size()]; |
|||
for(int i = 0; i < actionParams.size(); ++i) { |
|||
var name = actionParamTypes.get(i); |
|||
parameterTypes[i] = Class.forName(name); |
|||
} |
|||
Method method = serviceClass.getMethod(actionName, parameterTypes); |
|||
|
|||
var parameters = method.getParameters(); |
|||
for ( int i=0; i<parameters.length; i++ ) { |
|||
var parameter = parameters[i]; |
|||
if ( parameter.getType().isEnum() ) { |
|||
var methodValueOf = parameter.getType().getMethod("valueOf", String.class); |
|||
var value = methodValueOf.invoke(null, actionParams.get(i)); |
|||
actionParams.set(i, value); |
|||
} |
|||
} |
|||
|
|||
var service = UfApplication.getContext().getBean(serviceClass); |
|||
Object actionResult = null; |
|||
if ( method.getReturnType().equals(Void.TYPE) ) { |
|||
method.invoke(service, actionParams.toArray()); |
|||
} else { |
|||
actionResult = method.invoke(service, actionParams.toArray()); |
|||
} |
|||
return AppRet.success(actionResult); |
|||
} |
|||
} |
@ -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 HardwareService { |
|||
String name(); |
|||
} |
@ -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 HardwareServiceAction { |
|||
String name(); |
|||
String group() default ""; |
|||
} |
@ -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.PARAMETER}) |
|||
public @interface HardwareServiceActionParam { |
|||
String name(); |
|||
} |
@ -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 ""; |
|||
} |
@ -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(); |
|||
} |
@ -0,0 +1,12 @@ |
|||
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 HardwareServiceStatus { |
|||
String name(); |
|||
String group() default ""; |
|||
} |
2
src/main/resources/static/test/css/app.904d7563.css
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -1 +1 @@ |
|||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>a8k_webui</title><script defer="defer" src="js/chunk-vendors.c938f438.js"></script><script defer="defer" src="js/app.0f059b0e.js"></script><link href="css/app.570d7f4b.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but a8k_webui doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html> |
|||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>a8k_webui</title><script defer="defer" src="js/chunk-vendors.feed1d4c.js"></script><script defer="defer" src="js/app.e8dec210.js"></script><link href="css/app.904d7563.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but a8k_webui doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html> |
2
src/main/resources/static/test/js/app.0f059b0e.js
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
1
src/main/resources/static/test/js/app.0f059b0e.js.map
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
2
src/main/resources/static/test/js/app.e8dec210.js
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
1
src/main/resources/static/test/js/app.e8dec210.js.map
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
33
src/main/resources/static/test/js/chunk-vendors.c938f438.js
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
1
src/main/resources/static/test/js/chunk-vendors.c938f438.js.map
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
33
src/main/resources/static/test/js/chunk-vendors.feed1d4c.js
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
1
src/main/resources/static/test/js/chunk-vendors.feed1d4c.js.map
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
Write
Preview
Loading…
Cancel
Save
Reference in new issue