From cb757218ff35e8b302de2d6cc5a95b842acd8ea2 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 20 九月 2023 12:33:05 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/LiftThread.java            |   12 +++-
 src/main/java/com/zy/common/utils/NyLiftUtils.java          |    6 +-
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   30 ++++++++-
 src/main/java/com/zy/core/thread/NyShuttleThread.java       |   79 +++++++++++++++----------
 src/main/java/com/zy/asrs/controller/LiftController.java    |   20 +-----
 src/main/webapp/views/lift.html                             |    4 +
 6 files changed, 92 insertions(+), 59 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/LiftController.java b/src/main/java/com/zy/asrs/controller/LiftController.java
index a2199df..0104c32 100644
--- a/src/main/java/com/zy/asrs/controller/LiftController.java
+++ b/src/main/java/com/zy/asrs/controller/LiftController.java
@@ -234,24 +234,14 @@
                     //绉诲姩鎵樼洏
                     int workNo = commonService.getWorkNo(3);//鑾峰彇浠诲姟鍙�
 
-                    Integer startSta = null;
-                    Integer targetSta = null;
-                    for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) {
-                        if (liftStaProtocol.getStaNo() == param.getSourceStaNo()) {
-                            startSta = liftStaProtocol.getStaNo();
-                        }
-
-                        if (liftStaProtocol.getLev() == param.getStaNo()) {
-                            targetSta = liftStaProtocol.getStaNo();
-                        }
-                    }
-
-                    if (startSta == null || targetSta == null) {
-                        throw new CoolException("璧风偣鎴栫洰鏍囩偣涓嶅瓨鍦�");
+                    LiftStaProtocol sourceLiftSta = NyLiftUtils.getLiftStaByStaNo(param.getSourceStaNo());
+                    LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(param.getStaNo());
+                    if (sourceLiftSta == null || liftSta == null) {
+                        throw new CoolException("婧愮珯鎴栫洰鏍囩珯涓嶅瓨鍦�");
                     }
 
                     //鑾峰彇鎻愬崌鏈哄懡浠�
-                    NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, startSta, targetSta, workNo);
+                    NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, sourceLiftSta.getStaNo(), liftSta.getStaNo(), workNo);
                     ArrayList<NyLiftCommand> commands = new ArrayList<>();
                     commands.add(liftCommand);
 
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 45ab344..4b61f61 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -928,12 +928,17 @@
                             break;
                         case 110://110.灏忚溅绉诲姩涓� ==> 111.灏忚溅绉诲姩瀹屾垚
                             wrkMast.setWrkSts(111L);
+                            shuttleProtocol.setTaskNo(0);
                             if (shuttleProtocol.getToken() == wrkMast.getWrkNo()) {
                                 //閲婃斁灏忚溅浠ょ墝
                                 shuttleProtocol.setToken(0);
                             }
                             break;
-                        case 111:
+                        default:
+                    }
+
+                    if (wrkMastMapper.updateById(wrkMast) > 0) {
+                        if (wrkMast.getWrkSts() == 111) {
                             // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
                             if (wrkMastLocMapper.save(wrkMast.getWrkNo()) <= 0) {
                                 log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo());
@@ -942,11 +947,8 @@
                             if (!wrkMastService.deleteById(wrkMast)) {
                                 log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo());
                             }
-                            break;
-                        default:
-                    }
+                        }
 
-                    if (wrkMastMapper.updateById(wrkMast) > 0) {
                         //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵��
                         shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
                         //婧愬簱浣嶆竻闆�
@@ -959,6 +961,24 @@
                     } else {
                         News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo());
                     }
+                }else {
+                    ShuttleAssignCommand assignCommand = shuttleProtocol.getAssignCommand();
+                    if (!assignCommand.getAuto()) {
+                        //鎵嬪姩妯″紡
+                        //宸ヤ綔鍙锋竻闆�
+                        shuttleProtocol.setTaskNo(0);
+                        //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵��
+                        shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
+                        //婧愬簱浣嶆竻闆�
+                        shuttleProtocol.setSourceLocNo(null);
+                        //鐩爣搴撲綅娓呴浂
+                        shuttleProtocol.setLocNo(null);
+                        //浠诲姟鎸囦护娓呴浂
+                        shuttleProtocol.setAssignCommand(null);
+                        //娓呴浂浠ょ墝
+                        shuttleProtocol.setToken(0);
+                        News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo());
+                    }
                 }
 
             }
