From c2b0be1a368a88e4adb6dda12d0aa5d3bb0df838 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 27 六月 2023 16:50:50 +0800
Subject: [PATCH] 搜索最近穿梭车,提升机完成方法

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  444 ++++++++++++++++++++----------------------------------
 1 files changed, 167 insertions(+), 277 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 5ac7089..cfede0a 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -684,13 +684,17 @@
                                 //鐘舵��8锛岀瓑寰呭懡浠よ繘琛屽叆搴撴惉杩愬姩浣�
 
                                 //鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
-                                if (!liftProtocol.isIdle()) {
+                                if (!liftProtocol.isIdleNoTask()) {
                                     try {
                                         Thread.sleep(1000);//浼戠湢1s
                                     } catch (InterruptedException e) {
                                         throw new RuntimeException(e);
                                     }
                                     continue;//鎻愬崌鏈哄繖
+                                }
+                                //鍒ゆ柇鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙锋槸鍚︿竴鑷�
+                                if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) {
+                                    continue;
                                 }
 
                                 //鍒ゆ柇鎻愬崌鏈烘ゼ灞傛槸鍚﹀埌浣嶏紝鍒ゆ柇绔欑偣鏄惁缁欏嚭鎻愬崌鏈哄埌浣嶄俊鍙�
@@ -986,13 +990,17 @@
                     }else if(wrkMast.getWrkSts() == 25) {//鐘舵��25锛岄渶瑕佸悜灏忚溅涓嬪彂鍛戒护浠庢彁鍗囨満绉诲姩鍑哄幓锛岄渶瑕佸垽鏂彁鍗囨満鐘舵槸鍚︾┖闂层�佹彁鍗囨満鏄惁鍒拌揪鐩爣妤煎眰銆佺洰鏍囨ゼ灞傜珯鐐规槸鍚﹀瓨鍦ㄣ�佺洰鏍囨ゼ灞傜珯鐐规槸鍚︾粰鍑烘彁鍗囨満鍒颁綅淇″彿
 
                         //鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
-                        if (!liftProtocol.isIdle()) {
+                        if (!liftProtocol.isIdleNoTask()) {
                             try {
                                 Thread.sleep(1000);//浼戠湢1s
                             } catch (InterruptedException e) {
                                 throw new RuntimeException(e);
                             }
                             continue;//鎻愬崌鏈哄繖
+                        }
+                        //鍒ゆ柇鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙锋槸鍚︿竴鑷�
+                        if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) {
+                            continue;
                         }
 
                         //鍒ゆ柇鎻愬崌鏈烘ゼ灞傛槸鍚﹀埌浣嶏紝鍒ゆ柇绔欑偣鏄惁缁欏嚭鎻愬崌鏈哄埌浣嶄俊鍙�
@@ -1071,14 +1079,14 @@
                             BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo);
                             Short endStartCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮�
 
-                            String disLocNo = "190020" + Utils.getLev(liftSiteLocNo);//閬胯浣嶇疆
+                            String disLocNo = "200020" + Utils.getLev(liftSiteLocNo);//閬胯浣嶇疆
                             LocMast locMast1 = locMastService.queryByLoc(disLocNo);
                             if (locMast1 == null) {
                                 continue;//鎵句笉鍒板簱浣�
                             }
                             short disCode = Short.parseShort(locMast1.getQrCodeValue());
                             //浠诲姟鎵ц瀹屽悗锛屽皬杞﹁繘鍏ョЩ寮�鎻愬崌鏈哄彛绔欑偣浣嶇疆锛屼互鍏嶅潬钀�
-                            ShuttleCommand moveCommand = shuttleThread.getMoveCommand(endStartCode, disCode, 1400, ShuttleRunDirection.BOTTOM.id, endStartCode, 1400, 500);
+                            ShuttleCommand moveCommand = shuttleThread.getMoveCommand(endStartCode, disCode, 2800, ShuttleRunDirection.BOTTOM.id, endStartCode, 2800, 1000);
                             commands.add(moveCommand);
 
                             //鍒嗛厤鐩爣搴撲綅
@@ -1147,10 +1155,25 @@
                         assignCommand.setTaskMode(ShuttleTaskModeType.PAK_OUT.id.shortValue());
                         assignCommand.setSourceLocNo(liftSiteLocNo);
 
