From f18464143b3be9b0247f8625b7e61115402de328 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 29 九月 2023 16:16:26 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/utils/Utils.java                  |   23 -----------
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   55 +++++++++++++++++----------
 src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java |   42 +++++++++++----------
 3 files changed, 56 insertions(+), 64 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 c875665..fdbeb8c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1196,6 +1196,17 @@
 
         //23.灏忚溅鎼繍瀹屾垚 ==> 24.鎻愬崌鏈烘惉杩愪腑
         if (wrkMast.getWrkSts() == 23) {
+            NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                return false;
+            }
+
+            //璋冨害灏忚溅閬胯
+            boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkMast.getLocNo()), wrkMast.getShuttleNo(), shuttleThread);
+            if (!result) {
+                return false;
+            }
+
             //鑾峰彇鍑哄簱绔欑偣(鐩爣绔�)
             BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo());
             if (basDevp == null) {
@@ -1968,7 +1979,7 @@
                     continue;
                 }
 
-                if (wrkMast.getMk().equals("Y")) {//鏍囪涓篩琛ㄧず闇�瑕佺敤鍒版満姊拌噦鎷f枡
+                if (wrkMast.getMk() != null && wrkMast.getMk().equals("Y")) {//鏍囪涓篩琛ㄧず闇�瑕佺敤鍒版満姊拌噦鎷f枡
                     Short targetSta = null;//鐩爣绔�
                     //鍒ゆ柇鏈烘鑷傛嫞鏂欑珯鏄惁绌洪棽
                     StaProtocol staProtocol303 = devpThread.getStation().get(303);
@@ -2006,28 +2017,30 @@
             StaProtocol staProtocol317 = devpThread.getStation().get(317);
             if (staProtocol303.isAutoing() && staProtocol303.isLoading() && staProtocol303.getWorkNo() != 0) {
                 //璋冨害鏈烘鑷�
-                //鏌ヨ鏄惁鏈夊伐浣滄。
-                WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol303.getWorkNo().intValue());
-                if (wrkMast == null) {
-                    continue;
-                }
-                WrkDetl wrkDetl = wrkDetlService.selectById(wrkMast.getWrkNo());
-                if (wrkDetl == null) {
-                    continue;
-                }
-                RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetl.getAnfme().intValue(), "303");
+//                //鏌ヨ鏄惁鏈夊伐浣滄。
+//                WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol303.getWorkNo().intValue());
+//                if (wrkMast == null) {
+//                    continue;
+//                }
+//                WrkDetl wrkDetl = wrkDetlService.selectById(wrkMast.getWrkNo());
+//                if (wrkDetl == null) {
+//                    continue;
+//                }
+//                RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetl.getAnfme().intValue(), "303");
+                RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), -1, "303");
             }else if (staProtocol317.isAutoing() && staProtocol317.isLoading() && staProtocol317.getWorkNo() != 0) {
                 //璋冨害鏈烘鑷�
-                //鏌ヨ鏄惁鏈夊伐浣滄。
-                WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol317.getWorkNo().intValue());
-                if (wrkMast == null) {
-                    continue;
-                }
-                WrkDetl wrkDetl = wrkDetlService.selectById(wrkMast.getWrkNo());
-                if (wrkDetl == null) {
-                    continue;
-                }
-                RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetl.getAnfme().intValue(), "317");
+//                //鏌ヨ鏄惁鏈夊伐浣滄。
+//                WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol317.getWorkNo().intValue());
+//                if (wrkMast == null) {
+//                    continue;
+//                }
+//                WrkDetl wrkDetl = wrkDetlService.selectById(wrkMast.getWrkNo());
+//                if (wrkDetl == null) {
+//                    continue;
+//                }
+//                RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetl.getAnfme().intValue(), "317");
+                RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), -1, "317");
             }
         }
     }
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index b5e47fb..4a3c0a9 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -354,29 +354,6 @@
         return locNo;
     }
 
-    //妤煎眰杞崲瀵瑰簲鍑哄叆搴撶珯鐐瑰簱浣嶅彿
-    public static String levToOutInStaLocNo(Integer lev) {
-        String locNo = null;
-        if (lev >= 2) {
-            lev++;
-        }
-        switch (lev) {
-            case 1:
-                locNo = "1800201";
-                break;
-            case 3:
-                locNo = "1800202";
-                break;
-            case 4:
-                locNo = "1800203";
-                break;
-            case 5:
-                locNo = "1800204";
-                break;
-        }
-        return locNo;
-    }
-
     public static void main(String[] args) {
         System.out.println(JSON.toJSONString(getGroupOutsideLoc("0200101")));
     }
