From 6495eba615cba5efba0a208e7105bce933948a53 Mon Sep 17 00:00:00 2001
From: qlsxk <qlsxk@qq.com>
Date: 星期日, 28 九月 2025 08:33:55 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   41 ++++++++++++++++++++++++++++++-----------
 1 files changed, 30 insertions(+), 11 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 2c1ed7d..24d2bb0 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -196,9 +196,11 @@
             assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
             assignCommand.setTaskMode(ShuttleTaskModeType.TRANSPORT.id);//灏忚溅绉诲簱浠诲姟
             assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
+            assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
             assignCommand.setAuto(true);//鑷姩妯″紡
 
-            //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠�
+            //鑾峰彇灏忚溅鍒扮洰鏍囧簱浣嶅懡浠�
             List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(liftSta.getLocNo(), wrkMast.getLocNo(), NavigationMapType.getDfxWithDevice(), assignCommand, shuttleThread);
             if (commands == null) {
                 News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
@@ -400,6 +402,8 @@
             assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
             assignCommand.setTaskMode(ShuttleTaskModeType.TRANSPORT.id);//灏忚溅绉诲簱浠诲姟
             assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
+            assignCommand.setLocNo(liftSta.getLocNo());//鐩爣搴撲綅
             assignCommand.setAuto(true);//鑷姩妯″紡
 
             //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠�
@@ -535,8 +539,9 @@
             assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�
             assignCommand.setTaskMode(ShuttleTaskModeType.TRANSPORT.id);//灏忚溅绉诲簱浠诲姟
             assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
+            assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�
+            assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅
             assignCommand.setAuto(true);//鑷姩妯″紡
-            assignCommand.setLocNo(wrkMast.getLocNo());
 
             //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠�
             List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(wrkMast.getSourceLocNo(), wrkMast.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.DFX), assignCommand, shuttleThread);
@@ -615,6 +620,17 @@
 
         //1.鐢熸垚鍏ュ簱浠诲姟 ==> 3.鎻愬崌鏈烘惉杩愪腑
         if (wrkMast.getWrkSts() == WrkStsType.NEW_INBOUND.sts) {
+            //鑾峰彇婧愯緭閫佺珯
+            LiftStaProtocol sourceLiftSta = LiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo());
+            if (sourceLiftSta == null) {
+                return false;//鎵句笉鍒扮珯鐐�
+            }
+
+            if (!sourceLiftSta.getHasTray()) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾簮绔欐棤鎵樼洏", wrkMast.getWrkNo());
+                return false;
+            }
+
             //鑾峰彇鐩爣杈撻�佺珯
             LiftStaProtocol liftSta = LiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
             if (liftSta == null) {
@@ -633,17 +649,16 @@
                     return false;
                 }
 
-                //鑾峰彇灏忚溅寰呮満浣�
-                String standbyLocNo = Utils.getShuttleStandbyLocNo(liftSta.getLocNo());
-                if (standbyLocNo == null) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃幏鍙栧皬杞﹀緟鏈轰綅澶辫触", wrkMast.getWrkNo());
+                String targetLocNo = navigateUtils.calcEndLocation(wrkMast.getLocNo(), liftSta.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), null, null, 2);
+                if (targetLocNo == null) {//鍑鸿緭閫佺嚎绔欑偣璁$畻澶辫触
+                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃皟搴﹀皬杞﹀幓鍏ュ簱灞傝繎鐐硅绠楀け璐�", wrkMast.getWrkNo());
                     return false;
                 }
 
                 //璋冨害灏忚溅鍘诲緟鏈轰綅
-                boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), standbyLocNo);
+                boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), targetLocNo);
                 if (!dispatchShuttle) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo());
+                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃皟搴﹀皬杞﹀幓鍏ュ簱灞傚け璐�", wrkMast.getWrkNo());
                     return false;
                 }
                 return false;
@@ -825,7 +840,7 @@
             }
 
             //鑾峰彇鎻愬崌鏈哄懡浠�
-            LiftCommand liftCommand = liftThread.getPickAndPutCommand(wrkMast.getWrkNo(), liftSta.getLev(), wrkMast.getStaNo());
+            LiftCommand liftCommand = liftThread.getPickAndPutCommand(wrkMast.getWrkNo(), liftSta.getSiteId(), wrkMast.getStaNo());
             ArrayList<LiftCommand> commands = new ArrayList<>();
             commands.add(liftCommand);
 
@@ -864,6 +879,10 @@
                 }
                 LiftProtocol liftProtocol = liftThread.getStatus();
                 if (liftProtocol == null) {
+                    continue;
+                }
+
+                if (!liftThread.isDeviceIdle()) {
                     continue;
                 }
 
@@ -1764,8 +1783,8 @@
                 return false;//缂哄皯绔欑偣淇℃伅
             }
 
-            if (liftSta.getHasTray()) {
-                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo());
+            if (liftSta.getHasCar()) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo());
                 return false;//鏈夋墭鐩樿烦杩�
             }
 

--
Gitblit v1.9.1