From 53a71007458bdded764dc52a39d596f8c4ca28db Mon Sep 17 00:00:00 2001
From: DELL <DELL@qq.com>
Date: 星期四, 18 九月 2025 15:42:41 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/fake/FakeNyLiftThread.java | 44 +++++++---
src/main/java/com/zy/core/thread/impl/NyLiftThread.java | 142 ++++++++++++++++++++++++++--------
2 files changed, 136 insertions(+), 50 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/fake/FakeNyLiftThread.java b/src/main/java/com/zy/core/thread/fake/FakeNyLiftThread.java
index 5a910f6..d7543ba 100644
--- a/src/main/java/com/zy/core/thread/fake/FakeNyLiftThread.java
+++ b/src/main/java/com/zy/core/thread/fake/FakeNyLiftThread.java
@@ -1,6 +1,7 @@
package com.zy.core.thread.fake;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.zy.common.Cools;
import com.zy.common.SpringUtils;
@@ -28,7 +29,7 @@
public class FakeNyLiftThread implements FakeThread {
private RedisUtil redisUtil;
- private JSONObject fakeStatusDemo = JSONObject.parseObject("{\"model\":2,\"plcTaskNo\":0,\"lev\":1,\"deviceStatus\":0,\"taskMode\":0,\"pick\":0,\"put\":0,\"iOMode\":0,\"errorCode\":0,\"hasTray\":0,\"hasCar\":0,\"trayList\":[0,0,0,0],\"carList\":[0,0,0,0],\"extend\":{\"frontOverrun\":false,\"backOverrun\":false,\"leftOverrun\":false,\"rightOverrun\":false,\"overHeight\":false,\"overWeight\":false}}");
+ private JSONObject fakeStatusDemo = JSONObject.parseObject("{\"model\":2,\"plcTaskNo\":0,\"lev\":1,\"deviceStatus\":0,\"taskMode\":0,\"pick\":0,\"put\":0,\"iOMode\":0,\"errorCode\":0,\"hasTray\":0,\"hasCar\":0,\"stationList\":[{\"siteId\":101,\"model\":1,\"busy\":0,\"hasTray\":0,\"deviceError\":0,\"taskNo\":0,\"staNo\":0,\"allowShuttleTake\":0,\"allowShuttlePut\":0,\"barcode\":\"\"},{\"siteId\":102,\"model\":1,\"busy\":0,\"hasTray\":0,\"deviceError\":0,\"taskNo\":0,\"staNo\":0,\"allowShuttleTake\":0,\"allowShuttlePut\":0,\"barcode\":\"\"},{\"siteId\":103,\"model\":1,\"busy\":0,\"hasTray\":0,\"deviceError\":0,\"taskNo\":0,\"staNo\":0,\"allowShuttleTake\":0,\"allowShuttlePut\":0,\"barcode\":\"\"},{\"siteId\":1001,\"model\":1,\"busy\":0,\"hasTray\":0,\"deviceError\":0,\"taskNo\":0,\"staNo\":0,\"allowShuttleTake\":0,\"allowShuttlePut\":0,\"barcode\":\"\"},{\"siteId\":1002,\"model\":1,\"busy\":0,\"hasTray\":0,\"deviceError\":0,\"taskNo\":0,\"staNo\":0,\"allowShuttleTake\":0,\"allowShuttlePut\":0,\"barcode\":\"\"},{\"siteId\":1003,\"model\":1,\"busy\":0,\"hasTray\":0,\"deviceError\":0,\"taskNo\":0,\"staNo\":0,\"allowShuttleTake\":0,\"allowShuttlePut\":0,\"barcode\":\"\"}],\"extend\":{\"frontOverrun\":false,\"backOverrun\":false,\"leftOverrun\":false,\"rightOverrun\":false,\"overHeight\":false,\"overWeight\":false}}");
private ConcurrentHashMap<String, Thread> fakeThreadMap = new ConcurrentHashMap();
private ConcurrentHashMap<String, JSONObject> fakeStatusMap = new ConcurrentHashMap();
private ConcurrentHashMap<String, JSONObject> fakeCommandMap = new ConcurrentHashMap();
@@ -244,6 +245,27 @@
//鍒囨崲鍑哄簱妯″紡
fakeStatus.put("iOMode", 2);//鍑哄叆搴撴ā寮�
fakeStatusMap.put(key, fakeStatus);
+ } else if (commandType == 10000) {
+ //鍐欏叆杈撻�佺嚎鏁版嵁
+ Integer siteId = commandBody.getInteger("siteId");
+ Integer staNo = commandBody.getInteger("staNo");
+ Integer taskNo = commandBody.getInteger("taskNo");
+ String address = commandBody.getString("address");
+
+ short[] array = new short[2];
+ array[0] = staNo.shortValue();//鐩爣绔�
+ array[1] = taskNo.shortValue();//浠诲姟鍙�
+
+ JSONArray stationList = fakeStatus.getJSONArray("stationList");
+ for (int i = 0; i < stationList.size(); i++) {
+ JSONObject staObj = stationList.getJSONObject(i);
+ if (staObj.getInteger("siteId").equals(siteId)) {
+ staObj.put("taskNo", taskNo);
+ staObj.put("staNo", staNo);
+ }
+ }
+
+ fakeStatusMap.put(key, fakeStatus);
}
}catch (Exception e){
@@ -333,6 +355,10 @@
//璇诲彇鐘舵��
response = genereateFakeStatusResponse(fakeStatus);
deviceMsgType = "status";
+ } else if (mode == 10000) {
+ //鍐欏叆杈撻�佺嚎鏁版嵁
+ fakeCommandMap.put(String.valueOf(SlaveType.Lift) + device.getDeviceNo(), fakeCommand);
+ response = genereateFakeCommandResponse();
}
fakeStatusMap.put(String.valueOf(SlaveType.Lift) + device.getDeviceNo(), fakeStatus);
@@ -368,20 +394,8 @@
device.put("hasCar", fakeStatus.getInteger("hasCar"));
device.put("lev", fakeStatus.getInteger("lev"));
- Object trayListObj = fakeStatus.get("trayList");
- List<Integer> trayList = new ArrayList<>();
- if (trayListObj != null) {
- trayList = JSON.parseArray(JSON.toJSONString(trayListObj), Integer.class);
- }
-
- Object carListObj = fakeStatus.get("carList");
- List<Integer> carList = new ArrayList<>();
- if (carListObj != null) {
- carList = JSON.parseArray(JSON.toJSONString(carListObj), Integer.class);
- }
-
- device.put("trayList", trayList);
- device.put("carList", carList);
+ JSONArray stationList = fakeStatus.getJSONArray("stationList");
+ device.put("stationList", stationList);
JSONObject extend = fakeStatus.getJSONObject("extend");
device.put("frontOverrun", extend.getBoolean("frontOverrun"));
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..9221ceb 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")
@@ -130,6 +127,9 @@
resultData.put("result", "success");
}
}
+
+ resultData.put("commandResult1", JSON.toJSONString(result));
+ resultData.put("commandResult2", JSON.toJSONString(result2));
} else if (commandObj.getInteger("mode") == 4) {
//灏忚溅鎹㈠眰
short[] array = new short[4];
@@ -146,6 +146,9 @@
resultData.put("result", "success");
}
}
+
+ resultData.put("commandResult1", JSON.toJSONString(result));
+ resultData.put("commandResult2", JSON.toJSONString(result2));
} else if (commandObj.getInteger("mode") == 5) {
//鎻愬崌鏈虹Щ鍔�
short[] array = new short[4];
@@ -162,6 +165,9 @@
resultData.put("result", "success");
}
}
+
+ resultData.put("commandResult1", JSON.toJSONString(result));
+ resultData.put("commandResult2", JSON.toJSONString(result2));
} else if (commandObj.getInteger("mode") == 9996) {
//澶嶄綅
short[] array = new short[1];
@@ -172,6 +178,9 @@
if (result.IsSuccess) {
resultData.put("result", "success");
}
+
+ resultData.put("commandResult1", JSON.toJSONString(result));
+ resultData.put("commandResult2", JSON.toJSONString(result2));
} else if (commandObj.getInteger("mode") == 9997) {
//鍒囨崲鍏ュ簱妯″紡
short[] array = new short[1];
@@ -182,6 +191,9 @@
if (result.IsSuccess) {
resultData.put("result", "success");
}
+
+ resultData.put("commandResult1", JSON.toJSONString(result));
+ resultData.put("commandResult2", JSON.toJSONString(result2));
} else if (commandObj.getInteger("mode") == 9998) {
//鍒囨崲鍑哄簱妯″紡
short[] array = new short[1];
@@ -192,64 +204,124 @@
if (result.IsSuccess) {
resultData.put("result", "success");
}
+
+ resultData.put("commandResult1", JSON.toJSONString(result));
+ resultData.put("commandResult2", JSON.toJSONString(result2));
} else if (commandObj.getInteger("mode") == 9999) {
//璇诲彇鐘舵��
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("wrkNo", (int) siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 6));
//璁惧鐘舵��
- device.put("deviceStatus", (int) siemensS7Net.getByteTransform().TransInt16(readResult1.Content, 4));
+ device.put("deviceStatus", status1[0] ? 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);
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("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);
}
}
- //璇诲彇灏忚溅鏁版嵁
- 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", JSON.toJSONString(readResult1.Content));
+ resultData.put("commandResult2", JSON.toJSONString(readResult2.Content));
deviceMsgType = "status";
- }
+ } else if (commandObj.getInteger("mode") == 10000) {
+ //鍐欏叆杈撻�佺嚎鏁版嵁
- resultData.put("commandResult1", JSON.toJSONString(result));
- resultData.put("commandResult2", JSON.toJSONString(result2));
+ JSONObject commandBody = commandObj.getJSONObject("commandBody");
+ Integer siteId = commandBody.getInteger("siteId");
+ Integer staNo = commandBody.getInteger("staNo");
+ Integer taskNo = commandBody.getInteger("taskNo");
+ String address = commandBody.getString("address");
+
+ short[] array = new short[2];
+ array[0] = staNo.shortValue();//鐩爣绔�
+ array[1] = taskNo.shortValue();//浠诲姟鍙�
+
+ resultData.put("commandData", array);
+
+ result = siemensS7Net.Write("address", array);
+ if (result.IsSuccess) {
+ resultData.put("result", "success");
+ }
+
+ resultData.put("commandResult1", JSON.toJSONString(result));
+ }
if (deviceMsgType.equals("command")) {
log.info("鏀跺埌Rcs Lift Command Data: {}", JSON.toJSONString(deviceCommandMsg));
--
Gitblit v1.9.1