From 5a8efb144853cf4221d2e0396b2315f108b7212d Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期四, 10 三月 2022 15:40:14 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  226 ++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 163 insertions(+), 63 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 250d4ac..04b7ef9 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -560,7 +560,6 @@
                 continue;
             }
 
-            // todo锛氬皬杞﹁縼鍏ュ嚭
             // 鐩爣搴撲綅 ===>> 鏈�澶栧眰搴撲綅
             if (locMastService.isOutMost(wrkMast.getLocNo())) {
                 // 鍒ゆ柇灏忚溅鏄惁鍦ㄦ渶澶栧眰搴撲綅锛屽鏋滄槸鍒欐惉璧帮紝濡傛灉涓嶆槸锛屽垯鐩存帴鍫嗗灈鏈哄叆搴�
@@ -614,8 +613,8 @@
                     if (wrkMast.getWrkSts() == 2L) {
                         this.letCarBeReady(wrkMast, steNo);
                     }
-                    // 鍫嗗灈鏈哄皢璐ф斁鑷冲皬杞︿笂 3.灏忚溅寰呮惉 ===>> 7.鍚婅溅鍏ュ簱涓�
-                    if (wrkMast.getWrkSts() == 3L) {
+                    // 鍫嗗灈鏈哄皢璐ф斁鑷冲皬杞︿笂 3.灏忚溅寰呮惉 / 6.灏忚溅寰呭叆  ===>> 7.鍚婅溅鍏ュ簱涓�
+                    if (wrkMast.getWrkSts() == 3L || wrkMast.getWrkSts() == 6L) {
                         // 灏忚溅澶勪簬绌洪棽
                         SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
                         SteProtocol steProtocol = steThread.getSteProtocol();
@@ -650,9 +649,21 @@
                     }
                 // 娌℃湁灏忚溅
                 } else {
+                    if (wrkMast.getWrkSts() == 2L) {
+                        // 1.瀵绘壘鏈�杩戠殑灏忚溅
+                        SteThread steThread = queryIdleCar(wrkMast);
+                        if (steThread != null) {
+                            // 2.璁╁皬杞︾瓑寰呮惉杩愬緟缁�
+                            this.letCarBeReady(wrkMast, steThread.getSlave().getId());
+                        }
+                    }
+                    // 3.鍫嗗灈鏈烘惉杩愬皬杞�
+                    if (wrkMast.getWrkSts() == 3L) {
+                        this.carMoveIn(wrkMast, wrkMast.getSteNo());
+                    }
+                    // 4.鍫嗗灈鏈烘惉杩愯揣鐗�
 
                 }
-
 
             }
 
@@ -703,14 +714,11 @@
             if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) {
                 log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", steNo, JSON.toJSON(steCommand));
             } else {
-                // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.灏忚溅寰呮惉
-                Date now = new Date();
-                wrkMast.setWrkSts(3L);
+                // 淇敼宸ヤ綔妗g姸鎬� 缁戝畾绌挎杞�
                 wrkMast.setSteNo(steNo);
-                wrkMast.setCrnStrTime(now);
-                wrkMast.setModiTime(now);
+                wrkMast.setModiTime(new Date());
                 if (wrkMastMapper.updateById(wrkMast) == 0) {
-                    log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.灏忚溅寰呮惉 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                    log.error("淇敼宸ヤ綔妗g姸鎬� 缁戝畾绌挎杞� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
                 }
             }
         }
