From db53563246c25e1188ca3a70f59382c1475c7a02 Mon Sep 17 00:00:00 2001 From: sige Date: Wed, 24 Jul 2024 09:44:39 +0800 Subject: [PATCH] 1 --- .../java/a8k/hardware/controler/Controler.java | 37 ++++++++++++++++++++++ .../a8k/service/hardware/HbotControlService.java | 2 ++ .../hardware/MotorTubeRackMoveCtrlService.java | 13 +++++--- src/main/java/a8k/utils/HardwareServiceStatus.java | 12 +++++++ 4 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 src/main/java/a8k/utils/HardwareServiceStatus.java diff --git a/src/main/java/a8k/hardware/controler/Controler.java b/src/main/java/a8k/hardware/controler/Controler.java index a9d6c5b..9630df6 100644 --- a/src/main/java/a8k/hardware/controler/Controler.java +++ b/src/main/java/a8k/hardware/controler/Controler.java @@ -98,6 +98,43 @@ public class Controler { return AppRet.success(); } + @PostMapping("/api/service-config/service-status-list") + @ResponseBody + public AppRet serviceStatus( @RequestBody Map 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> 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(); + 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 serviceActionList( @RequestBody Map params ) throws Exception { diff --git a/src/main/java/a8k/service/hardware/HbotControlService.java b/src/main/java/a8k/service/hardware/HbotControlService.java index 0634971..6f82194 100644 --- a/src/main/java/a8k/service/hardware/HbotControlService.java +++ b/src/main/java/a8k/service/hardware/HbotControlService.java @@ -2,10 +2,12 @@ package a8k.service.hardware; import a8k.a8k_can_protocol.A8kEcode; import a8k.utils.HardwareService; +import org.springframework.stereotype.Component; /** * Hbot控制服务 */ +@Component @HardwareService(name="Hbot控制") public class HbotControlService { diff --git a/src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java b/src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java index a87e80a..a1a9d98 100644 --- a/src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java +++ b/src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java @@ -7,6 +7,7 @@ import a8k.base_hardware.A8kCanBusService; import a8k.service.db.dao.A8kTubeInfoDao; import a8k.service.db.dao.MotorTubeRackMoveCtrlServiceParameterDao; import a8k.utils.HardwareService; +import a8k.utils.HardwareServiceStatus; import com.iflytop.uf.util.UfCommon; import jakarta.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; @@ -271,12 +272,16 @@ public class MotorTubeRackMoveCtrlService { /** * 获取移动通道的光电状态 - * @param photoelectricIndex 0:里光电,1:外光电 * @return true, 光电触发 false,光电没有触发 */ - public boolean getMoveChannelPhotoelectricState(Integer photoelectricIndex) throws HardwareException { - var io = 0 == photoelectricIndex ? IOId.THChOuterPPS : IOId.THChInterPPS; - return this.canBus.getIOState(io); + @HardwareServiceStatus(name="移动通道的光电(内)") + public boolean getMoveChannelPhotoelectricInState() throws HardwareException { + return this.canBus.getIOState(IOId.THChInterPPS); + } + + @HardwareServiceStatus(name="移动通道的光电(外)") + public boolean getMoveChannelPhotoelectricOutState() throws HardwareException { + return this.canBus.getIOState(IOId.THChOuterPPS); } // diff --git a/src/main/java/a8k/utils/HardwareServiceStatus.java b/src/main/java/a8k/utils/HardwareServiceStatus.java new file mode 100644 index 0000000..bc7cccc --- /dev/null +++ b/src/main/java/a8k/utils/HardwareServiceStatus.java @@ -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 ""; +}