From 16f724625149f6c1822785337ada5abe43bf1e2f Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期四, 09 五月 2024 14:04:13 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 /dev/null                                                                                 |   88 -----------------
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/InitUtil.java            |   20 ----
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcBitInfo.java         |   12 ++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcBitObject.java       |   62 ++++--------
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterInfo.java   |    6 -
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterObject.java |   86 +++++++++++-----
 6 files changed, 93 insertions(+), 181 deletions(-)

diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PLCAutoMes.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PLCAutoMes.java
deleted file mode 100644
index 0d60791..0000000
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PLCAutoMes.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package com.mes.device;
-
-import com.mes.tools.InitUtil;
-import org.springframework.context.annotation.Configuration;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-public class PLCAutoMes extends Thread {
-
-    // 鐢ㄤ簬瀛樺偍搴旂敤绋嬪簭鐨勯厤缃俊鎭�
-    private Configuration config;
-    private static InitUtil initUtil;
-
-
-    // 鍗曚緥瀹炰緥
-    private static PLCAutoMes instance;
-    private static String PlcMes = PLCAutoMes.class.getResource("/JsonFile/PlcMes.json").getPath();
-    private static String PlcRead = PLCAutoMes.class.getResource("/JsonFile/PlcRead.json").getPath();
-    private static String Plcframe = PLCAutoMes.class.getResource("/JsonFile/Plcframe.json").getPath();
-    //    private static String PlcParameter = PLCAutomaticParameterSettingReview2.class
-//            .getResource("/JsonFile/PlcParameter.json").getPath();
-//    private static String PlcSign = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcSign.json")
-//            .getPath();
-//    private static String PlcState = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcState.json")
-//            .getPath();
-    private static String PlcAlarm = PLCAutoMes.class.getResource("/JsonFile/PlcAlarm.json").getPath();
-    // private static String PlcTest = PLCAutoMes.class.getResource("/JsonFile/PlcTest.json").getPath();
-
-    // 璋冪敤initword鏂规硶
-
-    //
-    // public static PlcBitObject plcPlcAlarm = initUtil.initbit(PlcAlarm);
-    public static PlcParameterObject PlcMesObject = initUtil.initword(PlcMes);
-    public static PlcParameterObject PlcReadObject = initUtil.initword(PlcRead);
-    public static PlcParameterObject PlcframeObject = initUtil.initword(Plcframe);
-
-    // 绉佹湁鏋勯�犲嚱鏁�
-    public PLCAutoMes() throws IOException {
-
-        initUtil = new InitUtil();
-    }
-
-    // 鑾峰彇鍗曚緥瀹炰緥
-    public static synchronized PLCAutoMes getInstance() throws IOException {
-        if (instance == null) {
-            instance = new PLCAutoMes();
-        }
-        return instance;
-    }
-
-    @Override
-    public void run() {
-        while (this != null) {
-            try {
-                Thread.sleep(100);
-
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            }
-
-            // System.out.println(jsonFilePath);
-
-            // readAndUpdateWordValues(PlcReadObject);
-            InitUtil.readAndUpdateWordValues(PlcMesObject);
-//      readAndUpdateWordValues(PlcframeObject);
-            // readAndUpdateWordValues(PlcframeObject);
-
-            // readAndUpdateWordValues(plcStateObject);
-            //  int index = PlcMesObject.getPlcParameter("AddStart").getAddressIndex();
-            // System.out.println(index);
-            //  PlcMesObject.getPlcParameter("AddStart").getAddress(index);
-            // System.out.println(PlcMesObject.getPlcParameter("AddStart").getAddress(index));
-            List<String> addresses = new ArrayList<>();
-            addresses.add("FeedID");
-            addresses.add("AddStart");
-            // System.out.println(addresses);
-            // System.out.println(PlcMesObject.getPlcParameterValues(addresses));
-            List<String> addresses2 = new ArrayList<>();
-            addresses2.add("FeedID");
-            addresses2.add("FeedCarStatus");
-
-            //   System.out.println(PlcReadObject.getPlcParameterValues(addresses2));
-
-        }
-    }
-}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcBitInfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcBitInfo.java
index 3fefdac..bc14c50 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcBitInfo.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcBitInfo.java
@@ -54,19 +54,29 @@
      */
     public String getAddress(int index) {
         String[] stringdatas = this.startAddress.trim().split("\\.");
-        if (stringdatas.length < 2)
+        if (stringdatas.length < 2) {
             return null;
+        }
         int dbwindex = 0;
         int bitindex = 0;
         if (stringdatas.length == 3) {
             dbwindex = Integer.parseInt(stringdatas[1]);
             bitindex = Integer.parseInt(stringdatas[2]);
         } else
+        {
             return null;
+        }
         dbwindex += index / 8;
         bitindex += index % 8;
         return stringdatas[0] + "." + dbwindex + "." + bitindex;
     }
