From e356cb699f91ff4359ef0e835fd311436489b9d8 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期三, 26 十月 2022 12:51:22 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   74 +++++++++++++++++++++++-------------
 1 files changed, 47 insertions(+), 27 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 f967540..c4be203 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.annotations.ManagerAuth;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
@@ -846,7 +847,7 @@
 
                     }
 
-                    // 鐩爣搴撲綅 ===>> 闈炴渶澶栧眰搴撲綅
+                // 鐩爣搴撲綅 ===>> 闈炴渶澶栧眰搴撲綅
                 } else {
                     // 鍒ゆ柇灏忚溅鏄惁鍦ㄥ綋鍓嶇粍搴撲綅锛屽鏋滄槸鍒欏皢绌挎杞︾Щ鑷虫渶澶栧眰锛岀瓑寰呭爢鍨涙満鏀捐揣锛涘鏋滀笉鏄紝鍒欏爢鍨涙満瀵绘壘绌挎杞︼紝骞舵斁缃綋鍓嶇粍鏈�澶栧眰
                     Integer steNo = this.hasCarOfIdle(wrkMast.getLocNo());
@@ -898,7 +899,7 @@
                                 }
                             }
                         }
-                        // 娌℃湁灏忚溅
+                    // 娌℃湁灏忚溅
                     } else {
                         if (wrkMast.getWrkSts() == 2L && wrkMast.getSteNo() == null) {
                             // 瀵绘壘褰撳墠鍫嗗灈鏈哄搴旂殑灏忚溅
@@ -1078,7 +1079,7 @@
                             }
                             return true;
                         }
-                        // 涓嶆槸鏈�澶栧眰搴撲綅锛岄渶瑕佷娇鐢ㄧ┛姊溅鎼繍鍚庯紝鍐嶅爢鍨涙満鍑哄簱
+                    // 涓嶆槸鏈�澶栧眰搴撲綅锛岄渶瑕佷娇鐢ㄧ┛姊溅鎼繍鍚庯紝鍐嶅爢鍨涙満鍑哄簱
                     } else {
                         // 褰撳墠缁勫簱浣嶆槸鍚︽湁绌挎杞�
                         Integer steNo = this.hasCarOfIdle(wrkMast.getSourceLocNo());
@@ -1098,7 +1099,7 @@
                                     steCommand.setTaskNo(wrkMast.getWrkNo()); // 宸ヤ綔鍙�
                                     steCommand.setTaskMode(SteTaskModeType.findOutByLoc(wrkMast.getSourceLocNo())); // 浠诲姟妯″紡:  鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙�
 
-                                    steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue());
+                                    steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), false).shortValue());
                                     steCommand.setBay(steProtocol.getBay());
                                     steCommand.setLev(steProtocol.getLev());
 
@@ -1129,7 +1130,7 @@
                                 crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
                                 crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
                                 crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                                crnCommand.setSourcePosX(Utils.getGroupRow(sourceSta.getRow1()).shortValue());     // 婧愬簱浣嶆帓
+                                crnCommand.setSourcePosX(Utils.getGroupRow(sourceSta.getRow1(), false).shortValue());     // 婧愬簱浣嶆帓
                                 crnCommand.setSourcePosY(sourceSta.getBay1().shortValue());     // 婧愬簱浣嶅垪
                                 crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue());     // 婧愬簱浣嶅眰
                                 crnCommand.setDestinationPosX(crnStn.getRow().shortValue());     // 鐩爣搴撲綅鎺�
@@ -1150,7 +1151,7 @@
                                 }
                             }
 
-                            // 娌℃湁灏忚溅
+                        // 娌℃湁灏忚溅
                         } else {
                             if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) {
                                 // 瀵绘壘鏈�杩戠殑灏忚溅
@@ -1257,7 +1258,9 @@
             SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId());
             SteProtocol steProtocol = steThread.getSteProtocol();
             if (steProtocol == null) { continue; }
-            if (Utils.getGroupRow(locNo).equals(Utils.getGroupRow(steProtocol.getRow().intValue())) && steProtocol.getBay() == Utils.getBay(locNo) && steProtocol.getLev() == Utils.getLev(locNo)) {
+            if (Utils.getGroupRow(locNo, true).equals(Utils.getGroupRow(steProtocol.getRow().intValue(), true))
+                    && steProtocol.getBay() == Utils.getBay(locNo)
+                    && steProtocol.getLev() == Utils.getLev(locNo)) {
                 return steProtocol.getSteNo().intValue();
             }
         }
