From 6b016cef0828cbd8ead4a2ff43d5bcb6e266a584 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 09 五月 2023 15:33:23 +0800
Subject: [PATCH] ShuttleThread and LiftThread task restart

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  164 ++++++++++++++++--------------------------------------
 1 files changed, 50 insertions(+), 114 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 3b92522..50cab14 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -606,115 +606,56 @@
         }
     }
 
-//    /**
-//     * 鍏ュ簱  ===>>  鍥涘悜绌挎杞﹀叆搴撲綔涓氫笅鍙�
-//     */
-//    public synchronized void shuttleIoInExecute() {
-//        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
-//        for (DevpSlave devp : slaveProperties.getDevp()) {
-//            // 閬嶅巻鍏ュ簱绔�
-//            for (DevpSlave.StaRack rackInStn : devp.getRackInStn()) {
-//                // 鑾峰彇鍏ュ簱绔欎俊鎭�
-//                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-//
-//                StaProtocol staProtocol = devpThread.getStation().get(rackInStn.getStaNo());
-//                StaProtocol staProtocol105 = devpThread.getStation().get(105);
-//                staProtocol105.setWorkNo((short) 752);
-//                staProtocol105.setStaNo((short) 100);
-//
-//                StaProtocol staProtocol106 = devpThread.getStation().get(106);
-//                staProtocol106.setWorkNo((short) 753);
-//                staProtocol106.setStaNo((short) 100);
-//
-//                if (staProtocol == null) {
-//                    continue;
-//                } else {
-//                    staProtocol = staProtocol.clone();
-//                }
-//                Short workNo = staProtocol.getWorkNo();
-//
-//                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-//                if (true || staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) {
-//                    WrkMast wrkMast = wrkMastMapper.selectRackInStep48(workNo, staProtocol.getSiteId());
-//                    if (wrkMast != null) {
-//                        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());//缁欏伐浣滄。鍒嗛厤鍥涘悜绌挎杞﹀彿
-//
-//                            //鍒嗛厤浠诲姟鍙�
-//                            shuttleProtocol.setTaskNo(wrkMast.getWrkNo().shortValue());
-//                            //鍒嗛厤婧愬簱浣�
-//                            shuttleProtocol.setSourceLocNo(wrkMast.getSourceLocNo());
-//
-//                            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
-//                            //鍥涘悜绌挎杞﹀彿
-//                            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());
-//                            //浠诲姟鍙�
-//                            assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
-//                            //鍏ュ嚭搴撴ā寮�
-//                            assignCommand.setTaskMode(ShuttleTaskModeType.PAK_IN.id.shortValue());
-//                            //婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
-//                            String currentLocNo = shuttleProtocol.getCurrentLocNo();
-//                            assignCommand.setSourceLocNo(currentLocNo);
-//
-//                            if (wrkMast.getWrkSts() == 8 || Boolean.parseBoolean(searchIdleShuttle.get("sameLay").toString())) {
-//                                //鍚屼竴灞�
-//                                //鍒嗛厤鐩爣搴撲綅
-//                                shuttleProtocol.setLocNo(wrkMast.getLocNo());
-//                                //鐩爣搴撲綅
-//                                assignCommand.setLocNo(wrkMast.getLocNo());
-//                                wrkMast.setWrkSts(9L);//灏忚溅鍏ュ簱涓�
-//
-//                                //鑾峰彇浠庡皬杞�
-//                            }else {
-//                                //涓嶅悓灞傦紝灏嗙洰鏍囧簱浣嶅垎閰嶆垚鎻愬崌鏈哄簱浣嶅彿
-//
-//                                //灏忚溅褰撳墠灞傞珮
-//                                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.setLocNo(liftLocNo);
-//                                wrkMast.setWrkSts(5L);//灏忚溅杩佺Щ鐘舵��
-//                            }
-//
-//                            if (wrkMastMapper.updateById(wrkMast) > 0) {
-//                                //涓嬪彂浠诲姟
-//                                MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand));
-//                            }
-//                        }
-//
-//                    }
-//                }
-//
-//            }
-//        }
-//
-//    }
+    /**
+     * 浠巖edis涓噸鍚换鍔�
+     */
+    public synchronized void restartTaskFromRedis() {
+        HashMap<Object, Object> map = redisUtil.getRedis();
+        for (Object key : map.keySet()) {
+            if (key.toString().contains("lift_wrk_no_")) {//鎻愬崌鏈轰换鍔�
+                LiftRedisCommand redisCommand = JSON.parseObject(map.get(key).toString(), LiftRedisCommand.class);
+                if (redisCommand == null) {
+                    continue;
+                }
+
+                Short liftNo = redisCommand.getLiftNo();
+                LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo.intValue());
+                if (liftThread == null) {
+                    continue;
+                }
+                LiftProtocol liftProtocol = liftThread.getLiftProtocol();
+                if (!liftProtocol.isIdle()) {
+                    continue;
+                }
+
+                //鎻愬崌鏈哄浜庣┖闂茬姸鎬侊紝杩涜浠诲姟鐨勬仮澶�
+                liftProtocol.setTaskNo(redisCommand.getWrkNo());//灏嗘彁鍗囨満绾跨▼鍒嗛厤浠诲姟鍙�
+                liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//宸ヤ綔鐘舵��
+                liftProtocol.setLiftLock(true);//鎻愬崌鏈洪攣瀹�
+
+            }else {//鍥涘悜绌挎杞︿换鍔�
+                ShuttleRedisCommand redisCommand = JSON.parseObject(map.get(key).toString(), ShuttleRedisCommand.class);
+                if (redisCommand == null) {
+                    continue;
+                }
+
+                Short shuttleNo = redisCommand.getShuttleNo();
+                ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo.intValue());
+                if (shuttleThread == null) {
+                    continue;
+                }
+                ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+                if (!shuttleProtocol.isIdle()) {
+                    continue;
+                }
+
+                //鍥涘悜绌挎杞﹀浜庣┖闂茬姸鎬侊紝杩涜浠诲姟鐨勬仮澶�
+                shuttleProtocol.setTaskNo(redisCommand.getWrkNo());//灏嗗洓鍚戠┛姊溅绾跨▼鍒嗛厤浠诲姟鍙�
+                shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WORKING);//宸ヤ綔鐘舵��
+            }
+        }
+
+    }
 
     /**
      * 鍏ュ簱  ===>>  鍥涘悜绌挎杞﹀叆搴撲綔涓氫笅鍙�
@@ -807,7 +748,6 @@
                                     moveCommand.setStartToDistDistance(1300);
                                     moveCommand.setMiddleToDistDistance(0);
                                     moveCommand.setRunDirection(commands.get(0).getRunDirection());
-                                    moveCommand.setRunSpeed((short) 1000);
                                     moveCommand.setCommandEnd((short) 1);
                                     commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
                                 }
@@ -883,7 +823,6 @@
             command.setForceMoveDistance(0);
             command.setChargeSwitch((short) 2);
             command.setIOControl((short) 0);
-            command.setRunSpeed((short) 1000);
             command.setRadarTmp((short) 0);
             command.setCommandEnd((short) 1);
             commands.add(command);
@@ -930,7 +869,6 @@
             command.setForceMoveDistance(0);
             command.setChargeSwitch((short) 2);
             command.setIOControl((short) 0);
-            command.setRunSpeed((short) 1000);
             command.setRadarTmp((short) 0);
             command.setCommandEnd((short) 1);
             commands.add(command);
@@ -978,7 +916,6 @@
             command.setForceMoveDistance(0);
             command.setChargeSwitch((short) 2);
             command.setIOControl((short) 0);
-            command.setRunSpeed((short) 1000);
             command.setRadarTmp((short) 0);
             command.setCommandEnd((short) 1);
             commands.add(command);
@@ -1103,7 +1040,6 @@
                         moveCommand.setStartToDistDistance(1300);
                         moveCommand.setMiddleToDistDistance(0);
                         moveCommand.setRunDirection(commands.get(0).getRunDirection());
-                        moveCommand.setRunSpeed((short) 1000);
                         moveCommand.setCommandEnd((short) 1);
                         commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
 

--
Gitblit v1.9.1