@@ -726,37 +734,39 @@
         if (steProtocol == null) { return; }
         if (steProtocol.getStatusType().equals(SteStatusType.IDLE)) {
 
-            String locNo = Utils.append(steProtocol.getRow(), steProtocol.getBay(), steProtocol.getLev());
-            LocMast locMast = locMastService.selectById(locNo);
+            LocMast locMast;
+            if (wrkMast.getWrkSts() <= 10) {
+                locMast = locMastService.selectById(wrkMast.getLocNo());
+                // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 --------------------------------------------------------------------------
+                CrnCommand crnCommand = new CrnCommand();
+                crnCommand.setCrnNo(locMast.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
+                crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+                crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+                crnCommand.setSourcePosX(steProtocol.getRow());     // 婧愬簱浣嶆帓
+                crnCommand.setSourcePosY(steProtocol.getBay());     // 婧愬簱浣嶅垪
+                crnCommand.setSourcePosZ(steProtocol.getLev());     // 婧愬簱浣嶅眰
+                crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo()).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 {
 
-            // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 --------------------------------------------------------------------------
-            CrnCommand crnCommand = new CrnCommand();
-            crnCommand.setCrnNo(locMast.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
-            crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-            crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-            crnCommand.setSourcePosX(steProtocol.getRow());     // 婧愬簱浣嶆帓
-            crnCommand.setSourcePosY(steProtocol.getBay());     // 婧愬簱浣嶅垪
-            crnCommand.setSourcePosZ(steProtocol.getLev());     // 婧愬簱浣嶅眰
-            crnCommand.setDestinationPosX(locMast.getRow1().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 {
-
-                // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 4.杩佸叆灏忚溅
-                Date now = new Date();
-                wrkMast.setWrkSts(4L);
-                wrkMast.setCrnStrTime(now);
-                wrkMast.setModiTime(now);
-                if (wrkMastMapper.updateById(wrkMast) == 0) {
-                    log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                    // 淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉 => 4.杩佸叆灏忚溅
+                    Date now = new Date();
+                    wrkMast.setWrkSts(4L);
+                    wrkMast.setCrnStrTime(now);
+                    wrkMast.setModiTime(now);
+                    if (wrkMastMapper.updateById(wrkMast) == 0) {
+                        log.error("淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉 => 4.杩佸叆灏忚溅 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                    }
                 }
+
             }
 
-        }
 
+        }
     }
 
     /**
@@ -977,22 +987,6 @@
 
     }
 
-    /**
-     * 绌挎杞﹀叆搴�
-     */
-    public void carGenerateStore() {
-        for (SteSlave ste : slaveProperties.getSte()) {
-            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-            SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId());
-            SteProtocol steProtocol = steThread.getSteProtocol();
-            if (steProtocol == null) { continue; }
-            if (steProtocol.getStatusType().equals(SteStatusType.IDLE)) {
-
-                wrkMastMapper.selectPakInStep8()
-
-            }
-        }
-    }
 
     /**
      * 鍫嗗灈鏈洪拡瀵逛簬灏忚溅杩佺Щ宸ヤ綔鐨勫畬鎴�
@@ -1035,6 +1029,7 @@
      * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
      */
     @Async
+    @Transactional
     public void storeFinished() {
         for (CrnSlave crn : slaveProperties.getCrn()) {
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
@@ -1051,30 +1046,135 @@
                 }
                 // 鍏ュ簱 + 搴撲綅杞Щ
                 if (wrkMast.getWrkSts() == 7 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)){
+                    // 鍒ゆ柇鏄惁闇�瑕佸皬杞﹀叆搴�
                     if (locMastService.isOutMost(wrkMast.getLocNo())) {
                         // ==> 9.鍏ュ簱瀹屾垚
                         wrkMast.setWrkSts(9L);
+                        Date now = new Date();
+                        wrkMast.setCrnEndTime(now);
+                        wrkMast.setModiTime(now);
+                        // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+                        if (wrkMastMapper.updateById(wrkMast) > 0) {
+                            // 鍫嗗灈鏈哄浣�
+                            crnThread.setResetFlag(true);
+                        } else {
+                            log.error("淇敼宸ヤ綔妗g姸鎬� 7.鍚婅溅鍏ュ簱涓� => 9.鍏ュ簱瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                        }
                     } else {
-                        // ==> 8.灏忚溅鎼叆搴�
-                        wrkMast.setWrkSts(8L);
+                        // 缁欑┛姊溅涓嬪彂鍛戒护
+                        Integer steNo = wrkMast.getSteNo();
+                        SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
+                        SteProtocol steProtocol = steThread.getSteProtocol();
+                        if (steProtocol == null) { continue; }
+                        if (steProtocol.getStatusType().equals(SteStatusType.IDLE)) {
+                            // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                            SteCommand steCommand = new SteCommand();
+                            steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙�
+                            steCommand.setTaskNo(wrkMast.getWrkNo()); // 宸ヤ綔鍙�
+                            steCommand.setTaskMode(SteTaskModeType.TO_B); // 浠诲姟妯″紡:  鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙�
+                            // todo:luxiaotao
+                            if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) {
+                                log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", steNo, JSON.toJSON(steCommand));
+                            } else {
+                                // 淇敼宸ヤ綔妗g姸鎬� 7.鍚婅溅鍏ュ簱涓� => 8.灏忚溅鎼叆搴�
+                                Date now = new Date();
+                                wrkMast.setWrkSts(8L);
+                                wrkMast.setCrnStrTime(now);
+                                wrkMast.setModiTime(now);
+                                if (wrkMastMapper.updateById(wrkMast) > 0) {
+                                    // 鍫嗗灈鏈哄浣�
+                                    crnThread.setResetFlag(true);
+                                } else {
+                                    log.error("淇敼宸ヤ綔妗g姸鎬� 7.鍚婅溅鍏ュ簱涓� => 8.灏忚溅鎼叆搴� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                                }
+                            }
+                        }
                     }
-                } else {
-                    continue;
+                // 杩佸叆灏忚溅 瀹屾垚
+                } else if (wrkMast.getWrkSts() == 4) {
+                    // 4.杩佸叆灏忚溅 ==> 6.灏忚溅寰呭叆
+                    wrkMast.setWrkSts(6L);
+                    Date now = new Date();
+                    wrkMast.setCrnEndTime(now);
+                    wrkMast.setModiTime(now);
+                    // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+                    if (wrkMastMapper.updateById(wrkMast) > 0) {
+                        // 鍫嗗灈鏈哄浣�
+                        crnThread.setResetFlag(true);
+                    } else {
+                        log.error("淇敼宸ヤ綔妗g姸鎬� 4.杩佸叆灏忚溅 => 6.灏忚溅寰呭叆 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                    }
+                // 杩佸嚭灏忚溅 瀹屾垚
+                } else if (wrkMast.getWrkSts() == 5) {
+
                 }
-                Date now = new Date();
-                wrkMast.setCrnEndTime(now);
-                wrkMast.setModiTime(now);
-                // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
-                if (wrkMastMapper.updateById(wrkMast) > 0) {
-                    // 鍫嗗灈鏈哄浣�
-                    crnThread.setResetFlag(true);
+            }
+        }
+    }
+
+    /**
+     * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
+     */
+    public void carGenerateStore() {
+        Date now = new Date();
+        for (SteSlave ste : slaveProperties.getSte()) {
+            // 鑾峰彇绌挎杞︿俊鎭�
+            SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId());
+            SteProtocol steProtocol = steThread.getSteProtocol();
+            if (steProtocol == null) { continue; }
+            if (steProtocol.getStatusType().equals(SteStatusType.IDLE)) {
+                // 鏌ヨ鏄惁鏈夊緟鍏ュ簱鐨勪换鍔�
+                WrkMast wrkMast = wrkMastMapper.selectPakInStep8(steProtocol.getSteNo().intValue());
+                if (wrkMast == null) { continue; }
+
+                switch (wrkMast.getWrkSts().intValue()) {
+                    case 2:
+                        // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.灏忚溅寰呮惉
+                        wrkMast.setWrkSts(3L);
+                        wrkMast.setCrnStrTime(now);
+                        wrkMast.setModiTime(now);
+                        if (wrkMastMapper.updateById(wrkMast) == 0) {
+                            log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.灏忚溅寰呮惉 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                        } else {
+                            steThread.setResetFlag(true);
+                        }
+                        break;
+                    case 8:
+                        // 淇敼宸ヤ綔妗g姸鎬� 8.灏忚溅鎼叆搴� => 9.鍏ュ簱瀹屾垚
+                        wrkMast.setWrkSts(9L);
+                        wrkMast.setCrnStrTime(now);
+                        wrkMast.setModiTime(now);
+                        if (wrkMastMapper.updateById(wrkMast) == 0) {
+                            log.error("淇敼宸ヤ綔妗g姸鎬� 8.灏忚溅鎼叆搴� => 9.鍏ュ簱瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                        } else {
+                            steThread.setResetFlag(true);
+                        }
+                        break;
                 }
+
 
             }
         }
     }
 
     /**
+     * 鏌ユ壘褰撳墠搴撲綅鏈�閫傚悎鐨勭┛姊溅鏉ヤ綔涓�
+     */
+    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.getStatusType().equals(SteStatusType.IDLE)) {
+                return steThread;
+            }
+        }
+        return null;
+    }
+
+    /**
      * 鍫嗗灈鏈哄紓甯镐俊鎭褰�
      */
     @Async

--
Gitblit v1.9.1