From 16f4bb3c28fc85cffcc511718c903ada9fdab134 Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期五, 26 十二月 2025 16:59:45 +0800
Subject: [PATCH] 调用mes导入工程参数修改,Excel表数据流程卡号一致;增加读取层号/工程号方法; 工程号一致覆盖更新

---
 mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/DeviceInteractionServiceImpl.java |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 57 insertions(+), 2 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..3d52809 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,18 +29,69 @@
 
     private final DeviceControlProfileService controlProfileService;
     private final DevicePlcOperationService devicePlcOperationService;
+    private final DeviceConfigService deviceConfigService;
+    private final DeviceLogicHandlerFactory handlerFactory;
 
+    /**
+     * 鎵ц鐜荤拑涓婃枡鍐欏叆锛堝吋瀹规棫鎺ュ彛锛屼繚鐣欏師鏈夐�昏緫锛�
+     */
     @Override
     public DevicePlcVO.OperationResult feedGlass(DeviceGlassFeedRequest request) {
-        DeviceControlProfile profile = controlProfileService.getProfile(request.getDeviceId());
+        // 浼樺厛浣跨敤鏂扮殑澶勭悊鍣ㄦ灦鏋�
+        DeviceConfig deviceConfig = deviceConfigService.getDeviceById(request.getId());
+        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.getId());
         Map<String, Object> payload = buildGlassPayload(profile, request);
         String opName = "鐜荤拑涓婃枡";
         if (request.getPositionCode() != null) {
             opName = opName + "(" + request.getPositionCode() + ")";
         }
-        return devicePlcOperationService.writeFields(request.getDeviceId(), payload, opName);
+        return devicePlcOperationService.writeFields(request.getId(), 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