From ff9ae5d1f76bb0dfde67fc2bc1141ce61f704692 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期二, 15 四月 2025 12:45:07 +0800
Subject: [PATCH] 1

---
 src/main/java/com/zy/asrs/service/impl/NoLiftInServiceImpl.java |   99 ++++++++++++++++++++++++++++++++++---------------
 1 files changed, 69 insertions(+), 30 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/NoLiftInServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/NoLiftInServiceImpl.java
index 00e2be6..863ba5a 100644
--- a/src/main/java/com/zy/asrs/service/impl/NoLiftInServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/NoLiftInServiceImpl.java
@@ -24,6 +24,8 @@
 import com.zy.core.model.command.ShuttleCommand;
 import com.zy.core.model.protocol.LiftProtocol;
 import com.zy.core.model.protocol.ShuttleProtocol;
+import com.zy.core.model.protocol.StaProtocol;
+import com.zy.core.thread.DevpThread;
 import com.zy.core.thread.LiftThread;
 import com.zy.core.thread.ShuttleThread;
 import lombok.extern.slf4j.Slf4j;
@@ -117,7 +119,7 @@
     private boolean shuttleMoveExecuteTransportLiftStepCallShuttle(WrkMast wrkMast) {
         Date now = new Date();
         //灏忚溅绉诲姩鑷崇珯鐐�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 鍛煎彨灏忚溅鑷冲彇璐х偣
-        if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) {
+        if (wrkMast != null && wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) {
             //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
             ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
             if (shuttleThread == null) {
@@ -127,7 +129,22 @@
             if (shuttleProtocol == null) {
                 return false;
             }
-
+            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+            if (devpThread == null) {
+                return false;
+            }
+            StaProtocol staProtocol = devpThread.getStation().get(Utils.getLev(wrkMast.getSourceLocNo()) == 1 ? 1015 : 1026);
+            if (!staProtocol.isLoading() || !staProtocol.isAutoing()) {
+                log.info("{}浠诲姟锛寋}鍙疯緭閫佺嚎鏃犵墿", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙疯緭閫佺嚎鏃犵墿", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
+                return false;
+            }
+            //TODO
+//            if (!staProtocol.getFinishWorkNo().equals(wrkMast.getWrkNo())) {
+//                            log.info( "{}浠诲姟锛寋}鍙疯緭閫佺嚎鐨勫伐浣滃彿鍜屽伐浣滄。涓嶅尮閰�", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
+//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙疯緭閫佺嚎鐨勫伐浣滃彿鍜屽伐浣滄。涓嶅尮閰�", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
+//                return false;
+//            }
             //灏忚溅澶勪簬绌洪棽鐘舵��
             if (!shuttleThread.isIdle()) {
                 News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
@@ -169,7 +186,7 @@
         Date now = new Date();
 
         //灏忚溅绉诲姩鑷崇珯鐐�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐逛腑
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_LIFT_2.sts) {
+        if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_LIFT_1.sts) {
             //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
             ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
             if (shuttleThread == null) {
@@ -185,7 +202,9 @@
                 News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
                 return false;
             }
-
+            if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) {
+                return false;
+            }
 
             //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満
             LiftThread liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
@@ -212,15 +231,14 @@
             List<ShuttleCommand> commands = new ArrayList<>();
             Integer mapType = NavigationMapType.NORMAL.id;
 
-            if (!liftStandByLocNo.equals(wrkMast.getSourceLocNo())) {
-                //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満浣嶈璧板懡浠�
-                List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, mapType, assignCommand, shuttleThread);
-                if (moveCommands == null) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
-                    return false;//璺緞瑙i攣澶辫触
-                }
-                commands.addAll(moveCommands);
+
+            //鑾峰彇灏忚溅鍒版彁鍗囨満寰呮満浣嶈璧板懡浠�
+            List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftStandByLocNo, mapType, assignCommand, shuttleThread);
+            if (moveCommands == null) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
+                return false;//璺緞瑙i攣澶辫触
             }
+            commands.addAll(moveCommands);
 
             List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true);
             if (liftCommand == null) {
@@ -287,10 +305,12 @@
                 }
 
                 //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