+                        //鑾峰彇褰撳墠灏忚溅鎵�鍦ㄦゼ灞傜殑绔欑偣淇℃伅
+                        BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo);
+                        Short endStartCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮�
+
+                        String disLocNo = "200020" + Utils.getLev(liftSiteLocNo);//閬胯浣嶇疆
+                        LocMast locMast1 = locMastService.queryByLoc(disLocNo);
+                        if (locMast1 == null) {
+                            continue;//鎵句笉鍒板簱浣�
+                        }
+                        short disCode = Short.parseShort(locMast1.getQrCodeValue());
+                        //浠诲姟鎵ц瀹屽悗锛屽皬杞﹁繘鍏ョЩ寮�鎻愬崌鏈哄彛绔欑偣浣嶇疆锛屼互鍏嶅潬钀�
+                        ShuttleCommand moveCommand2 = shuttleThread.getMoveCommand(endStartCode, disCode, 2800, ShuttleRunDirection.BOTTOM.id, endStartCode, 2800, 1000);
+
                         List<ShuttleCommand> commands = this.shuttleAssignCommand(liftSiteLocNo, wrkMast.getSourceLocNo(), liftSiteLocNo, assignCommand, shuttleThread);
                         if (commands == null) {
                             continue;//鏈壘鍒拌矾寰�
                         }
+                        commands.add(moveCommand2);//浠诲姟鎵ц瀹屽悗锛屽皬杞﹁繘鍏ョЩ寮�鎻愬崌鏈哄彛绔欑偣浣嶇疆锛屼互鍏嶅潬钀�
+
                         //姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝闇�瑕佸涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛
                         short startCode = liftProtocol.getBarcode();//鎻愬崌鏈哄唴閮ㄤ簩缁寸爜
                         Short distCode = commands.get(0).getStartCodeNum();//鐩爣浜岀淮鐮�
@@ -1193,11 +1216,21 @@
         ArrayList<ShuttleThread> sameLev = new ArrayList<>();//鐩稿悓妤煎眰鐨勭┛姊溅
         ArrayList<ShuttleThread> diffLev = new ArrayList<>();//涓嶅悓妤煎眰鐨勭┛姊溅
 
+        //鍒ゆ柇鍏朵粬绌洪棽绌挎杞︽槸鍚︾浠诲姟鏈�杩�
+        String distLocNo = null;//鐩爣鍦扮偣锛屽叆搴�=銆嬫彁鍗囨満鍙o紝鍑哄簱=銆嬭揣鐗╁簱浣嶅彿
+        if (wrkMast.getIoType() < 101) {
+            //鍏ュ簱
+            distLocNo = Utils.levToOutInStaLocNo(lev);
+        }else {
+            //鍑哄簱
+            distLocNo = locNo;
+        }
+
         for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
             //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
             ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId());
             ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
-            if (shuttleProtocol == null) {
+            if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) {
                 continue;
             }
             if (!shuttleProtocol.isIdle()) {
@@ -1208,6 +1241,14 @@
             if (shuttleLocNo == null) {
                 continue;
             }
+
+            if (shuttleLocNo.equals(distLocNo)) {
+                //杞﹁締褰撳墠浣嶇疆宸茬粡鏄洰鏍囧簱浣嶏紝鏃犻渶璁$畻
+                map.put("sameLay", true);//鍚屽眰
+                map.put("result", shuttleThread);
+                return map;
+            }
+
             int shuttleLocNoLey = Utils.getLev(shuttleLocNo);//搴撲綅鍙峰搴斿眰楂�
             if (lev == shuttleLocNoLey) {
                 //宸ヤ綔妗fゼ灞傜浉鍚岀殑绌挎杞�
@@ -1225,16 +1266,6 @@
             for (ShuttleThread shuttleThread : sameLev) {
                 if (recentShuttle == null) {//鏈�杩戠┛姊溅涓虹┖锛屽垯榛樿璧嬩簣涓烘渶杩戠┛姊溅
                     recentShuttle = shuttleThread;
-                }
-
-                //鍒ゆ柇鍏朵粬绌洪棽绌挎杞︽槸鍚︾浠诲姟鏈�杩�
-                String distLocNo = null;//鐩爣鍦扮偣锛屽叆搴�=銆嬫彁鍗囨満鍙o紝鍑哄簱=銆嬭揣鐗╁簱浣嶅彿
-                if (wrkMast.getIoType() < 101) {
-                    //鍏ュ簱
-                    distLocNo = Utils.levToOutInStaLocNo(lev);
-                }else {
-                    //鍑哄簱
-                    distLocNo = locNo;
                 }
 
                 //褰撳墠绌挎杞﹀簱浣嶅彿
@@ -1313,6 +1344,9 @@
                     && shuttleProtocol.getTaskNo() != 0
                     && shuttleProtocol.getBusyStatus() == 0
             ) {
+                //鏍囪澶嶄綅
+                shuttleProtocol.setPakMk(true);
+
                 //灏嗕换鍔℃。鏍囪涓哄畬鎴�
                 WrkMast wrkMast = wrkMastMapper.selectByWorkNo(shuttleProtocol.getTaskNo().intValue());
                 if (wrkMast != null) {
@@ -1341,8 +1375,6 @@
                         shuttleProtocol.setSourceLocNo(null);
                         //鐩爣搴撲綅娓呴浂
                         shuttleProtocol.setLocNo(null);
-                        //鏍囪澶嶄綅
-                        shuttleProtocol.setPakMk(true);
                         //浠诲姟鎸囦护娓呴浂
                         shuttleProtocol.setAssignCommand(null);
                         News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo());
@@ -1375,16 +1407,18 @@
                             //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵��
                             shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
                         }
-                        //浠诲姟鍙锋竻闆�
-                        shuttleProtocol.setTaskNo((short) 0);
-                        //婧愬簱浣嶆竻闆�
-                        shuttleProtocol.setSourceLocNo(null);
-                        //鐩爣搴撲綅娓呴浂
-                        shuttleProtocol.setLocNo(null);
-                        //鏍囪澶嶄綅
-                        shuttleProtocol.setPakMk(true);
-                        //浠诲姟鎸囦护娓呴浂
-                        shuttleProtocol.setAssignCommand(null);
+                        if (wrkCharge.getWrkSts() != 57) {
+                            //浠诲姟鍙锋竻闆�
+                            shuttleProtocol.setTaskNo((short) 0);
+                            //婧愬簱浣嶆竻闆�
+                            shuttleProtocol.setSourceLocNo(null);
+                            //鐩爣搴撲綅娓呴浂
+                            shuttleProtocol.setLocNo(null);
+                            //鏍囪澶嶄綅
+                            shuttleProtocol.setPakMk(true);
+                            //浠诲姟鎸囦护娓呴浂
+                            shuttleProtocol.setAssignCommand(null);
+                        }
                         News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo());
                     } else {
                         News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo());
