From 4bebcda1c8c9f9344d25d2f06c90f84bd045534e Mon Sep 17 00:00:00 2001
From: lsh <lsh123456>
Date: 星期二, 28 二月 2023 14:48:33 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  761 +++++++++++++++++++---------------------------------------
 1 files changed, 247 insertions(+), 514 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 bc86d9b..25427ac 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -666,7 +666,7 @@
                 // 搴撲綅绉昏浆
 //                this.locToLoc(crn, crnProtocol);
                 // 婕旂ず
-                this.steMoveDemo(crn, crnProtocol);
+//                this.steMoveDemo(crn, crnProtocol);
             }
         }
     }
@@ -736,117 +736,95 @@
             wrkMast.setIoPri((double) 9999);
             wrkMastMapper.updateById(wrkMast);
 
-            // 鍒ゆ柇鏄惁涓虹┛姊簱
-            if (!locMastService.isShuttle(wrkMast.getLocNo())) {
-
-                // 闈炵┛姊簱鍏ュ簱 銆� 鍫嗗灈鏈虹洿鎺ュ叆搴� 銆�
-                if (wrkMast.getWrkSts() == 2) {
-
-                    // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-                    if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-                        continue;
+                // 鐩爣搴撲綅 ===>> 鏈�澶栧眰搴撲綅
+            if (locMastService.isOutMost(wrkMast.getLocNo(), true)) {
+                // 鍒ゆ柇灏忚溅鏄惁鍦ㄦ渶澶栧眰搴撲綅锛屽鏋滄槸鍒欐惉璧帮紝濡傛灉涓嶆槸锛屽垯鐩存帴鍫嗗灈鏈哄叆搴�
+                Integer steNo = this.hasCar(wrkMast.getLocNo());
+                // 鏈夊皬杞�
+                if (steNo != null) {
+                    // 灏忚溅琛岃蛋鍒板爢鍨涙満寰呮惉绉荤偣
+                    if (wrkMast.getWrkSts() == 2L && wrkMast.getSteNo() == null) {
+                        // 娌℃湁鍏朵粬浠诲姟
+                        if (null == wrkMastMapper.selectPakin(slave.getId(), steNo)) {
+                            this.letCarBeReady(wrkMast, steNo, wrkMast.getLocNo());
+                            return true;
+                        }
                     }
+                    // 灏忚溅鎼蛋
+                    if (wrkMast.getWrkSts() == 3L) {
+                        this.carMoveOut(wrkMast, steNo, crnProtocol);
+                        return true;
+                    }
+                    // 娌℃湁灏忚溅
+                } else {
 
-                    // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-                    if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo())) {
-                        String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getLocNo());
-                        LocMast shallowLoc = locMastService.selectById(shallowLocNo);
-                        // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
-                        if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
-                            WrkMast waitWrkMast = wrkMastMapper.selectBySourceLocNo(shallowLocNo);
-                            if (null == waitWrkMast) {
-                                News.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
+                    // 褰撳墠鍏ュ簱搴撲綅缁勬病鏈夊皬杞� 鍫嗗灈鏈哄垯鍘荤珯鐐瑰彇璐у叆搴�
+                    // case 1锛氫粠濮嬭嚦缁堝簱浣嶇粍閮芥病鏈夊皬杞︼紝娌℃湁杩佸嚭灏忚溅鍔ㄤ綔锛屾墍浠ュ伐浣滅姸鎬� = 2
+                    // case 2锛氬爢鍨涙満宸茬粡鎼嚭灏忚溅锛屾湁杩佸嚭灏忚溅鍔ㄤ綔锛屾墍浠ュ伐浣滅姸鎬� = 6
+                    if ((wrkMast.getWrkSts() == 2L && wrkMast.getSteNo() == null) || wrkMast.getWrkSts() == 6L) {
+
+                        // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+                        if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+                            continue;
+                        }
+
+                        // 鍫嗗灈鏈哄叆搴� 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                        CrnCommand crnCommand = new CrnCommand();
+                        crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                        crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+                        crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                        crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+                        crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
+                        crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
+                        crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
+                        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))) {
+                            News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+                        } else {
+                            // 淇敼宸ヤ綔妗g姸鎬�  7.鍚婅溅鍏ュ簱涓�
+                            Date now = new Date();
+                            wrkMast.setWrkSts(7L);
+                            wrkMast.setCrnStrTime(now);
+                            wrkMast.setModiTime(now);
+                            if (wrkMastMapper.updateById(wrkMast) == 0) {
+                                News.error("淇敼宸ヤ綔妗g姸鎬� {} => 7.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkSts$(), wrkMast.getWrkNo());
                             } else {
-                                if (waitWrkMast.getWrkSts() < 17) {
-                                    waitWrkMast.setIoPri(30D);
-                                    waitWrkMast.setModiTime(new Date());
-                                    if (wrkMastMapper.updateById(waitWrkMast) == 0) {
-                                        News.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
-                                    }
-                                    //20220719 Add锛屽鏋滄祬搴撲綅鐘舵�佷负P/R锛屽伐浣滅姸鎬佷负14/15,璇存槑娴呭簱浣嶅凡缁忕┖浜嗭紝鍙互鎵ц鍏ュ簱浠诲姟
-                                }
-                            }
-                            continue;
-                        }
-                        if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
-                            // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
-                            if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
-                                wrkMast.setUpdMk("Y");
-                                wrkMast.setIoPri(20D);
-                                wrkMastMapper.updateById(wrkMast);
-                                // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
-                                moveLocForDeepLoc(slave, shallowLoc);
-                            }
-                            continue;
-                        }
-                        if (shallowLoc.getLocSts().equals("Q")) {
-                            WrkMast waitWrkMast = wrkMastMapper.selectBySourceLocNo(shallowLocNo);
-                            if (null != waitWrkMast && waitWrkMast.getWrkSts() == 9) {
-                                continue;
+                                return true;
                             }
                         }
                     }
 
