From 58d7b0e12ccd92cf3934f6582b51b5fbcecaa39a Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期四, 09 五月 2024 09:42:41 +0800
Subject: [PATCH] 修改注入方式

---
 springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterObject.java |   63 +++++++++++++++++++++++++++++--
 1 files changed, 58 insertions(+), 5 deletions(-)

diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterObject.java b/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterObject.java
index 163c45e..dec12e4 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterObject.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/device/PlcParameterObject.java
@@ -1,8 +1,11 @@
 package com.example.springboot.entity.device;
 
 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;
 
 public class PlcParameterObject {
 
@@ -64,23 +67,57 @@
             return null;
     }
 
+
+
     /**
      * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
      * 
-     * @param codeid 鍙傛暟鏍囪瘑
+     * @param codeids 鍙傛暟鏍囪瘑
      * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
      */
     public List<String> getPlcParameterValues(List<String> codeids) {
-        List<String> arrayList = new ArrayList();
+        List<String> arrayList = new ArrayList<>();
         if (plcParameterList != null) {
+            Map<String, PlcParameterInfo> resultMap = new LinkedHashMap<>(); // 浣跨敤 LinkedHashMap 淇濈暀鎻掑叆椤哄簭
             for (PlcParameterInfo plcParameterInfo : plcParameterList) {
-                if (codeids.contains(plcParameterInfo.getCodeId().toString()))
+                if (codeids.contains(plcParameterInfo.getCodeId())) {
+                    resultMap.put(plcParameterInfo.getCodeId(), plcParameterInfo);
+                }
+            }
+            for (String codeId : codeids) { // 鎸夌収浼犲叆鍙傛暟鐨勯『搴忛亶鍘�
+                PlcParameterInfo plcParameterInfo = resultMap.get(codeId);
+                if (plcParameterInfo != null) {
                     arrayList.add(plcParameterInfo.getValue());
+                } else {
+                    arrayList.add(null); // 濡傛灉鎵句笉鍒板搴旂殑鍊硷紝娣诲姞 null
+                }
             }
         }
         return arrayList;
     }
-     
+
+
+    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 (address != null) {
+                        addressList.add(address);
+                    }
+                }
+            }
+        }
+        return addressList;
+    }
+
+
+
+
+
+
     /**
      * 娣诲姞鍙傛暟瀹炰緥
      * 
@@ -102,14 +139,24 @@
      */
     public void setPlcParameterList(byte[] plcValueArray) {
         if (plcParameterList != null) {
+          
             for (PlcParameterInfo plcParameterInfo : plcParameterList) {
+               
                 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()==14) {
+                    plcParameterInfo.setValue((byteToHexString(valueList)));
+                }
+
                 else
                 {
                     String valuestr = new String(valueList);
@@ -145,5 +192,11 @@
        return l;
    }
 
-   
+    public static String byteToHexString(byte[] bytes) {
+
+        String str = new String(bytes, StandardCharsets.UTF_8);
+        return str;
+    }
+
+
 }
\ No newline at end of file

--
Gitblit v1.8.0