From b6428016edf3de843020bc95fd1708d3bb1961e5 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 07 七月 2025 16:41:51 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   92 +++++++++++++++++++++++++++++++++------------
 1 files changed, 67 insertions(+), 25 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 e6ccc5e..93ba72d 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -309,6 +309,23 @@
                 return false;
             }
 
+            List<WrkMast> shuttleMoveList = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+                    .eq("io_type", 200)
+            );
+            for (WrkMast moveWrkMast : shuttleMoveList) {
+                if(Utils.getLev(moveWrkMast.getLocNo()) != Utils.getLev(wrkMast.getSourceLocNo())) {
+                    continue;
+                }
+
+                if(Utils.getLev(moveWrkMast.getLocNo()) == Utils.getLev(moveWrkMast.getSourceLocNo())) {
+                    continue;
+                }
+
+                //瀛樺湪鎹㈠眰浠诲姟锛屽嚭搴撲换鍔℃殏鏃朵笉鎵ц
+                News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽瓨鍦ㄦ崲灞備换鍔★紝鍑哄簱浠诲姟绛夊緟涓�", wrkMast.getWrkNo());
+                return false;
+            }
+
             boolean checkLocPathIsAvailable = navigateUtils.checkLocPathIsAvailable(wrkMast.getSourceLocNo(), liftSta.getLocNo());
             if(!checkLocPathIsAvailable) {
                 News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭璁$畻鍒板彲鎵ц璺緞锛岀瓑寰呬腑", wrkMast.getWrkNo());
@@ -676,6 +693,29 @@
                 return false;
             }
 
+            //妫�娴嬫ゼ灞傛槸鍚︽湁鍙敤绌挎杞�
+            boolean checkLevHasShuttle = Utils.checkLevHasShuttle(liftSta.getLev());
+            if (!checkLevHasShuttle) {
+                if (wrkMast.getShuttleNo() != null) {
+                    return false;
+                }
+
+                //鑾峰彇灏忚溅寰呮満浣�
+                String standbyLocNo = Utils.getShuttleStandbyLocNo(liftSta.getLocNo());
+                if (standbyLocNo == null) {
+                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃幏鍙栧皬杞﹀緟鏈轰綅澶辫触", wrkMast.getWrkNo());
+                    return false;
+                }
+
+                //璋冨害灏忚溅鍘诲緟鏈轰綅
+                boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), standbyLocNo);
+                if (!dispatchShuttle) {
+                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo());
+                    return false;
+                }
+                return false;
+            }
+
             Integer liftNo = wrkMast.getLiftNo();
             if (liftNo == null) {
                 //鏈垎閰嶆彁鍗囨満
@@ -711,29 +751,6 @@
             //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庡叆搴撴ā寮�
             if (!forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.IN)) {
                 News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾彁鍗囨満涓嶅浜庡叆搴撴ā寮忥紝绂佹鍏ュ簱", wrkMast.getWrkNo());
-                return false;
-            }
-
-            //妫�娴嬫ゼ灞傛槸鍚︽湁鍙敤绌挎杞�
-            boolean checkLevHasShuttle = Utils.checkLevHasShuttle(liftSta.getLev());
-            if (!checkLevHasShuttle) {
-                if (wrkMast.getShuttleNo() != null) {
-                    return false;
-                }
-
-                //鑾峰彇灏忚溅寰呮満浣�
-                String standbyLocNo = Utils.getShuttleStandbyLocNo(liftSta.getLocNo());
-                if (standbyLocNo == null) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃幏鍙栧皬杞﹀緟鏈轰綅澶辫触", wrkMast.getWrkNo());
-                    return false;
-                }
-
-                //璋冨害灏忚溅鍘诲緟鏈轰綅
-                boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), standbyLocNo);
-                if (!dispatchShuttle) {
-                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo());
-                    return false;
-                }
                 return false;
             }
 
@@ -1343,7 +1360,7 @@
             ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
             assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
             assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id);//鍑哄簱妯″紡
+            assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE_ON.id);//鍏呯數寮�
             assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
 
             List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, true);
@@ -1384,7 +1401,7 @@
             ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
             assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿
             assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙�
-            assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id);//鍑哄簱妯″紡
+            assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE_OFF.id);//鍏呯數鍏�
             assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
 
             List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, false);
@@ -1561,6 +1578,15 @@
                 return false;
             }
 
+            //灏忚溅宸插湪杩戠偣浣嶇疆鏃犻渶鍓嶅線
+            if (shuttleProtocol.getCurrentLocNo().equals(endLocation)) {
+                wrkMast.setWrkSts(WrkStsType.MOVE_NEARBY_COMPLETE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓�  301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 303.灏忚溅绉诲姩鑷宠繎鐐瑰畬鎴�
+                wrkMast.setModiTime(now);
+                wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+                wrkMastService.updateById(wrkMast);
+                return true;
+            }
+
             //鑾峰彇灏忚溅鍒拌繎鐐硅璧板懡浠�
             List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), endLocation, NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
             if (commands == null) {
@@ -1644,6 +1670,22 @@
                 return false;
             }
 
+            List<WrkMast> outWrkMastList = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+                    .eq("io_type", 101)
+                    .in("wrk_sts"
+                            , WrkStsType.OUTBOUND_SHUTTLE_RUN.sts
+                            , WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts
+                            , WrkStsType.OUTBOUND_LIFT_RUN.sts
+                            , WrkStsType.OUTBOUND_LIFT_RUN_COMPLETE.sts
+                    )
+            );
+            for (WrkMast outWrkMast : outWrkMastList) {
+                if(Utils.getLev(outWrkMast.getSourceLocNo()) == Utils.getLev(wrkMast.getLocNo())) {
+                    News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽瓨鍦ㄦ鍦ㄦ墽琛岀殑灏忚溅鍑哄簱浠诲姟锛岀姝㈢Щ鍔ㄨ嚦绔欑偣", wrkMast.getWrkNo());
+                    return false;
+                }
+            }
+
             if (wrkMast.getLiftNo() == null) {
                 //鐢宠鎻愬崌鏈鸿祫婧�(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
                 boolean applyForkLift = forkLiftAction.applyForkLift(liftSta.getLiftNo(), wrkMast.getWrkNo());

--
Gitblit v1.9.1