From cb757218ff35e8b302de2d6cc5a95b842acd8ea2 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期三, 20 九月 2023 12:33:05 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/LiftThread.java | 12 +++- src/main/java/com/zy/common/utils/NyLiftUtils.java | 6 +- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 30 ++++++++- src/main/java/com/zy/core/thread/NyShuttleThread.java | 79 +++++++++++++++---------- src/main/java/com/zy/asrs/controller/LiftController.java | 20 +----- src/main/webapp/views/lift.html | 4 + 6 files changed, 92 insertions(+), 59 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/LiftController.java b/src/main/java/com/zy/asrs/controller/LiftController.java index a2199df..0104c32 100644 --- a/src/main/java/com/zy/asrs/controller/LiftController.java +++ b/src/main/java/com/zy/asrs/controller/LiftController.java @@ -234,24 +234,14 @@ //绉诲姩鎵樼洏 int workNo = commonService.getWorkNo(3);//鑾峰彇浠诲姟鍙� - Integer startSta = null; - Integer targetSta = null; - for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) { - if (liftStaProtocol.getStaNo() == param.getSourceStaNo()) { - startSta = liftStaProtocol.getStaNo(); - } - - if (liftStaProtocol.getLev() == param.getStaNo()) { - targetSta = liftStaProtocol.getStaNo(); - } - } - - if (startSta == null || targetSta == null) { - throw new CoolException("璧风偣鎴栫洰鏍囩偣涓嶅瓨鍦�"); + LiftStaProtocol sourceLiftSta = NyLiftUtils.getLiftStaByStaNo(param.getSourceStaNo()); + LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(param.getStaNo()); + if (sourceLiftSta == null || liftSta == null) { + throw new CoolException("婧愮珯鎴栫洰鏍囩珯涓嶅瓨鍦�"); } //鑾峰彇鎻愬崌鏈哄懡浠� - NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, startSta, targetSta, workNo); + NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, sourceLiftSta.getStaNo(), liftSta.getStaNo(), workNo); ArrayList<NyLiftCommand> commands = new ArrayList<>(); commands.add(liftCommand); 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 45ab344..4b61f61 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -928,12 +928,17 @@ break; case 110://110.灏忚溅绉诲姩涓� ==> 111.灏忚溅绉诲姩瀹屾垚 wrkMast.setWrkSts(111L); + shuttleProtocol.setTaskNo(0); if (shuttleProtocol.getToken() == wrkMast.getWrkNo()) { //閲婃斁灏忚溅浠ょ墝 shuttleProtocol.setToken(0); } break; - case 111: + default: + } + + if (wrkMastMapper.updateById(wrkMast) > 0) { + if (wrkMast.getWrkSts() == 111) { // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� if (wrkMastLocMapper.save(wrkMast.getWrkNo()) <= 0) { log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo()); @@ -942,11 +947,8 @@ if (!wrkMastService.deleteById(wrkMast)) { log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo()); } - break; - default: - } + } - if (wrkMastMapper.updateById(wrkMast) > 0) { //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); //婧愬簱浣嶆竻闆� @@ -959,6 +961,24 @@ } else { News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo()); } + }else { + ShuttleAssignCommand assignCommand = shuttleProtocol.getAssignCommand(); + if (!assignCommand.getAuto()) { + //鎵嬪姩妯″紡 + //宸ヤ綔鍙锋竻闆� + shuttleProtocol.setTaskNo(0); + //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� + shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); + //婧愬簱浣嶆竻闆� + shuttleProtocol.setSourceLocNo(null); + //鐩爣搴撲綅娓呴浂 + shuttleProtocol.setLocNo(null); + //浠诲姟鎸囦护娓呴浂 + shuttleProtocol.setAssignCommand(null); + //娓呴浂浠ょ墝 + shuttleProtocol.setToken(0); + News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo()); + } } } diff --git a/src/main/java/com/zy/common/utils/NyLiftUtils.java b/src/main/java/com/zy/common/utils/NyLiftUtils.java index 93cc8da..6909cd2 100644 --- a/src/main/java/com/zy/common/utils/NyLiftUtils.java +++ b/src/main/java/com/zy/common/utils/NyLiftUtils.java @@ -39,7 +39,7 @@ } for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) { - if (liftStaProtocol.getStaNo() == staNo) { + if (liftStaProtocol.getStaNo().equals(staNo)) { return liftStaProtocol; } } @@ -56,7 +56,7 @@ } for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) { - if (liftStaProtocol.getStaNo() == staNo) { + if (liftStaProtocol.getStaNo().equals(staNo)) { return liftStaProtocol; } } @@ -72,7 +72,7 @@ } for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) { - if (liftStaProtocol.getLev() == lev) { + if (liftStaProtocol.getLev().equals(lev)) { return liftStaProtocol; } } diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java index 83f3c8d..0c92bb3 100644 --- a/src/main/java/com/zy/core/thread/LiftThread.java +++ b/src/main/java/com/zy/core/thread/LiftThread.java @@ -132,7 +132,7 @@ //鎻愬崌鏈哄浜庢湭杩愯銆佸氨缁�佹爣璁皌rue銆佹湁浠诲姟鍙� if (!liftProtocol.getBusy() - && liftProtocol.getPakMk() + && !liftProtocol.getPakMk() && liftProtocol.getTaskNo() != 0) { //杩樻湁鏈畬鎴愮殑鍛戒护 executeWork(liftProtocol.getTaskNo()); @@ -184,7 +184,13 @@ //宸插畬鎴愪换鍔″彿 liftProtocol.setCompleteTaskNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, 6)); //褰撳墠妤煎眰 - liftProtocol.setLev(siemensS7Net.getByteTransform().TransInt16(result1.Content, 8)); + short lev = siemensS7Net.getByteTransform().TransInt16(result1.Content, 8); + if (lev >=5 && lev <= 7) { + lev += 2; + } else if (lev >= 8 && lev <= 10) { + lev += 4; + } + liftProtocol.setLev(lev); //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴� BasLiftService liftService = SpringUtils.getBean(BasLiftService.class); @@ -358,7 +364,7 @@ News.info("鎻愬崌鏈哄懡浠や笅鍙戞垚鍔燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command)); //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂) - liftProtocol.setPakMk(false); + liftProtocol.setPakMk(true); //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘� BasLiftOptService liftOptService = SpringUtils.getBean(BasLiftOptService.class); diff --git a/src/main/java/com/zy/core/thread/NyShuttleThread.java b/src/main/java/com/zy/core/thread/NyShuttleThread.java index ab325f7..5bce024 100644 --- a/src/main/java/com/zy/core/thread/NyShuttleThread.java +++ b/src/main/java/com/zy/core/thread/NyShuttleThread.java @@ -95,7 +95,7 @@ //鍥涘悜绌挎杞︾┖闂层�佹湁浠诲姟銆佹爣璁颁负true銆佸瓨鍦ㄤ换鍔℃寚浠わ紝闇�瑕佹墽琛屼换鍔$殑涓嬩竴鏉℃寚浠� if (shuttleProtocol.getFree() == ShuttleStatusType.IDLE.id && shuttleProtocol.getTaskNo() != 0 - && shuttleProtocol.getPakMk()) { + && !shuttleProtocol.getPakMk()) { //鎵ц涓嬩竴姝ユ寚浠� executeWork(shuttleProtocol.getTaskNo().shortValue()); } @@ -173,9 +173,9 @@ //闈炶嚜鍔ㄧ姸鎬佹椂闂磋鏃� shuttleProtocol.setErrTime(jsonObject.getInteger("errTime")); - //灏忚溅澶勪簬杩愯涓紝灏嗘爣璁扮疆涓簍rue + //灏忚溅澶勪簬杩愯涓紝灏嗘爣璁扮疆涓篺alse if (shuttleProtocol.getFree() == 0) { - shuttleProtocol.setPakMk(true); + shuttleProtocol.setPakMk(false); } //灏嗗洓鍚戠┛姊溅鐘舵�佷繚瀛樿嚦鏁版嵁搴� @@ -355,8 +355,12 @@ } NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(shuttleProtocol.getCurrentLocNo())); + //鍙栧嚭鍛戒护 - NyShuttleHttpCommand command = commands.get(commandStep);//褰撳墠鍛戒护 + NyShuttleHttpCommand command = null; + if (commandStep < commands.size()) { + command = commands.get(commandStep);//褰撳墠鍛戒护 + } if (commandStep != 0) { //鍒ゆ柇涓婁竴鏉℃寚浠ゆ槸鍚﹀畬鎴� NyShuttleHttpCommand lastCommand = commands.get(commandStep - 1); @@ -369,7 +373,9 @@ lastCommand.setComplete(true); //瑙i攣閿佸畾璺緞锛屼笂涓�鏉¤矾寰勫拰褰撳墠璺緞 List<NavigateNode> nodes = lastCommand.getNodes(); - nodes.addAll(command.getNodes()); + if (command != null) { + nodes.addAll(command.getNodes()); + } navigateMapData.writeNavigateNodeToRedisMap(nodes, false);//瑙i攣璺緞 } }else { @@ -395,7 +401,7 @@ }else { shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); } - News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); + News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(commands)); return false;//绂佹鍐嶄笅鍙戝懡浠� } @@ -441,7 +447,7 @@ News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙戞垚鍔燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂) - shuttleProtocol.setPakMk(false); + shuttleProtocol.setPakMk(true); //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘� BasShuttleOptService shuttleOptService = SpringUtils.getBean(BasShuttleOptService.class); @@ -463,33 +469,42 @@ shuttleOptService.insert(opt); } - //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚 - if (commandStep < commands.size() - 1) { - //鏇存柊redis鏁版嵁 - //姝ュ簭澧炲姞 - commandStep++; - redisCommand.setCommandStep(commandStep); - //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); - }else { - //宸叉墽琛屽畬鎴� + commandStep++; + //鏇存柊redis鏁版嵁 + redisCommand.setCommandStep(commandStep); + //浠诲姟鏁版嵁淇濆瓨鍒皉edis + redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); - commandStep++; -// //鏈�鍚庝竴娈靛懡浠や负绉诲姩鍛戒护锛屽垯鏆傜紦鍒犻櫎redis绛夊緟娓呴櫎璺緞鏃朵竴娆℃�у垹闄� -// //鏈�鍚庝竴娈靛懡浠や负涓嶆槸绉诲姩鍛戒护锛屽垯鍒犻櫎redis -// if (!command.getRequest().getBody().get("requestType").equals("move")) { -// //鍒犻櫎redis -// redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo()); -// } +// //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚 +// if (commandStep < commands.size() - 1) { +// commandStep++; +// //鏇存柊redis鏁版嵁 +// redisCommand.setCommandStep(commandStep); +// //浠诲姟鏁版嵁淇濆瓨鍒皉edis +// redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); +// }else { +// //宸叉墽琛屽畬鎴� // -// if (!assignCommand.getCharge()) { -// //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting -// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING); -// }else { -// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); -// } -// News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); - } +// commandStep = commands.size(); +// //鏇存柊redis鏁版嵁 +// redisCommand.setCommandStep(commandStep); +// //浠诲姟鏁版嵁淇濆瓨鍒皉edis +// redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); +//// //鏈�鍚庝竴娈靛懡浠や负绉诲姩鍛戒护锛屽垯鏆傜紦鍒犻櫎redis绛夊緟娓呴櫎璺緞鏃朵竴娆℃�у垹闄� +//// //鏈�鍚庝竴娈靛懡浠や负涓嶆槸绉诲姩鍛戒护锛屽垯鍒犻櫎redis +//// if (!command.getRequest().getBody().get("requestType").equals("move")) { +//// //鍒犻櫎redis +//// redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo()); +//// } +//// +//// if (!assignCommand.getCharge()) { +//// //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting +//// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING); +//// }else { +//// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); +//// } +//// News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); +// } return true; } diff --git a/src/main/webapp/views/lift.html b/src/main/webapp/views/lift.html index f6b281f..ab7d7e0 100644 --- a/src/main/webapp/views/lift.html +++ b/src/main/webapp/views/lift.html @@ -354,7 +354,9 @@ http.post(baseUrl+"/lift/operator/lift", { liftNo: $('input[name="liftSelect"]:checked').val(), liftTaskMode: liftTaskMode, - lev: $("#liftLev").val() + lev: $("#liftLev").val(), + sourceStaNo: $("#sourceStaNo").val(), + staNo: $("#staNo").val() }, function (res) { layer.msg(res.msg, {icon: 1}); }); -- Gitblit v1.9.1