From b9e746cd992e2770ce72ba6eff5f126a054e2767 Mon Sep 17 00:00:00 2001
From: wuyouming666 <2265557248@qq.com>
Date: 星期四, 09 五月 2024 16:58:13 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes

---
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterObject.java |   86 +++++++++++++++++++++++++++++-------------
 1 files changed, 59 insertions(+), 27 deletions(-)

diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterObject.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterObject.java
index 2d34674..b32c593 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterObject.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterObject.java
@@ -2,10 +2,7 @@
 
 import java.lang.reflect.Array;
 import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 public class PlcParameterObject {
 
@@ -13,7 +10,8 @@
     private String plcAddressBegin;
     // 鏁版嵁鍦板潃闀垮害锛氱涓�鍙傛暟鍒版渶鍚庝竴涓弬鏁扮殑闀垮害
     private int plcAddressLength;
-    private ArrayList<PlcParameterInfo> plcParameterList;
+    //private ArrayList<PlcParameterInfo> plcParameterList;
+    private LinkedHashMap<String,PlcParameterInfo> plcParameterMap;
 
 
     /**
@@ -47,8 +45,8 @@
     /**
      * @return 鑾峰彇鍙傛暟瀹炰緥闆嗗悎
      */
-    public ArrayList<PlcParameterInfo> getPlcParameterList() {
-        return plcParameterList;
+    public LinkedHashMap<String,PlcParameterInfo> getPlcParameterMap() {
+        return plcParameterMap;
     }
 
     /**
@@ -58,14 +56,19 @@
      * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
      */
     public PlcParameterInfo getPlcParameter(String codeid) {
-        if (plcParameterList != null) {
+        if (plcParameterMap != null) {
+                    return plcParameterMap.get(codeid);
+        } else {
+            return null;
+        }
+        /*if (plcParameterList != null) {
             for (PlcParameterInfo plcParameterInfo : plcParameterList) {
                 if (plcParameterInfo.getCodeId().equals(codeid))
                     return plcParameterInfo;
             }
             return null;
         } else
-            return null;
+            return null;*/
     }
 
 
@@ -77,15 +80,15 @@
      */
     public List<String> getPlcParameterValues(List<String> codeids) {
         List<String> arrayList = new ArrayList<>();
-        if (plcParameterList != null) {
-            Map<String, PlcParameterInfo> resultMap = new LinkedHashMap<>(); // 浣跨敤 LinkedHashMap 淇濈暀鎻掑叆椤哄簭
+        if (plcParameterMap != null) {
+            /*Map<String, PlcParameterInfo> resultMap = new LinkedHashMap<>(); // 浣跨敤 LinkedHashMap 淇濈暀鎻掑叆椤哄簭
             for (PlcParameterInfo plcParameterInfo : plcParameterList) {
                 if (codeids.contains(plcParameterInfo.getCodeId())) {
                     resultMap.put(plcParameterInfo.getCodeId(), plcParameterInfo);
                 }
-            }
+            }*/
             for (String codeId : codeids) { // 鎸夌収浼犲叆鍙傛暟鐨勯『搴忛亶鍘�
-                PlcParameterInfo plcParameterInfo = resultMap.get(codeId);
+                PlcParameterInfo plcParameterInfo = plcParameterMap.get(codeId);
                 if (plcParameterInfo != null) {
                     arrayList.add(plcParameterInfo.getValue());
                 } else {
@@ -96,19 +99,22 @@
         return arrayList;
     }
 
-
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇浼犲叆鍙傛暟鐨刾lc鍦板潃
+     *
+     * @param codeIdList 鍙傛暟鏍囪瘑
+     * @return 浼犲叆鍙傛暟鐨刾lc鍦板潃
+     */
     public List<String> getAddressListByCodeId(List<String> codeIdList) {
         List<String> addressList = new ArrayList<>();
-        for (String codeId : codeIdList) {
-            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
-                if (plcParameterInfo.getCodeId().equals(codeId)) {
-                    int index = plcParameterInfo.getAddressIndex();
-                    String address = plcParameterInfo.getAddress(index);
+        if (plcParameterMap!=null)
+        {
+            for (String codeId : codeIdList) {
+                    String address = plcParameterMap.get(codeId).getAddress();
                     if (address != null) {
                         addressList.add(address);
                     }
-                }
-            }
+        }
         }
         return addressList;
     }
@@ -120,12 +126,19 @@
      * @param param 鍙傛暟瀹炰緥
      */
     public void addPlcParameter(PlcParameterInfo param) {
-        if (plcParameterList != null)
+        if (plcParameterMap != null) {
+            plcParameterMap.put(param.getCodeId(), param);
+        }
+        else {
+            plcParameterMap =new  LinkedHashMap<String,PlcParameterInfo>();
+            plcParameterMap.put(param.getCodeId(), param);
+        }
+        /*if (plcParameterList != null)
             plcParameterList.add(param);
         else {
             plcParameterList = new ArrayList<PlcParameterInfo>();
             plcParameterList.add(param);
-        }
+        }*/
     }
 
     /**
@@ -134,7 +147,28 @@
      * @param plcValueArray PLC璇诲彇鍥炴潵鐨刡yte绫诲瀷鏁版嵁闆嗗悎
      */
     public void setPlcParameterList(byte[] plcValueArray) {
-        if (plcParameterList != null) {
+        if (plcParameterMap != null) {
+            Collection<PlcParameterInfo> values=  plcParameterMap.values();
+            for (PlcParameterInfo plcParameterInfo :values) {
+                byte[] valueList = new byte[plcParameterInfo.getAddressLength()];
+//                System.out.println(plcParameterInfo.getAddressLength());
+                for (int i = 0; i < plcParameterInfo.getAddressLength(); i++) {
+                    Array.setByte(valueList, i, plcValueArray[plcParameterInfo.getAddressIndex() + i]);
+                }
+                if (plcParameterInfo.getAddressLength() == 2) {
+                    plcParameterInfo.setValue(String.valueOf(byte2short(valueList)));
+                } else if (plcParameterInfo.getAddressLength() == 4) {
+                    plcParameterInfo.setValue(String.valueOf(byte2int(valueList)));
+                }
+                else if (plcParameterInfo.getAddressLength() >10) {
+                    plcParameterInfo.setValue((byteToHexString(valueList)));
+                } else {
+                    String valuestr = new String(valueList);
+                    plcParameterInfo.setValue(valuestr);
+                }
+            }
+        }
+/*        if (plcParameterList != null) {
 
             for (PlcParameterInfo plcParameterInfo : plcParameterList) {
 
@@ -158,7 +192,7 @@
                     plcParameterInfo.setValue(valuestr);
                 }
             }
-        }
+        }*/
     }
 
     /**
@@ -206,6 +240,4 @@
         String str = new String(bytes, StandardCharsets.UTF_8).trim();
         return str;
     }
-
-
 }
\ No newline at end of file

--
Gitblit v1.8.0