From cfb5a68740880c52c9acada94f25a06614f2407a Mon Sep 17 00:00:00 2001
From: qlsxk <qlsxk@qq.com>
Date: 星期六, 11 十月 2025 10:07:16 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/impl/NyLiftThread.java |  190 +++++++++++++++++++++++++++++------------------
 1 files changed, 118 insertions(+), 72 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/impl/NyLiftThread.java b/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
index d2a2487..381e0e7 100644
--- a/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
+++ b/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
@@ -22,10 +22,7 @@
 import lombok.extern.slf4j.Slf4j;
 
 import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
 
 @Slf4j
 @SuppressWarnings("all")
@@ -109,58 +106,47 @@
         JSONObject commandObj = JSON.parseObject(command);
 
         HashMap<String, Object> resultData = new HashMap<>();
-        resultData.put("result", "false");
+        resultData.put("result", "success");
 
         String deviceMsgType = "command";
-        OperateResult result = null;
-        OperateResult result2 = null;
-        if (commandObj.getInteger("mode") == 3) {
+        if (commandObj.getInteger("mode") == 1) {
             //鍙栨斁璐�
             short[] array = new short[4];
-            array[0] = commandObj.getShort("taskNO");//浠诲姟鍙�
-            array[1] = commandObj.getShort("mode");//浠诲姟妯″紡
-            array[2] = commandObj.getShort("pick");//鍙栬揣鏁版嵁
-            array[3] = commandObj.getShort("put");//鏀捐揣鏁版嵁
+            array[0] = 1;//浠诲姟绫诲瀷
+            array[1] = commandObj.getShort("pick");//婧愮珯
+            array[2] = commandObj.getShort("put");//鐩爣绔�
+            array[3] = commandObj.getShort("taskNo");//浠诲姟鍙�
             resultData.put("commandData", array);
 
-            result = siemensS7Net.Write("DB103.0", array);
+            OperateResult result = siemensS7Net.Write("DB83.0", array);
             if (result.IsSuccess) {
-                result2 = siemensS7Net.Write("DB103.8", (short) 1);
-                if (result2.IsSuccess) {
-                    resultData.put("result", "success");
-                }
+                resultData.put("result", "success");
             }
-        } else if (commandObj.getInteger("mode") == 4) {
+        } else if (commandObj.getInteger("mode") == 2) {
             //灏忚溅鎹㈠眰
             short[] array = new short[4];
-            array[0] = commandObj.getShort("taskNO");//浠诲姟鍙�
-            array[1] = commandObj.getShort("mode");//浠诲姟妯″紡
-            array[2] = commandObj.getShort("pick");//鍙栬揣鏁版嵁
-            array[3] = commandObj.getShort("put");//鏀捐揣鏁版嵁
+            array[0] = 2;//浠诲姟绫诲瀷
+            array[1] = commandObj.getShort("pick");//婧愮珯
+            array[2] = commandObj.getShort("put");//鐩爣绔�
+            array[3] = commandObj.getShort("taskNo");//浠诲姟鍙�
             resultData.put("commandData", array);
 
-            result = siemensS7Net.Write("DB103.0", array);
+            OperateResult result = siemensS7Net.Write("DB83.0", array);
             if (result.IsSuccess) {
-                result2 = siemensS7Net.Write("DB103.8", (short) 1);
-                if (result2.IsSuccess) {
-                    resultData.put("result", "success");
-                }
+                resultData.put("result", "success");
             }
-        } else if (commandObj.getInteger("mode") == 5) {
+        } else if (commandObj.getInteger("mode") == 3) {
             //鎻愬崌鏈虹Щ鍔�
             short[] array = new short[4];
-            array[0] = commandObj.getShort("taskNO");//浠诲姟鍙�
-            array[1] = commandObj.getShort("mode");//浠诲姟妯″紡
-            array[2] = commandObj.getShort("pick");//鍙栬揣鏁版嵁
-            array[3] = commandObj.getShort("put");//鏀捐揣鏁版嵁
+            array[0] = 2;//浠诲姟绫诲瀷
+            array[1] = commandObj.getShort("pick");//婧愮珯
+            array[2] = commandObj.getShort("put");//鐩爣绔�
+            array[3] = commandObj.getShort("taskNo");//浠诲姟鍙�
             resultData.put("commandData", array);
 
-            result = siemensS7Net.Write("DB103.0", array);
+            OperateResult result = siemensS7Net.Write("DB83.0", array);
             if (result.IsSuccess) {
-                result2 = siemensS7Net.Write("DB103.8", (short) 1);
-                if (result2.IsSuccess) {
-                    resultData.put("result", "success");
-                }
+                resultData.put("result", "success");
             }
         } else if (commandObj.getInteger("mode") == 9996) {
             //澶嶄綅
@@ -168,7 +154,7 @@
             array[0] = 1;
             resultData.put("commandData", array);
 
-            result = siemensS7Net.Write("DB103.10", array);
+            OperateResult result = siemensS7Net.Write("DB103.10", array);
             if (result.IsSuccess) {
                 resultData.put("result", "success");
             }
@@ -178,7 +164,7 @@
             array[0] = 1;
             resultData.put("commandData", array);
 
-            result = siemensS7Net.Write("DB103.12", array);
+            OperateResult result = siemensS7Net.Write("DB103.12", array);
             if (result.IsSuccess) {
                 resultData.put("result", "success");
             }
@@ -188,7 +174,7 @@
             array[0] = 2;
             resultData.put("commandData", array);
 
-            result = siemensS7Net.Write("DB103.12", array);
+            OperateResult result = siemensS7Net.Write("DB103.12", array);
             if (result.IsSuccess) {
                 resultData.put("result", "success");
             }
@@ -196,60 +182,120 @@
             //璇诲彇鐘舵��
             JSONObject device = new JSONObject();
 
-            OperateResultExOne<byte[]> readResult1 = siemensS7Net.Read("DB101.0", (short) 18);
+            OperateResultExOne<byte[]> readResult1 = siemensS7Net.Read("DB82.0", (short) 14);
             if (readResult1.IsSuccess) {
+
+                //璇诲彇4.0-4.7鏁版嵁
+                boolean[] status1 = siemensS7Net.getByteTransform().TransBool(readResult1.Content, 4, 1);
+                //璇诲彇5.0-5.7鏁版嵁
+                boolean[] status2 = siemensS7Net.getByteTransform().TransBool(readResult1.Content, 5, 1);
+
                 //妯″紡
-                device.put("model", (int) siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 0));
+                device.put("model", status1[0] ? 2 : 1);
                 //PLC浠诲姟鍙�
-                device.put("wrkNo", (int) siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 2));
+                device.put("plcTaskNo", (int) siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 6));
                 //璁惧鐘舵��
