From f63aa158cd182f1ab40fc475ca2944eacfc8705a Mon Sep 17 00:00:00 2001
From: 野心家 <1051256694@qq.com>
Date: 星期二, 03 十月 2023 08:47:56 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java |   69 +++++++++++++++++++++++-----------
 1 files changed, 47 insertions(+), 22 deletions(-)

diff --git a/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java b/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java
index f428467..138a943 100644
--- a/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java
+++ b/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java
@@ -14,6 +14,7 @@
 import com.zy.common.service.CommonService;
 import com.zy.core.News;
 import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.ShuttleChargeType;
 import com.zy.core.enums.SlaveType;
 import com.zy.core.model.LiftSlave;
 import com.zy.core.model.ShuttleSlave;
@@ -81,7 +82,13 @@
 
             if (currentLocNo.equals(locNo)) {
                 //杞﹁締褰撳墠浣嶇疆宸茬粡鏄洰鏍囧簱浣嶏紝璋冨害璇ヨ溅
-                shuttleMoveGenerate(wrkNo, locNo, shuttleProtocol.getShuttleNo().intValue());
+                //缁欏伐浣滄。缁戝畾灏忚溅鍙�
+                WrkMast wrkMast1 = wrkMastMapper.selectByWorkNo(wrkNo);
+                if (wrkMast1 != null) {
+                    wrkMast1.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());
+                    wrkMastMapper.updateById(wrkMast1);
+                    return true;
+                }
                 break;
             }
 
@@ -117,29 +124,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;
+                    }
                 }
             }
         }
@@ -188,7 +197,23 @@
         //鍒ゆ柇鏄惁鏈夊厖鐢典换鍔℃鍦ㄤ娇鐢ㄧ┛姊溅
         WrkCharge wrkCharge = wrkChargeMapper.selectWorking(shuttleNo);
         if (wrkCharge != null) {//灏忚溅瀛樺湪鍏呯數浠诲姟锛岀瓑寰呮墽琛屽畬鎴愬悗鍐嶇敓鎴愭柊鐨勪换鍔�
-            return false;
+            //鍒ゆ柇鐩爣鐐规槸鍚︿负鍏呯數妗╋紝濡傛灉鏄幓鍏呯數鍒欐斁琛�
+            boolean toCharge = false;//鍘诲厖鐢电洰鏍�
+            for (ShuttleChargeType chargeType : ShuttleChargeType.values()) {
+                if (chargeType.locNo.equals(locNo)) {
+                    toCharge = true;//鍘诲厖鐢垫々
+                    break;
+                }
+            }
+
+            if (wrkCharge.getWrkSts() == 53) {
+                toCharge = true;//鍏呯數缁撴潫锛屽厑璁哥敓鎴愮Щ搴撲换鍔�
+            }
+
+            if (!toCharge) {
+                //涓嶆槸鍘诲厖鐢垫々涓斿瓨鍦ㄥ厖鐢典换鍔★紝绂佹鐢熸垚鏂扮殑绉诲姩浠诲姟
+                return false;
+            }
         }
 
         Integer sourceStaNo = null;//灏忚溅鎹㈠眰婧愮珯鐐�

--
Gitblit v1.9.1