@@ -1409,8 +1443,13 @@
                 continue;
             }
 
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂茬姸鎬�
-            if (!liftProtocol.isIdle()) {
+
+//            if (!liftProtocol.isIdle()) {
+//                continue;
+//            }
+
+            //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂茬姸鎬侊紝娌℃湁鍒ゆ柇浠诲姟鍙凤紝鍙兘鎻愬崌鏈哄浜庣┖闂诧紝浣嗘槸杩樻湁浠诲姟鏈畬鎴�
+            if (!liftProtocol.isIdleNoTask()) {
                 continue;
             }
 
@@ -1432,6 +1471,21 @@
             }
 
             if (wrkMast.getWrkSts() == 2) {//2.璁惧涓婅蛋
+                if (liftProtocol.getTaskNo().intValue() != 0) {
+                    //瀛樺湪鏈畬鎴愪换鍔″彿
+                    continue;
+                }
+                if (liftProtocol.getPlatShuttleCheck()) {
+                    //鎻愬崌鏈烘鏃舵湁鍥涘悜杞︼紝鍙兘鏈夋湭瀹屾垚鐨勪换鍔★紝绂佹鍒嗛厤鏂颁换鍔�
+                    continue;
+                }
+
+                //鑾峰彇鐩爣绔�
+                StaProtocol staProtocol = devpThread.getStation().get(wrkMast.getStaNo());
+                if (staProtocol.isLoading() || !staProtocol.isInEnable()) {//鐩爣绔欐湁鐗╋紝涓嶅彲鍏ワ紝绂佹鍒嗛厤浠诲姟
+                    continue;
+                }
+
                 //宸ヤ綔妗g洰鏍囧簱浣嶅彿
                 String wrkMastLocNo = wrkMast.getLocNo();
                 //宸ヤ綔妗g洰鏍囧簱浣嶆ゼ灞�
@@ -1476,6 +1530,10 @@
 
                 wrkMast.setWrkSts(3L);//3.鎻愬崌鏈烘惉杩愪腑
             } else if (wrkMast.getWrkSts() == 6) {//6.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 7.鎻愬崌鏈鸿縼绉诲皬杞︿腑
+                if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) {
+                    //鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛屼笖鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙蜂笉涓�鑷�
+                    continue;
+                }
                 liftProtocol.setShuttleNo(wrkMast.getShuttleNo().shortValue());//璁剧疆鍥涘悜绌挎杞﹀彿
 
                 //鍒ゆ柇灏忚溅鏄惁鍦ㄦ彁鍗囨満鍐咃紝涓斿浜庣┖闂茬姸鎬�
@@ -1492,6 +1550,10 @@
                 }
                 if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) {
                     continue;//灏忚溅褰撳墠浜岀淮鐮佸拰鎻愬崌鏈哄唴閮ㄤ簩缁寸爜涓嶄竴鑷达紝涓嶅厑璁告墽琛�
+                }
+                if (!liftProtocol.getPlatShuttleCheck()) {
+                    //鎻愬崌鏈烘湭妫�娴嬪埌灏忚溅锛岀姝㈡墽琛�
+                    continue;
                 }
 
                 //宸ヤ綔妗g洰鏍囧簱浣嶅彿
@@ -1512,6 +1574,10 @@
 
                 wrkMast.setWrkSts(7L);//6.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 7.鎻愬崌鏈鸿縼绉诲皬杞︿腑
             } else if(wrkMast.getWrkSts() == 23) {//23.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 24.鎻愬崌鏈鸿縼绉诲皬杞︿腑
+                if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) {
+                    //鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛屼笖鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙蜂笉涓�鑷�
+                    continue;
+                }
                 liftProtocol.setShuttleNo(wrkMast.getShuttleNo().shortValue());//璁剧疆鍥涘悜绌挎杞﹀彿
 
                 //鍒ゆ柇灏忚溅鏄惁鍦ㄦ彁鍗囨満鍐咃紝涓斿浜庣┖闂茬姸鎬�
