From 8d03e68b6aa4ad06fa0b653eb43720080b1e28f2 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 01 八月 2023 10:55:15 +0800
Subject: [PATCH] 提升机出入库

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  374 +++++++++++++++++++----------------------------------
 1 files changed, 134 insertions(+), 240 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 d645c25..44ac0c8 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1391,19 +1391,13 @@
                 continue;
             }
 
-
-//            if (!liftProtocol.isIdle()) {
-//                continue;
-//            }
-
-            //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庣┖闂茬姸鎬侊紝娌℃湁鍒ゆ柇浠诲姟鍙凤紝鍙兘鎻愬崌鏈哄浜庣┖闂诧紝浣嗘槸杩樻湁浠诲姟鏈畬鎴�
-            if (!liftProtocol.isIdleNoTask()) {
+            if (!liftProtocol.isIdle()) {
                 continue;
             }
 
             //鎼滅储鏄惁鏈夊緟澶勭悊鐨勪换鍔�
-            List<WrkMast> wrkMasts = wrkMastMapper.selectLiftStep262327();
-            if (wrkMasts.size() == 0) {
+            List<WrkMast> wrkMasts = wrkMastMapper.selectLiftStep223103();
+            if (wrkMasts.isEmpty()) {
                 continue;
             }
 
@@ -1414,243 +1408,142 @@
                     continue;
                 }
 
-                //鍛戒护list
-                ArrayList<LiftCommand> commands = new ArrayList<>();
-
-                DevpThread devpThread = null;
-                Integer devpId = null;
-                for (DevpSlave devp : slaveProperties.getDevp()){
-                    // 鑾峰彇鍏ュ簱绔欎俊鎭�
-                    devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                    devpId = devp.getId();
+                boolean stepIn = this.liftIoExecuteStepIn(wrkMast);//鎻愬崌鏈哄叆搴�
+                if (!stepIn) {
+                    continue;
                 }
 
-                if (wrkMast.getWrkSts() == 2) {//2.璁惧涓婅蛋
-                    if (liftProtocol.getTaskNo().intValue() != 0) {
-                        //瀛樺湪鏈畬鎴愪换鍔″彿
-                        continue;
-                    }
-//                    if (liftProtocol.getPlatShuttleCheck()) {
-//                        //鎻愬崌鏈烘鏃舵湁鍥涘悜杞︼紝鍙兘鏈夋湭瀹屾垚鐨勪换鍔★紝绂佹鍒嗛厤鏂颁换鍔�
-//                        continue;
-//                    }
-
-                    //鑾峰彇鐩爣绔�
-                    StaProtocol staProtocol = devpThread.getStation().get(wrkMast.getStaNo());
-                    if (staProtocol.isLoading() || !staProtocol.isInEnable()) {//鐩爣绔欐湁鐗╋紝涓嶅彲鍏ワ紝绂佹鍒嗛厤浠诲姟
-                        continue;
-                    }
-
-                    //宸ヤ綔妗g洰鏍囧簱浣嶅彿
-                    String wrkMastLocNo = wrkMast.getLocNo();
-                    //宸ヤ綔妗g洰鏍囧簱浣嶆ゼ灞�
-                    int wrkMastLocNoLey = Utils.getLev(wrkMastLocNo);
-
-                    Integer levTmp = wrkMastLocNoLey;
-                    if (wrkMastLocNoLey >= 2) {
-                        levTmp += 1;
-                    }
-                    Integer distStaNo = Utils.levToOutInStaNo(levTmp);
-
-//                    if (liftProtocol.getPositionArrivalFeedback().intValue() != LiftLevType.TWO.realLev.intValue()) {
-//                        //鎻愬崌鏈轰笉鍦ㄨ緭閫佺嚎妤煎眰锛岃幏鍙栧埌杈撻�佺嚎灞傜殑鎻愬崌鏈哄懡浠�
-//                        LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), LiftLevType.TWO.lev);
-//                        commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list
-//                    }
-
-//                    //杈撻�佺嚎灏嗚揣鐗╄繍杩涙潵(鏃犺揣姝h浆)
-//                    LiftCommand command2 = liftThread.getLiftTurnCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), 3);
-//                    command2.setOperaStaNo((short) 102);//鎿嶄綔102绔�
-//                    command2.setRotationDire(1);//缁欒緭閫佺嚎涓嬪彂閾炬潯杞姩淇″彿锛屾杞�
-//                    command2.setDevpId(devpId);
-//                    command2.setStaNo(distStaNo.shortValue());//璁剧疆鐩爣绔�
-//                    commands.add(command2);//灏嗗懡浠ゆ坊鍔犺繘list
-//
-//                    //鎻愬崌鏈哄墠寰�鐩爣妤煎眰(宸ヤ綔妗g洰鏍囨ゼ灞�)
-//                    LiftCommand command3 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), levTmp);
-//                    commands.add(command3);//灏嗗懡浠ゆ坊鍔犺繘list
-//
-//                    //鎻愬崌鏈哄埌杈炬寚瀹氭ゼ灞傦紝杈撻�佺嚎灏嗚揣鐗╃Щ鍑哄幓(姝h浆)
-//                    //杈撻�佺嚎灏嗚揣鐗╃Щ鍑哄幓
-//                    LiftCommand command4 = liftThread.getLiftTurnCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), 1);
-//                    command4.setOperaStaNo(distStaNo.shortValue());//鎿嶄綔鐩爣妤煎眰绔欑偣
-//                    command4.setRotationDire(1);//缁欒緭閫佺嚎涓嬪彂閾炬潯杞姩淇″彿锛屾杞�
-//                    command4.setDevpId(devpId);
-//                    command4.setStaNo(distStaNo.shortValue());//璁剧疆鐩爣绔�
-//                    commands.add(command4);//灏嗗懡浠ゆ坊鍔犺繘list
-
-                    //缁欐彁鍗囨満鍒嗛厤浠诲姟
-                    liftProtocol.setTaskNo(wrkMast.getWrkNo().shortValue());//璁剧疆浠诲姟鍙�
-                    liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//璁剧疆鎻愬崌鏈虹姸鎬佷负宸ヤ綔涓�
-
-                    wrkMast.setLiftNo(liftProtocol.getLiftNo().intValue());//璁剧疆鎻愬崌鏈哄彿鐢ㄤ簬閿佸畾鎻愬崌鏈洪槻姝㈣鍏朵粬浠诲姟鍗犵敤
-                    wrkMast.setWrkSts(3L);//3.鎻愬崌鏈烘惉杩愪腑
-                } else if (wrkMast.getWrkSts() == 6) {//6.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 7.鎻愬崌鏈鸿縼绉诲皬杞︿腑
-                    if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) {
-                        //鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛屼笖鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙蜂笉涓�鑷�
-                        continue;
-                    }
-                    liftProtocol.setShuttleNo(wrkMast.getShuttleNo().shortValue());//璁剧疆鍥涘悜绌挎杞﹀彿
-
-                    //鍒ゆ柇灏忚溅鏄惁鍦ㄦ彁鍗囨満鍐咃紝涓斿浜庣┖闂茬姸鎬�
-                    ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-                    if (shuttleThread == null) {
-                        continue;
-                    }
-                    ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
-                    if (shuttleProtocol == null) {
-                        continue;
-                    }
-                    if (!shuttleProtocol.isIdle(wrkMast.getWrkNo().shortValue())) {
-                        continue;//灏忚溅鐘舵�佸繖
-                    }
-//                    if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) {
-//                        continue;//灏忚溅褰撳墠浜岀淮鐮佸拰鎻愬崌鏈哄唴閮ㄤ簩缁寸爜涓嶄竴鑷达紝涓嶅厑璁告墽琛�
-//                    }
-//                    if (!liftProtocol.getPlatShuttleCheck()) {
-//                        //鎻愬崌鏈烘湭妫�娴嬪埌灏忚溅锛岀姝㈡墽琛�
-//                        continue;
-//                    }
-
-                    //宸ヤ綔妗g洰鏍囧簱浣嶅彿
-                    String wrkMastLocNo = wrkMast.getLocNo();
-                    //宸ヤ綔妗g洰鏍囧簱浣嶆ゼ灞�
-                    int wrkMastLocNoLey = Utils.getLev(wrkMastLocNo);
-                    if (wrkMastLocNoLey >= 2) {
-                        wrkMastLocNoLey++;
-                    }
-
-//                    //鎻愬崌鏈哄墠寰�鐩爣妤煎眰(宸ヤ綔妗g洰鏍囨ゼ灞�)
-//                    LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), wrkMastLocNoLey);
-//                    commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list
-
-                    //缁欐彁鍗囨満鍒嗛厤浠诲姟
-                    liftProtocol.setTaskNo(wrkMast.getWrkNo().shortValue());//璁剧疆浠诲姟鍙�
-                    liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//璁剧疆鎻愬崌鏈虹姸鎬佷负宸ヤ綔涓�
-
-                    wrkMast.setLiftNo(liftProtocol.getLiftNo().intValue());//璁剧疆鎻愬崌鏈哄彿鐢ㄤ簬閿佸畾鎻愬崌鏈洪槻姝㈣鍏朵粬浠诲姟鍗犵敤
-                    wrkMast.setWrkSts(7L);//6.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 7.鎻愬崌鏈鸿縼绉诲皬杞︿腑
-                } else if(wrkMast.getWrkSts() == 23) {//23.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 24.鎻愬崌鏈鸿縼绉诲皬杞︿腑
-                    if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) {
-                        //鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛屼笖鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙蜂笉涓�鑷�
-                        continue;
-                    }
-                    liftProtocol.setShuttleNo(wrkMast.getShuttleNo().shortValue());//璁剧疆鍥涘悜绌挎杞﹀彿
-
-                    //鍒ゆ柇灏忚溅鏄惁鍦ㄦ彁鍗囨満鍐咃紝涓斿浜庣┖闂茬姸鎬�
-                    ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
-                    if (shuttleThread == null) {
-                        continue;
-                    }
-                    ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
-                    if (shuttleProtocol == null) {
-                        continue;
-                    }
-
-                    if (!shuttleProtocol.isIdle(wrkMast.getWrkNo().shortValue())) {
-                        continue;//灏忚溅鐘舵�佸繖
-                    }
-//                    if (shuttleProtocol.getCurrentCode().intValue() != liftProtocol.getBarcode().intValue()) {
-//                        continue;//灏忚溅褰撳墠浜岀淮鐮佸拰鎻愬崌鏈哄唴閮ㄤ簩缁寸爜涓嶄竴鑷达紝涓嶅厑璁告墽琛�
-//                    }
-//                    if (!liftProtocol.getPlatShuttleCheck()) {
-//                        //鎻愬崌鏈烘湭妫�娴嬪埌灏忚溅锛岀姝㈡墽琛�
-//                        continue;
-//                    }
-
-                    //宸ヤ綔妗g洰鏍囧簱浣嶅彿
-                    String wrkMastLocNo = wrkMast.getSourceLocNo();
-                    //宸ヤ綔妗g洰鏍囧簱浣嶆ゼ灞�
-                    int wrkMastLocNoLey = Utils.getLev(wrkMastLocNo);
-                    if (wrkMastLocNoLey >= 2) {
-                        wrkMastLocNoLey++;
-                    }
-
-//                    //鎻愬崌鏈哄墠寰�鐩爣妤煎眰(宸ヤ綔妗g洰鏍囨ゼ灞�)
-//                    LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), wrkMastLocNoLey);
-//                    commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list
-
-                    //缁欐彁鍗囨満鍒嗛厤浠诲姟
-                    liftProtocol.setTaskNo(wrkMast.getWrkNo().shortValue());//璁剧疆浠诲姟鍙�
-                    liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//璁剧疆鎻愬崌鏈虹姸鎬佷负宸ヤ綔涓�
-
-                    wrkMast.setLiftNo(liftProtocol.getLiftNo().intValue());//璁剧疆鎻愬崌鏈哄彿鐢ㄤ簬閿佸畾鎻愬崌鏈洪槻姝㈣鍏朵粬浠诲姟鍗犵敤
-                    wrkMast.setWrkSts(24L);//23.杩佺Щ灏忚溅鑷虫彁鍗囨満鍙e畬鎴� => 24.鎻愬崌鏈鸿縼绉诲皬杞︿腑
-                } else if (wrkMast.getWrkSts() == 27) {//27.灏忚溅鍑哄簱鎼繍瀹屾垚
-                    if (liftProtocol.getTaskNo().intValue() != 0 && liftProtocol.getTaskNo().intValue() != wrkMast.getWrkNo()) {
-                        //鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛屼笖鎻愬崌鏈轰换鍔″彿鍜屽綋鍓嶅伐浣滄。浠诲姟鍙蜂笉涓�鑷�
-                        continue;
-                    }
-//                    if (liftProtocol.getPlatShuttleCheck()) {
-//                        //鎻愬崌鏈烘鏃舵湁鍥涘悜杞︼紝鍙兘鏈夋湭瀹屾垚鐨勪换鍔★紝绂佹鍒嗛厤鏂颁换鍔�
-//                        continue;
-//                    }
-
-                    //宸ヤ綔妗f簮搴撲綅鍙�
-                    String wrkMastLocNo = wrkMast.getSourceLocNo();
-                    //宸ヤ綔妗f簮搴撲綅妤煎眰
-                    int wrkMastLocNoLey = Utils.getLev(wrkMastLocNo);
-
-                    //鎻愬崌鏈哄綋鍓嶆ゼ灞�
-                    int liftLev = liftProtocol.getLev().intValue();
-
-//                    //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀埌浣�
-//                    StaProtocol staProtocol = devpThread.getStation().get(Utils.levToOutInStaNo(wrkMastLocNoLey >= 2 ? wrkMastLocNoLey + 1 : wrkMastLocNoLey));//璧峰绔欑偣
-//                    if (liftLev != wrkMastLocNoLey && !staProtocol.isLiftArrival()) {
-//                        //鎻愬崌鏈轰笉鍦ㄥ伐浣滄。婧愬簱浣嶆ゼ灞傦紝璋冨害鎻愬崌鏈�
-//                        LiftCommand command1 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), wrkMastLocNoLey);
-//                        commands.add(command1);//灏嗗懡浠ゆ坊鍔犺繘list
-//                    }
-//
-//                    //杈撻�佺嚎灏嗚揣鐗╄繍杩涙潵(鏃犺揣鍙嶈浆)
-//                    LiftCommand command2 = liftThread.getLiftTurnCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), 4);
-//                    command2.setOperaStaNo(staProtocol.getSiteId().shortValue());//杈撻�佺嚎鎿嶄綔绔欑偣鍙�
-//                    command2.setRotationDire(2);//缁欒緭閫佺嚎涓嬪彂閾炬潯杞姩淇″彿锛屽弽杞�
-//                    command2.setDevpId(devpId);//杈撻�佺嚎ID
-//                    command2.setStaNo((short) 104);//鍐欏叆鍑哄簱鐩爣绔�104
-//                    commands.add(command2);//灏嗗懡浠ゆ坊鍔犺繘list
-//
-//                    //鎻愬崌鏈哄墠寰�鍑哄簱鍙o紝杈撻�佺嚎妤煎眰
-//                    LiftCommand command3 = liftThread.getLiftUpDownCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), LiftLevType.TWO.lev);
-//                    command3.setDevpId(devpId);//杈撻�佺嚎ID
-//                    commands.add(command3);//灏嗗懡浠ゆ坊鍔犺繘list
-//
-//                    //鎻愬崌鏈哄埌杈炬寚瀹氭ゼ灞傦紝杈撻�佺嚎灏嗚揣鐗╃Щ鍑哄幓(鍙嶈浆)
-//                    //杈撻�佺嚎灏嗚揣鐗╃Щ鍑哄幓
-//                    LiftCommand command4 = liftThread.getLiftTurnCommand(liftProtocol.getLiftNo(), liftProtocol.getTaskNo(), 2);
-//                    command4.setOperaStaNo((short) 102);//鎿嶄綔102绔�
-//                    command4.setRotationDire(2);//缁欒緭閫佺嚎涓嬪彂閾炬潯杞姩淇″彿锛屽弽杞�
-//                    command4.setDevpId(devpId);//杈撻�佺嚎ID
-//                    commands.add(command4);//灏嗗懡浠ゆ坊鍔犺繘list
-//
-//                    //鎻愬崌鏈洪摼鏉℃墽琛屽畬姣曞悗锛岀粰102绔欏啓鍏ヨ祫鏂�
-//                    LiftCommand command5 = liftThread.getResetCommand();
-//                    command5.setDevpId(devpId);//杈撻�佺嚎ID
-//                    command5.setOperaStaNo((short) 102);//鎿嶄綔102绔�
-//                    command5.setStaNo((short) 104);//鍐欏叆鍑哄簱鐩爣绔�104
-//                    command5.setRotationDire(0);//閾炬潯杞姩鍋滄
-//                    commands.add(command5);
-
-                    //缁欐彁鍗囨満鍒嗛厤浠诲姟
-                    liftProtocol.setTaskNo(wrkMast.getWrkNo().shortValue());//璁剧疆浠诲姟鍙�
-                    liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//璁剧疆鎻愬崌鏈虹姸鎬佷负宸ヤ綔涓�
-
-                    wrkMast.setLiftNo(liftProtocol.getLiftNo().intValue());//璁剧疆鎻愬崌鏈哄彿鐢ㄤ簬閿佸畾鎻愬崌鏈洪槻姝㈣鍏朵粬浠诲姟鍗犵敤
-                    wrkMast.setWrkSts(28L);//28.鎻愬崌鏈烘惉杩愪腑
-                }
-
-                //鎵�闇�鍛戒护缁勫悎瀹屾瘯锛屾洿鏂版暟鎹簱锛屾彁浜ゅ埌绾跨▼鍘诲伐浣�
-                LiftAssignCommand assignCommand = new LiftAssignCommand();
-//                assignCommand.setCommands(commands);
-                assignCommand.setLiftNo(liftProtocol.getLiftNo());
-                assignCommand.setTaskNo(liftProtocol.getTaskNo());
-                if (wrkMastMapper.updateById(wrkMast) > 0) {
-                    //涓嬪彂浠诲姟
-                    MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand));
+                boolean stepOut = this.liftIoExecuteStepOut(wrkMast);//鎻愬崌鏈哄嚭搴�
+                if (!stepOut) {
+                    continue;
                 }
             }
 
         }
