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 | 113 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 96 insertions(+), 17 deletions(-) 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 58ecf5e..aba6db6 100644 --- a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java +++ b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java @@ -52,6 +52,7 @@ private DeviceConfig deviceConfig; private RedisUtil redisUtil; private ShuttleProtocol shuttleProtocol; + private ShuttleAction shuttleAction = null; private static final boolean DEBUG = false;//璋冭瘯妯″紡 @@ -92,14 +93,11 @@ // Thread executeThread = new Thread(() -> { // while (true) { // try { -// ShuttleAction shuttleAction = null; -// try { -// shuttleAction = SpringUtils.getBean(ShuttleAction.class); -// }catch (Exception e){ -// continue; -// } -// // if (shuttleAction == null) { +// try { +// shuttleAction = SpringUtils.getBean(ShuttleAction.class); +// }catch (Exception e){ +// } // continue; // } // @@ -929,11 +927,36 @@ return false; } + List<NavigationMapType> restartCalcMapTypes = new ArrayList<>(mapTypes); + restartCalcMapTypes.add(NavigationMapType.SHUTTLE); + String currentLocNo = shuttleProtocol.getCurrentLocNo(); - List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(currentLocNo, locNo, mapTypes, assignCommand, this); + List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(currentLocNo, locNo, restartCalcMapTypes, assignCommand, this); if (commands == null) { return false; } + + if (assignCommand.getTaskMode() == ShuttleTaskModeType.TRANSPORT.id) { + List<ShuttleCommand> originCommands = assignCommand.getCommands(); + if (originCommands == null) { + return false; + } + + ShuttleCommand firstCommand = originCommands.get(0); + ShuttleCommand endCommand = originCommands.get(originCommands.size() - 1); + + if (firstCommand.getMode() != ShuttleCommandModeType.PALLET_LIFT.id) { + return false; + } + + if (endCommand.getMode() != ShuttleCommandModeType.PALLET_DOWN.id) { + return false; + } + + commands.add(0, firstCommand); + commands.add(endCommand); + } + assignCommand.setCommands(commands); //涓嬪彂浠诲姟 @@ -954,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); @@ -1192,16 +1271,16 @@ private JSONObject queryCommandStatus(String resultKey) { // 鑾峰彇鏈嶅姟鍣ㄥ搷搴� - // 灏濊瘯50娆� JSONObject result = null; - for (int i = 0; i < 50; i++) { + long startTime = System.currentTimeMillis(); + while (true) { + if((System.currentTimeMillis() - startTime) > 1000 * 10) { + break; + } + result = getRequestBody(resultKey); if (result == null) { - try { - Thread.sleep(500); - } catch (Exception e) { - e.printStackTrace(); - } + continue; }else { break; } -- Gitblit v1.9.1