From 57eaf07f7bbca383c85580c97bdc6d1a7f5691f3 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期五, 26 四月 2024 09:18:01 +0800
Subject: [PATCH] #
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyShuttleThread.java | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++-
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java | 2
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/MapNode.java | 6 +++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java | 2
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java | 2
5 files changed, 111 insertions(+), 6 deletions(-)
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
index 2669988..707680b 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
@@ -514,7 +514,7 @@
//閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
String distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ(), hostId);
//鑾峰彇绉诲姩鍛戒护
- ShuttleCommand command = shuttleThread.getMoveCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed);
+ ShuttleCommand command = shuttleThread.getMoveCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes);
command.setNodes(nodes);//灏嗚璧拌妭鐐规坊鍔犲埌姣忎竴姝ュ懡浠や腑
commands.add(command);
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/MapNode.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/MapNode.java
index 8e5c8cb..5b85e2a 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/MapNode.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/MapNode.java
@@ -37,6 +37,12 @@
private Integer bay;
+ //**************鍏煎鐗涚溂鏂板崗璁�**************//
+ private Integer xBase;//x鍩哄噯
+
+ private Integer yBase;//y鍩哄噯
+ //**************鍏煎鐗涚溂鏂板崗璁�**************//
+
@Override
public MapNode clone() {
try {
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java
index f00efde..8dafb49 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/ShuttleThread.java
@@ -50,7 +50,7 @@
//***************鑾峰彇鍛戒护*****************
- ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed);//鑾峰彇绉诲姩鍛戒护
+ ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes);//鑾峰彇绉诲姩鍛戒护
ShuttleCommand getLiftCommand(Integer taskNo, Boolean lift);//椤跺崌鍛戒护 true=>椤跺崌 false=>涓嬮檷
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyShuttleThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyShuttleThread.java
index 1775750..d746a16 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyShuttleThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/NyShuttleThread.java
@@ -11,13 +11,17 @@
import com.zy.asrs.wcs.common.ExecuteSupport;
import com.zy.asrs.wcs.core.entity.BasShuttle;
import com.zy.asrs.wcs.core.entity.Loc;
+import com.zy.asrs.wcs.core.model.MapNode;
import com.zy.asrs.wcs.core.model.NavigateNode;
import com.zy.asrs.wcs.core.model.command.ShuttleCommand;
import com.zy.asrs.wcs.core.model.command.ShuttleRedisCommand;
import com.zy.asrs.wcs.core.model.enums.MotionCtgType;
+import com.zy.asrs.wcs.core.model.enums.NavigationMapType;
import com.zy.asrs.wcs.core.model.enums.ShuttleCommandModeType;
+import com.zy.asrs.wcs.core.model.enums.ShuttleRunDirection;
import com.zy.asrs.wcs.core.service.BasShuttleService;
import com.zy.asrs.wcs.core.service.LocService;
+import com.zy.asrs.wcs.core.utils.NavigateMapData;
import com.zy.asrs.wcs.core.utils.NavigatePositionConvert;
import com.zy.asrs.wcs.core.utils.RedisUtil;
import com.zy.asrs.wcs.rcs.News;
@@ -79,6 +83,7 @@
this.connect();
}
readStatus();
+ listenInit();
} catch (Exception e) {
e.printStackTrace();
OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆戣鍙栧洓鍚戠┛姊溅鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), device.getId(), device.getIp(), device.getPort()));
@@ -205,6 +210,53 @@
} catch (IOException | InterruptedException exception) {
e.printStackTrace();
}
+ }
+ }
+
+ /**
+ * 鐩戝惉灏忚溅澶嶄綅鍒濆鍖栦俊鍙�
+ */
+ public void listenInit() {
+ try {
+ // 鑾峰彇杈撳叆娴�
+ BufferedReader reader = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
+
+ // 璇诲彇鏈嶅姟鍣ㄧ殑鍝嶅簲
+ StringBuffer sb = new StringBuffer();
+ String response = null;
+ char[] chars = new char[2048];//缂撳啿鍖�
+ do {
+ reader.read(chars);
+ String trim = new String(chars).trim();
+ sb.append(trim);
+ if (sb.lastIndexOf("\r\n") != -1) {
+ break;
+ }
+ } while (response != null);
+// System.out.println("Received response from server: " + sb);
+
+ JSONObject result = JSON.parseObject(sb.toString());//寰楀埌璇锋眰缁撴灉闆�
+ if (!result.get("msgType").equals("requestMsg")) {//涓嶆槸璇锋眰鍐呭
+ return;
+ }
+
+ JSONObject resultResponse = JSON.parseObject(result.get("request").toString());
+ JSONObject resultHeader = JSON.parseObject(resultResponse.get("header").toString());
+ JSONObject resultBody = JSON.parseObject(resultResponse.get("body").toString());
+ String requestType = resultBody.getString("requestType");
+ Integer requestId = resultHeader.getInteger("requestId");
+ if (requestType.equals("init")) {
+ //灏忚溅澶嶄綅璇锋眰
+ ShuttleCommand initCommand = getInitCommand(requestId);
+ //鍙戝嚭璇锋眰
+ NyShuttleHttpCommand httpCommand = JSON.parseObject(initCommand.getBody(), NyShuttleHttpCommand.class);
+ JSONObject requestResult = requestCommand(httpCommand);
+ if (requestResult == null) {
+ return;//璇锋眰澶辫触
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
}
}
@@ -476,16 +528,42 @@
}
@Override
- public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed) {
+ public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes) {
+ NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class);
NyShuttleHttpCommand httpStandard = getHttpStandard(Integer.parseInt(device.getDeviceNo()), taskNo);
NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest();
+
+ ArrayList<HashMap<String, Object>> path = new ArrayList<>();
HashMap<String, Object> body = new HashMap<>();
body.put("requestType", "move");//绉诲姩鍛戒护
body.put("taskId", getTaskId());//TaskID闇�瑕侀殢鏈�
- body.put("start", navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(startCodeNum, device.getHostId())));//璧风偣
- body.put("target", navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(distCodeNum, device.getHostId())));//缁堢偣
+// body.put("start", navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(startCodeNum, device.getHostId())));//璧风偣
+// body.put("target", navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(distCodeNum, device.getHostId())));//缁堢偣
+ body.put("path", path);
request.setBody(body);
+
+ NavigateNode startNode = nodes.get(0);
+ navigateMapData.setLev(startNode.getZ());
+ for (NavigateNode node : nodes) {
+ HashMap<String, Object> data = new HashMap<>();
+ String codeNum = NavigatePositionConvert.xyToPosition(node.getX(), node.getY(), node.getZ(), device.getHostId());
+ Map<String, Object> nyNode = navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(codeNum, device.getHostId()));
+ int xp = Integer.parseInt(String.valueOf(nyNode.get("x")));
+ int yp = Integer.parseInt(String.valueOf(nyNode.get("y")));
+ int z = Integer.parseInt(String.valueOf(nyNode.get("z")));
+
+ List<List<MapNode>> mapData = navigateMapData.getJsonData(NavigationMapType.NONE.id, null, null);
+ List<MapNode> mapNodes = mapData.get(node.getX());
+ MapNode mapNode = mapNodes.get(node.getY());
+
+ data.put("xp", xp);
+ data.put("yp", yp);
+ data.put("z", z);
+ data.put("x", mapNode.getXBase());
+ data.put("y", mapNode.getYBase());
+ }
+
httpStandard.setRequest(request);
@@ -543,6 +621,27 @@
return command;
}
+ //鑾峰彇灏忚溅澶嶄綅鍝嶅簲鍛戒护
+ public ShuttleCommand getInitCommand(Integer taskNo) {
+ NyShuttleHttpCommand httpStandard = getHttpStandard(Integer.parseInt(device.getDeviceNo()), taskNo);
+ NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest();
+
+ HashMap<String, Object> body = new HashMap<>();
+ body.put("responseType", "init");//澶嶄綅
+ body.put("location", new ArrayList<>());//鍒濆鍖栧潗鏍�
+ body.put("devicePoints", new ArrayList<>());//鎻愬崌鏈虹偣浣�
+ body.put("specialPoints", new ArrayList<>());//鐗规畩鏉$爜鍧愭爣
+ request.setBody(body);
+
+ httpStandard.setRequest(request);
+
+ ShuttleCommand command = new ShuttleCommand();
+ command.setShuttleNo(Integer.parseInt(this.device.getDeviceNo()));
+ command.setBody(JSON.toJSONString(httpStandard));
+ command.setMode(ShuttleCommandModeType.RESET.id);
+ return command;
+ }
+
@Override
public boolean connect() {
try {
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
index 8919826..e1df620 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
@@ -593,7 +593,7 @@
}
@Override
- public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed) {
+ public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes) {
HashMap<String, Object> body = new HashMap<>();
body.put("messageName", "runOrder");
body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
--
Gitblit v1.9.1