-                    // 鍫嗗灈鏈哄叆搴� 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                    CrnCommand crnCommand = new CrnCommand();
-                    crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-                    crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-                    crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                    crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                    crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
-                    crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
-                    crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
-                    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))) {
-                        News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
-                    } else {
-                        // 淇敼宸ヤ綔妗g姸鎬�  7.鍚婅溅鍏ュ簱涓�
-                        Date now = new Date();
-                        wrkMast.setWrkSts(7L);
-                        wrkMast.setCrnStrTime(now);
-                        wrkMast.setModiTime(now);
-                        if (wrkMastMapper.updateById(wrkMast) == 0) {
-                            News.error("淇敼宸ヤ綔妗g姸鎬� {} => 7.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkSts$(), wrkMast.getWrkNo());
+                }
+
+            // 鐩爣搴撲綅 ===>> 闈炴渶澶栧眰搴撲綅
+            } else {
+                // 鍒ゆ柇灏忚溅鏄惁鍦ㄥ綋鍓嶇粍搴撲綅锛屽鏋滄槸鍒欏皢绌挎杞︾Щ鑷虫渶澶栧眰锛岀瓑寰呭爢鍨涙満鏀捐揣锛涘鏋滀笉鏄紝鍒欏爢鍨涙満瀵绘壘绌挎杞︼紝骞舵斁缃綋鍓嶇粍鏈�澶栧眰
+                Integer steNo = this.hasCarOfIdle(wrkMast.getLocNo());
+                // 鏈夊皬杞�
+                if (steNo != null) {
+                    // 灏忚溅琛岃蛋鍒板緟鏈轰綅
+                    if (wrkMast.getWrkSts() == 2L && wrkMast.getSteNo() == null) {
+                        // 娌℃湁鍏朵粬浠诲姟
+                        if (null == wrkMastMapper.selectPakin(slave.getId(), steNo)) {
+                            this.letCarBeWaiting(wrkMast, steNo, wrkMast.getLocNo());
                         } else {
                             return true;
                         }
                     }
-                }
-            } else {
-                // 鐩爣搴撲綅 ===>> 鏈�澶栧眰搴撲綅
-                if (locMastService.isOutMost(wrkMast.getLocNo(), true)) {
-                    // 鍒ゆ柇灏忚溅鏄惁鍦ㄦ渶澶栧眰搴撲綅锛屽鏋滄槸鍒欐惉璧帮紝濡傛灉涓嶆槸锛屽垯鐩存帴鍫嗗灈鏈哄叆搴�
-                    Integer steNo = this.hasCar(wrkMast.getLocNo());
-                    // 鏈夊皬杞�
-                    if (steNo != null) {
-                        // 灏忚溅琛岃蛋鍒板爢鍨涙満寰呮惉绉荤偣
-                        if (wrkMast.getWrkSts() == 2L && wrkMast.getSteNo() == null) {
-                            // 娌℃湁鍏朵粬浠诲姟
-                            if (null == wrkMastMapper.selectPakin(slave.getId(), steNo)) {
-                                this.letCarBeReady(wrkMast, steNo, wrkMast.getLocNo());
-                                return true;
-                            }
-                        }
-                        // 灏忚溅鎼蛋
-                        if (wrkMast.getWrkSts() == 3L) {
-                            this.carMoveOut(wrkMast, steNo, crnProtocol);
-                            return true;
-                        }
-                        // 娌℃湁灏忚溅
-                    } else {
-
-                        // 褰撳墠鍏ュ簱搴撲綅缁勬病鏈夊皬杞� 鍫嗗灈鏈哄垯鍘荤珯鐐瑰彇璐у叆搴�
-                        // case 1锛氫粠濮嬭嚦缁堝簱浣嶇粍閮芥病鏈夊皬杞︼紝娌℃湁杩佸嚭灏忚溅鍔ㄤ綔锛屾墍浠ュ伐浣滅姸鎬� = 2
-                        // case 2锛氬爢鍨涙満宸茬粡鎼嚭灏忚溅锛屾湁杩佸嚭灏忚溅鍔ㄤ綔锛屾墍浠ュ伐浣滅姸鎬� = 6
-                        if ((wrkMast.getWrkSts() == 2L && wrkMast.getSteNo() == null) || wrkMast.getWrkSts() == 6L) {
+                    // 鍫嗗灈鏈哄皢璐ф斁鑷冲皬杞︿笂 3.灏忚溅寰呮惉锛堝皬杞︿笉鐢ㄦ惉杩愶紝宸茬粡鍦ㄥ綋鍓嶇粍搴撲綅锛� / 6.灏忚溅寰呭叆  ===>> 7.鍚婅溅鍏ュ簱涓�
+                    if (wrkMast.getWrkSts() == 3L || wrkMast.getWrkSts() == 6L) {
+                        // 灏忚溅澶勪簬绌洪棽
+                        SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
+                        SteProtocol steProtocol = steThread.getSteProtocol();
+                        if (steProtocol == null) { continue; }
+                        if (steProtocol.isIdle()) {
 
                             // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
                             if (wrkMastMapper.selectWorking(slave.getId()) != null) {
                                 continue;
                             }
-
                             // 鍫嗗灈鏈哄叆搴� 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
                             CrnCommand crnCommand = new CrnCommand();
                             crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
@@ -856,105 +834,46 @@
                             crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
                             crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
                             crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
-                            crnCommand.setDestinationPosX(locMast.getRow1().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))) {
                                 News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
                             } else {
-                                // 淇敼宸ヤ綔妗g姸鎬�  7.鍚婅溅鍏ュ簱涓�
+                                // 淇敼宸ヤ綔妗g姸鎬�  3.灏忚溅寰呮惉 ===>> 7.鍚婅溅鍏ュ簱涓�
                                 Date now = new Date();
                                 wrkMast.setWrkSts(7L);
                                 wrkMast.setCrnStrTime(now);
                                 wrkMast.setModiTime(now);
                                 if (wrkMastMapper.updateById(wrkMast) == 0) {
-                                    News.error("淇敼宸ヤ綔妗g姸鎬� {} => 7.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkSts$(), wrkMast.getWrkNo());
+                                    News.error("淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉/6.灏忚溅寰呭叆 => 7.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
                                 } else {
                                     return true;
                                 }
                             }
                         }
-
                     }
-
-                // 鐩爣搴撲綅 ===>> 闈炴渶澶栧眰搴撲綅
+                // 娌℃湁灏忚溅
                 } else {
-                    // 鍒ゆ柇灏忚溅鏄惁鍦ㄥ綋鍓嶇粍搴撲綅锛屽鏋滄槸鍒欏皢绌挎杞︾Щ鑷虫渶澶栧眰锛岀瓑寰呭爢鍨涙満鏀捐揣锛涘鏋滀笉鏄紝鍒欏爢鍨涙満瀵绘壘绌挎杞︼紝骞舵斁缃綋鍓嶇粍鏈�澶栧眰
-                    Integer steNo = this.hasCarOfIdle(wrkMast.getLocNo());
-                    // 鏈夊皬杞�
-                    if (steNo != null) {
-                        // 灏忚溅琛岃蛋鍒板緟鏈轰綅
-                        if (wrkMast.getWrkSts() == 2L && wrkMast.getSteNo() == null) {
+                    if (wrkMast.getWrkSts() == 2L && wrkMast.getSteNo() == null) {
+                        // 瀵绘壘褰撳墠鍫嗗灈鏈哄搴旂殑灏忚溅
+                        SteThread steThread = queryIdleCar(wrkMast);
+                        if (steThread != null) {
                             // 娌℃湁鍏朵粬浠诲姟
                             if (null == wrkMastMapper.selectPakin(slave.getId(), steNo)) {
-                                this.letCarBeWaiting(wrkMast, steNo, wrkMast.getLocNo());
-                            } else {
+                                // 璁╁皬杞︾瓑寰呮惉杩愬緟缁�
+                                this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getLocNo());
                                 return true;
                             }
                         }
-                        // 鍫嗗灈鏈哄皢璐ф斁鑷冲皬杞︿笂 3.灏忚溅寰呮惉锛堝皬杞︿笉鐢ㄦ惉杩愶紝宸茬粡鍦ㄥ綋鍓嶇粍搴撲綅锛� / 6.灏忚溅寰呭叆  ===>> 7.鍚婅溅鍏ュ簱涓�
-                        if (wrkMast.getWrkSts() == 3L || wrkMast.getWrkSts() == 6L) {
-                            // 灏忚溅澶勪簬绌洪棽
-                            SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
-                            SteProtocol steProtocol = steThread.getSteProtocol();
-                            if (steProtocol == null) { continue; }
-                            if (steProtocol.isIdle()) {
-
-                                // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-                                if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-                                    continue;
-                                }
-                                // 鍫嗗灈鏈哄叆搴� 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                                CrnCommand crnCommand = new CrnCommand();
-                                crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-                                crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-                                crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                                crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                                crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
-                                crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
-                                crnCommand.setSourcePosZ(crnStn.getLev().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))) {
-                                    News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
-                                } else {
-                                    // 淇敼宸ヤ綔妗g姸鎬�  3.灏忚溅寰呮惉 ===>> 7.鍚婅溅鍏ュ簱涓�
-                                    Date now = new Date();
-                                    wrkMast.setWrkSts(7L);
-                                    wrkMast.setCrnStrTime(now);
-                                    wrkMast.setModiTime(now);
-                                    if (wrkMastMapper.updateById(wrkMast) == 0) {
-                                        News.error("淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉/6.灏忚溅寰呭叆 => 7.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-                                    } else {
-                                        return true;
-                                    }
-                                }
-                            }
-                        }
-                    // 娌℃湁灏忚溅
-                    } else {
-                        if (wrkMast.getWrkSts() == 2L && wrkMast.getSteNo() == null) {
-                            // 瀵绘壘褰撳墠鍫嗗灈鏈哄搴旂殑灏忚溅
-                            SteThread steThread = queryIdleCar(wrkMast);
-                            if (steThread != null) {
-                                // 娌℃湁鍏朵粬浠诲姟
-                                if (null == wrkMastMapper.selectPakin(slave.getId(), steNo)) {
-                                    // 璁╁皬杞︾瓑寰呮惉杩愬緟缁�
-                                    this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getLocNo());
-                                    return true;
-                                }
-                            }
-                        }
-                        // 鍫嗗灈鏈烘惉杩愬皬杞�
-                        if (wrkMast.getWrkSts() == 3L) {
-                            this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol);
-                            return true;
-                        }
+                    }
+                    // 鍫嗗灈鏈烘惉杩愬皬杞�
+                    if (wrkMast.getWrkSts() == 3L) {
+                        this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol);
+                        return true;
                     }
                 }
             }
