From 20468100e3b839a3117c6b59ffe2f3202d3c3e2c Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 19 五月 2025 20:14:58 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java |   29 +++++++-------
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateUtils.java          |   36 +++++++++++++++++
 2 files changed, 49 insertions(+), 16 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
index 6882508..e51f7c7 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
@@ -23,10 +23,7 @@
 import com.zy.asrs.wcs.core.model.command.LiftCommand;
 import com.zy.asrs.wcs.core.model.enums.*;
 import com.zy.asrs.wcs.core.service.*;
-import com.zy.asrs.wcs.core.utils.OpenUtils;
-import com.zy.asrs.wcs.core.utils.RedisUtil;
-import com.zy.asrs.wcs.core.utils.ShuttleDispatcher;
-import com.zy.asrs.wcs.core.utils.Utils;
+import com.zy.asrs.wcs.core.utils.*;
 import com.zy.asrs.wcs.rcs.News;
 import com.zy.asrs.wcs.rcs.cache.SlaveConnection;
 import com.zy.asrs.wcs.rcs.constant.DeviceRedisConstant;
@@ -95,6 +92,8 @@
     private OpenUtils openUtils;
     @Autowired
     private LiftAction liftAction;
+    @Autowired
+    private NavigateUtils navigateUtils;
 
     /**
      * 缁勬墭
@@ -779,10 +778,6 @@
      * 鍑哄簱 ====>> 鍚屼竴鏃堕棿涓�鍙扮┛姊溅鍙兘鏈変竴涓嚭搴撲换鍔�
      */
     public synchronized void analyzeOutBoundTask() {
-        List<Task> moveTask = taskService.selectWaitAnalyzeMoveTask();
-        if (!moveTask.isEmpty()) {
-            return;
-        }
         List<Task> tasks = taskService.selectPakOut();
         if (tasks.isEmpty()) {
             return;
@@ -815,13 +810,11 @@
 //                    continue;
 //                }
 
-//                //鍚屽簱浣嶇粍鏍¢獙
-//                List<String> outerLoc = Utils.getGroupOuterLoc(wrkMast.getSourceLocNo());
-//                List<LocMast> outerLocMasts = locMastService.selectNotEmptyLocNos(outerLoc);
-//                if (!outerLocMasts.isEmpty()) {
-//                    News.info("{}浠诲姟锛屾祬搴撲綅瀛樺湪璐х墿锛岀郴缁熺瓑寰呬腑", wrkMast.getWrkNo());
-//                    continue;//娴呭簱浣嶅瓨鍦ㄦ湭鎵ц浠诲姟
-//                }
+                //妫�娴嬭揣鐗╂槸鍚﹀彲鍑�
+                boolean checkLocPathIsAvailable = navigateUtils.checkLocPathIsAvailable(task.getDestLoc(), task.getHostId());
+                if(!checkLocPathIsAvailable) {
+                    continue;
+                }
 
                 if (Cools.isEmpty(task.getShuttleNo()) || task.getShuttleNo() ==0) {
                     //鍒嗛厤灏忚溅
@@ -1312,6 +1305,12 @@
     // 瑙f瀽灏忚溅杞借揣绉诲姩宸ヤ綔妗�
     public synchronized void analyzeLadenMoveTask() {
         for (Task task : taskService.selectWaitAnalyzeLadenMoveTask()) {
+            //妫�娴嬭揣鐗╂槸鍚﹀彲鍑�
+            boolean checkLocPathIsAvailable = navigateUtils.checkLocPathIsAvailable(task.getDestLoc(), task.getHostId());
+            if(!checkLocPathIsAvailable) {
+                continue;
+            }
+
             if (Cools.isEmpty(task.getShuttleNo())) {
                 //鍒嗛厤灏忚溅
                 //鎼滅储绌洪棽杞�
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateUtils.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateUtils.java
index 4d998c0..a79de4f 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateUtils.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateUtils.java
@@ -2,13 +2,19 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.zy.asrs.framework.common.SpringUtils;
+import com.zy.asrs.wcs.core.entity.ShuttleStandby;
 import com.zy.asrs.wcs.core.model.MapNode;
 import com.zy.asrs.wcs.core.model.NavigateNode;
 import com.zy.asrs.wcs.core.model.PythonSimilarityResult;
 import com.zy.asrs.wcs.core.model.enums.MapNodeType;
 import com.zy.asrs.wcs.core.model.enums.NavigationMapType;
+import com.zy.asrs.wcs.core.service.ShuttleStandbyService;
 import com.zy.asrs.wcs.rcs.News;
+import com.zy.asrs.wcs.rcs.entity.Device;
+import com.zy.asrs.wcs.rcs.thread.LiftThread;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
@@ -26,9 +32,12 @@
 
     @Value("${pythonCalcPath}")
     private String pythonCalcPath;
-
     @Value("${pythonCalcSimilarity}")
     private String pythonCalcSimilarity;
+    @Autowired
+    private LiftDispatcher liftDispatcher;
+    @Autowired
+    private ShuttleStandbyService shuttleStandbyService;
 
     public List<NavigateNode> calcWhiteList(String startPoint, String endPoint, Integer mapType, List<int[]> shuttlePoints) {
         //閫氳繃寮�濮嬬紪鍙峰拰缁撴潫缂栧彿鑾峰彇瀵瑰簲鐨剎y杞村潗鏍�
@@ -418,6 +427,31 @@
         return 0D;
     }
 
+    //妫�娴嬪簱浣嶈矾寰勬槸鍚﹀彲鐢�(鐢ㄤ簬搴撲綅鏄惁鍙Щ鍔ㄦ娴�)
+    public boolean checkLocPathIsAvailable(String startLocNo, Long hostId) {
+        //鑾峰彇璺濈鐩爣浣嶇疆鏈�杩戠殑鍙崲灞傛彁鍗囨満(鍙兘涓嶇┖闂�)
+        LiftThread liftThread = liftDispatcher.searchLift(startLocNo, hostId, true);
+        if (liftThread == null) {
+            return false;
+        }
+        Device transferLiftDevice = liftThread.getDevice();
+
+        ShuttleStandby shuttleStandbyTo = shuttleStandbyService.getOne(new LambdaQueryWrapper<ShuttleStandby>()
+                .eq(ShuttleStandby::getDeviceId, transferLiftDevice.getId())
+                .eq(ShuttleStandby::getDeviceLev, Utils.getLev(startLocNo))
+                .eq(ShuttleStandby::getStatus, 1));
+
+        //鎻愬崌鏈哄簱浣嶅彿
+        String liftLocNo = shuttleStandbyTo.getDeviceLoc();
+
+        //璁$畻搴撲綅鍒版彁鍗囨満搴撲綅锛岃矾寰勬槸鍚﹀彲鐢�
+        List<NavigateNode> nodeList = this.calc(startLocNo, liftLocNo, NavigationMapType.DFX.id, null);
+        if (nodeList == null) {
+            return false;
+        }
+        return true;
+    }
+
     public static void main(String[] args) {
 //        //璁$畻璺緞
 //        List<NavigateNode> calc = calc("1000901", "1800201", NavigationMapType.NONE.id, null);

--
Gitblit v1.9.1