-                WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo());
+                WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(liftProtocol.getLiftNo(),wrkMast.getWrkNo(),wrkMast.getMainWrkNo());
                 if (liftWrkMast != null) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                    return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+                    if (liftWrkMast != null && !wrkMast.getMainWrkNo().equals(liftWrkMast.getWrkNo())) {
+                        News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
+                        return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+                    }
                 }
 
                 wrkMast.setModiTime(now);
@@ -313,7 +333,7 @@
             }
 
             //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(liftProtocol.getLiftNo(),wrkMast.getWrkNo(),wrkMast.getMainWrkNo());
             if (liftWrkMast != null) {
                 if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
                     News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
@@ -332,11 +352,6 @@
                 return false;//鎻愬崌鏈哄唴鏃犲皬杞�
             }
 
-            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
-            if (!liftProtocol.getHasTray()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-            }
 
             //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
             if (liftProtocol.getLev() == Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
@@ -424,7 +439,7 @@
             }
 
             //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(liftProtocol.getLiftNo(),wrkMast.getWrkNo(),wrkMast.getMainWrkNo());
             if (liftWrkMast != null) {
                 if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
                     News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
@@ -449,17 +464,21 @@
                 return false;//鎻愬崌鏈哄唴鏃犲皬杞�
             }
 
-            //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩�
-            if (!liftProtocol.getHasTray()) {
-                News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
-                return false;//鎻愬崌鏈哄唴鏃犲皬杞�
-            }
 
             //鍒ゆ柇鎻愬崌鏈烘ゼ灞�
             if (liftProtocol.getLev() != Utils.getLev(shuttleProtocol.getCurrentLocNo())) {
                 //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞�
                 News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満涓庡皬杞︿笉鍦ㄥ悓涓�灞傦紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
                 return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰
+            }
+
+            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+            WrkMast w = wrkMastService.selectLiftWrkMast(1);
+            if (w != null) {
+                if (!w.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
+                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鍒殑缁戝畾浠诲姟ru锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), 1);
+                    return false;
+                }
             }
 
             ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
@@ -479,6 +498,7 @@
 
             wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_LIFT_7.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  鎻愬崌鏈鸿嚦灏忚溅灞傚畬鎴� ==> 灏忚溅杩佸叆鎻愬崌鏈轰腑
             wrkMast.setModiTime(now);
+            wrkMast.setLiftNo(1);
             if (wrkMastService.updateById(wrkMast)) {
                 //涓嬪彂浠诲姟
                 shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
@@ -521,7 +541,7 @@
             }
 
             //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(liftProtocol.getLiftNo(),wrkMast.getWrkNo(),wrkMast.getMainWrkNo());
             if (liftWrkMast != null) {
                 if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
                     News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
@@ -612,7 +632,7 @@
             }
 
             //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
+            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(1,wrkMast.getWrkNo(),wrkMast.getMainWrkNo());
             if (liftWrkMast != null) {
                 if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
                     News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
@@ -793,7 +813,7 @@
         Date now = new Date();
 
         //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑  309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓�
-        if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_LIFT_1.sts) {
+        if (wrkMast != null && wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_LIFT_1.sts) {
 
 
             //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
@@ -811,7 +831,26 @@
                 News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
                 return false;
             }
+            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+            if (devpThread == null) {
+                return false;
+            }
+            StaProtocol staProtocol = devpThread.getStation().get(Utils.getLev(wrkMast.getSourceLocNo()) == 1 ? 1015 : 1026);
+            if (!staProtocol.isLoading()) {
+                log.error("{}浠诲姟锛寋}鍙疯緭閫佺嚎鏃犵墿", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙疯緭閫佺嚎鏃犵墿", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
+                return false;
+            }
+            //TODO
+//            if (!staProtocol.getFinishWorkNo().equals(wrkMast.getWrkNo())) {
+//                log.error("{}浠诲姟锛寋}鍙疯緭閫佺嚎鐨勫伐浣滃彿鍜屽伐浣滄。涓嶅尮閰�", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
+//                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙疯緭閫佺嚎鐨勫伐浣滃彿鍜屽伐浣滄。涓嶅尮閰�", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
+//                return false;
+//            }
 
+            if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) {
+                return false;
+            }
 
             ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
             assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙�

--
Gitblit v1.9.1