From de27c6f2d428632ed21a015dc6bfb73cc07f31a3 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 30 三月 2023 10:43:55 +0800
Subject: [PATCH] 四向穿梭车入库模式完善

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  101 ++++++++++++++++++++++++++++----------------------
 1 files changed, 57 insertions(+), 44 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 e3d8031..8bb3c30 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -636,15 +636,28 @@
                 if (true || staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) {
                     WrkMast wrkMast = wrkMastMapper.selectRackInStep48(workNo, staProtocol.getSiteId());
                     if (wrkMast != null) {
-                        if (wrkMast.getWrkSts() == 4) {
-                            //瀵绘壘鏈�杩戜笖绌洪棽鐨勫洓鍚戠┛姊溅
-                            HashMap<String, Object> searchIdleShuttle = this.searchIdleShuttle(wrkMast);
-                            ShuttleThread shuttleThread = (ShuttleThread) searchIdleShuttle.get("result");
+                        if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 8) {
+                            ShuttleThread shuttleThread = null;
+                            HashMap<String, Object> searchIdleShuttle = null;
+                            if (wrkMast.getWrkSts() == 4) {
+                                //瀵绘壘鏈�杩戜笖绌洪棽鐨勫洓鍚戠┛姊溅
+                                searchIdleShuttle = this.searchIdleShuttle(wrkMast);
+                                shuttleThread = (ShuttleThread) searchIdleShuttle.get("result");
+                            }else {
+                                //鐘舵��8锛屽洓鍚戠┛姊溅宸插湪鎻愬崌鏈哄彛锛岀瓑寰呭懡浠よ繘琛屽叆搴撴惉杩愬姩浣�
+                                Integer shuttleNo = wrkMast.getShuttleNo();//鍥涘悜绌挎杞﹀彿
+                                shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
+                            }
+
                             if (shuttleThread == null) {
                                 continue;
                             }
 
                             ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+                            if (!shuttleProtocol.isIdle()) {
+                                continue;
+                            }
+
                             wrkMast.setShuttleNo(shuttleProtocol.getShuttleNo().intValue());//缁欏伐浣滄。鍒嗛厤鍥涘悜绌挎杞﹀彿
 
                             //鍒嗛厤浠诲姟鍙�
@@ -664,52 +677,30 @@
                             LocMast currentLocMast = locMastService.queryByQrCode(currentCode.toString());
                             assignCommand.setSourceLocNo(currentLocMast.getLocNo());
 
-                            if (Boolean.parseBoolean(searchIdleShuttle.get("sameLay").toString())) {
+                            if (wrkMast.getWrkSts() == 8 || Boolean.parseBoolean(searchIdleShuttle.get("sameLay").toString())) {
                                 //鍚屼竴灞�
                                 //鍒嗛厤鐩爣搴撲綅
                                 shuttleProtocol.setLocNo(wrkMast.getLocNo());
                                 //鐩爣搴撲綅
-                                assignCommand.setDistLocNo(wrkMast.getLocNo());
+                                assignCommand.setLocNo(wrkMast.getLocNo());
                                 wrkMast.setWrkSts(9L);//灏忚溅鍏ュ簱涓�
                             }else {
                                 //涓嶅悓灞傦紝灏嗙洰鏍囧簱浣嶅垎閰嶆垚鎻愬崌鏈哄簱浣嶅彿
-                                //鍒嗛厤鐩爣搴撲綅
-                                shuttleProtocol.setLocNo("1800201");
+
+                                //灏忚溅褰撳墠灞傞珮
+                                String currentLocNo = currentLocMast.getLocNo();
+                                Integer currentLev = Integer.parseInt(currentLocNo.substring(currentLocNo.length() - 2, currentLocNo.length()));
+
+                                //鑾峰彇鎻愬崌鏈�
+                                LiftSlave liftSlave = slaveProperties.getLift().get(0);
+                                //鎻愬崌鏈哄簱浣嶅彿
+                                String liftLocNo = liftSlave.getLiftLocNo(currentLev);
+                                shuttleProtocol.setLocNo(liftLocNo);
                                 //鐩爣搴撲綅
-                                assignCommand.setDistLocNo("1800201");
+                                assignCommand.setLocNo(liftLocNo);
                                 wrkMast.setWrkSts(5L);//灏忚溅杩佺Щ鐘舵��
                             }
 
-                            if (wrkMastMapper.updateById(wrkMast) > 0) {
-                                //涓嬪彂浠诲姟
-                                MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
-                            }
-                        }else {
-                            //鐘舵��8锛屽洓鍚戠┛姊溅宸插湪鎻愬崌鏈哄彛锛岀瓑寰呭懡浠よ繘琛屽叆搴撴惉杩愬姩浣�
-                            Integer shuttleNo = wrkMast.getShuttleNo();//鍥涘悜绌挎杞﹀彿
-                            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
-                            if (shuttleThread == null) {
-                                continue;
-                            }
-                            ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
-
-                            //鍒嗛厤鐩爣搴撲綅
-                            shuttleProtocol.setLocNo(wrkMast.getLocNo());
-
-                            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-                            //鍥涘悜绌挎杞﹀彿
-                            assignCommand.setShuttleNo(shuttleNo.shortValue());
-                            //浠诲姟鍙�
-                            assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
-                            //鍏ュ嚭搴撴ā寮�
-                            assignCommand.setTaskMode(ShuttleTaskModeType.PAK_IN.id.shortValue());
-                            //婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
-                            Short currentCode = shuttleProtocol.getCurrentCode();
-                            LocMast currentLocMast = locMastService.queryByQrCode(currentCode.toString());
-                            assignCommand.setSourceLocNo(currentLocMast.getLocNo());
-                            //鐩爣搴撲綅
-                            assignCommand.setDistLocNo(wrkMast.getLocNo());
-                            wrkMast.setWrkSts(9L);//灏忚溅鍏ュ簱涓�
                             if (wrkMastMapper.updateById(wrkMast) > 0) {
                                 //涓嬪彂浠诲姟
                                 MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
@@ -778,10 +769,23 @@
                     //妤煎眰鐩稿悓鎯呭喌
                     //鎵捐窛绂诲嚭搴撶偣鏈�杩戠殑杞�
 
+                    if (!(recentShuttleProtocol.isIdle() && shuttleProtocol.isIdle())) {
+                        //鍙鏈変竴杈嗚溅涓嶆槸绌洪棽鍒欎笉杩涜璋冨害
+                        map.put("sameLay", false);//涓嶅悓灞�
+                        map.put("result", null);
+                        return map;
+                    }
+
+                    //鑾峰彇鎻愬崌鏈�
+                    LiftSlave liftSlave = slaveProperties.getLift().get(0);
+                    //鎻愬崌鏈哄簱浣嶅彿
+                    String recentLiftLocNo = liftSlave.getLiftLocNo(recentShuttleLocNoLayInt);
+                    String shuttleLiftLocNo = liftSlave.getLiftLocNo(shuttleLocNoLayInt);
+
                     //褰撳墠鏈�杩戝洓鍚戠┛姊溅鍒版彁鍗囨満璺緞
-                    List<NavigateNode> recentShuttlePath = NavigateUtils.calc(recentShuttleLocNo, "1800201", ShuttleTaskModeType.PAK_IN.id);
+                    List<NavigateNode> recentShuttlePath = NavigateUtils.calc(recentShuttleLocNo, recentLiftLocNo, ShuttleTaskModeType.PAK_IN.id);
                     //褰撳墠妤煎眰鍥涘悜绌挎杞﹀埌鎻愬崌鏈鸿矾寰�
-                    List<NavigateNode> shuttlePath = NavigateUtils.calc(shuttleLocNo, "1800201", ShuttleTaskModeType.PAK_IN.id);
+                    List<NavigateNode> shuttlePath = NavigateUtils.calc(shuttleLocNo, shuttleLiftLocNo, ShuttleTaskModeType.PAK_IN.id);
                     //鍒ゆ柇鍝竴涓矾寰勬渶鐭�
                     if (shuttlePath.size() < recentShuttlePath.size()) {
                         //濡傛灉褰撳墠妤煎眰鐨勮溅璺緞鏇村皬锛屽垯鏇存柊鏈�杩戠┛姊溅
@@ -811,9 +815,18 @@
             //鍥涘悜绌挎杞︾姸鎬佷负绛夊緟纭
             if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id && shuttleProtocol.getTaskNo() != 0) {
                 //灏嗕换鍔℃。鏍囪涓哄畬鎴�
-                WrkMast wrkMast = wrkMastMapper.selectByWorkNo9(shuttleProtocol.getTaskNo().intValue());
+                WrkMast wrkMast = wrkMastMapper.selectByWorkNo59(shuttleProtocol.getTaskNo().intValue());
                 if (wrkMast != null) {
-                    wrkMast.setWrkSts(14L);
+                    switch (wrkMast.getWrkSts().intValue()) {
+                        case 9:
+                            wrkMast.setWrkSts(14L);
+                            break;
+                        case 5:
+                            wrkMast.setWrkSts(6L);
+                            break;
+                        default:
+                    }
+
                     if (wrkMastMapper.updateById(wrkMast) > 0) {
                         //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵��
                         shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
@@ -825,7 +838,7 @@
                         shuttleProtocol.setLocNo(null);
                         //鏍囪澶嶄綅
                         shuttleProtocol.setPakMk(true);
-                        News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚爢鍨涙満鍙�={}", shuttleProtocol.getShuttleNo());
+                        News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚爢鍨涙満鍙�={}", shuttleProtocol.getShuttleNo());
                     } else {
                         News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo());
                     }

--
Gitblit v1.9.1