@@ -1529,6 +1595,10 @@
                 }
                 if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) {
                     continue;//灏忚溅褰撳墠浜岀淮鐮佸拰鎻愬崌鏈哄唴閮ㄤ簩缁寸爜涓嶄竴鑷达紝涓嶅厑璁告墽琛�
+                }
+                if (!liftProtocol.getPlatShuttleCheck()) {
+                    //鎻愬崌鏈烘湭妫�娴嬪埌灏忚溅锛岀姝㈡墽琛�
+                    continue;
                 }
 
                 //宸ヤ綔妗g洰鏍囧簱浣嶅彿
@@ -1549,6 +1619,15 @@
 
                 wrkMast.setWrkSts(24L);//23.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 24.鎻愬崌鏈鸿縼绉诲皬杞︿腑
             } else if (wrkMast.getWrkSts() == 27) {//27.灏忚溅鍑哄簱鎼繍瀹屾垚
+                if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) {
+                    //鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛屼笖鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙蜂笉涓�鑷�
+                    continue;
+                }
+                if (liftProtocol.getPlatShuttleCheck()) {
+                    //鎻愬崌鏈烘鏃舵湁鍥涘悜杞︼紝鍙兘鏈夋湭瀹屾垚鐨勪换鍔★紝绂佹鍒嗛厤鏂颁换鍔�
+                    continue;
+                }
+
                 //宸ヤ綔妗f簮搴撲綅鍙�
                 String wrkMastLocNo = wrkMast.getSourceLocNo();
                 //宸ヤ綔妗f簮搴撲綅妤煎眰
@@ -1641,8 +1720,18 @@
                 //灏嗕换鍔℃。鏍囪涓哄畬鎴�
                 WrkMast wrkMast = wrkMastMapper.selectByWorkNo372428(liftProtocol.getTaskNo().intValue());
                 if (wrkMast != null) {
+                    //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀埌杈句换鍔℃ゼ灞�
+                    String locNo = wrkMast.getIoType() < 101 ? wrkMast.getLocNo() : wrkMast.getSourceLocNo();
+                    int lev = Utils.getLev(locNo);//浠诲姟鐩爣妤煎眰
+
+                    //鏍囪澶嶄綅
+                    liftProtocol.setPakMk(true);
+
                     switch (wrkMast.getWrkSts().intValue()) {
                         case 3://3.鎻愬崌鏈烘惉杩愪腑 ==> 4.鎻愬崌鏈烘惉杩愬畬鎴�
+                            if (liftProtocol.getLev().intValue() != lev) {
+                                continue;//鎻愬崌鏈烘病鏈夊埌杈剧洰鏍�
+                            }
                             //缁欑洰鏍囩珯璁剧疆宸ヤ綔鍙�
                             StaProtocol staProtocol = devpThread.getStation().get(wrkMast.getStaNo());//鐩爣绔�
                             staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
@@ -1651,17 +1740,30 @@
                             if (!result) {
                                 throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
                             }
+                            //浠诲姟鍙锋竻闆�
+                            liftProtocol.setTaskNo((short) 0);
                             wrkMast.setWrkSts(4L);
                             break;
                         case 7://7.鎻愬崌鏈鸿縼绉诲皬杞︿腑 ==> 8.鎻愬崌鏈鸿縼绉诲皬杞﹀畬鎴�
+                            if (liftProtocol.getLev().intValue() != lev) {
+                                continue;//鎻愬崌鏈烘病鏈夊埌杈剧洰鏍�
+                            }
                             wrkMast.setWrkSts(8L);
                             break;
                         case 24://24.鎻愬崌鏈鸿縼绉诲皬杞︿腑 ==> 25.鎻愬崌鏈鸿縼绉诲皬杞﹀畬鎴�
+                            if (liftProtocol.getLev().intValue() != lev) {
+                                continue;//鎻愬崌鏈烘病鏈夊埌杈剧洰鏍�
+                            }
                             wrkMast.setWrkSts(25L);
                             break;
                         case 28://28.鎻愬崌鏈烘惉杩愪腑 ==> 29.鎻愬崌鏈烘惉杩愬畬鎴�
+                            if (liftProtocol.getPositionArrivalFeedback().intValue() != 2) {
+                                continue;//鎻愬崌鏈烘槸鍚﹁揪鍒拌緭閫佺嚎妤煎眰
+                            }
                             wrkMast.setWrkSts(29L);
                             wrkMast.setWrkSts(34L);//34.鍑哄簱瀹屾垚锛屾殏鏃跺厛鐩存帴瀹屾垚鍑哄簱宸ヤ綔妗o紝鍚庣画闇�瑕佹牴鎹緭閫佺嚎缁欏嚭鐨勭姸鎬佹潵纭畾34.鍑哄簱瀹屾垚鐘舵��
+                            //浠诲姟鍙锋竻闆�
+                            liftProtocol.setTaskNo((short) 0);
                             break;
                         default:
                     }
@@ -1669,13 +1771,9 @@
                     if (wrkMastMapper.updateById(wrkMast) > 0) {
                         //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵��
                         liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE);
-                        //浠诲姟鍙锋竻闆�
-                        liftProtocol.setTaskNo((short) 0);
-                        //鏍囪澶嶄綅
-                        liftProtocol.setPakMk(true);
                         //浠诲姟鎸囦护娓呴浂
                         liftProtocol.setAssignCommand(null);
-                        News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo());
+                        News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬併�傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo());
                     } else {
                         News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", liftProtocol.getLiftNo(), liftProtocol.getTaskNo());
                     }
