From 8d6708ad6b4353fd1da4d3d950fa61514ed41add Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期四, 11 五月 2023 09:07:22 +0800 Subject: [PATCH] 四向穿梭车命令封装 --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 81 +++++++++++++++++++++++++++++++++------- 1 files changed, 66 insertions(+), 15 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 21c409f..ca20843 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -84,6 +84,8 @@ @Autowired private WrkChargeMapper wrkChargeMapper; @Autowired + private BasMapService basMapService; + @Autowired private ErpService erpService; @Autowired private OrderMapper orderMapper; @@ -544,10 +546,35 @@ } /** - * 鑾峰彇/鏇存柊瀹炴椂鍦板浘 + * 鍒濆鍖栧疄鏃跺湴鍥� */ - public synchronized void refreshMap() { + public synchronized void initRealtimeBasMap() { + for (int i = 1; i <= 4; i++) {//鎬诲叡鍥涘眰妤� + Object data = redisUtil.get("realtimeBasMap_" + i); + if (data == null) {//redis鍦板浘鏁版嵁涓虹┖锛屼粠鏁版嵁搴撲腑鑾峰彇 + BasMap basMap = basMapService.selectLatestMap(i); + if (basMap == null) { + //鏁版嵁搴撲腑涔熶笉瀛樺湪鍦板浘鏁版嵁锛屼粠鍦板浘鏂囦欢涓幏鍙� + //杞藉叆鍦板浘 + NavigateMapData mapData = new NavigateMapData(i); + List<List<MapNode>> lists = mapData.getJsonData(-1);//鑾峰彇瀹屾暣鍦板浘(鍖呮嫭鍏ュ簱鍑哄簱) + //瀛樺叆鏁版嵁搴� + basMap = new BasMap(); + basMap.setData(JSON.toJSONString(lists)); + basMap.setCreateTime(new Date()); + basMap.setUpdateTime(new Date()); + basMap.setLev(i); + + if (!basMapService.insert(basMap)) { + log.info("鍦板浘鏁版嵁瀛樺偍澶辫触"); + } + } + + //灏嗘暟鎹簱鍦板浘鏁版嵁瀛樺叆redis + redisUtil.set("realtimeBasMap_" + i, JSON.toJSONString(basMap)); + } + } } /** @@ -681,7 +708,7 @@ if (wrkMast.getWrkSts() == 8 || Boolean.parseBoolean(searchIdleShuttle.get("sameLay").toString())) { //鍚屼竴灞傜洿鎺ュ彇璐ф棤闇�缁忚繃鎻愬崌鏈� //鐩存帴璁$畻杞﹀埌鎻愬崌鏈哄彇璐у啀鍒板簱浣嶈矾寰勬寚浠� - List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftLocNo, locNo); + List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftLocNo, locNo, assignCommand); if (wrkMast.getWrkSts() == 8) { //姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝闇�瑕佸涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛 BasDevp basDevp = basDevpService.selectById(109);//鑾峰彇鎻愬崌鏈轰俊鎭� @@ -705,7 +732,7 @@ //涓嶅悓灞傦紝灏嗙洰鏍囧簱浣嶅垎閰嶆垚鎻愬崌鏈哄簱浣嶅彿 //灏忚溅绉诲姩鍒版彁鍗囨満鍙o紝璁$畻璺緞 - List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftLocNo, ShuttleTaskModeType.PAK_IN.id); + List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftLocNo, ShuttleTaskModeType.PAK_IN.id, assignCommand); //鍒嗛厤鐩爣搴撲綅 shuttleProtocol.setLocNo(liftLocNo); //鐩爣搴撲綅 @@ -729,13 +756,16 @@ } //鑾峰彇璧风偣-缁堢偣鎸囦护銆俶apType锛�1=銆嬫棤璐у湴鍥撅紝2=銆嬫湁璐у湴鍥� - public synchronized List<ShuttleCommand> shuttleAssignCommand(String startLocNo, String locNO,Integer mapType) { + public synchronized List<ShuttleCommand> shuttleAssignCommand(String startLocNo, String locNo, Integer mapType, ShuttleAssignCommand assignCommand) { //璁$畻灏忚溅璧风偣鍒颁腑鐐规墍闇�鍛戒护 - List<NavigateNode> calc = NavigateUtils.calc(startLocNo, locNO, mapType); + List<NavigateNode> calc = NavigateUtils.calc(startLocNo, locNo, mapType); List<ShuttleCommand> commands = new ArrayList<>(); if (calc == null) { return null; } + + List<NavigateNode> allNode = new ArrayList<>(); + allNode.addAll(calc); //鑾峰彇鍒嗘璺緞 ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(calc); @@ -771,17 +801,26 @@ command.setCommandEnd((short) 1); commands.add(command); } + + assignCommand.setNodes(allNode);//褰撳墠浠诲姟鎵�鍗犵敤鐨勮妭鐐筶ist + //鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� + NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(startLocNo)); + navigateMapData.writeNavigateNodeToRedisMap(allNode, true);////鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� + return commands; } //鑾峰彇璧风偣-涓偣-缁堢偣鎸囦护 - public synchronized List<ShuttleCommand> shuttleAssignCommand(String startLocNo, String middleLocNo, String locNO) { + public synchronized List<ShuttleCommand> shuttleAssignCommand(String startLocNo, String middleLocNo, String locNo, ShuttleAssignCommand assignCommand) { //璁$畻灏忚溅璧风偣鍒颁腑鐐规墍闇�鍛戒护 List<NavigateNode> calc = NavigateUtils.calc(startLocNo, middleLocNo, 1);//灏忚溅鏃犺揣锛岃蛋鍏ュ簱鍦板浘 List<ShuttleCommand> commands = new ArrayList<>(); if (calc == null) { return null; } + + List<NavigateNode> allNode = new ArrayList<>(); + allNode.addAll(calc); //鑾峰彇鍒嗘璺緞 ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(calc); @@ -826,10 +865,12 @@ commands.add(command); //璁$畻灏忚溅涓偣鍒扮粓鐐规墍闇�鍛戒护 - List<NavigateNode> calc2 = NavigateUtils.calc(middleLocNo, locNO, 2);//灏忚溅鏈夎揣锛岃蛋鍑哄簱鍦板浘(鍑哄簱鍦板浘鏈変笓鐢ㄨ揣閬�) + List<NavigateNode> calc2 = NavigateUtils.calc(middleLocNo, locNo, 2);//灏忚溅鏈夎揣锛岃蛋鍑哄簱鍦板浘(鍑哄簱鍦板浘鏈変笓鐢ㄨ揣閬�) if (calc2 == null) { return null; } + + allNode.addAll(calc2); //鑾峰彇鍒嗘璺緞 ArrayList<ArrayList<NavigateNode>> data2 = NavigateUtils.getSectionPath(calc2); @@ -871,6 +912,11 @@ command.setPalletLift((short) 2); command.setCommandEnd((short) 1); commands.add(command); + + assignCommand.setNodes(allNode);//褰撳墠浠诲姟鎵�鍗犵敤鐨勮妭鐐筶ist + //鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� + NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(startLocNo)); + navigateMapData.writeNavigateNodeToRedisMap(allNode, true);////鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� return commands; } @@ -955,7 +1001,7 @@ if (Boolean.parseBoolean(searchIdleShuttle.get("sameLay").toString())) { //鍚屼竴灞�(灏嗗皬杞︾Щ鍔ㄥ埌璐х墿浣嶇疆) - List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, wrkMast.getSourceLocNo(), liftLocNo); + List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, wrkMast.getSourceLocNo(), liftLocNo, assignCommand); //鍒嗛厤鐩爣搴撲綅 shuttleProtocol.setLocNo(wrkMast.getSourceLocNo()); //鐩爣搴撲綅 @@ -966,7 +1012,7 @@ //涓嶅悓灞傦紝灏嗙洰鏍囧簱浣嶅垎閰嶆垚鎻愬崌鏈哄簱浣嶅彿(灏嗗皬杞︾Щ鍔ㄥ埌鎻愬崌鏈轰綅缃�) //灏忚溅鍒版彁鍗囨満鍙f寚浠� - List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftLocNo, ShuttleTaskModeType.PAK_IN.id); + List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftLocNo, ShuttleTaskModeType.PAK_IN.id, assignCommand); shuttleProtocol.setLocNo(liftLocNo); //鐩爣搴撲綅 assignCommand.setLocNo(liftLocNo); @@ -974,7 +1020,7 @@ wrkMast.setWrkSts(22L);//灏忚溅杩佺Щ鐘舵�� } } else if (wrkMast.getWrkSts() == 25) { - List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, wrkMast.getSourceLocNo(), liftLocNo); + List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, wrkMast.getSourceLocNo(), liftLocNo, assignCommand); //姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝闇�瑕佸涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛 BasDevp basDevp = basDevpService.selectById(109);//鑾峰彇鎻愬崌鏈轰俊鎭� ShuttleCommand moveCommand = new ShuttleCommand(); @@ -2211,11 +2257,14 @@ if (currentLev == chargeLocNoLev) { //鍚屼竴灞傛棤闇�缁忚繃鎻愬崌鏈� //鐩存帴璁$畻杞﹀埌鍏呯數搴撲綅 + + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + //鑾峰彇灏忚溅鍒板厖鐢靛簱浣嶈矾寰勬寚浠� - List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, chargeLocNo, ShuttleTaskModeType.PAK_IN.id); + List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, chargeLocNo, ShuttleTaskModeType.PAK_IN.id, assignCommand); //杩涜鍏呯數涓� shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING); - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); assignCommand.setTaskMode((short) 9);//鍏呯數 assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); @@ -2240,12 +2289,14 @@ }else { //涓嶅悓灞傦紝灏嗙洰鏍囧簱浣嶅垎閰嶆垚鎻愬崌鏈哄簱浣嶅彿 + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + //灏忚溅绉诲姩鍒版彁鍗囨満鍙o紝璁$畻璺緞 - List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftLocNo, ShuttleTaskModeType.PAK_IN.id); + List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftLocNo, ShuttleTaskModeType.PAK_IN.id, assignCommand); //鍒嗛厤鐩爣搴撲綅 shuttleProtocol.setLocNo(liftLocNo); - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); assignCommand.setTaskMode((short) 9);//鍏呯數 assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); -- Gitblit v1.9.1