-
         }
         return false;
     }
@@ -1032,47 +951,14 @@
                 wrkMast.setIoPri((double) 9998);
                 wrkMastMapper.updateById(wrkMast);
 
-                // 鍒ゆ柇鏄惁涓虹┛姊簱
-                if (!locMastService.isShuttle(wrkMast.getSourceLocNo())) {
-
-                    // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-                    if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) {
-                        String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo());
-                        LocMast shallowLoc = locMastService.selectById(shallowLocNo);
-                        // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
-                        if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
-                            WrkMast waitWrkMast = wrkMastMapper.selectBySourceLocNo(shallowLocNo);
-                            if (null == waitWrkMast) {
-                                News.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
-                            } else {
-                                if(waitWrkMast.getWrkSts() == 11) {
-                                    waitWrkMast.setIoPri(wrkMast.getIoPri() + 1);
-                                    waitWrkMast.setModiTime(new Date());
-                                    if (wrkMastMapper.updateById(waitWrkMast) == 0) {
-                                        News.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
-                                    }
-                                }
-                                continue;
-                            }
-                        } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
-                            // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
-                            if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
-                                wrkMast.setUpdMk("Y");
-                                wrkMastMapper.updateById(wrkMast);
-                                // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
-                                moveLocForDeepLoc(slave, shallowLoc);
-                            }
-                            News.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛�", wrkMast.getWrkNo());
-                            continue;
-                        }
-                    }
-
+                // 鏈�澶栧眰搴撲綅锛岀洿鎺ュ爢鍨涙満鍑哄簱
+                if (locMastService.isOutMost(wrkMast.getSourceLocNo(), false)) {
                     // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
                     if (wrkMastMapper.selectWorking(slave.getId()) != null) {
                         continue;
                     }
 
-                    // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
+                    // 鍫嗗灈鏈哄嚭搴� 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
                     CrnCommand crnCommand = new CrnCommand();
                     crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
                     crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
@@ -1098,143 +984,105 @@
                             return true;
                         }
                     }