-                device.put("deviceStatus", (int) siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 4));
+                device.put("deviceStatus", status1[1] ? 0 : 1);
                 //浠诲姟妯″紡
-                device.put("taskMode", (int) siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 6));
+                device.put("taskMode", 0);
                 //鍙栬揣鏁版嵁
-                device.put("pick", (int) siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 8));
+                device.put("pick", 0);
                 //鏀捐揣鏁版嵁
-                device.put("put", (int) siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 10));
+                device.put("put", 0);
                 //鍑哄叆搴撴ā寮�
-                device.put("iOMode", (int) siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 12));
+                device.put("iOMode", 0);
+                //鏈夋墭鐩�
+                device.put("hasTray", status2[5] ? 1 : 0);
+                //鏈夊皬杞�
+                device.put("hasCar", status2[6] ? 1 : 0);
                 //鏁呴殰鐮�
-                device.put("errorCode", (int) siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 14));
+                device.put("errorCode", status2[7] ? 1 : 0);
                 //灞�
-                device.put("lev", (int) siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 16));
+                device.put("lev", (int) siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 12));
+
+                JSONObject extend = new JSONObject();
+                device.put("extend", extend);
+                //鍓嶈秴闄�
+                extend.put("frontOverrun", status1[4] ? 1 : 0);
+                //鍚庤秴闄�
+                extend.put("backOverrun", status1[5] ? 1 : 0);
+                //宸﹁秴闄�
+                extend.put("leftOverrun", status1[6] ? 1 : 0);
+                //鍙宠秴闄�
+                extend.put("rightOverrun", status1[7] ? 1 : 0);
+                //瓒呴珮
+                extend.put("overHeight", status2[0] ? 1 : 0);
+                //瓒呴噸
+                extend.put("overWeight", status2[1] ? 1 : 0);
+                //PLC宸插畬鎴愪换鍔″彿
+                extend.put("plcTaskNoComplete", (int) siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 10));
 
                 resultData.put("deviceStatus", device);
             }
 
             //绔欑偣涓暟