@@ -1684,6 +1782,9 @@
                 //鏌ヨ鏄惁鏈夊厖鐢典换鍔�
                 WrkCharge wrkCharge = wrkChargeMapper.selectByWorkNo(liftProtocol.getTaskNo().intValue());
                 if (wrkCharge != null) {
+                    //鏍囪澶嶄綅
+                    liftProtocol.setPakMk(true);
+                    
                     switch (wrkCharge.getWrkSts().intValue()) {
                         case 54://鎻愬崌鏈烘惉杩愪腑
                             wrkCharge.setWrkSts(55L);//鎻愬崌鏈烘惉杩愬畬鎴�
@@ -2405,7 +2506,7 @@
                 continue;
             }
 
-            WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttleProtocol.getShuttleNo().intValue(), WrkChargeType.charge);
+            WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttleProtocol.getShuttleNo().intValue());
             if (wrkCharge != null) {//宸叉湁鍏呯數浠诲姟
                 continue;
             }
@@ -2447,35 +2548,28 @@
      */
     public synchronized void executeShuttleCharge() {
         for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
-            WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.charge);
+            WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttle.getId());
             if (wrkCharge == null) {
-                return;
+                continue;
             }
 
             ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkCharge.getShuttleNo());
             if (shuttleThread == null) {
-                return;
+                continue;
             }
             ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
             if (shuttleProtocol == null) {
-                return;
+                continue;
             }
 
-            //褰撳墠绌挎杞﹀簱浣嶅彿
-            String currentLocNo = shuttleProtocol.getCurrentLocNo();
-            if (currentLocNo == null) {
-                return;
-            }
-            //灏忚溅褰撳墠灞傞珮
-            Integer currentLev = Utils.getLev(currentLocNo);
             //鑾峰彇鎻愬崌鏈�
             LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, 1);
             if (liftThread == null) {
-                return;
+                continue;
             }
             LiftProtocol liftProtocol = liftThread.getLiftProtocol();
             if (liftProtocol == null) {
-                return;
+                continue;
             }
             //鍏呯數搴撲綅鍙�
             String chargeLocNo = wrkCharge.getLocNo();
@@ -2483,6 +2577,14 @@
             Integer chargeLocNoLev = Utils.getLev(chargeLocNo);
 
             if (wrkCharge.getWrkSts() == 51) {
+                //褰撳墠绌挎杞﹀簱浣嶅彿
+                String currentLocNo = shuttleProtocol.getCurrentLocNo();
+                if (currentLocNo == null) {
+                    continue;
+                }
+                //灏忚溅褰撳墠灞傞珮
+                Integer currentLev = Utils.getLev(currentLocNo);
+
                 if (currentLev == chargeLocNoLev) {
                     //鍚屼竴灞傛棤闇�缁忚繃鎻愬崌鏈�
                     //鐩存帴璁$畻杞﹀埌鍏呯數搴撲綅
@@ -2492,7 +2594,7 @@
                     //鑾峰彇灏忚溅鍒板厖鐢靛簱浣嶈矾寰勬寚浠�
                     List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, chargeLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread);
                     if (commands == null) {
-                        return;//鏈壘鍒拌矾寰�
+                        continue;//鏈壘鍒拌矾寰�
                     }
                     //杩涜鍏呯數涓�
                     shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING);
@@ -2525,13 +2627,13 @@
                     //灏忚溅绉诲姩鍒版彁鍗囨満鍙g珯鐐癸紝璁$畻璺緞
                     List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, liftSiteLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread);
                     if (commands == null) {
-                        return;//鏈壘鍒拌矾寰�
+                        continue;//鏈壘鍒拌矾寰�
                     }
 
                     //鑾峰彇褰撳墠灏忚溅鎵�鍦ㄦゼ灞傜殑绔欑偣淇℃伅
                     BasDevp basDevp = basDevpService.queryByLocNo(liftSiteLocNo);
                     if (basDevp == null) {
-                        return;//鎵句笉鍒扮珯鐐逛俊鎭�
+                        continue;//鎵句笉鍒扮珯鐐逛俊鎭�
                     }
                     Short basDevpQrCode = Short.parseShort(basDevp.getQrCodeValue());//绔欑偣浜岀淮鐮�
 