diff --git a/src/main/java/com/zy/common/utils/NyLiftUtils.java b/src/main/java/com/zy/common/utils/NyLiftUtils.java
index 93cc8da..6909cd2 100644
--- a/src/main/java/com/zy/common/utils/NyLiftUtils.java
+++ b/src/main/java/com/zy/common/utils/NyLiftUtils.java
@@ -39,7 +39,7 @@
             }
 
             for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) {
-                if (liftStaProtocol.getStaNo() == staNo) {
+                if (liftStaProtocol.getStaNo().equals(staNo)) {
                     return liftStaProtocol;
                 }
             }
@@ -56,7 +56,7 @@
         }
 
         for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) {
-            if (liftStaProtocol.getStaNo() == staNo) {
+            if (liftStaProtocol.getStaNo().equals(staNo)) {
                 return liftStaProtocol;
             }
         }
@@ -72,7 +72,7 @@
         }
 
         for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) {
-            if (liftStaProtocol.getLev() == lev) {
+            if (liftStaProtocol.getLev().equals(lev)) {
                 return liftStaProtocol;
             }
         }
diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java
index 83f3c8d..0c92bb3 100644
--- a/src/main/java/com/zy/core/thread/LiftThread.java
+++ b/src/main/java/com/zy/core/thread/LiftThread.java
@@ -132,7 +132,7 @@
 
             //鎻愬崌鏈哄浜庢湭杩愯銆佸氨缁�佹爣璁皌rue銆佹湁浠诲姟鍙�
             if (!liftProtocol.getBusy()
-                    && liftProtocol.getPakMk()
+                    && !liftProtocol.getPakMk()
                     && liftProtocol.getTaskNo() != 0) {
                 //杩樻湁鏈畬鎴愮殑鍛戒护
                 executeWork(liftProtocol.getTaskNo());
@@ -184,7 +184,13 @@
                 //宸插畬鎴愪换鍔″彿
                 liftProtocol.setCompleteTaskNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, 6));
                 //褰撳墠妤煎眰
-                liftProtocol.setLev(siemensS7Net.getByteTransform().TransInt16(result1.Content, 8));
+                short lev = siemensS7Net.getByteTransform().TransInt16(result1.Content, 8);
+                if (lev >=5 && lev <= 7) {
+                    lev += 2;
+                } else if (lev >= 8 && lev <= 10) {
+                    lev += 4;
+                }
+                liftProtocol.setLev(lev);
 
                 //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴�
                 BasLiftService liftService = SpringUtils.getBean(BasLiftService.class);
@@ -358,7 +364,7 @@
         News.info("鎻愬崌鏈哄懡浠や笅鍙戞垚鍔燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
 
         //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂)
-        liftProtocol.setPakMk(false);
+        liftProtocol.setPakMk(true);
 
         //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘�
         BasLiftOptService liftOptService = SpringUtils.getBean(BasLiftOptService.class);
diff --git a/src/main/java/com/zy/core/thread/NyShuttleThread.java b/src/main/java/com/zy/core/thread/NyShuttleThread.java
index ab325f7..5bce024 100644
--- a/src/main/java/com/zy/core/thread/NyShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/NyShuttleThread.java
@@ -95,7 +95,7 @@
             //鍥涘悜绌挎杞︾┖闂层�佹湁浠诲姟銆佹爣璁颁负true銆佸瓨鍦ㄤ换鍔℃寚浠わ紝闇�瑕佹墽琛屼换鍔$殑涓嬩竴鏉℃寚浠�
             if (shuttleProtocol.getFree() == ShuttleStatusType.IDLE.id
                     && shuttleProtocol.getTaskNo() != 0
-                    && shuttleProtocol.getPakMk()) {
+                    && !shuttleProtocol.getPakMk()) {
                 //鎵ц涓嬩竴姝ユ寚浠�
                 executeWork(shuttleProtocol.getTaskNo().shortValue());
             }
@@ -173,9 +173,9 @@
                 //闈炶嚜鍔ㄧ姸鎬佹椂闂磋鏃�
                 shuttleProtocol.setErrTime(jsonObject.getInteger("errTime"));
 
-                //灏忚溅澶勪簬杩愯涓紝灏嗘爣璁扮疆涓簍rue
+                //灏忚溅澶勪簬杩愯涓紝灏嗘爣璁扮疆涓篺alse
                 if (shuttleProtocol.getFree() == 0) {
-                    shuttleProtocol.setPakMk(true);
+                    shuttleProtocol.setPakMk(false);
                 }
 
                 //灏嗗洓鍚戠┛姊溅鐘舵�佷繚瀛樿嚦鏁版嵁搴�
@@ -355,8 +355,12 @@
         }
 
         NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(shuttleProtocol.getCurrentLocNo()));
+
         //鍙栧嚭鍛戒护
