From baed29d667be08051c36c31997117a1ba292d5bc Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期三, 10 五月 2023 16:51:01 +0800 Subject: [PATCH] redis实时地图 --- src/main/java/com/zy/core/thread/ShuttleThread.java | 53 ++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 36 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java index 59f53cf..2a0f24a 100644 --- a/src/main/java/com/zy/core/thread/ShuttleThread.java +++ b/src/main/java/com/zy/core/thread/ShuttleThread.java @@ -16,11 +16,9 @@ import com.zy.asrs.service.BasShuttleOptService; import com.zy.asrs.service.BasShuttleService; import com.zy.asrs.service.LocMastService; +import com.zy.asrs.utils.Utils; import com.zy.common.model.NavigateNode; -import com.zy.common.utils.CommonUtils; -import com.zy.common.utils.NavigatePositionConvert; -import com.zy.common.utils.NavigateUtils; -import com.zy.common.utils.RedisUtil; +import com.zy.common.utils.*; import com.zy.core.News; import com.zy.core.ThreadHandler; import com.zy.core.cache.MessageQueue; @@ -178,7 +176,7 @@ if (shuttleProtocol.getErrorCode() != 0 && shuttleProtocol.getProtocolStatusType() == ShuttleProtocolStatusType.WORKING) { //鍑虹幇閿欒 - reset(shuttleProtocol.getTaskNo()); + resetAndTryFix(shuttleProtocol.getTaskNo()); } if(shuttleProtocol.getProtocolStatusType() == ShuttleProtocolStatusType.FIXING @@ -200,7 +198,7 @@ //妫�娴嬫槸鍚︽湁鎻愬崌鏈洪攣瀹氭爣璁帮紝鏈夊垯妫�娴嬫彁鍗囨満鏄惁鍒颁綅锛屾槸鍚﹁兘璧颁笅涓�姝ュ懡浠� if (shuttleProtocol.getBusyStatusType() == ShuttleStatusType.IDLE && shuttleProtocol.getTaskNo() != 0) { - Object o = redisUtil.get("wrk_no_" + shuttleProtocol.getTaskNo()); + Object o = redisUtil.get("shuttle_wrk_no_" + shuttleProtocol.getTaskNo()); if (o != null) { ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); if (redisCommand.getLiftSecurityMk()) { @@ -394,9 +392,11 @@ //鍒嗛厤浠诲姟 private void assignWork(ShuttleAssignCommand assignCommand) { if (!assignCommand.getAuto()) { + List<NavigateNode> allNode = new ArrayList<>(); List<ShuttleCommand> commands = new ArrayList<>(); ShuttleCommand command = new ShuttleCommand(); LocMastService locMastService = SpringUtils.getBean(LocMastService.class); + NavigateMapData navigateMapData; switch (assignCommand.getTaskMode()) { case 1://鍏ュ簱 case 2://鍑哄簱 @@ -404,7 +404,12 @@ //璁$畻灏忚溅璧风偣鍒颁腑鐐规墍闇�鍛戒护 LocMast currentLocMast = locMastService.queryByQrCode(shuttleProtocol.getCurrentCode().toString()); List<NavigateNode> firstMastResult = NavigateUtils.calc(currentLocMast.getLocNo(), assignCommand.getSourceLocNo(), ShuttleTaskModeType.PAK_IN.id); + //鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� + navigateMapData = new NavigateMapData(Utils.getLev(currentLocMast.getLocNo())); + navigateMapData.writeNavigateNodeToRedisMap(firstMastResult, true);////鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� + if (firstMastResult != null) { + allNode.addAll(firstMastResult);//灏嗚妭鐐硅繘琛屼繚瀛� //鑾峰彇鍒嗘璺緞 ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(firstMastResult); //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护 @@ -466,7 +471,10 @@ //璁$畻涓偣鍒扮粓鐐硅矾寰� List<NavigateNode> secMastResult = NavigateUtils.calc(assignCommand.getSourceLocNo(), assignCommand.getLocNo(), ShuttleTaskModeType.PAK_IN.id); + navigateMapData.writeNavigateNodeToRedisMap(firstMastResult, true);////鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� + if (secMastResult != null) { + allNode.addAll(secMastResult);//灏嗚妭鐐硅繘琛屼繚瀛� //鑾峰彇鍒嗘璺緞 ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(secMastResult); //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护 @@ -590,7 +598,12 @@ case 14://绉诲姩鍒扮洰鏍囧簱浣� LocMast locMast = locMastService.queryByQrCode(shuttleProtocol.getCurrentCode().toString()); List<NavigateNode> result = NavigateUtils.calc(locMast.getLocNo(), assignCommand.getLocNo(), ShuttleTaskModeType.PAK_IN.id); + //鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� + navigateMapData = new NavigateMapData(Utils.getLev(locMast.getLocNo())); + navigateMapData.writeNavigateNodeToRedisMap(result, true);////鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� + if (result != null) { + allNode.addAll(result);//灏嗚妭鐐硅繘琛屼繚瀛� //鑾峰彇鍒嗘璺緞 ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(result); //灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护 @@ -626,6 +639,7 @@ default: } assignCommand.setCommands(commands); + assignCommand.setNodes(allNode);//褰撳墠浠诲姟鎵�鍗犵敤鐨勮妭鐐筶ist } ShuttleRedisCommand redisCommand = new ShuttleRedisCommand(); @@ -638,7 +652,7 @@ shuttleProtocol.setAssignCommand(assignCommand); shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WORKING); //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set("wrk_no_" + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand)); + redisUtil.set("shuttle_wrk_no_" + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand)); //鎵ц涓嬪彂浠诲姟 executeWork(assignCommand.getTaskNo()); } @@ -650,7 +664,7 @@ return false; } - Object o = redisUtil.get("wrk_no_" + wrkNo); + Object o = redisUtil.get("shuttle_wrk_no_" + wrkNo); if (o == null) { return false; } @@ -683,7 +697,7 @@ commandStep--; redisCommand.setCommandStep(commandStep); //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set("wrk_no_" + wrkNo, JSON.toJSONString(redisCommand)); + redisUtil.set("shuttle_wrk_no_" + wrkNo, JSON.toJSONString(redisCommand)); shuttleProtocol.setPakMk(true); return true; }else { @@ -731,7 +745,7 @@ errorCommands.remove(0); redisCommand.setErrorCommands(errorCommands); //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set("wrk_no_" + wrkNo, JSON.toJSONString(redisCommand)); + redisUtil.set("shuttle_wrk_no_" + wrkNo, JSON.toJSONString(redisCommand)); return true; } } @@ -769,7 +783,7 @@ commandStep++; redisCommand.setCommandStep(commandStep); //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set("wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); + redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); }else { //宸叉墽琛屽畬鎴� //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘� @@ -799,8 +813,13 @@ } } + String locNo = shuttleProtocol.getLocNo() == null ? shuttleProtocol.getSourceLocNo() : shuttleProtocol.getLocNo(); + //瑙i櫎閿佸畾鐨勫簱浣嶈矾寰� + NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(locNo)); + navigateMapData.writeNavigateNodeToRedisMap(redisCommand.getAssignCommand().getNodes(), false); + //鍒犻櫎redis - redisUtil.del("wrk_no_" + redisCommand.getWrkNo()); + redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo()); if (!assignCommand.getAuto()) { //鎵嬪姩妯″紡涓嶆姏鍑虹瓑寰呯姸鎬侊紝鐩存帴澶嶄綅 @@ -836,7 +855,7 @@ return false; } - Object o = redisUtil.get("wrk_no_" + wrkNo); + Object o = redisUtil.get("shuttle_wrk_no_" + wrkNo); if (o == null) { return false; } @@ -925,7 +944,7 @@ liftProtocol.setSecurityMk(true);//鏍囪缃负true锛岄槻姝㈠叾浠栦换鍔″崰鐢ㄥ綋鍓嶆彁鍗囨満 redisCommand.setLiftSecurityMk(true);//鏍囪缃负true锛岄槻姝㈠叾浠栦换鍔″崰鐢ㄥ綋鍓嶆彁鍗囨満 //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set("wrk_no_" + wrkNo, JSON.toJSONString(redisCommand)); + redisUtil.set("shuttle_wrk_no_" + wrkNo, JSON.toJSONString(redisCommand)); //鍛戒护list ArrayList<LiftCommand> liftCommands = new ArrayList<>(); @@ -950,13 +969,13 @@ /** * 澶嶄綅骞跺皾璇曚慨澶嶉敊璇� */ - private boolean reset(Short wrkNo) { + private boolean resetAndTryFix(Short wrkNo) { //璇诲彇redis鏁版嵁 if (wrkNo == null) { return false; } - Object o = redisUtil.get("wrk_no_" + wrkNo); + Object o = redisUtil.get("shuttle_wrk_no_" + wrkNo); if (o == null) { return false; } @@ -1027,7 +1046,7 @@ redisCommand.setErrorCommands(list); //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set("wrk_no_" + wrkNo, JSON.toJSONString(redisCommand)); + redisUtil.set("shuttle_wrk_no_" + wrkNo, JSON.toJSONString(redisCommand)); shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.FIXING); return true; } -- Gitblit v1.9.1