-
-                } else {
-
-                    // 鏈�澶栧眰搴撲綅锛岀洿鎺ュ爢鍨涙満鍑哄簱
-                    if (locMastService.isOutMost(wrkMast.getSourceLocNo(), false)) {
-                        // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-                        if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-                            continue;
-                        }
-
-                        // 鍫嗗灈鏈哄嚭搴� 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                        CrnCommand crnCommand = new CrnCommand();
-                        crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-                        crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-                        crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                        crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                        crnCommand.setSourcePosX(sourceSta.getRow1().shortValue());     // 婧愬簱浣嶆帓
-                        crnCommand.setSourcePosY(sourceSta.getBay1().shortValue());     // 婧愬簱浣嶅垪
-                        crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue());     // 婧愬簱浣嶅眰
-                        crnCommand.setDestinationPosX(crnStn.getRow().shortValue());     // 鐩爣搴撲綅鎺�
-                        crnCommand.setDestinationPosY(crnStn.getBay().shortValue());     // 鐩爣搴撲綅鍒�
-                        crnCommand.setDestinationPosZ(crnStn.getLev().shortValue());     // 鐩爣搴撲綅灞�
-                        if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
-                            News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
-                        } else {
-                            // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 16.鍚婅溅鍑哄簱涓�
-                            Date now = new Date();
-                            wrkMast.setWrkSts(16L);
-                            wrkMast.setCrnStrTime(now);
-                            wrkMast.setModiTime(now);
-                            if (wrkMastMapper.updateById(wrkMast) == 0) {
-                                News.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-                            } else {
-                                return true;
-                            }
-                        }
                     // 涓嶆槸鏈�澶栧眰搴撲綅锛岄渶瑕佷娇鐢ㄧ┛姊溅鎼繍鍚庯紝鍐嶅爢鍨涙満鍑哄簱
-                    } else {
-                        // 褰撳墠缁勫簱浣嶆槸鍚︽湁绌挎杞�
-                        Integer steNo = this.hasCarOfIdle(wrkMast.getSourceLocNo());
-                        // 鏈夊皬杞�
-                        if (steNo != null) {
-                            if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) {
+                } else {
+                    // 褰撳墠缁勫簱浣嶆槸鍚︽湁绌挎杞�
+                    Integer steNo = this.hasCarOfIdle(wrkMast.getSourceLocNo());
+                    // 鏈夊皬杞�
+                    if (steNo != null) {
+                        if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) {
 
-                                // 缁欑┛姊溅涓嬪彂鍛戒护 璁╁叾灏嗚揣鐗╂尓鑷冲爢鍨涙満鎼繍鐐�
-                                SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
-                                SteProtocol steProtocol = steThread.getSteProtocol();
-                                if (steProtocol == null) { continue; }
-                                if (steProtocol.isIdle()) {
+                            // 缁欑┛姊溅涓嬪彂鍛戒护 璁╁叾灏嗚揣鐗╂尓鑷冲爢鍨涙満鎼繍鐐�
+                            SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
+                            SteProtocol steProtocol = steThread.getSteProtocol();
+                            if (steProtocol == null) { continue; }
+                            if (steProtocol.isIdle()) {
 
-                                    // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                                    SteCommand steCommand = new SteCommand();
-                                    steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙�
-                                    steCommand.setTaskNo(wrkMast.getWrkNo()); // 宸ヤ綔鍙�
-                                    steCommand.setTaskMode(SteTaskModeType.findOutByLoc(wrkMast.getSourceLocNo())); // 浠诲姟妯″紡:  鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙�
+                                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                                SteCommand steCommand = new SteCommand();
+                                steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙�
+                                steCommand.setTaskNo(wrkMast.getWrkNo()); // 宸ヤ綔鍙�
+                                steCommand.setTaskMode(SteTaskModeType.findOutByLoc(wrkMast.getSourceLocNo())); // 浠诲姟妯″紡:  鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙�
 
-                                    steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), false).shortValue());
-                                    steCommand.setBay(steProtocol.getBay());
-                                    steCommand.setLev(steProtocol.getLev());
+                                steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), false).shortValue());
+                                steCommand.setBay(steProtocol.getBay());
+                                steCommand.setLev(steProtocol.getLev());
 