+    /**
+     * 鑾峰彇鍦板潃
+     *
+     */
+    public String getAddress() {
+      return   getAddress(this.addressIndex);
+    }
 
 
     public void setAddressIndex(int addressindex) {
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcBitObject.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcBitObject.java
index 2a86a0f..f427416 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcBitObject.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcBitObject.java
@@ -1,9 +1,6 @@
 package com.mes.device;
 
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 public class PlcBitObject {
 
@@ -11,7 +8,8 @@
     private String plcAddressBegin;
     // 鏁版嵁鍦板潃闀垮害锛氱涓�鍙傛暟鍒版渶鍚庝竴涓弬鏁扮殑闀垮害
     private int plcAddressLength;
-    private ArrayList<PlcBitInfo> plcBitList;
+    //private ArrayList<PlcBitInfo> plcBitList;
+    private LinkedHashMap<String,PlcBitInfo> plcBitMap;
 
     /**
      * @return 鏁版嵁鍖哄紑濮嬪湴鍧�
@@ -44,8 +42,8 @@
     /**
      * @return 鑾峰彇鍙傛暟瀹炰緥闆嗗悎
      */
-    public ArrayList<PlcBitInfo> getBitList() {
-        return plcBitList;
+    public LinkedHashMap<String,PlcBitInfo> getBitMap() {
+        return plcBitMap;
     }
 
     /**
@@ -55,38 +53,29 @@
      * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
      */
     public PlcBitInfo getPlcBit(String codeid) {
-        if (plcBitList != null) {
-            for (PlcBitInfo plcbitInfo : plcBitList) {
+        if (plcBitMap != null) {
+            /*for (PlcBitInfo plcbitInfo : plcBitList) {
                 if (plcbitInfo.getCodeId().equals(codeid))
                     return plcbitInfo;
-            }
-            return null;
+            }*/
+            return plcBitMap.get(codeid);
         } else
+        {
             return null;
+        }
     }
 
     /**
      * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
      *
-     * @param codeid 鍙傛暟鏍囪瘑
+     * @param codeids 鍙傛暟鏍囪瘑
      * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
      */
     public List<Boolean> getPlcBitValues(List<String> codeids) {
         List<Boolean> arrayList = new ArrayList<>();
-        if (plcBitList != null) {
-            Map<String, Boolean> resultMap = new LinkedHashMap<>(); // 浣跨敤 LinkedHashMap 淇濈暀鎻掑叆椤哄簭
-            for (PlcBitInfo plcBitInfo : plcBitList) {
-                if (codeids.contains(plcBitInfo.getCodeId().toString())) {
-                    resultMap.put(plcBitInfo.getCodeId().toString(), plcBitInfo.getValue());
-                }
-            }
+        if (plcBitMap != null) {
             for (String codeId : codeids) { // 鎸夌収浼犲叆鍙傛暟鐨勯『搴忛亶鍘�
-                Boolean value = resultMap.get(codeId);
-                if (value != null) {
-                    arrayList.add(value);
-                } else {
-                    arrayList.add(null); // 濡傛灉鎵句笉鍒板搴旂殑鍊硷紝娣诲姞 null
-                }
+                    arrayList.add(plcBitMap.get(codeId).getValue());
             }
         }
         return arrayList;
@@ -96,15 +85,7 @@
     public List<String> getAddressListByCodeId(List<String> codeIdList) {
         List<String> addressList = new ArrayList<>();
         for (String codeId : codeIdList) {
-            for (PlcBitInfo plcBitInfo : plcBitList) {
-                if (plcBitInfo.getCodeId().equals(codeId)) {
-                    int index = plcBitInfo.getAddressIndex();
-                    String address = plcBitInfo.getAddress(index);
-                    if (address != null) {
-                        addressList.add(address);
-                    }
-                }
-            }
+            addressList.add(plcBitMap.get(codeId).getAddress());
         }
         return addressList;
     }
@@ -116,11 +97,11 @@
      * @param param 鍙傛暟瀹炰緥
      */
     public void addPlcBit(PlcBitInfo param) {
-        if (plcBitList != null)
-            plcBitList.add(param);
+        if (plcBitMap != null)
+            plcBitMap.put(param.getCodeId(),param);
         else {
-            plcBitList = new ArrayList<PlcBitInfo>();
-            plcBitList.add(param);
+            plcBitMap = new LinkedHashMap<String,PlcBitInfo>();
+            plcBitMap.put(param.getCodeId(),param);
         }
     }
 
@@ -130,8 +111,9 @@
      * @param plcValueArray PLC璇诲彇鍥炴潵鐨刡yte绫诲瀷鏁版嵁闆嗗悎
      */
     public void setPlcBitList(List<Boolean> plcValueArray) {
-        if (plcBitList != null) {
-            for (PlcBitInfo plcbitInfo : plcBitList) {
+        if (plcBitMap != null) {
+            Collection<PlcBitInfo> values=plcBitMap.values();
+            for (PlcBitInfo plcbitInfo : values) {
                 plcbitInfo.setValue(plcValueArray.get(plcbitInfo.getAddressIndex()));
             }
         }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterInfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterInfo.java
index 4969c73..7eae4c8 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterInfo.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterInfo.java
@@ -100,6 +100,7 @@
      * @param index 绱㈠紩鍦板潃
      */
     public String getAddress(int index) {
+        index=this.addressIndex;
         String[] stringdatas = this.startAddress.trim().split("\\.");
         int addressLength = this.addressLength;
         if (addressLength < 2) {
@@ -118,11 +119,6 @@
             return stringdatas[0] + "." + wordindex + "-" + newIndex;
         }*/
 //        return null;
-    }
-
-    public int getPlcAddress() {
-
-        return addressIndex;
     }
 
     public String getAddress() {
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
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/InitUtil.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/InitUtil.java
index 0bf1a9f..733b805 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/InitUtil.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/InitUtil.java
@@ -104,24 +104,4 @@
 //        plcBitObject.setPlcBitList(getplcvlues);
         return plcBitObject;
     }
-
-    //
-    public static void readAndUpdateBitValues(PlcBitObject plcBitObject) {
-
-        Boolean[] values1 = {false, true, true, true, false, false, true, false,
-                false, true, true};
-        List<Boolean> getplcvlues = new ArrayList<>(Arrays.asList(values1));
-        //List<Boolean> getplcvlues = S7control.getinstance().ReadBits(plcBitObject.getPlcAddressBegin(), plcBitObject.getPlcAddressLength());
-        plcBitObject.setPlcBitList(getplcvlues);
-    }
-
-
-    public static void readAndUpdateWordValues(PlcParameterObject plcParameterObject) {
-
-        byte[] getplcvlues = {0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x03};
-        // byte[] getplcvlues = MockS7PLC.getInstance().readByte(plcParameterObject.getPlcAddressBegin(), plcParameterObject.getPlcAddressLength());
-        plcParameterObject.setPlcParameterList(getplcvlues);
-    }
-
-
 }

--
Gitblit v1.8.0