From a4996f162b0ca63113f573e315e3ce4f5dce7ad3 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期三, 05 六月 2024 15:39:37 +0800
Subject: [PATCH] #算法优化

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java |   46 +++++++++++++++++++++++++++++++---------------
 1 files changed, 31 insertions(+), 15 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java
index fc14bc2..1f1c557 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java
@@ -391,10 +391,28 @@
                 return;
             }
 
+            //鍒ゆ柇x杞磋揣浣嶆槸鍚︽斁婊�
+            boolean flag = true;
+            for (Loc loc : locService.list(new LambdaQueryWrapper<Loc>()
+                    .eq(Loc::getHostId, device.getHostId())
+                    .eq(Loc::getRow, xCurrent)
+                    .ge(Loc::getBay, shuttleProtocol.getYStart())
+                    .le(Loc::getBay, shuttleProtocol.getYTarget()))) {
+                if (loc.getLocSts() != LocStsType.F.val()) {
+                    flag = false;//鏈弧
+                    break;
+                }
+            }
+            if (flag) {
+                shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1);
+                return;
+            }
+
             //鎼滅储鏈夎揣搴撲綅
             List<Loc> list = locService.list(new LambdaQueryWrapper<Loc>()
                     .eq(Loc::getLocSts, LocStsType.F.val())
                     .eq(Loc::getHostId, device.getHostId())
+                    .notIn(Loc::getRow, xCurrent)
                     .eq(Loc::getStatus, 1));
             if (list.isEmpty()) {
                 return;
@@ -402,30 +420,28 @@
 
             Loc start = list.get(0);
 
-            Integer yCurrent = shuttleProtocol.getYCurrent();
-            String locNo = Utils.getLocNo(xCurrent, yCurrent, lev);
-            Loc target = locService.getOne(new LambdaQueryWrapper<Loc>()
-                    .eq(Loc::getLocNo, locNo)
+            List<Loc> locList = locService.list(new LambdaQueryWrapper<Loc>()
                     .eq(Loc::getHostId, device.getHostId())
-                    .eq(Loc::getStatus, 1));
-            if (target == null) {
-                shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1);
+                    .eq(Loc::getStatus, 1)
+                    .eq(Loc::getLocSts, LocStsType.O.val())
+                    .eq(Loc::getRow, xCurrent)
+                    .orderByDesc(Loc::getBay)
+                    .orderByAsc(Loc::getRow));
+            if (locList.isEmpty()) {
                 return;
             }
 
-            if (target.getLocSts() != LocStsType.O.val()) {
-                shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1);
+            Loc target = locList.get(0);
+            if (target == null) {
                 return;
             }
 
             //璋冨害鍘荤洰鏍囦綅缃�
-            if (shuttleProtocol.getCurrentLocNo().equals(target.getLocNo())) {
-                shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1);//灏忚溅鍜岀洰鏍囦綅缃竴鑷达紝璺宠繃
-            } else {
+            if (!shuttleProtocol.getCurrentLocNo().equals(target.getLocNo())) {
                 Task task = shuttleDispatcher.generateManuaTakeMoveTask(device, start.getLocNo(), target.getLocNo());
-                if(task != null) {//璋冨害鎴愬姛
-                    shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1);
-                }
+//                if(task != null) {//璋冨害鎴愬姛
+//                    shuttleProtocol.setXCurrent(shuttleProtocol.getXCurrent() + 1);
+//                }
             }
         }
     }

--
Gitblit v1.9.1