-                                    if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) {
-                                        News.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", steNo, JSON.toJSON(steCommand));
-                                    } else {
-                                        // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 14.灏忚溅鎼嚭搴�
-                                        Date now = new Date();
-                                        wrkMast.setWrkSts(14L);
-                                        wrkMast.setSteNo(steNo);
-                                        wrkMast.setCrnStrTime(now);
-                                        wrkMast.setModiTime(now);
-                                        LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
-                                        Integer outCrnNo = locMastService.getOutCrnNo(locMast);
-                                        wrkMast.setCrnNo(outCrnNo);
-                                        if (wrkMastMapper.updateById(wrkMast) == 0) {
-                                            News.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 14.灏忚溅鎼嚭搴� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-                                        } else {
-                                            return true;
-                                        }
-                                    }
-                                }
-                            }
-                            if (wrkMast.getWrkSts() == 15L) {
-                                // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-                                if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-                                    continue;
-                                }
-
-                                // 鍫嗗灈鏈哄嚭搴� 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                                CrnCommand crnCommand = new CrnCommand();
-                                crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-                                crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-                                crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                                crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                                crnCommand.setSourcePosX(Utils.getGroupRow(sourceSta.getRow1(), false).shortValue());     // 婧愬簱浣嶆帓
-                                crnCommand.setSourcePosY(sourceSta.getBay1().shortValue());     // 婧愬簱浣嶅垪
-                                crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue());     // 婧愬簱浣嶅眰
-                                crnCommand.setDestinationPosX(crnStn.getRow().shortValue());     // 鐩爣搴撲綅鎺�
-                                crnCommand.setDestinationPosY(crnStn.getBay().shortValue());     // 鐩爣搴撲綅鍒�
-                                crnCommand.setDestinationPosZ(crnStn.getLev().shortValue());     // 鐩爣搴撲綅灞�
-                                if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
-                                    News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+                                if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) {
+                                    News.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", steNo, JSON.toJSON(steCommand));
                                 } else {
-                                    // 淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓�
+                                    // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 14.灏忚溅鎼嚭搴�
                                     Date now = new Date();
-                                    wrkMast.setWrkSts(16L);
+                                    wrkMast.setWrkSts(14L);
+                                    wrkMast.setSteNo(steNo);
                                     wrkMast.setCrnStrTime(now);
                                     wrkMast.setModiTime(now);
+                                    LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
+                                    Integer outCrnNo = locMastService.getOutCrnNo(locMast);
+                                    wrkMast.setCrnNo(outCrnNo);
                                     if (wrkMastMapper.updateById(wrkMast) == 0) {
-                                        News.error("淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                                        News.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 14.灏忚溅鎼嚭搴� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
                                     } else {
                                         return true;
                                     }
                                 }
                             }
+                        }
+                        if (wrkMast.getWrkSts() == 15L) {
+                            // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+                            if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+                                continue;
+                            }
 
-                        // 娌℃湁灏忚溅
-                        } else {
-                            if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) {
-                                // 瀵绘壘鏈�杩戠殑灏忚溅
-                                SteThread steThread = queryIdleCar(wrkMast);
-                                if (steThread != null) {
-                                    // 娌℃湁鍏朵粬浠诲姟
-                                    if (null == wrkMastMapper.selectPakout(slave.getId(), steNo)) {
-                                        // 璁╁皬杞︾瓑寰呮惉杩愬緟缁�
-                                        this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getSourceLocNo());
-                                        return true;
-                                    }
+                            // 鍫嗗灈鏈哄嚭搴� 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                            CrnCommand crnCommand = new CrnCommand();
+                            crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                            crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+                            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                            crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+                            crnCommand.setSourcePosX(Utils.getGroupRow(sourceSta.getRow1(), false).shortValue());     // 婧愬簱浣嶆帓
+                            crnCommand.setSourcePosY(sourceSta.getBay1().shortValue());     // 婧愬簱浣嶅垪
+                            crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue());     // 婧愬簱浣嶅眰
+                            crnCommand.setDestinationPosX(crnStn.getRow().shortValue());     // 鐩爣搴撲綅鎺�
+                            crnCommand.setDestinationPosY(crnStn.getBay().shortValue());     // 鐩爣搴撲綅鍒�
+                            crnCommand.setDestinationPosZ(crnStn.getLev().shortValue());     // 鐩爣搴撲綅灞�
+                            if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
+                                News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+                            } else {
+                                // 淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓�
+                                Date now = new Date();
+                                wrkMast.setWrkSts(16L);
+                                wrkMast.setCrnStrTime(now);
+                                wrkMast.setModiTime(now);
+                                if (wrkMastMapper.updateById(wrkMast) == 0) {
+                                    News.error("淇敼宸ヤ綔妗g姸鎬� 15.绛夊緟鍚婅溅 => 16.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                                } else {
+                                    return true;
                                 }
                             }
-                            // 鍫嗗灈鏈烘惉杩愬皬杞�
-                            if (wrkMast.getWrkSts() == 12L) {
-                                this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol);
-                                return true;
+                        }
+
+                        // 娌℃湁灏忚溅
+                    } else {
+                        if (wrkMast.getWrkSts() == 11L && wrkMast.getSteNo() == null) {
+                            // 瀵绘壘鏈�杩戠殑灏忚溅
+                            SteThread steThread = queryIdleCar(wrkMast);
+                            if (steThread != null) {
+                                // 娌℃湁鍏朵粬浠诲姟
+                                if (null == wrkMastMapper.selectPakout(slave.getId(), steNo)) {
+                                    // 璁╁皬杞︾瓑寰呮惉杩愬緟缁�
+                                    this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getSourceLocNo());
+                                    return true;
+                                }
                             }
+                        }
+                        // 鍫嗗灈鏈烘惉杩愬皬杞�
+                        if (wrkMast.getWrkSts() == 12L) {
+                            this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol);
+                            return true;
                         }
                     }
                 }
-
             }
         }
         return false;
