From 5bd42df0ef1bcdbc3911381274b4f3f267d0203b Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 13 八月 2025 09:45:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/shuttle_rcs_dev' into shuttle_rcs_dev
---
src/main/java/com/zy/core/thread/impl/NyShuttleThread.java | 60 +++++++++++++++++++++++++++++-
src/main/java/com/zy/common/utils/ShuttleOperaUtils.java | 23 +++++++++--
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 2
src/main/java/com/zy/core/thread/ShuttleThread.java | 2 +
4 files changed, 80 insertions(+), 7 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 09cefc6..2d0c45f 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1653,7 +1653,7 @@
assignCommand.setAuto(true);//鑷姩妯″紡
//鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护
- List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getCurrentLocNo(), NavigationMapType.getNormalWithDevice(), assignCommand, shuttleThread);
+ List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getCurrentLocNo(), NavigationMapType.getNormalWithDevice(), assignCommand, shuttleThread, "inLift");
if (commands == null) {
News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
return false;//璺緞瑙i攣澶辫触
diff --git a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
index 0b3fd1f..db9ab33 100644
--- a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
+++ b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
@@ -51,10 +51,14 @@
private DeviceConfigService deviceConfigService;
public synchronized List<ShuttleCommand> getStartToTargetCommands(String startLocNo, String endLocNo, List<NavigationMapType> mapTypes, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread) {
- return getStartToTargetCommands(startLocNo, endLocNo, mapTypes, null, assignCommand, shuttleThread);
+ return getStartToTargetCommands(startLocNo, endLocNo, mapTypes, null, assignCommand, shuttleThread, "move");
}
- public synchronized List<ShuttleCommand> getStartToTargetCommands(String startLocNo, String endLocNo, List<NavigationMapType> mapTypes, List<int[]> whites, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread) {
+ public synchronized List<ShuttleCommand> getStartToTargetCommands(String startLocNo, String endLocNo, List<NavigationMapType> mapTypes, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread, String moveType) {
+ return getStartToTargetCommands(startLocNo, endLocNo, mapTypes, null, assignCommand, shuttleThread, moveType);
+ }
+
+ public synchronized List<ShuttleCommand> getStartToTargetCommands(String startLocNo, String endLocNo, List<NavigationMapType> mapTypes, List<int[]> whites, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread, String moveType) {
ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
if (shuttleProtocol == null) {
return null;
@@ -77,7 +81,7 @@
if (whites != null) {
boolean flag = false;
for (int[] white : whites) {
- if(white[0] == node.getX() && white[1] == node.getY()) {
+ if (white[0] == node.getX() && white[1] == node.getY()) {
flag = true;
break;
}
@@ -97,7 +101,9 @@
long endTime = System.currentTimeMillis();
News.info("getSection path time:{}", (endTime - startTime));
//灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护
- for (List<NavigateNode> nodes : data) {
+ for (int i = 0; i < data.size(); i++) {
+ List<NavigateNode> nodes = data.get(i);
+
//寮�濮嬭矾寰�
NavigateNode startPath = nodes.get(0);
@@ -110,6 +116,15 @@
String distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ());
//鑾峰彇绉诲姩鍛戒护
ShuttleCommand command = shuttleThread.getMoveCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes);
+
+ if (i + 1 == data.size()) {
+ if (moveType.equals("inLift")) {
+ command = shuttleThread.getMoveLiftCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes, true);
+ }else if (moveType.equals("outLift")) {
+ command = shuttleThread.getMoveLiftCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes, false);
+ }
+ }
+
command.setNodes(nodes);//灏嗚璧拌妭鐐规坊鍔犲埌姣忎竴姝ュ懡浠や腑
commands.add(command);
}
diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java
index 060e27d..228afb4 100644
--- a/src/main/java/com/zy/core/thread/ShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/ShuttleThread.java
@@ -82,6 +82,8 @@
ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes);//鑾峰彇绉诲姩鍛戒护
+ ShuttleCommand getMoveLiftCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes, Boolean moveIn);//鑾峰彇绉诲姩鍛戒护
+
ShuttleCommand getLiftCommand(Integer taskNo, Boolean lift);//椤跺崌鍛戒护 true=>椤跺崌 false=>涓嬮檷
ShuttleCommand getChargeCommand(Integer taskNo, Boolean charge);//鍏呯數寮�鍏冲懡浠� true=>寮� false=>鍏�
diff --git a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
index e311708..aba6db6 100644
--- a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java
@@ -977,8 +977,64 @@
HashMap<String, Object> body = new HashMap<>();
body.put("requestType", "move");//绉诲姩鍛戒护
body.put("taskId", taskId);//TaskID闇�瑕侀殢鏈�
-// 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);
+ for (NavigateNode node : nodes) {
+ HashMap<String, Object> data = new HashMap<>();
+ String codeNum = NavigatePositionConvert.xyToPosition(node.getX(), node.getY(), node.getZ());
+ Map<String, Object> nyNode = navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(codeNum));
+ int xp = Integer.parseInt(String.valueOf(nyNode.get("y")));
+ int yp = Integer.parseInt(String.valueOf(nyNode.get("x")));
+ int z = Integer.parseInt(String.valueOf(nyNode.get("z")));
+
+ List<List<MapNode>> mapData = navigateMapData.getJsonData(startNode.getZ(), NavigationMapType.getMapTypes(NavigationMapType.NONE), 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());
+ path.add(data);
+ }
+
+ httpStandard.setRequest(request);
+
+ LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+ .eq("qr_code_value", distCodeNum));
+ if (locMast == null) {
+ throw new CoolException("搴撲綅淇℃伅涓嶅瓨鍦�");
+ }
+
+ ShuttleCommand command = new ShuttleCommand();
+ command.setShuttleNo(deviceConfig.getDeviceNo());
+ command.setBody(JSON.toJSONString(httpStandard));
+ command.setMode(ShuttleCommandModeType.MOVE.id);
+ command.setTargetLocNo(locMast.getLocNo());
+ command.setTaskNo(taskId);
+ return command;
+ }
+
+ @Override
+ public ShuttleCommand getMoveLiftCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes, Boolean moveIn) {
+ NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class);
+ NyShuttleHttpCommand httpStandard = getHttpStandard(deviceConfig.getDeviceNo(), taskNo);
+ NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest();
+
+ ArrayList<HashMap<String, Object>> path = new ArrayList<>();
+
+ Integer taskId = getTaskId();
+ HashMap<String, Object> body = new HashMap<>();
+ if (moveIn) {
+ body.put("requestType", "intoLift");//杩涙彁鍗囨満
+ }else {
+ body.put("requestType", "outLift");//鍑烘彁鍗囨満
+ }
+ body.put("taskId", taskId);//TaskID闇�瑕侀殢鏈�
body.put("path", path);
request.setBody(body);
--
Gitblit v1.9.1