@@ -1274,7 +1277,9 @@
             SteProtocol steProtocol = steThread.getSteProtocol();
             if (steProtocol == null) { continue; }
             if (steProtocol.isIdle()) {
-                if (Utils.getGroupRow(locNo).equals(Utils.getGroupRow(steProtocol.getRow().intValue())) && steProtocol.getBay() == Utils.getBay(locNo) && steProtocol.getLev() == Utils.getLev(locNo)) {
+                if (Utils.getGroupRow(locNo, true).equals(Utils.getGroupRow(steProtocol.getRow().intValue(), true))
+                        && steProtocol.getBay() == Utils.getBay(locNo)
+                        && steProtocol.getLev() == Utils.getLev(locNo)) {
                     return steProtocol.getSteNo().intValue();
                 }
             }
@@ -1286,17 +1291,32 @@
      * 鏌ユ壘褰撳墠搴撲綅鏈�閫傚悎鐨勭┛姊溅鏉ヤ綔涓�
      */
     public SteThread queryIdleCar(WrkMast wrkMast) {
-        Integer crnNo = wrkMast.getCrnNo();
-        BasSte basSte = basSteService.findByCrnNo(crnNo);
-        // 鑾峰彇绌挎杞︿俊鎭�
-        SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, basSte.getSteNo());
-        SteProtocol steProtocol = steThread.getSteProtocol();
-        if (steProtocol != null) {
-            if (steProtocol.isIdle()) {
-                return steThread;
+        List<BasSte> basStes = basSteService.selectList(new EntityWrapper<>());
+        int val = 0;
+        SteThread result = null;
+        for (BasSte basSte : basStes) {
+            // 鑾峰彇绌挎杞︿俊鎭�
+            SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, basSte.getSteNo());
+            SteProtocol steProtocol = steThread.getSteProtocol();
+            if (steProtocol == null) { continue; }
+            if (!steProtocol.isIdle()) { continue; }
+            String locNo = wrkMast.getWrkSts() < 10 ? wrkMast.getLocNo() : wrkMast.getSourceLocNo();
+            LocMast locMast = locMastService.selectById(locNo);
+            int lev = locMast.getLev1();
+            int bay = locMast.getBay1();
+            int levAbs = Math.abs(lev - steProtocol.getLev());
+            int bayAbs = Math.abs(bay - steProtocol.getBay());
+            if (val == 0) {
+                val = levAbs + bayAbs;
+                result = steThread;
+            } else {
+                if ((levAbs + bayAbs) < val) {
+                    val = levAbs + bayAbs;
+                    result = steThread;
+                }
             }
         }
-        return null;
+        return result;
     }
 
     /**
@@ -1383,7 +1403,7 @@
             steCommand.setTaskNo(wrkMast.getWrkNo()); // 宸ヤ綔鍙�
             steCommand.setTaskMode(SteTaskModeType.findOriginByLoc(steProtocol)); // 浠诲姟妯″紡:  鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙�
 
-            steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue());
+            steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue());
             steCommand.setBay(steProtocol.getBay());
             steCommand.setLev(steProtocol.getLev());
 
@@ -1455,17 +1475,17 @@
                     crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
                     crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
                     crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                    crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue());     // 婧愬簱浣嶆帓
+                    crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue());     // 婧愬簱浣嶆帓
                     crnCommand.setSourcePosY(steProtocol.getBay());     // 婧愬簱浣嶅垪
                     crnCommand.setSourcePosZ(steProtocol.getLev());     // 婧愬簱浣嶅眰
-                    crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo()).shortValue());     // 鐩爣搴撲綅鎺�
+                    crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo(), true).shortValue());     // 鐩爣搴撲綅鎺�
                     crnCommand.setDestinationPosY(locMast.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
                     crnCommand.setDestinationPosZ(locMast.getLev1().shortValue());     // 鐩爣搴撲綅灞�
                     if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
                         log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
                     } else {
                         // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞�
-                        steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo()), locMast.getBay1(), locMast.getLev1());
+                        steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo(), true), locMast.getBay1(), locMast.getLev1());
                         // 淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉 => 4.杩佸叆灏忚溅
                         Date now = new Date();
                         wrkMast.setWrkSts(4L);
@@ -1484,17 +1504,17 @@
                     crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
                     crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
                     crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                    crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue());     // 婧愬簱浣嶆帓
+                    crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue());     // 婧愬簱浣嶆帓
                     crnCommand.setSourcePosY(steProtocol.getBay());     // 婧愬簱浣嶅垪
                     crnCommand.setSourcePosZ(steProtocol.getLev());     // 婧愬簱浣嶅眰
-                    crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo()).shortValue());     // 鐩爣搴撲綅鎺�
+                    crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo(), true).shortValue());     // 鐩爣搴撲綅鎺�
                     crnCommand.setDestinationPosY(locMast.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
                     crnCommand.setDestinationPosZ(locMast.getLev1().shortValue());     // 鐩爣搴撲綅灞�
                     if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
                         log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
                     } else {
                         // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞�
-                        steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo()), locMast.getBay1(), locMast.getLev1());
+                        steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo(), true), locMast.getBay1(), locMast.getLev1());
                         // 淇敼宸ヤ綔妗g姸鎬� 12.灏忚溅寰呮惉 => 13.杩佸叆灏忚溅
                         Date now = new Date();
                         wrkMast.setWrkSts(13L);
@@ -1536,17 +1556,17 @@
                 crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
                 crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
                 crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue());     // 婧愬簱浣嶆帓
+                crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue());     // 婧愬簱浣嶆帓
                 crnCommand.setSourcePosY(steProtocol.getBay());     // 婧愬簱浣嶅垪
                 crnCommand.setSourcePosZ(steProtocol.getLev());     // 婧愬簱浣嶅眰
-                crnCommand.setDestinationPosX(Utils.getGroupRow(idleLocNo).shortValue());     // 鐩爣搴撲綅鎺�
+                crnCommand.setDestinationPosX(Utils.getGroupRow(idleLocNo, true).shortValue());     // 鐩爣搴撲綅鎺�
                 crnCommand.setDestinationPosY((short) Utils.getBay(idleLocNo));     // 鐩爣搴撲綅鍒�
                 crnCommand.setDestinationPosZ((short) Utils.getLev(idleLocNo));     // 鐩爣搴撲綅灞�
                 if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
                     log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
                 } else {
                     // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞�
-                    steThread.modifyPos(Utils.getGroupRow(idleLocNo), Utils.getBay(idleLocNo), Utils.getLev(idleLocNo));
+                    steThread.modifyPos(Utils.getGroupRow(idleLocNo, true), Utils.getBay(idleLocNo), Utils.getLev(idleLocNo));
                     // 淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉 => 5.杩佸嚭灏忚溅
                     Date now = new Date();
                     wrkMast.setWrkSts(5L);

--
Gitblit v1.9.1