@@ -1846,7 +1694,8 @@
                 if (wrkMast.getIoType() != 11) {
                     // 鍏ュ簱 ==>> 璐х墿鎼叆搴�
                     if (wrkMast.getWrkSts() == 7){
-                        if (!locMastService.isShuttle(wrkMast.getLocNo())) {
+                        // 鍒ゆ柇鏄惁闇�瑕佸皬杞﹀叆搴�
+                        if (locMastService.isOutMost(wrkMast.getLocNo(), true)) {
                             // ==> 9.鍏ュ簱瀹屾垚
                             wrkMast.setWrkSts(9L);
                             Date now = new Date();
@@ -1860,46 +1709,30 @@
                                 News.error("淇敼宸ヤ綔妗g姸鎬� 7.鍚婅溅鍏ュ簱涓� => 9.鍏ュ簱瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
                             }
                         } else {
-                            // 鍒ゆ柇鏄惁闇�瑕佸皬杞﹀叆搴�
-                            if (locMastService.isOutMost(wrkMast.getLocNo(), true)) {
-                                // ==> 9.鍏ュ簱瀹屾垚
-                                wrkMast.setWrkSts(9L);
-                                Date now = new Date();
-                                wrkMast.setCrnEndTime(now);
-                                wrkMast.setModiTime(now);
-                                // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
-                                if (wrkMastMapper.updateById(wrkMast) > 0) {
-                                    // 鍫嗗灈鏈哄浣�
-                                    crnThread.setResetFlag(true);
+                            // 缁欑┛姊溅涓嬪彂鍛戒护
+                            Integer steNo = wrkMast.getSteNo();
+                            SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
+                            SteProtocol steProtocol = steThread.getSteProtocol();
+                            if (steProtocol == null) { continue; }
+                            if (steProtocol.isIdle()) {
+                                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                                SteCommand steCommand = new SteCommand();
+                                steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙�
+                                steCommand.setTaskNo(wrkMast.getWrkNo()); // 宸ヤ綔鍙�
+                                steCommand.setTaskMode(SteTaskModeType.findInByLoc(wrkMast.getLocNo())); // 浠诲姟妯″紡: 鎼叆搴�
+                                if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) {
+                                    News.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", steNo, JSON.toJSON(steCommand));
                                 } else {
-                                    News.error("淇敼宸ヤ綔妗g姸鎬� 7.鍚婅溅鍏ュ簱涓� => 9.鍏ュ簱瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-                                }
-                            } else {
-                                // 缁欑┛姊溅涓嬪彂鍛戒护
-                                Integer steNo = wrkMast.getSteNo();
-                                SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
-                                SteProtocol steProtocol = steThread.getSteProtocol();
-                                if (steProtocol == null) { continue; }
-                                if (steProtocol.isIdle()) {
-                                    // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                                    SteCommand steCommand = new SteCommand();
-                                    steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙�
-                                    steCommand.setTaskNo(wrkMast.getWrkNo()); // 宸ヤ綔鍙�
-                                    steCommand.setTaskMode(SteTaskModeType.findInByLoc(wrkMast.getLocNo())); // 浠诲姟妯″紡: 鎼叆搴�
-                                    if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) {
-                                        News.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", steNo, JSON.toJSON(steCommand));
+                                    // 淇敼宸ヤ綔妗g姸鎬� 7.鍚婅溅鍏ュ簱涓� => 8.灏忚溅鎼叆搴�
+                                    wrkMast.setWrkSts(8L);
+                                    Date now = new Date();
+                                    wrkMast.setCrnEndTime(now);
+                                    wrkMast.setModiTime(now);
+                                    if (wrkMastMapper.updateById(wrkMast) > 0) {
+                                        // 鍫嗗灈鏈哄浣�
+                                        crnThread.setResetFlag(true);
                                     } else {
-                                        // 淇敼宸ヤ綔妗g姸鎬� 7.鍚婅溅鍏ュ簱涓� => 8.灏忚溅鎼叆搴�
-                                        wrkMast.setWrkSts(8L);
-                                        Date now = new Date();
-                                        wrkMast.setCrnEndTime(now);
-                                        wrkMast.setModiTime(now);
-                                        if (wrkMastMapper.updateById(wrkMast) > 0) {
-                                            // 鍫嗗灈鏈哄浣�
-                                            crnThread.setResetFlag(true);
-                                        } else {
-                                            News.error("淇敼宸ヤ綔妗g姸鎬� 7.鍚婅溅鍏ュ簱涓� => 8.灏忚溅鎼叆搴� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-                                        }
+                                        News.error("淇敼宸ヤ綔妗g姸鎬� 7.鍚婅溅鍏ュ簱涓� => 8.灏忚溅鎼叆搴� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
                                     }
                                 }
                             }
@@ -2002,21 +1835,6 @@
                             }
                         }
                         // 绉诲簱 ===>> 鍫嗗灈鏈烘惉鑷崇洰鏍囧簱浣嶇粍 瀹屾垚
-                    }
-                // 搴撲綅绉昏浆
-                } else {
-                    if (!locMastService.isShuttle(wrkMast.getLocNo())) {
-                        if (wrkMast.getWrkSts() == 16 && wrkMast.getIoType() == 11){
-                            // 鏇存柊宸ヤ綔妗g姸鎬佷负 17.鍑哄簱瀹屾垚
-                            wrkMast.setWrkSts(17L);
-                            wrkMast.setCrnEndTime(new Date());
-                            if (wrkMastMapper.updateById(wrkMast) != 0) {
-                                // 澶嶄綅鍫嗗灈鏈�
-                                crnThread.setResetFlag(true);
-                            } else {
-                                News.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负 17.鍑哄簱瀹屾垚 澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
-                            }
-                        }
                     }
                 }
             }
@@ -2677,24 +2495,24 @@
                                 break;
                             }
                         }
-                        if (!devpThread.charge1) {
-                            SteChargeType second = SteChargeType.SECOND;
-                            locNo = second.locNo;
-                            if (basSteService.hasCarOfLocNo(locNo) == null
-                                && wrkChargeService.selectWorkingOfCharge(second.ssbm) == null) {
-                                steCharge = second;
-                                break;
-                            }
-                        }
-                        if (!devpThread.charge2) {
-                            SteChargeType third = SteChargeType.THIRD;
-                            locNo = third.locNo;
-                            if (basSteService.hasCarOfLocNo(locNo) == null
-                                && wrkChargeService.selectWorkingOfCharge(third.ssbm) == null) {
-                                steCharge = third;
-                                break;
-                            }
-                        }
+//                        if (!devpThread.charge1) {
+//                            SteChargeType second = SteChargeType.SECOND;
+//                            locNo = second.locNo;
+//                            if (basSteService.hasCarOfLocNo(locNo) == null
+//                                && wrkChargeService.selectWorkingOfCharge(second.ssbm) == null) {
+//                                steCharge = second;
+//                                break;
+//                            }
+//                        }
+//                        if (!devpThread.charge2) {
+//                            SteChargeType third = SteChargeType.THIRD;
+//                            locNo = third.locNo;
+//                            if (basSteService.hasCarOfLocNo(locNo) == null
+//                                && wrkChargeService.selectWorkingOfCharge(third.ssbm) == null) {
+//                                steCharge = third;
+//                                break;
+//                            }
+//                        }
                         break;
                     } while (false);
 
@@ -2708,7 +2526,7 @@
                     wrkCharge.setCharge(steCharge.ssbm);
                     wrkCharge.setWrkNo(commonService.getChargeWorkNo(4));
                     wrkCharge.setWrkSts(21L);   // 21.鍑嗗鍏呯數
-                    wrkCharge.setCrnNo(2);  // 鍥哄畾2鍙峰爢鍨涙満
+                    wrkCharge.setCrnNo(1);  // 鍥哄畾1鍙峰爢鍨涙満
                     wrkCharge.setIoPri((double) 10);
                     wrkCharge.setLocNo(chargeLocNo);
                     wrkCharge.setMemo("charge");
@@ -2718,49 +2536,15 @@
                         continue;
                     }
 
-                    // 灏忚溅澶勪簬閫氶亾
-                    List<String> channel = slaveProperties.getChannel();
-                    for (String channelLocNo : channel) {
-                        if (steProtocol.getRow().intValue() == Utils.getRow(channelLocNo)
-                                && steProtocol.getBay().intValue() == Utils.getBay(channelLocNo)
-                                && steProtocol.getLev().intValue() == Utils.getLev(channelLocNo)) {
-                            Integer otherSte = existOtherSte(channelLocNo, wrkCharge.getSteNo());
-                            if (null != otherSte) {
-                                News.warn("{}鍙峰皬杞﹀厖鐢甸樆鏂紝鍘熷洜锛氶�氶亾瀛樺湪{}鍙风┛姊溅锛�", wrkCharge.getSteNo(), otherSte);
-                            } else {
-                                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                                SteCommand steCommand = new SteCommand();
-                                steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
-                                steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙�
-                                steCommand.setTaskMode(SteTaskModeType.GO_ORIGIN);  // 鍘诲彸绔�
-
-                                steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), false).shortValue());
-                                steCommand.setBay(steProtocol.getBay());
-                                steCommand.setLev(steProtocol.getLev());
-                                if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) {
-                                    News.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand));
-                                } else {
-                                    // 淇敼宸ヤ綔妗g姸鎬� 21.鍑嗗鍏呯數 ===> 25.灏忚溅璧拌
-                                    wrkCharge.setWrkSts(25L);
-                                    Date now = new Date();
-                                    wrkCharge.setModiTime(now);
-                                    if (!wrkChargeService.updateById(wrkCharge)) {
-                                        News.error("淇敼鍏呯數浠诲姟鐘舵�� 21.鍑嗗鍏呯數 ===> 25.灏忚溅璧拌 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
-                                    }
-                                }
-                            }
-                        }
-                    }
-
                     // 澶勪簬鍏呯數搴撲綅缁�
                     if (steProtocol.getRow().intValue() == Utils.getRow(chargeLocNo)
                             && steProtocol.getBay().intValue() == Utils.getBay(chargeLocNo)
                             && steProtocol.getLev().intValue() == Utils.getLev(chargeLocNo)) {
-                        // 淇敼宸ヤ綔妗g姸鎬� 21.鍑嗗鍏呯數 => 28.鍏呯數灏辩华
-                        wrkCharge.setWrkSts(28L);
+                        // 淇敼宸ヤ綔妗g姸鎬� 21.鍑嗗鍏呯數 => 24.灏忚溅鍒拌揪
+                        wrkCharge.setWrkSts(24L);
                         wrkCharge.setModiTime(new Date());
                         if (!wrkChargeService.updateById(wrkCharge)) {
-                            News.error("淇敼鍏呯數浠诲姟鐘舵�� 21.鍑嗗鍏呯數 => 28.鍏呯數灏辩华 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+                            News.error("淇敼鍏呯數浠诲姟鐘舵�� 21.鍑嗗鍏呯數 => 24.灏忚溅鍒拌揪 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
                         }
                     } else {
                         this.letCarBeWaiting(wrkCharge, ste.getId());
@@ -2816,49 +2600,39 @@
                     return;
                 }
 
+                LocMast locMast = locMastService.selectById(basSte.getIdleLoc());
+
                 // 鎼皬杞﹁嚦灏忚溅璧板悜閫氶亾
-                List<String> channel = slaveProperties.getChannel();
-                for (String channelLocNo : channel) {
-                    Integer otherSte = existOtherSte(channelLocNo, wrkCharge.getSteNo());
-                    if (null != otherSte) {
-                        News.warn("{}鍙峰皬杞︾Щ鍏}搴撲綅缁勫け璐ワ紝鍘熷洜锛氬瓨鍦▄}鍙风┛姊溅锛�", wrkCharge.getSteNo(), channelLocNo, otherSte);
+                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkCharge.getCrnNo());
+                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+                if (crnProtocol == null) { return; }
+                // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
+                if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
+                    // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 --------------------------------------------------------------------------
+                    CrnCommand crnCommand = new CrnCommand();
+                    crnCommand.setCrnNo(wrkCharge.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
+                    crnCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+                    crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                    crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+                    crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue());     // 婧愬簱浣嶆帓
+                    crnCommand.setSourcePosY(steProtocol.getBay());     // 婧愬簱浣嶅垪
+                    crnCommand.setSourcePosZ(steProtocol.getLev());     // 婧愬簱浣嶅眰
+                    crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo(), true).shortValue());     // 鐩爣搴撲綅鎺�
+                    crnCommand.setDestinationPosY(locMast.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
+                    crnCommand.setDestinationPosZ(locMast.getLev1().shortValue());     // 鐩爣搴撲綅灞�
+                    if (!MessageQueue.offer(SlaveType.Crn, wrkCharge.getCrnNo(), new Task(2, crnCommand))) {
+                        News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getCrnNo(), JSON.toJSON(crnCommand));
                     } else {
-                        LocMast channelLoc = locMastService.selectById(channelLocNo);
-
-                        CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkCharge.getCrnNo());
-                        CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-                        if (crnProtocol == null) { continue; }
-                        // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
-                        if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
-                            // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 --------------------------------------------------------------------------
-                            CrnCommand crnCommand = new CrnCommand();
-                            crnCommand.setCrnNo(wrkCharge.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
-                            crnCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-                            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                            crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                            crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), true).shortValue());     // 婧愬簱浣嶆帓
-                            crnCommand.setSourcePosY(steProtocol.getBay());     // 婧愬簱浣嶅垪
-                            crnCommand.setSourcePosZ(steProtocol.getLev());     // 婧愬簱浣嶅眰
-                            crnCommand.setDestinationPosX(Utils.getGroupRow(channelLoc.getLocNo(), true).shortValue());     // 鐩爣搴撲綅鎺�
-                            crnCommand.setDestinationPosY(channelLoc.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
-                            crnCommand.setDestinationPosZ(channelLoc.getLev1().shortValue());     // 鐩爣搴撲綅灞�
-                            if (!MessageQueue.offer(SlaveType.Crn, wrkCharge.getCrnNo(), new Task(2, crnCommand))) {
-                                News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getCrnNo(), JSON.toJSON(crnCommand));
-                            } else {
-                                // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞�
-                                steThread.modifyPos(Utils.getGroupRow(channelLoc.getLocNo(), true), channelLoc.getBay1(), channelLoc.getLev1());
-                                // 淇敼宸ヤ綔妗g姸鎬� 22.灏忚溅寰呮惉 => 23.鍚婅溅鎼繍
-                                Date now = new Date();
-                                wrkCharge.setWrkSts(23L);
-                                wrkCharge.setCrnStrTime(now);
-                                wrkCharge.setModiTime(now);
-                                if (!wrkChargeService.updateById(wrkCharge)) {
-                                    News.error("淇敼宸ヤ綔妗g姸鎬� 22.灏忚溅寰呮惉 => 23.鍚婅溅鎼繍 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
-                                }
-                            }
-                            break;
+                        // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞�
+                        steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo(), true), locMast.getBay1(), locMast.getLev1());
+                        // 淇敼宸ヤ綔妗g姸鎬� 22.灏忚溅寰呮惉 => 23.鍚婅溅鎼繍
+                        Date now = new Date();
+                        wrkCharge.setWrkSts(23L);
+                        wrkCharge.setCrnStrTime(now);
+                        wrkCharge.setModiTime(now);
+                        if (!wrkChargeService.updateById(wrkCharge)) {
+                            News.error("淇敼宸ヤ綔妗g姸鎬� 22.灏忚溅寰呮惉 => 23.鍚婅溅鎼繍 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
                         }
-
                     }
                 }
 
