From 2c1e3b7b10c0d4afbf09a9151e132f1ee85b9c6f Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期六, 02 八月 2025 11:15:25 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/action/ShuttleAction.java | 45 ++++++++++++++++++++++++++++++++++----------- 1 files changed, 34 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/zy/core/action/ShuttleAction.java b/src/main/java/com/zy/core/action/ShuttleAction.java index a0a88b1..55bba24 100644 --- a/src/main/java/com/zy/core/action/ShuttleAction.java +++ b/src/main/java/com/zy/core/action/ShuttleAction.java @@ -119,8 +119,10 @@ return false; } + News.info("execute check command {},{}", shuttleNo, taskNo); //妫�娴嬪懡浠� int checked = checkCommand(redisCommand, shuttleNo); + News.info("execute check command complete {},{}", shuttleNo, taskNo); if (checked == 0) { return false; } @@ -165,10 +167,20 @@ } List<NavigateNode> nodes = JSON.parseArray(JSON.toJSONString(command.getNodes()), NavigateNode.class); - //鐢宠绠″埗 - applyTrafficControl(commands, nodes, shuttleNo, taskNo); + + Object object = redisUtil.get(RedisKeyType.TRAFFIC_CONTROL_LOCK_APPLY.key + shuttleNo); + if (object == null) { + //鐢宠绠″埗 + News.info("execute apply control {},{}", shuttleNo, taskNo); + redisUtil.set(RedisKeyType.TRAFFIC_CONTROL_LOCK_APPLY.key + shuttleNo, "lock", 10); + applyTrafficControl(commands, nodes, shuttleNo, taskNo); + News.info("execute apply control complete {},{}", shuttleNo, taskNo); + } + + News.info("execute query control {},{}", shuttleNo, taskNo); //鏌ヨ绠″埗 boolean apply = queryTrafficControl(shuttleNo, taskNo); + News.info("execute query control complete {},{}", shuttleNo, taskNo); if(!apply){ return false;//鐢宠澶辫触 } @@ -191,8 +203,10 @@ } } + News.info("execute send command {},{}", shuttleNo, taskNo); // 涓嬪彂鍛戒护 CommandResponse response = write(command, shuttleNo); + News.info("execute send command complete {},{}", shuttleNo, taskNo); //淇濆瓨鍛戒护鏃ュ織 BasShuttleOpt basShuttleOpt = new BasShuttleOpt(); @@ -348,7 +362,8 @@ } //鐢宠鍙栨秷绠″埗 - trafficControlThread.cancelTrafficControl(shuttleNo, shuttleProtocol.getTaskNo()); + cancelTrafficControl(shuttleNo, shuttleProtocol.getTaskNo()); + //鍒犻櫎redis redisUtil.del(RedisKeyType.SHUTTLE_WORK_FLAG.key + redisCommand.getWrkNo()); return 0;//绂佹鍐嶄笅鍙戝懡浠� @@ -415,7 +430,9 @@ return false; } //涓婃姤浜ょ + News.info("execute check command report traffic {},{}", shuttleNo, shuttleProtocol.getTaskNo()); trafficControlThread.trafficReport(command.getNodesDeepCopy(), shuttleNo, shuttleProtocol.getTaskNo()); + News.info("execute check command report traffic complete {},{}", shuttleNo, shuttleProtocol.getTaskNo()); String currentLocNo = shuttleProtocol.getCurrentLocNo(); if (currentLocNo == null) { @@ -497,16 +514,18 @@ //鏌ヨ鏄惁鐢宠绠″埗鎴愬姛 public boolean queryTrafficControl(Integer shuttleNo, Integer taskNo) { - TrafficControlThread trafficControlThread = (TrafficControlThread) SlaveConnection.get(SlaveType.TrafficControl, 1); - if (trafficControlThread == null) { + Object object = redisUtil.get(RedisKeyType.TRAFFIC_CONTROL_SUCCESS_APPLY.key + shuttleNo + "_" + taskNo); + if (object == null) { return false; } + return true; + } - TrafficControlDataModel trafficControlDataModel = trafficControlThread.queryTrafficControl(shuttleNo, taskNo); - if (trafficControlDataModel == null) { - return false; - } - + public boolean cancelTrafficControl(Integer shuttleNo, Integer taskNo) { + TrafficControlDataModel model = new TrafficControlDataModel(); + model.setShuttleNo(shuttleNo); + model.setTaskNo(taskNo); + redisUtil.set(RedisKeyType.TRAFFIC_CONTROL_CANCEL_LIST.key + shuttleNo + "_" + taskNo, model); return true; } @@ -766,6 +785,10 @@ } catch (Exception e) { e.printStackTrace(); } + } + + public synchronized boolean clearPath(Integer shuttleNo) { + return navigateMapUtils.clearPath(shuttleNo); } // //璺戝簱绋嬪簭 @@ -1137,7 +1160,7 @@ // } // } - private synchronized CommandResponse write(ShuttleCommand command, Integer shuttleNo) { + private CommandResponse write(ShuttleCommand command, Integer shuttleNo) { CommandResponse response = new CommandResponse(false); if (null == command) { News.error("鍥涘悜绌挎杞﹀啓鍏ュ懡浠や负绌�"); -- Gitblit v1.9.1