@@ -2562,13 +2664,13 @@
 
                 //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂茬姸鎬�
                 if (!liftProtocol.isIdle()) {
-                    return;
+                    continue;
                 }
 
                 //鍒ゆ柇灏忚溅鏄惁鍦ㄦ彁鍗囨満鍐�
                 if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) {
                     //灏忚溅涓嶅湪鎻愬崌鏈哄唴
-                    return;
+                    continue;
                 }
 
                 //缁欐彁鍗囨満鍒嗛厤浠诲姟
@@ -2602,24 +2704,24 @@
 
                 Short liftLev = liftProtocol.getLev();
                 if (liftLev == null) {
-                    return;
+                    continue;
                 }
                 //鍒ゆ柇鎻愬崌鏈烘ゼ灞傛槸鍚﹀埌杈剧洰鏍囨ゼ灞�
                 if (liftLev.intValue() != chargeLocNoLev) {
-                    return;//娌℃湁鍒拌揪鐩爣妤煎眰
+                    continue;//娌℃湁鍒拌揪鐩爣妤煎眰
                 }
 
                 //姝ゆ椂杞﹀湪鎻愬崌鏈哄唴閮紝涓嬭揪涓�姝ユ寚浠よ杞︾Щ鍔ㄥ埌鎻愬崌鏈哄彛
                 Integer staNo = Utils.levToOutInStaNo(liftLev >= 2 ? liftLev + 1 : liftLev);//绔欑偣鍙�
                 BasDevp basDevp = basDevpService.selectById(staNo);
                 if (basDevp == null) {
-                    return;//绔欑偣涓嶅瓨鍦�
+                    continue;//绔欑偣涓嶅瓨鍦�
                 }
 
-                //鑾峰彇灏忚溅鍒板厖鐢靛簱浣嶈矾寰勬寚浠�
-                List<ShuttleCommand> commands = this.shuttleAssignCommand(currentLocNo, chargeLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread);
+                //鑾峰彇鎻愬崌鏈哄彛鍒板厖鐢靛簱浣嶈矾寰勬寚浠�
+                List<ShuttleCommand> commands = this.shuttleAssignCommand(basDevp.getLocNo(), chargeLocNo, NavigationMapType.NONE.id, assignCommand, shuttleThread);
                 if (commands == null) {
-                    return;//鏈壘鍒拌矾寰�
+                    continue;//鏈壘鍒拌矾寰�
                 }
 
                 short startCode = liftProtocol.getBarcode();//鎻愬崌鏈哄唴閮ㄤ簩缁寸爜
@@ -2669,8 +2771,12 @@
                     assignCommand.setCommands(commands);
 
                     shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING);
-                    //涓嬪彂浠诲姟
-                    MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
+
+                    wrkCharge.setWrkSts(60L);//60.鍏呯數浠诲姟瀹屾垚
+                    if (wrkChargeMapper.updateById(wrkCharge) > 0) {
+                        //涓嬪彂浠诲姟
+                        MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
+                    }
                 }
 
                 if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.CHARGING_WAITING.id) {
@@ -2679,222 +2785,6 @@
             }
         }
 
