From 06bd2d6dbd31315b68e768d6b59139c753f8ff96 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期一, 27 三月 2023 09:28:38 +0800 Subject: [PATCH] 四向穿梭车线程代码逻辑 --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 97 ++++++++---------------------------------------- 1 files changed, 16 insertions(+), 81 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 538cced..b76cabc 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -22,10 +22,7 @@ import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.*; import com.zy.core.model.*; -import com.zy.core.model.command.CrnCommand; -import com.zy.core.model.command.LedCommand; -import com.zy.core.model.command.ShuttleCommand; -import com.zy.core.model.command.SteCommand; +import com.zy.core.model.command.*; import com.zy.core.model.protocol.CrnProtocol; import com.zy.core.model.protocol.ShuttleProtocol; import com.zy.core.model.protocol.StaProtocol; @@ -631,85 +628,23 @@ //鍒嗛厤鐩爣搴撲綅 shuttleProtocol.setLocNo(wrkSts.getLocNo()); - //璁$畻璺緞 - List<NavigateNode> calc = NavigateUtils.calc(wrkSts.getSourceLocNo(), wrkSts.getLocNo(), "in"); - //鑾峰彇鍒嗘璺緞 - ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(calc); - //灏嗘map瀛樺叆redis涓� - HashMap<String, Object> map = new HashMap<>(); - //鎵ц姝ュ簭 - map.put("step", 0); - //璺緞鏁版嵁 - map.put("path", data); - //宸ヤ綔鍙� - map.put("wrk_no", wrkSts.getWrkNo()); - //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set("wrk_no_" + wrkSts.getWrkNo().shortValue(), JSON.toJSONString(map)); + + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + //鍥涘悜绌挎杞﹀彿 + assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); + //浠诲姟鍙� + assignCommand.setTaskNo(wrkSts.getWrkNo().shortValue()); + //鍏ュ嚭搴撴ā寮� + assignCommand.setTaskMode(0); + //婧愬簱浣� + assignCommand.setSourceLocNo(wrkSts.getSourceLocNo()); + //鐩爣搴撲綅 + assignCommand.setDistLocNo(wrkSts.getLocNo()); + + //涓嬪彂浠诲姟 + MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); } - } else if (shuttleProtocol.getBusyStatusType() == ShuttleStatusType.IDLE && shuttleProtocol.getTaskNo() != 0) { - //鍥涘悜绌挎杞︾┖闂� 骞朵笖鏈変换鍔� - Object o = redisUtil.get("wrk_no_" + shuttleProtocol.getTaskNo()); - HashMap map = JSON.parseObject(o.toString(), HashMap.class); - //褰撳墠姝ュ簭 - int step = Integer.parseInt(map.get("step").toString()); - //褰撳墠璺緞鏁版嵁 - Object data = map.get("path"); - ArrayList pathList = JSON.parseObject(data.toString(), ArrayList.class); - //鍙栫涓�鏉¤矾寰� - Object o1 = pathList.get(step); - ArrayList path = JSON.parseObject(o1.toString(), ArrayList.class); - - int size = path.size(); - //寮�濮嬭矾寰� - JSONObject startPath = JSON.parseObject(path.get(0).toString()); - System.out.println(startPath); - //鐩爣璺緞 - JSONObject endPath = JSON.parseObject(path.get(size - 1).toString()); - System.out.println(endPath); - - //涓嬪彂鍛戒护 - ShuttleCommand command = new ShuttleCommand(); - command.setCommandWord((short) 1); - command.setStartCodeNum(NavigatePositionConvert.xyToPosition(startPath.getIntValue("x"), startPath.getIntValue("y"))); - command.setMiddleCodeNum((short) 0); - command.setDistCodeNum(NavigatePositionConvert.xyToPosition(endPath.getIntValue("x"), endPath.getIntValue("y"))); - command.setStartToDistDistance(1000); - command.setMiddleToDistDistance(1000); - command.setRunDirection(ShuttleRunDirection.get(startPath.get("direction").toString()).id); - command.setPalletLift((short) 1); - command.setForceMoveDistance(1000); - command.setChargeSwitch((short) 2); - command.setIOControl((short) 0); - command.setRunSpeed((short) 1000); - command.setRadarTmp((short) 0); - command.setCommandEnd((short) 1); - - if (!MessageQueue.offer(SlaveType.Shuttle, shuttleProtocol.getShuttleNo().intValue(), new Task(2, command))) { - News.error("鍥涘悜绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); - } else { - News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙戞垚鍔燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); - - //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚 - if (step < size) { - //鏇存柊redis鏁版嵁 - //姝ュ簭澧炲姞 - step++; - map.put("step", step); - //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set("wrk_no_" + map.get("wrk_no").toString(), JSON.toJSONString(map)); - }else { - //宸叉墽琛屽畬鎴� - //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘� - //鍒犻櫎redis - redisUtil.del("wrk_no_" + map.get("wrk_no").toString()); - - //銆傘�傘�� - //1銆佸懡浠や笅鏂归渶瑕佸垽鏂皬杞︾┖闂茬姸鎬� - //2銆� - } - - } } } -- Gitblit v1.9.1