@@ -2889,49 +2663,6 @@
                     }
                 }
             } else if (wrkCharge.getWrkSts() == 26) {
-                // 鍥哄畾鍫嗗灈鏈�
-                int crnNo = 1;
-                // 鍏ュ嚭搴撲换鍔′紭鍏�
-                if (null != wrkMastMapper.selectWorkingByCrn(crnNo)) {
-                    return;
-                }
-
-                // 鍏呯數浣�
-                LocMast chargeLoc = locMastService.selectById(wrkCharge.getLocNo());
-
-                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnNo);
-                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-                if (crnProtocol == null) { return; }
-                // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
-                if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
-                    // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 --------------------------------------------------------------------------
-                    CrnCommand crnCommand = new CrnCommand();
-                    crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
-                    crnCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-                    crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                    crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                    crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue(), false).shortValue());     // 婧愬簱浣嶆帓
-                    crnCommand.setSourcePosY(steProtocol.getBay());     // 婧愬簱浣嶅垪
-                    crnCommand.setSourcePosZ(steProtocol.getLev());     // 婧愬簱浣嶅眰
-                    crnCommand.setDestinationPosX(chargeLoc.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
-                    crnCommand.setDestinationPosY(chargeLoc.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
-                    crnCommand.setDestinationPosZ(chargeLoc.getLev1().shortValue());     // 鐩爣搴撲綅灞�
-                    if (!MessageQueue.offer(SlaveType.Crn, crnNo, new Task(2, crnCommand))) {
-                        News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", crnNo, JSON.toJSON(crnCommand));
-                    } else {
-                        // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞�
-                        steThread.modifyPos(chargeLoc.getRow1(), chargeLoc.getBay1(), chargeLoc.getLev1());
-                        // 淇敼宸ヤ綔妗g姸鎬� 26.绛夊緟鍏呯數 => 27.鏀捐嚦鍏呯數浣�
-                        Date now = new Date();
-                        wrkCharge.setWrkSts(27L);
-                        wrkCharge.setCrnStrTime(now);
-                        wrkCharge.setModiTime(now);
-                        if (!wrkChargeService.updateById(wrkCharge)) {
-                            News.error("淇敼宸ヤ綔妗g姸鎬� 26.绛夊緟鍏呯數 => 27.鏀捐嚦鍏呯數浣� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
-                        }
-                    }
-                }
-            } else if (wrkCharge.getWrkSts() == 28L) {
                 // 绌挎杞︿笅鍙戝厖鐢典换鍔�
                 SteCommand steCommand = new SteCommand();
                 steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
@@ -2955,6 +2686,7 @@
     /**
      * 杞鍏呯數妗╂槸鍚︽湁绌洪棽灏忚溅
      */
+    @Deprecated
     public synchronized void queryChargeLocOfComplete() {
         // 涓庡厖鐢典换鍔′笉鍚屾杩涜
         if (null != wrkChargeService.selectWorking(null, WrkChargeType.charge)) { return; }
@@ -3031,6 +2763,7 @@
     /**
      * 灏忚溅浠庡厖鐢垫々 鑷� 寰呮満搴撲綅
      */
+    @Deprecated
     public synchronized void steFromChargeToIdleLoc() {
         WrkCharge wrkCharge = wrkChargeService.selectWorking(null, WrkChargeType.reset);
         if (wrkCharge == null) { return; }

--
Gitblit v1.9.1