diff --git a/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java b/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java
index 3d84c4f..dbe89f9 100644
--- a/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java
+++ b/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java
@@ -123,29 +123,31 @@
             }
         }else {
             //鍚屼竴妤煎眰锛屾病鏈夌┖闂茬┛姊溅锛屽彧鑳戒粠鍏朵粬妤煎眰璋冨害
-            //瀵绘壘绂讳换鍔℃渶杩戠殑绌挎杞�
-            for (NyShuttleThread shuttleThread : diffLev) {
+            //瀵绘壘绂讳换鍔℃ゼ灞傛渶杩戠殑绌挎杞�(涓嶈�冭檻璺ㄦゼ灞傚皬杞︾Щ鍔ㄨ窛绂�)
 
-                //褰撳墠绌挎杞﹀簱浣嶅彿
-                String currentLocNo = shuttleThread.getShuttleProtocol().getCurrentLocNo();
-                int currentLev = Utils.getLev(currentLocNo);
-                List<WrkMast> wrkMasts1 = wrkMastService.selectNoShuttleWrkByLev(currentLev);//鍒ゆ柇褰撳墠绌挎杞︽ゼ灞傛槸鍚︽湁寰呭垎閰嶈溅杈嗙殑浠诲姟锛屽鏋滄湁鍒欎笉鍒嗛厤杩欒締杞�
-                if (wrkMasts1.size() > 0) {
-                    //瀛樺湪鍏朵粬浠诲姟锛岃烦杩囪繖杈嗚溅
-                    continue;
-                }
+            //鑾峰彇浠诲姟
+            WrkMast wrkMast1 = wrkMastMapper.selectByWorkNo(wrkNo);
 
-                //褰撳墠绌挎杞︾嚎绋嬪埌褰撳墠杞﹀瓙鎵�鍦ㄦゼ灞傜殑鎻愬崌鏈哄彛璺濈
-                List<NavigateNode> currentShuttlePath = NavigateUtils.calc(currentLocNo, Utils.levToOutInStaLocNo(currentLev), NavigationMapType.NORMAL.id, Utils.getShuttlePoints(shuttleThread.getSlave().getId(), currentLev));//鎼滅储绌洪棽绌挎杞︼紝浣跨敤姝e父閫氶亾鍦板浘
-                if (currentShuttlePath == null) {
-                    continue;
-                }
+            if (wrkMast1 != null) {
+                int lev = Utils.getLev(wrkMast1.getLocNo());//鐩爣妤煎眰
+                int recentValue = 99999;//鏈�灏忓樊鍊�
+                for (NyShuttleThread shuttleThread : diffLev) {
+                    //褰撳墠绌挎杞﹀簱浣嶅彿
+                    String currentLocNo = shuttleThread.getShuttleProtocol().getCurrentLocNo();
+                    int currentLev = Utils.getLev(currentLocNo);
+                    List<WrkMast> wrkMasts1 = wrkMastService.selectNoShuttleWrkByLev(currentLev);//鍒ゆ柇褰撳墠绌挎杞︽ゼ灞傛槸鍚︽湁寰呭垎閰嶈溅杈嗙殑浠诲姟锛屽鏋滄湁鍒欎笉鍒嗛厤杩欒締杞�
+                    if (wrkMasts1.size() > 0) {
+                        //瀛樺湪鍏朵粬浠诲姟锛岃烦杩囪繖杈嗚溅
+                        continue;
+                    }
 
-                Integer currentAllDistance = NavigateUtils.getOriginPathAllDistance(currentShuttlePath);//璁$畻褰撳墠璺緞琛岃蛋鎬昏窛绂�
-                if (currentAllDistance < recentAllDistance) {
-                    //濡傛灉褰撳墠妤煎眰鐨勮溅璺緞鏇村皬锛屽垯鏇存柊鏈�杩戠┛姊溅
-                    recentShuttle = shuttleThread;
-                    recentAllDistance = currentAllDistance;
+                    //ABS(鐩爣妤煎眰 - 褰撳墠妤煎眰) 寰楀埌宸窛锛屽彇鏈�灏忓樊鍊�
+                    int currentValue = Math.abs(lev - currentLev);
+                    if (currentValue < recentValue) {
+                        //濡傛灉褰撳墠妤煎眰鐨勮溅璺緞鏇村皬锛屽垯鏇存柊鏈�杩戠┛姊溅
+                        recentShuttle = shuttleThread;
+                        recentValue = currentValue;
+                    }
                 }
             }
         }

--
Gitblit v1.9.1