From f53a21bd8bf2dec64175ea833d05bc8b49b9a8e6 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期四, 17 四月 2025 15:33:42 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  127 +++++++++++++++++++++--------------------
 1 files changed, 65 insertions(+), 62 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 8e967d5..6699984 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -120,6 +120,7 @@
                     ));
             for (WrkMast wrkMast : wrkMasts) {
                 boolean step1 = this.shuttleInExecuteStep1(wrkMast);//灏忚溅鎼叆搴撲腑
+                Thread.sleep(100);
                 if (!step1) {
                     continue;
                 }
@@ -134,7 +135,7 @@
      * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
      * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
      */
-    public boolean shuttleInExecuteStep1(WrkMast wrkMast) {
+    public synchronized boolean shuttleInExecuteStep1(WrkMast wrkMast) {
         if (wrkMast.getWrkSts() == WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts) {
             //鑾峰彇鐩爣绔�
             ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
@@ -233,6 +234,7 @@
                     ));
             for (WrkMast wrkMast : wrkMasts) {
                 boolean step1 = this.shuttleOutExecuteStep1(wrkMast);//灏忚溅鎼嚭搴撲腑
+                Thread.sleep(100);
                 if (!step1) {
                     continue;
                 }
@@ -247,7 +249,7 @@
      * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
      * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
      */
-    public boolean shuttleOutExecuteStep1(WrkMast wrkMast) {
+    public synchronized boolean shuttleOutExecuteStep1(WrkMast wrkMast) {
         //101.鐢熸垚鍑哄簱浠诲姟 => 102.灏忚溅鎼繍涓�
         if (wrkMast.getWrkSts() == WrkStsType.NEW_OUTBOUND.sts) {
             Integer liftNo = wrkMast.getLiftNo();
@@ -271,7 +273,6 @@
                 wrkMast.setLiftNo(liftNo);
                 wrkMast.setModiTime(new Date());
                 wrkMastService.updateById(wrkMast);
-                return false;
             }
 
             ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
@@ -593,59 +594,6 @@
             }
 
             for (WrkMast wrkMast : wrkMasts) {
-                Integer liftNo = wrkMast.getLiftNo();
-                if (liftNo == null) {
-                    //鏈垎閰嶆彁鍗囨満
-                    Integer staNo = wrkMast.getIoType() == WrkIoType.IN.id ? wrkMast.getSourceStaNo() : wrkMast.getStaNo();
-                    liftNo = ForkLiftUtils.getConveyorBindLiftNo(staNo);
-                    if(liftNo == null) {
-                        News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
-                        continue;
-                    }
-
-                    ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-                    if (forkLiftThread == null) {
-                        continue;
-                    }
-                    ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-                    if (forkLiftProtocol == null) {
-                        continue;
-                    }
-
-                    if (!forkLiftThread.isIdle()) {
-                        News.info("{}鍙锋彁鍗囨満锛屽繖纰屼腑", liftNo);
-                        continue;
-                    }
-
-                    //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
-                    WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
-                    if (liftWrkMast != null) {
-                        if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚�
-                            News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo());
-                            continue;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
-                        }
-                    }
-
-                    wrkMast.setLiftNo(liftNo);
-                    wrkMast.setModiTime(new Date());
-                    wrkMastService.updateById(wrkMast);
-                    continue;
-                }
-
-                ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
-                if (forkLiftThread == null) {
-                    continue;
-                }
-                ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus();
-                if (forkLiftProtocol == null) {
-                    continue;
-                }
-
-                if (!forkLiftThread.isIdle()) {
-                    News.info("{}鍙锋彁鍗囨満锛屽繖纰屼腑", liftNo);
-                    continue;
-                }
-
                 boolean stepIn = this.liftIoExecuteStepIn(wrkMast);//鎻愬崌鏈哄叆搴�
                 if (!stepIn) {
                     continue;
@@ -688,7 +636,18 @@
                 return false;
             }
 
-            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftSta.getLiftNo());
+            Integer liftNo = wrkMast.getLiftNo();
+            if (liftNo == null) {
+                //鏈垎閰嶆彁鍗囨満
+                Integer staNo = wrkMast.getSourceStaNo();
+                liftNo = ForkLiftUtils.getConveyorBindLiftNo(staNo);
+                if(liftNo == null) {
+                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
+                    return false;
+                }
+            }
+
+            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
             if (forkLiftThread == null) {
                 return false;
             }
@@ -754,11 +713,12 @@
             //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
             LiftAssignCommand assignCommand = new LiftAssignCommand();
             assignCommand.setCommands(commands);
-            assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
+            assignCommand.setLiftNo(liftNo.shortValue());
             assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
             assignCommand.setTaskMode(ForkLiftTaskModeType.PICK_PUT.id.shortValue());
 
             wrkMast.setWrkSts(WrkStsType.INBOUND_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑  1.鐢熸垚鍏ュ簱浠诲姟 ==> 3.鎻愬崌鏈烘惉杩愪腑
+            wrkMast.setLiftNo(liftNo);
             wrkMast.setSystemMsg("");//娓呯┖娑堟伅
             wrkMast.setModiTime(now);
             if (wrkMastService.updateById(wrkMast)) {
@@ -821,7 +781,18 @@
                 return false;
             }
 
-            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftSta.getLiftNo());
+            Integer liftNo = wrkMast.getLiftNo();
+            if (liftNo == null) {
+                //鏈垎閰嶆彁鍗囨満
+                Integer staNo = wrkMast.getStaNo();
+                liftNo = ForkLiftUtils.getConveyorBindLiftNo(staNo);
+                if(liftNo == null) {
+                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo());
+                    return false;
+                }
+            }
+
+            ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo);
             if (forkLiftThread == null) {
                 return false;
             }
