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/asrs/service/impl/MainServiceImpl.java |  117 ++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 76 insertions(+), 41 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 bd38850..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);
                         //婧愬簱浣嶆竻闆�
@@ -958,6 +960,24 @@
                         News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo());
                     } 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());
                     }
                 }
 
@@ -1247,7 +1267,7 @@
         //鏌ヨ搴撲綅绉昏浆宸ヤ綔妗�
         List<WrkMast> wrkMasts1 = wrkMastMapper.selectLocToLocWrkMast();
         for (WrkMast wrkMast : wrkMasts1) {
-            if (wrkMast.getSourceLocNo().equals(wrkMast.getLocNo())) {
+            if (Utils.getLev(wrkMast.getSourceLocNo()) == Utils.getLev(wrkMast.getLocNo())) {
                 boolean step1 = this.locToLocExecuteStep1(wrkMast);//鍚屾ゼ灞傚簱浣嶇Щ杞�
                 if (!step1) {
                     continue;
@@ -1366,10 +1386,14 @@
             }
 
             //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満杈撻�佺珯鐐�
-            BasDevp liftSta = shuttleDispatchUtils.getRecentLiftSta(shuttleThread.getSlave().getId());
+            LiftStaProtocol liftSta = shuttleDispatchUtils.getRecentLiftSta(shuttleThread.getSlave().getId());
             if (liftSta == null) {
                 return false;//娌℃湁鍙敤涓旂┖闂茬殑杈撻�佺珯鐐�
             }
+            //婧愮珯
+            Integer sourceStaNo = liftSta.getStaNo();
+            //鎻愬崌鏈哄彿*100+鐩爣妤煎眰=鐩爣绔欑偣
+            Integer staNo = liftSta.getLiftNo() * 100 + Utils.getLev(wrkMast.getLocNo());//鐩爣绔�
 
             //灏忚溅宸叉姷杈炬簮搴撲綅锛屽皢璐х墿鎼繍鍒拌緭閫佺珯鐐�
             NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getSourceLocNo(), liftSta.getLocNo());
@@ -1387,7 +1411,8 @@
             assignCommand.setNodes(result.getNodes());//璺緞鑺傜偣
 
             wrkMast.setWrkSts(22L);//21.鐢熸垚鍑哄簱浠诲姟 => 22.灏忚溅鎼繍涓�
-            wrkMast.setLiftNo(liftSta.getLiftNo());//璁剧疆鎻愬崌鏈哄彿
+            wrkMast.setSourceStaNo(sourceStaNo);//婧愮珯
+            wrkMast.setStaNo(staNo);//鐩爣绔�
             wrkMast.setModiTime(new Date());
             if (wrkMastMapper.updateById(wrkMast) > 0) {
                 //涓嬪彂浠诲姟
@@ -1427,16 +1452,16 @@
                 return false;
             }
 
-            //鑾峰彇婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐�
-            BasDevp sourceBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getSourceLocNo()), liftProtocol.getLiftNo().intValue());
-            //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐�
-            BasDevp targetBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getLocNo()), liftProtocol.getLiftNo().intValue());
-            if (sourceBasDevp == null || targetBasDevp == null) {
-                return false;//缂哄皯绔欑偣淇℃伅
+            //婧愮珯
+            Integer sourceStaNo = wrkMast.getSourceStaNo();
+            //鐩爣绔�
+            Integer staNo = wrkMast.getStaNo();
+            if (sourceStaNo == null || staNo == null) {
+                return false;//婧愮珯鎴栫洰鏍囩珯涓虹┖
             }
 
             //鑾峰彇鎻愬崌鏈哄懡浠�
-            NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, sourceBasDevp.getDevNo(), targetBasDevp.getDevNo(), wrkMast.getWrkNo());
+            NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, sourceStaNo, staNo, wrkMast.getWrkNo());
 
             ArrayList<NyLiftCommand> commands = new ArrayList<>();
             commands.add(liftCommand);
@@ -1515,6 +1540,7 @@
             assignCommand.setNodes(result.getNodes());//璺緞鑺傜偣
 
             wrkMast.setWrkSts(5L);//4.鎻愬崌鏈烘惉杩愬畬鎴� => 5.灏忚溅鎼繍涓�
+            wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
             wrkMast.setModiTime(new Date());
             if (wrkMastMapper.updateById(wrkMast) > 0) {
                 //涓嬪彂浠诲姟
@@ -2217,14 +2243,14 @@
                 return false;
             }
 
-            //鑾峰彇鐩爣杈撻�佺珯
-            BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo());
-            if (basDevp == null) {
-                return false;//鎵句笉鍒拌緭閫佺珯鐐�
+            //鑾峰彇婧愯緭閫佺珯
+            LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo());
+            if (liftSta == null) {
+                return false;//鎵句笉鍒扮珯鐐�
             }
 
             //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠�
-            NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), basDevp.getLocNo());
+            NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo());
             List<NyShuttleHttpCommand> commands = result.getCommands();
 
             ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
@@ -2259,14 +2285,20 @@
 
         //灏忚溅绉诲姩鍒版彁鍗囨満涓�  103.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 104.灏忚溅杩佸叆鎻愬崌鏈轰腑
         if (wrkMast.getWrkSts() == 103) {
+            //鑾峰彇婧愮珯
+            LiftStaProtocol sourceLiftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo());
+            if (sourceLiftSta == null) {
+                return false;//鎵句笉鍒扮珯鐐�
+            }
+
             //鑾峰彇鐩爣杈撻�佺珯
