From fc4e5c458094c6bf5238d7d21291325f19a57adb Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期一, 22 十二月 2025 16:57:21 +0800
Subject: [PATCH] 修改:逻辑交互写入使用plc通讯工厂统一接口

---
 mes-processes/mes-plcSend/src/main/java/com/mes/plc/client/impl/ModbusPlcClient.java |   27 +++++++++++++++++++++++----
 1 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/plc/client/impl/ModbusPlcClient.java b/mes-processes/mes-plcSend/src/main/java/com/mes/plc/client/impl/ModbusPlcClient.java
index 03f03c7..c8d8a36 100644
--- a/mes-processes/mes-plcSend/src/main/java/com/mes/plc/client/impl/ModbusPlcClient.java
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/plc/client/impl/ModbusPlcClient.java
@@ -1,5 +1,6 @@
 package com.mes.plc.client.impl;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.mes.connect.modbus.ModbusTcpClient;
 import com.mes.device.entity.DeviceConfig;
 import com.mes.plc.client.PlcClient;
@@ -30,6 +31,9 @@
     // 浠庣珯鍦板潃
     private final int unitId;
     
+    // 璁惧閰嶇疆
+    private final DeviceConfig device;
+    
     // Modbus瀹㈡埛绔疄渚�
     private ModbusTcpClient modbusClient;
     
@@ -39,12 +43,19 @@
     // 瓒呮椂鏃堕棿锛堟绉掞級
     private int timeout = 5000;
     
+    // ObjectMapper鐢ㄤ簬JSON瑙f瀽
+    private final ObjectMapper objectMapper = new ObjectMapper();
+    
+    // 鍦板潃鏄犲皠缂撳瓨锛氬瓧娈靛悕 -> Modbus鍦板潃
+    private Map<String, String> addressMappingCache;
+    
     /**
      * 鏋勯�犲嚱鏁�
      *
      * @param device 璁惧閰嶇疆
      */
     public ModbusPlcClient(DeviceConfig device) {
+        this.device = device;
         this.plcIp = device.getPlcIp();
         this.plcPort = device.getPlcPort() != null ? device.getPlcPort() : 502;
         
@@ -74,7 +85,7 @@
      */
     private Map<String, Object> parseExtraParams(String extraParamsJson) {
         if (extraParamsJson == null || extraParamsJson.isEmpty()) {
-            return null;
+            return new HashMap<>();
         }
         
         try {
@@ -150,6 +161,10 @@
             return Collections.emptyMap();
         }
         
+        if (fields == null || fields.length == 0) {
+            return readAllData();
+        }
+        
         try {
             // TODO: 瀹炵幇Modbus璇诲彇鎸囧畾瀛楁鏁版嵁
             // 杩欓噷鏆傛椂杩斿洖绌篗ap锛屽悗缁畬鍠�
@@ -161,12 +176,17 @@
             return Collections.emptyMap();
         }
     }
-    
+
     @Override
     public boolean writeData(Map<String, Object> data) {
         if (!isConnected() && !connect()) {
             log.error("Modbus PLC鏈繛鎺ワ紝鏃犳硶鍐欏叆鏁版嵁: {}:{}", this.plcIp, this.plcPort);
             return false;
+        }
+        
+        if (data == null || data.isEmpty()) {
+            log.warn("鍐欏叆鏁版嵁涓虹┖锛岃烦杩囨搷浣�: deviceId={}", device.getId());
+            return true;
         }
         
         try {
@@ -180,7 +200,7 @@
             return false;
         }
     }
-    
+
     @Override
     public boolean isConnected() {
         try {
@@ -208,6 +228,5 @@
     @Override
     public void setTimeout(int timeout) {
         this.timeout = timeout;
-        // ModbusTcpClient涓嶆敮鎸佺洿鎺ヨ缃秴鏃讹紝杩欓噷浠呰褰曡秴鏃舵椂闂�
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0