@@ -864,11 +835,12 @@
             //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
             LiftAssignCommand assignCommand = new LiftAssignCommand();
             assignCommand.setCommands(commands);
-            assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue());
+            assignCommand.setLiftNo(liftNo.shortValue());
             assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
             assignCommand.setTaskMode(ForkLiftTaskModeType.PICK_PUT.id.shortValue());
 
             wrkMast.setWrkSts(WrkStsType.OUTBOUND_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑  103.鐢熸垚鍏ュ簱浠诲姟 ==> 104.鎻愬崌鏈烘惉杩愪腑
+            wrkMast.setLiftNo(liftNo);
             wrkMast.setShuttleNo(null);//閲婃斁灏忚溅
             wrkMast.setSystemMsg("");//娓呯┖娑堟伅
             wrkMast.setModiTime(new Date());
@@ -911,12 +883,12 @@
                             wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts);
                             wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
                             forkLiftThread.setSyncTaskNo(0);
+                            redisUtil.set(RedisKeyType.FORK_LIFT_PUT_COMPLETE.key + forkLiftProtocol.getLiftNo(), wrkMast.getWmsWrkNo(), 60 * 3);
                         } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_RUN.sts) {
                             //306.鎻愬崌鏈烘惉杩愪腑 ==> 307.鎻愬崌鏈烘惉杩愬畬鎴�
                             wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN_COMPLETE.sts);
                             forkLiftThread.setSyncTaskNo(0);
                         }
-
                         wrkMast.setModiTime(new Date());
                         if (wrkMastService.updateById(wrkMast)) {
                             forkLiftThread.reset();
@@ -1483,6 +1455,32 @@
                 return false;//鎵句笉鍒扮珯鐐�
             }
 
+            if (liftSta.getHasTray()) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾簮绔欏瓨鍦ㄦ墭鐩�", wrkMast.getWrkNo());
+                return false;
+            }
+
+            if (liftSta.getHasCar()) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾簮绔欏瓨鍦ㄥ皬杞�", wrkMast.getWrkNo());
+                return false;
+            }
+
+            //鑾峰彇鐩爣杈撻�佺珯
+            ForkLiftStaProtocol liftStaTarget = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
+            if (liftStaTarget == null) {
+                return false;//鎵句笉鍒扮珯鐐�
+            }
+
+            if (liftStaTarget.getHasTray()) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪鎵樼洏", wrkMast.getWrkNo());
+                return false;
+            }
+
+            if (liftStaTarget.getHasCar()) {
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪灏忚溅", wrkMast.getWrkNo());
+                return false;
+            }
+
             if (wrkMast.getLiftNo() == null) {
                 //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
                 WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftSta.getLiftNo());
@@ -1774,9 +1772,14 @@
                 continue;
             }
 
+            List<Integer> liftAllStaNo = ForkLiftUtils.getLiftAllStaNo(liftNo);
+            if (liftAllStaNo.isEmpty()) {
+                continue;
+            }
+
             //鑾峰彇鍏ュ簱浠诲姟
             List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
-                    .eq("lift_no", liftNo)
+                    .in("sta_no", liftAllStaNo)
                     .in("wrk_sts"
                             , WrkStsType.NEW_INBOUND.sts
                             , WrkStsType.INBOUND_DEVICE_RUN.sts

--
Gitblit v1.9.1