From 9c4da646aaefcd8476eb7a23a889b6af6cffab4e Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期三, 09 十月 2024 10:45:06 +0800 Subject: [PATCH] # --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 58 insertions(+), 1 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 71b7906..54f1ab3 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 @@ -162,7 +162,7 @@ // return false; // } - shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread); + shuttleCommands = this.shuttleInOutLiftCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread); shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO; break; case SHUTTLE_MOVE_TO_LIFT://杩涙彁鍗囨満 @@ -450,5 +450,62 @@ return commands; } + public synchronized List<ShuttleCommand> shuttleInOutLiftCommand(String startLocNo, String endLocNo, Integer mapType, ShuttleAssignCommand assignCommand, ShuttleThread shuttleThread) { + NavigateNode startNode = NavigatePositionConvert.locNoToNode(startLocNo); + NavigateNode endNode = NavigatePositionConvert.locNoToNode(endLocNo); + List<NavigateNode> unlockPath = new ArrayList<>(); + unlockPath.add(startNode); + unlockPath.add(endNode); + + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); + + //鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹�/瑙i攣 + boolean lockResult = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(endLocNo), shuttleProtocol.getShuttleNo(), unlockPath, false);//鎵�浣跨敤鐨勮矾寰勮繘琛岃В閿� + if (!lockResult) { + News.error("{} dash {} can't find unlock path!", startLocNo, endLocNo); + return null;//瑙i攣澶辫触 + } + + + //鑾峰彇灏忚溅绉诲姩閫熷害 + Integer runSpeed = Optional.ofNullable(basShuttleService.getOne(new LambdaQueryWrapper<BasShuttle>().eq(BasShuttle::getDeviceId, assignCommand.getDeviceId())).getRunSpeed()).orElse(1000); + Long hostId = shuttleThread.getDevice().getHostId(); + List<NavigateNode> nodeList = NavigateUtils.calc(startLocNo, endLocNo, mapType, Utils.getShuttlePoints(Integer.parseInt(shuttleThread.getDevice().getDeviceNo()), Utils.getLev(startLocNo))); + if (nodeList == null) { + News.error("{} dash {} can't find navigate path!", startLocNo, endLocNo); + return null; + } + + List<NavigateNode> allNode = new ArrayList<>(); + for (NavigateNode node : nodeList) { + allNode.add(node.clone()); + } + + List<ShuttleCommand> commands = new ArrayList<>(); + //鑾峰彇鍒嗘璺緞 + ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(nodeList); + //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护 + for (ArrayList<NavigateNode> nodes : data) { + //寮�濮嬭矾寰� + NavigateNode startPath = nodes.get(0); + + //鐩爣璺緞 + NavigateNode endPath = nodes.get(nodes.size() - 1); + Integer allDistance = NavigateUtils.getCurrentPathAllDistance(nodes);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂� + //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮� + String startCodeNum = NavigatePositionConvert.xyToPosition(startPath.getX(), startPath.getY(), startPath.getZ(), hostId); + //閫氳繃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, nodes); + command.setNodes(nodes);//灏嗚璧拌妭鐐规坊鍔犲埌姣忎竴姝ュ懡浠や腑 + commands.add(command); + } + + assignCommand.setNodes(allNode);//褰撳墠浠诲姟鎵�鍗犵敤鐨勮妭鐐筶ist + + return commands; + } + } -- Gitblit v1.9.1