-        NyShuttleHttpCommand command = commands.get(commandStep);//褰撳墠鍛戒护
+        NyShuttleHttpCommand command = null;
+        if (commandStep < commands.size()) {
+            command = commands.get(commandStep);//褰撳墠鍛戒护
+        }
         if (commandStep != 0) {
             //鍒ゆ柇涓婁竴鏉℃寚浠ゆ槸鍚﹀畬鎴�
             NyShuttleHttpCommand lastCommand = commands.get(commandStep - 1);
@@ -369,7 +373,9 @@
                     lastCommand.setComplete(true);
                     //瑙i攣閿佸畾璺緞锛屼笂涓�鏉¤矾寰勫拰褰撳墠璺緞
                     List<NavigateNode> nodes = lastCommand.getNodes();
-                    nodes.addAll(command.getNodes());
+                    if (command != null) {
+                        nodes.addAll(command.getNodes());
+                    }
                     navigateMapData.writeNavigateNodeToRedisMap(nodes, false);//瑙i攣璺緞
                 }
             }else {
@@ -395,7 +401,7 @@
                 }else {
                     shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING);
                 }
-                News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
+                News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(commands));
 
                 return false;//绂佹鍐嶄笅鍙戝懡浠�
             }
@@ -441,7 +447,7 @@
 
         News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙戞垚鍔燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
         //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂)
-        shuttleProtocol.setPakMk(false);
+        shuttleProtocol.setPakMk(true);
 
         //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘�
         BasShuttleOptService shuttleOptService = SpringUtils.getBean(BasShuttleOptService.class);
@@ -463,33 +469,42 @@
             shuttleOptService.insert(opt);
         }
 
-        //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚
-        if (commandStep < commands.size() - 1) {
-            //鏇存柊redis鏁版嵁
-            //姝ュ簭澧炲姞
-            commandStep++;
-            redisCommand.setCommandStep(commandStep);
-            //浠诲姟鏁版嵁淇濆瓨鍒皉edis
-            redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
-        }else {
-            //宸叉墽琛屽畬鎴�
+        commandStep++;
+        //鏇存柊redis鏁版嵁
+        redisCommand.setCommandStep(commandStep);
+        //浠诲姟鏁版嵁淇濆瓨鍒皉edis
+        redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
 
-            commandStep++;
-//            //鏈�鍚庝竴娈靛懡浠や负绉诲姩鍛戒护锛屽垯鏆傜紦鍒犻櫎redis绛夊緟娓呴櫎璺緞鏃朵竴娆℃�у垹闄�
-//            //鏈�鍚庝竴娈靛懡浠や负涓嶆槸绉诲姩鍛戒护锛屽垯鍒犻櫎redis
-//            if (!command.getRequest().getBody().get("requestType").equals("move")) {
-//                //鍒犻櫎redis
-//                redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo());
-//            }
+//        //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚
+//        if (commandStep < commands.size() - 1) {
+//            commandStep++;
+//            //鏇存柊redis鏁版嵁
+//            redisCommand.setCommandStep(commandStep);
+//            //浠诲姟鏁版嵁淇濆瓨鍒皉edis
+//            redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
+//        }else {
+//            //宸叉墽琛屽畬鎴�
 //
-//            if (!assignCommand.getCharge()) {
-//                //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting
-//                shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING);
-//            }else {
-//                shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING);
-//            }
-//            News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
-        }
+//            commandStep = commands.size();
+//            //鏇存柊redis鏁版嵁
+//            redisCommand.setCommandStep(commandStep);
+//            //浠诲姟鏁版嵁淇濆瓨鍒皉edis
+//            redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
+////            //鏈�鍚庝竴娈靛懡浠や负绉诲姩鍛戒护锛屽垯鏆傜紦鍒犻櫎redis绛夊緟娓呴櫎璺緞鏃朵竴娆℃�у垹闄�
+////            //鏈�鍚庝竴娈靛懡浠や负涓嶆槸绉诲姩鍛戒护锛屽垯鍒犻櫎redis
+////            if (!command.getRequest().getBody().get("requestType").equals("move")) {
+////                //鍒犻櫎redis
+////                redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo());
+////            }
+////
+////            if (!assignCommand.getCharge()) {
+////                //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting
+////                shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING);
+////            }else {
+////                shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING);
+////            }
+////            News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
+//        }
 
         return true;
     }
diff --git a/src/main/webapp/views/lift.html b/src/main/webapp/views/lift.html
index f6b281f..ab7d7e0 100644
--- a/src/main/webapp/views/lift.html
+++ b/src/main/webapp/views/lift.html
@@ -354,7 +354,9 @@
         http.post(baseUrl+"/lift/operator/lift", {
             liftNo: $('input[name="liftSelect"]:checked').val(),
             liftTaskMode: liftTaskMode,
-            lev: $("#liftLev").val()
+            lev: $("#liftLev").val(),
+            sourceStaNo: $("#sourceStaNo").val(),
+            staNo: $("#staNo").val()
         }, function (res) {
             layer.msg(res.msg, {icon: 1});
         });

--
Gitblit v1.9.1