-    }
-
-    /**
-     * 杞鍏呯數妗╂槸鍚︽湁绌洪棽灏忚溅
-     */
-    @Deprecated
-    public synchronized void queryChargeLocOfComplete() {
-        // 涓庡厖鐢典换鍔′笉鍚屾杩涜
-        if (null != wrkChargeService.selectWorking(null, WrkChargeType.charge)) { return; }
-        if (null != wrkChargeService.selectWorking(null, WrkChargeType.reset)) { return; }
-        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-        // 妫�绱㈠厖鐢垫々
-        for (SteChargeType value : SteChargeType.values()) {
-            Integer steNo = basSteService.hasCarOfLocNo(value.locNo);
-            if (steNo != null) {
-                SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
-                SteProtocol steProtocol = steThread.getSteProtocol();
-                BasSte basSte = basSteService.selectById(steNo);
-                if (Cools.isEmpty(steProtocol, basSte)) {
-                    continue;
-                }
-                if (steProtocol.getCharge() < 99) {
-                    continue;
-                }
-                if (steProtocol.getMode() == 0) {
-                    continue;
-                }
-                if (!steProtocol.getStatusType().equals(SteStatusType.IDLE)) {
-                    continue;
-                }
-//                // 1鍙峰厖鐢垫々
-//                if (value.equals(SteChargeType.FIRST) && devpThread.charge0) {
-//                    continue;
-//                }
-//                // 2鍙峰厖鐢垫々
-//                if (value.equals(SteChargeType.SECOND) && devpThread.charge1) {
-//                    continue;
-//                }
-//                // 3鍙峰厖鐢垫々
-//                if (value.equals(SteChargeType.THIRD) && devpThread.charge2) {
-//                    continue;
-//                }
-//                // 灏忚溅鏄惁澶勪簬鍏呯數鐘舵��
-//                if (steProtocol.getChargeStatus() == 1) {
-//                    continue;
-//                }
-                // case 1 : 鑷姩鍏呯數寮�   棣堢數      脳
-                // case 2 : 鑷姩鍏呯數寮�   婊$數      鉁�
-                // case 3 : 鑷姩鍏呯數鍏�   棣堢數      鉁�
-                // case 4 : 鑷姩鍏呯數鍏�   婊$數      鉁�
-                if (basSte.getAutoCharge().equals("Y")
-                        && steProtocol.getCharge() < Float.parseFloat(basSte.getChargeLine())) {
-                    continue;
-                }
-
-                WrkCharge wrkCharge = wrkChargeService.selectWorking(steNo, WrkChargeType.reset);
-
-                if (wrkCharge == null) {
-                    // 寮�濮嬬┛姊溅澶嶄綅浠诲姟
-                    wrkCharge = new WrkCharge();
-                    wrkCharge.setSteNo(steNo);
-                    wrkCharge.setWrkNo(commonService.getChargeWorkNo(6));
-                    wrkCharge.setWrkSts(41L);   // 41.灏忚溅鍑嗗澶嶄綅
-                    wrkCharge.setCrnNo(2);  // 鍥哄畾2鍙峰爢鍨涙満
-                    wrkCharge.setIoPri((double) 10);
-                    wrkCharge.setSourceLocNo(value.locNo);
-                    wrkCharge.setLocNo(basSte.getIdleLoc());
-                    wrkCharge.setMemo("reset");
-                    wrkCharge.setAppeTime(new Date());
-                    if (!wrkChargeService.insert(wrkCharge)) {
-                        News.error("淇濆瓨{}鍙风┛姊溅澶嶄綅浠诲姟澶辫触!!!", steNo);
-                    } else {
-                        break;
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * 灏忚溅浠庡厖鐢垫々 鑷� 寰呮満搴撲綅
-     */
-    @Deprecated
-    public synchronized void steFromChargeToIdleLoc() {
-        WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.reset);
-        if (wrkCharge == null) { return; }
-        SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, wrkCharge.getSteNo());
-        SteProtocol steProtocol = steThread.getSteProtocol();
-        BasSte basSte = basSteService.selectById(wrkCharge.getSteNo());
-        if (Cools.isEmpty(steProtocol, basSte)) {
-            return;
-        }
-        // 鎼繍鑷冲浐瀹氶�氶亾
-        if (wrkCharge.getWrkSts() == 41L) {
-            // 鎼皬杞﹁嚦灏忚溅璧板悜閫氶亾
-            List<String> channel = slaveProperties.getChannel();
-            for (String channelLocNo : channel) {
-                Integer otherSte = existOtherSte(channelLocNo, wrkCharge.getSteNo());
-                if (null != otherSte) {
-                    News.warn("{}鍙峰皬杞︾Щ鍏}搴撲綅缁勫け璐ワ紝鍘熷洜锛氬瓨鍦▄}鍙风┛姊溅锛�", wrkCharge.getSteNo(), channelLocNo, otherSte);
-                } else {
-                    // 鍥哄畾鍫嗗灈鏈�
-                    int crnNo = 1;
-                    if (null != wrkMastMapper.selectWorkingByCrn(crnNo)) {
-                        return;
-                    }
-
-                    LocMast channelLoc = locMastService.selectById(channelLocNo);
-
-                    CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnNo);
-                    CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-                    if (crnProtocol == null) { continue; }
-                    // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
-                    if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
-                        // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 --------------------------------------------------------------------------
-                        CrnCommand crnCommand = new CrnCommand();
-                        crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
-                        crnCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-                        crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                        crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                        crnCommand.setSourcePosX(steProtocol.getRow());     // 婧愬簱浣嶆帓
-                        crnCommand.setSourcePosY(steProtocol.getBay());     // 婧愬簱浣嶅垪
-                        crnCommand.setSourcePosZ(steProtocol.getLev());     // 婧愬簱浣嶅眰
-                        crnCommand.setDestinationPosX(Utils.getGroupRow(channelLoc.getLocNo(), false).shortValue());     // 鐩爣搴撲綅鎺�
-                        crnCommand.setDestinationPosY(channelLoc.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
-                        crnCommand.setDestinationPosZ(channelLoc.getLev1().shortValue());     // 鐩爣搴撲綅灞�
-                        if (!MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, crnCommand))) {
-                            News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getCrnNo(), JSON.toJSON(crnCommand));
-                        } else {
-                            // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞�
-                            steThread.modifyPos(Utils.getGroupRow(channelLoc.getLocNo(), false), channelLoc.getBay1(), channelLoc.getLev1());
-                            // 淇敼宸ヤ綔妗g姸鎬� 41.灏忚溅鍑嗗澶嶄綅 => 42.鍚婅溅鎼繍
-                            Date now = new Date();
-                            wrkCharge.setWrkSts(42L);
-                            wrkCharge.setCrnStrTime(now);
-                            wrkCharge.setModiTime(now);
-                            if (!wrkChargeService.updateById(wrkCharge)) {
-                                News.error("淇敼澶嶄綅浠诲姟鐘舵�� 41.灏忚溅鍑嗗澶嶄綅 => 42.鍚婅溅鎼繍 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
-                            }
-                        }
-                        break;
-                    }
-
-                }
-            }
-        } else if (wrkCharge.getWrkSts() == 43L) {
-            // 灏忚溅琛岄┒閫氶亾
-            if (steProtocol.statusType.equals(SteStatusType.IDLE) && steProtocol.getPakMk().equals("N")) {
-                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                SteCommand steCommand = new SteCommand();
-                steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
-                steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙�
-                steCommand.setTaskMode(SteTaskModeType.BACK_ORIGIN);  // 鍘诲乏绔�
-
-                steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue());
-                steCommand.setBay(steProtocol.getBay());
-                steCommand.setLev(steProtocol.getLev());
-                if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) {
-                    News.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand));
-                } else {
-                    // 淇敼宸ヤ綔妗g姸鎬� 43.灏忚溅鍒拌揪 ===> 44.灏忚溅璧拌
-                    wrkCharge.setWrkSts(44L);
-                    Date now = new Date();
-                    wrkCharge.setCrnEndTime(now);
-                    wrkCharge.setModiTime(now);
-                    if (!wrkChargeService.updateById(wrkCharge)) {
-                        News.error("淇敼澶嶄綅浠诲姟鐘舵�� 43.灏忚溅鍒拌揪 ===> 44.灏忚溅璧拌 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
-                    }
-                }
-            }
-        } else if (wrkCharge.getWrkSts() == 45L) {
-            if (null != wrkMastMapper.selectWorkingByCrn(wrkCharge.getCrnNo())) {
-                return;
-            }
-
-            LocMast idleLoc = locMastService.selectById(basSte.getIdleLoc());
-
-            Integer otherSte = existOtherSte(idleLoc.getLocNo(), wrkCharge.getSteNo());
-            if (null != otherSte) {
-                News.warn("{}鍙峰皬杞︾Щ鍏}搴撲綅缁勫け璐ワ紝鍘熷洜锛氬瓨鍦▄}鍙风┛姊溅锛�", wrkCharge.getSteNo(), idleLoc.getLocNo(), otherSte);
-            } else {
-                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkCharge.getCrnNo());
-                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-                if (crnProtocol == null) { return; }
-                // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
-                if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
-                    // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 --------------------------------------------------------------------------
-                    CrnCommand crnCommand = new CrnCommand();
-                    crnCommand.setCrnNo(wrkCharge.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
-                    crnCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-                    crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                    crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                    crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue());     // 婧愬簱浣嶆帓
-                    crnCommand.setSourcePosY(steProtocol.getBay());     // 婧愬簱浣嶅垪
-                    crnCommand.setSourcePosZ(steProtocol.getLev());     // 婧愬簱浣嶅眰
-                    crnCommand.setDestinationPosX(Utils.getGroupRow(idleLoc.getLocNo(), true).shortValue());     // 鐩爣搴撲綅鎺�
-                    crnCommand.setDestinationPosY(idleLoc.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
-                    crnCommand.setDestinationPosZ(idleLoc.getLev1().shortValue());     // 鐩爣搴撲綅灞�
-                    if (!MessageQueue.offer(SlaveType.Crn, wrkCharge.getCrnNo(), new Task(2, crnCommand))) {
-                        News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getCrnNo(), JSON.toJSON(crnCommand));
-                    } else {
-                        // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞�
-                        steThread.modifyPos(Utils.getGroupRow(idleLoc.getLocNo(), true), idleLoc.getBay1(), idleLoc.getLev1());
-                        // 淇敼宸ヤ綔妗g姸鎬� 45.灏忚溅寰呮惉 => 46.鏀捐嚦寰呮満浣�
-                        Date now = new Date();
-                        wrkCharge.setWrkSts(46L);
-                        wrkCharge.setCrnStrTime(now);
-                        wrkCharge.setModiTime(now);
-                        if (!wrkChargeService.updateById(wrkCharge)) {
-                            News.error("淇敼宸ヤ綔妗g姸鎬� 45.灏忚溅寰呮惉 => 46.鏀捐嚦寰呮満浣� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
-                        }
-                    }
-                }
-
-            }
-        }
     }
 
     public List<String> crn2DemoLocs = new ArrayList<String>(); public String crn2LastLoc = "";

--
Gitblit v1.9.1