-            int staCount = 4;
-            //璇诲彇鎵樼洏鏁版嵁
-            List<Integer> trayList = new ArrayList<>();
-            OperateResultExOne<byte[]> readResult2 = siemensS7Net.Read("DB102.0", (short) (staCount * 2));
+            List<Integer> staList = new ArrayList<>();
+            staList.add(101);
+            staList.add(102);
+            staList.add(103);
+            staList.add(1001);
+            staList.add(1002);
+            staList.add(1003);
+
+            List<JSONObject> stationList = new ArrayList<>();
+            OperateResultExOne<byte[]> readResult2 = siemensS7Net.Read("DB82.14", (short) 156);
             if(readResult2.IsSuccess) {
-                for (int i = 0; i < staCount; i++) {
-                    short val = siemensS7Net.getByteTransform().TransInt16(readResult2.Content, i * 2);
-                    trayList.add((int) val);
+                int i = 0;
+                for (Integer siteId : staList) {
+                    //璇诲彇4.0-4.7鏁版嵁
+                    boolean[] status1 = siemensS7Net.getByteTransform().TransBool(readResult2.Content, i * 26, 1);
+                    //璇诲彇5.0-5.7鏁版嵁
+                    boolean[] status2 = siemensS7Net.getByteTransform().TransBool(readResult2.Content, i * 26 + 1, 1);
+                    String barcode = siemensS7Net.getByteTransform().TransString(readResult2.Content, i * 26 + 10, 12, "UTF-8");
+
+                    JSONObject station = new JSONObject();
+                    station.put("siteId", siteId);
+                    station.put("model", status1[0] ? 1 : 0);
+                    station.put("busy", status1[1] ? 1 : 0);
+                    station.put("hasTray", status1[2] ? 1 : 0);
+                    station.put("inMode", status1[3] ? 1 : 0);
+                    station.put("outMode", status1[4] ? 1 : 0);
+                    station.put("allowShuttleTake", status2[5] ? 1 : 0);
+                    station.put("allowShuttlePut", status2[6] ? 1 : 0);
+                    station.put("deviceError", status2[7] ? 1 : 0);
+                    station.put("taskNo", (int) siemensS7Net.getByteTransform().TransInt16(readResult2.Content, i * 26 + 2));
+                    station.put("staNo", (int) siemensS7Net.getByteTransform().TransInt16(readResult2.Content, i * 28 + 2));
+                    station.put("barcode", barcode);
+                    stationList.add(station);
+                    i++;
                 }
             }
 
-            //璇诲彇灏忚溅鏁版嵁
-            OperateResultExOne<byte[]> readResult3 = siemensS7Net.Read("DB102.50", (short) (staCount * 2));
-            List<Integer> carList = new ArrayList<>();
-            if(readResult3.IsSuccess) {
-                for (int i = 0; i < staCount; i++) {
-                    short val = siemensS7Net.getByteTransform().TransInt16(readResult3.Content, i * 2);
-                    carList.add((int) val);
-                }
-            }
+            device.put("stationList", stationList);
 
-            device.put("trayList", trayList);
-            device.put("carList", carList);
+            resultData.put("commandResult1", readResult1.Content);
+            resultData.put("commandResult2", readResult2.Content);
 
             deviceMsgType = "status";
-        }
+        } else if (commandObj.getInteger("mode") == 10000) {
+            //鍐欏叆杈撻�佺嚎鏁版嵁
 
-        resultData.put("commandResult1", JSON.toJSONString(result));
-        resultData.put("commandResult2", JSON.toJSONString(result2));
+            Integer siteId = commandObj.getInteger("siteId");
+            Integer staNo = commandObj.getInteger("staNo");
+            Integer taskNo = commandObj.getInteger("taskNo");
+            String address = commandObj.getString("address");
+
+            short[] array = new short[2];
+            array[0] = staNo.shortValue();//鐩爣绔�
+            array[1] = taskNo.shortValue();//浠诲姟鍙�
+
+            resultData.put("commandData", array);
+
+            OperateResult result = siemensS7Net.Write(address, array);
+            if (result.IsSuccess) {
+                resultData.put("result", "success");
+            }
+        }
 
         if (deviceMsgType.equals("command")) {
             log.info("鏀跺埌Rcs Lift Command Data: {}", JSON.toJSONString(deviceCommandMsg));
@@ -257,7 +303,7 @@
         DeviceMsgModel deviceMsgModel = new DeviceMsgModel();
         deviceMsgModel.setDeviceId(deviceConfig.getDeviceNo());
         deviceMsgModel.setDeviceMsgType(deviceMsgType);
-        deviceMsgModel.setDeviceMsg(JSON.toJSONString(resultData));
+        deviceMsgModel.setDeviceMsg(resultData);
         deviceMsgModel.setDeviceOriginMsg(JSON.toJSONString(resultData));
         deviceMsgModel.setResultKey(deviceCommandMsg.getResultKey());
         deviceMsgUtils.sendDeviceMsg(SlaveType.Lift, deviceConfig.getDeviceNo(), deviceMsgModel);

--
Gitblit v1.9.1