From 1566e4c7604d85737ea67fe6757e71b8185fa48e Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期二, 18 十一月 2025 16:52:42 +0800
Subject: [PATCH] 添加设备管理页面,添加测试设备任务监控页面

---
 mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/DeviceInteractionServiceImpl.java |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 55 insertions(+), 0 deletions(-)

diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/DeviceInteractionServiceImpl.java b/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/DeviceInteractionServiceImpl.java
index 9c6fb3f..73cb33a 100644
--- a/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/DeviceInteractionServiceImpl.java
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/DeviceInteractionServiceImpl.java
@@ -1,6 +1,10 @@
 package com.mes.device.service.impl;
 
+import com.mes.device.entity.DeviceConfig;
+import com.mes.interaction.DeviceLogicHandler;
+import com.mes.interaction.DeviceLogicHandlerFactory;
 import com.mes.device.request.DeviceGlassFeedRequest;
+import com.mes.device.service.DeviceConfigService;
 import com.mes.device.service.DeviceControlProfileService;
 import com.mes.device.service.DeviceInteractionService;
 import com.mes.device.service.DevicePlcOperationService;
@@ -25,9 +29,30 @@
 
     private final DeviceControlProfileService controlProfileService;
     private final DevicePlcOperationService devicePlcOperationService;
+    private final DeviceConfigService deviceConfigService;
+    private final DeviceLogicHandlerFactory handlerFactory;
 
+    /**
+     * 鎵ц鐜荤拑涓婃枡鍐欏叆锛堝吋瀹规棫鎺ュ彛锛屼繚鐣欏師鏈夐�昏緫锛�
+     */
     @Override
     public DevicePlcVO.OperationResult feedGlass(DeviceGlassFeedRequest request) {
+        // 浼樺厛浣跨敤鏂扮殑澶勭悊鍣ㄦ灦鏋�
+        DeviceConfig deviceConfig = deviceConfigService.getDeviceById(request.getDeviceId());
+        if (deviceConfig != null) {
+            DeviceLogicHandler handler = handlerFactory.getHandler(deviceConfig.getDeviceType());
+            if (handler != null) {
+                // 浣跨敤鏂版灦鏋勬墽琛�
+                Map<String, Object> params = new HashMap<>();
+                params.put("glassIds", request.getGlassIds());
+                params.put("positionCode", request.getPositionCode());
+                params.put("positionValue", request.getPositionValue());
+                params.put("triggerRequest", request.getTriggerRequest());
+                return handler.execute(deviceConfig, "feedGlass", params);
+            }
+        }
+
+        // 闄嶇骇鍒板師鏈夐�昏緫锛堝吋瀹规棫浠g爜锛�
         DeviceControlProfile profile = controlProfileService.getProfile(request.getDeviceId());
         Map<String, Object> payload = buildGlassPayload(profile, request);
         String opName = "鐜荤拑涓婃枡";
@@ -37,6 +62,36 @@
         return devicePlcOperationService.writeFields(request.getDeviceId(), payload, opName);
     }
 
+    /**
+     * 鎵ц璁惧閫昏緫鎿嶄綔锛堟柊鎺ュ彛锛屼娇鐢ㄥ鐞嗗櫒鏋舵瀯锛�
+     */
+    @Override
+    public DevicePlcVO.OperationResult executeOperation(Long deviceId, String operation, Map<String, Object> params) {
+        // 鑾峰彇璁惧閰嶇疆
+        DeviceConfig deviceConfig = deviceConfigService.getDeviceById(deviceId);
+        if (deviceConfig == null) {
+            return DevicePlcVO.OperationResult.builder()
+                    .success(false)
+                    .message("璁惧涓嶅瓨鍦�: " + deviceId)
+                    .build();
+        }
+
+        // 鑾峰彇瀵瑰簲鐨勫鐞嗗櫒
+        DeviceLogicHandler handler = handlerFactory.getHandler(deviceConfig.getDeviceType());
+        if (handler == null) {
+            return DevicePlcVO.OperationResult.builder()
+                    .success(false)
+                    .message("涓嶆敮鎸佺殑璁惧绫诲瀷: " + deviceConfig.getDeviceType())
+                    .build();
+        }
+
+        // 鎵ц鎿嶄綔
+        return handler.execute(deviceConfig, operation, params != null ? params : new HashMap<>());
+    }
+
+    /**
+     * 鏋勫缓鐜荤拑涓婃枡鏁版嵁锛堝吋瀹规棫閫昏緫锛�
+     */
     private Map<String, Object> buildGlassPayload(DeviceControlProfile profile, DeviceGlassFeedRequest request) {
         if (CollectionUtils.isEmpty(profile.getGlassSlots())) {
             throw new IllegalStateException("璁惧鏈厤缃幓鐠冩Ы浣嶄俊鎭�");

--
Gitblit v1.8.0