-            BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo());
-            if (basDevp == null) {
-                return false;//鎵句笉鍒拌緭閫佺珯鐐�
+            LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
+            if (liftSta == null) {
+                return false;//鎵句笉鍒扮珯鐐�
             }
 
             //鑾峰彇鎻愬崌鏈烘暟鎹�
-            BasLift basLift = basLiftService.selectById(basDevp.getLiftNo());
+            BasLift basLift = basLiftService.selectById(liftSta.getLiftNo());
             if (basLift == null) {
                 return false;//娌℃湁鎻愬崌鏈烘暟鎹�
             }
@@ -2281,7 +2313,7 @@
                 return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
             }
 
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, basDevp.getLiftNo());
+            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSta.getLiftNo());
             if (liftThread == null) {
                 return false;
             }
@@ -2313,10 +2345,8 @@
                 //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞�
                 //璋冨害鎻愬崌鏈�
 
-                //鑾峰彇婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐�
-                BasDevp sourceBasDevp = basDevpService.selectByLevAndLiftNo(liftProtocol.getLev().intValue(), liftProtocol.getLiftNo().intValue());
-                //鑾峰彇鎻愬崌鏈哄懡浠�
-                NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_CAR.id, sourceBasDevp.getDevNo(), basDevp.getDevNo(), wrkMast.getWrkNo());
+                //鑾峰彇鎻愬崌鏈哄懡浠わ紝璋冨害鎻愬崌鏈哄埌婧愮珯浣嶇疆
+                NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_CAR.id, sourceLiftSta.getStaNo(), sourceLiftSta.getStaNo(), wrkMast.getWrkNo());
 
                 ArrayList<NyLiftCommand> commands = new ArrayList<>();
                 commands.add(liftCommand);
@@ -2349,7 +2379,7 @@
             }
 
             //绔欑偣鑺傜偣
-            NavigateNode staNode = NavigatePositionConvert.locNoToNode(basDevp.getLocNo());
+            NavigateNode staNode = NavigatePositionConvert.locNoToNode(sourceLiftSta.getLocNo());
 
             //鎻愬崌鏈鸿妭鐐�
             NavigateNode liftNode = new NavigateNode(basLift.getPoint$().getX(), basLift.getPoint$().getY());
@@ -2414,6 +2444,11 @@
                 return false;//鎻愬崌鏈轰护鐗屽拰褰撳墠灏忚溅涓嶄竴鑷达紝绂佹娲惧彂
             }
 
+            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞�
+            if (!liftProtocol.getHasCar()) {
+                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
+            }
+
             //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
             NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
             if (shuttleThread == null) {
@@ -2434,16 +2469,16 @@
                 return false;
             }
 
-            //鑾峰彇婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐�
-            BasDevp sourceBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getSourceLocNo()), liftProtocol.getLiftNo().intValue());
-            //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐�
-            BasDevp targetBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getLocNo()), liftProtocol.getLiftNo().intValue());
-            if (sourceBasDevp == null || targetBasDevp == null) {
+            //鑾峰彇婧愮珯
+            LiftStaProtocol sourceLiftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo());
+            //鑾峰彇鐩爣绔�
+            LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
+            if (sourceLiftSta == null || liftSta == null) {
                 return false;//缂哄皯绔欑偣淇℃伅
             }
 
             //鑾峰彇鎻愬崌鏈哄懡浠�
-            NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_CAR.id, sourceBasDevp.getDevNo(), targetBasDevp.getDevNo(), wrkMast.getWrkNo());
+            NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_CAR.id, sourceLiftSta.getStaNo(), liftSta.getStaNo(), wrkMast.getWrkNo());
 
             ArrayList<NyLiftCommand> commands = new ArrayList<>();
             commands.add(liftCommand);
@@ -2515,10 +2550,10 @@
                 return false;
             }
 
-            //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐�
-            BasDevp targetBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getLocNo()), liftProtocol.getLiftNo().intValue());
-            if (targetBasDevp == null) {
-                return false;//缂哄皯绔欑偣淇℃伅
+            //鑾峰彇鐩爣绔�
+            LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
+            if (liftSta == null) {
+                return false;//鎵句笉鍒扮珯鐐�
             }
 
             //鑾峰彇鎻愬崌鏈烘暟鎹�
@@ -2534,7 +2569,7 @@
 
             List<NyShuttleHttpCommand> commands = new ArrayList<>();
             //鑾峰彇灏忚溅鍑烘彁鍗囨満琛岃蛋鍛戒护
-            NyShuttleHttpCommand moveCommand = NyHttpUtils.getInOutLiftCommand(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), liftNode, NavigatePositionConvert.locNoToNode(targetBasDevp.getLocNo()), false);
+            NyShuttleHttpCommand moveCommand = NyHttpUtils.getInOutLiftCommand(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), liftNode, NavigatePositionConvert.locNoToNode(liftSta.getLocNo()), false);
             commands.add(moveCommand);//娣诲姞灏忚溅杩佸嚭鎻愬崌鏈哄懡浠�
 
             ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();

--
Gitblit v1.9.1