+    }
+
+    /**
+     * 鎻愬崌鏈哄叆搴�
+     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+     */
+    private boolean liftIoExecuteStepIn(WrkMast wrkMast) {
+        //--------------------------------------鎻愬崌鏈哄叆搴�-----------------------------------------//
+        Date now = new Date();
+
+        //2.璁惧涓婅蛋 ==> 3.鎻愬崌鏈烘惉杩愪腑
+        if (wrkMast.getWrkSts() == 2) {
+            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+            if (liftThread == null) {
+                return false;
+            }
+            LiftProtocol liftProtocol = liftThread.getLiftProtocol();
+            if (liftProtocol == null) {
+                return false;
+            }
+            if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) {
+                return false;
+            }
+            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+            WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftThread.getSlave().getId());
+            if (liftWrkMast != null) {
+                return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+            }
+
+            //鑾峰彇婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐�
+            BasDevp sourceBasDevp = basDevpService.selectById(wrkMast.getSourceStaNo());
+            //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐�
+            BasDevp targetBasDevp = basDevpService.selectById(wrkMast.getStaNo());
+            if (sourceBasDevp == null || targetBasDevp == null) {
+                return false;//缂哄皯绔欑偣淇℃伅
+            }
+
+            //鑾峰彇鎻愬崌鏈哄懡浠�
+            NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, sourceBasDevp.getDevNo(), targetBasDevp.getDevNo(), wrkMast.getWrkNo());
+
+            ArrayList<NyLiftCommand> commands = new ArrayList<>();
+            commands.add(liftCommand);
+
+            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
+            LiftAssignCommand assignCommand = new LiftAssignCommand();
+            assignCommand.setCommands(commands);
+            assignCommand.setLiftNo(liftProtocol.getLiftNo());
+            assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
+            assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_TRAY.id.shortValue());
+
+            wrkMast.setWrkSts(3L);//2.璁惧涓婅蛋 ==> 3.鎻愬崌鏈烘惉杩愪腑
+            wrkMast.setLiftNo(liftThread.getSlave().getId());//浠诲姟妗g粦瀹氭彁鍗囨満鍙�
+            wrkMast.setModiTime(now);
+            if (wrkMastMapper.updateById(wrkMast) > 0) {
+                //涓嬪彂浠诲姟
+                MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand));
+            }
+
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 鎻愬崌鏈哄嚭搴�
+     * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false
+     * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue
+     */
+    private boolean liftIoExecuteStepOut(WrkMast wrkMast) {
+        //--------------------------------------鎻愬崌鏈哄嚭搴�-----------------------------------------//
+        Date now = new Date();
+
+        //23.灏忚溅鎼繍瀹屾垚 ==> 24.鎻愬崌鏈烘惉杩愪腑
+        if (wrkMast.getWrkSts() == 23) {
+            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo());
+            if (liftThread == null) {
+                return false;
+            }
+            LiftProtocol liftProtocol = liftThread.getLiftProtocol();
+            if (liftProtocol == null) {
+                return false;
+            }
+            if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) {
+                return false;
+            }
+            //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟
+            WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftThread.getSlave().getId());
+            if (liftWrkMast != null) {
+                return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+            }
+
+            //鑾峰彇婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐�
+            BasDevp sourceBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getSourceLocNo()), liftProtocol.getLiftNo().intValue());
+            //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐�
+            BasDevp targetBasDevp = basDevpService.selectById(wrkMast.getSourceStaNo());
+            if (sourceBasDevp == null || targetBasDevp == null) {
+                return false;//缂哄皯绔欑偣淇℃伅
+            }
+
+            //鑾峰彇鎻愬崌鏈哄懡浠�
+            NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, sourceBasDevp.getDevNo(), targetBasDevp.getDevNo(), wrkMast.getWrkNo());
+
+            ArrayList<NyLiftCommand> commands = new ArrayList<>();
+            commands.add(liftCommand);
+
+            //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
+            LiftAssignCommand assignCommand = new LiftAssignCommand();
+            assignCommand.setCommands(commands);
+            assignCommand.setLiftNo(liftProtocol.getLiftNo());
+            assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
+            assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_TRAY.id.shortValue());
+
+            wrkMast.setWrkSts(24L);//23.灏忚溅鎼繍瀹屾垚 ==> 24.鎻愬崌鏈烘惉杩愪腑
+            wrkMast.setLiftNo(liftThread.getSlave().getId());//浠诲姟妗g粦瀹氭彁鍗囨満鍙�
+            wrkMast.setModiTime(now);
+            if (wrkMastMapper.updateById(wrkMast) > 0) {
+                //涓嬪彂浠诲姟
+                MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand));
+            }
+
+            return false;
+        }
+        return true;
     }
 
     /**
@@ -1677,6 +1570,7 @@
                     switch (wrkMast.getWrkSts().intValue()) {
                         case 3://3.鎻愬崌鏈烘惉杩愪腑 ==> 4.鎻愬崌鏈烘惉杩愬畬鎴�
                             wrkMast.setWrkSts(4L);
+                            wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
                             break;
                         case 24://24.鎻愬崌鏈烘惉杩愪腑 ==> 25.鎻愬崌鏈烘惉杩愬畬鎴�
                             wrkMast.setWrkSts(25L);

--
Gitblit v1.9.1