From 10eb04d2444f383a647270ef05e32b59d6b1c125 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期六, 03 六月 2023 14:50:27 +0800
Subject: [PATCH] yml

---
 src/main/java/com/zy/core/thread/LiftThread.java |  175 +++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 117 insertions(+), 58 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java
index 34ea0c1..0b39f99 100644
--- a/src/main/java/com/zy/core/thread/LiftThread.java
+++ b/src/main/java/com/zy/core/thread/LiftThread.java
@@ -26,10 +26,7 @@
 import com.zy.core.enums.*;
 import com.zy.core.model.LiftSlave;
 import com.zy.core.model.Task;
-import com.zy.core.model.command.LiftAssignCommand;
-import com.zy.core.model.command.LiftCommand;
-import com.zy.core.model.command.ShuttleAssignCommand;
-import com.zy.core.model.command.ShuttleCommand;
+import com.zy.core.model.command.*;
 import com.zy.core.model.protocol.LiftProtocol;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
@@ -37,7 +34,6 @@
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -185,10 +181,9 @@
                         && !liftProtocol.getRunning()
                         && liftProtocol.getReady()
                         && liftProtocol.getPakMk()
-                        && liftProtocol.getTaskNo() != 0
-                        && liftProtocol.getAssignCommand() != null) {
+                        && liftProtocol.getTaskNo() != 0) {
                     //杩樻湁鏈畬鎴愮殑鍛戒护
-                    executeWork(liftProtocol.getAssignCommand());
+                    executeWork(liftProtocol.getTaskNo());
                 }
 
                 //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴�
@@ -290,35 +285,6 @@
 
     //鍒嗛厤浠诲姟
     private void assignWork(LiftAssignCommand assignCommand) {
-        //灏嗘map瀛樺叆redis涓�
-        HashMap<String, Object> map = new HashMap<>();
-
-        //鎻愬崌鏈哄彿
-        map.put("lift_no", assignCommand.getLiftNo());
-        //宸ヤ綔鍙�
-        map.put("wrk_no", assignCommand.getTaskNo());
-        //鍛戒护鎵ц姝ュ簭
-        map.put("commandStep", 0);
-        //鍛戒护
-        map.put("assignCommand", assignCommand);
-        //浠诲姟鏁版嵁淇濆瓨鍒皉edis
-        redisUtil.set("lift_wrk_no_" + assignCommand.getTaskNo(), JSON.toJSONString(map));
-        liftProtocol.setAssignCommand(assignCommand);
-        liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);
-        //鎵ц涓嬪彂浠诲姟
-        executeWork(assignCommand);
-    }
-
-    //鎵ц浠诲姟
-    private boolean executeWork(LiftAssignCommand assignCommand) {
-        //璇诲彇redis鏁版嵁
-        if (assignCommand == null) {
-            return false;
-        }
-
-        //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂)
-        liftProtocol.setPakMk(false);
-
         //鎵嬪姩妯″紡鎸囦护
         if (!assignCommand.getAuto()) {
             LiftCommand command = new LiftCommand();
@@ -331,26 +297,19 @@
             liftProtocol.setTaskNo(assignCommand.getTaskNo());
             switch (assignCommand.getTaskMode()) {
                 case 1://涓婂崌涓�灞�
-                    command.setRun((short) 1);//鍗囬檷
-                    command.setDistPosition(++lev);
+                    command = getLiftUpDownCommand(++lev);//鑾峰彇鎻愬崌鏈轰笂鍗囦笅闄嶅懡浠�
                     break;
                 case 2://涓嬮檷涓�灞�
-                    command.setRun((short) 1);//涓嬮檷
-                    command.setDistPosition(--lev);
+                    command = getLiftUpDownCommand(--lev);//鑾峰彇鎻愬崌鏈轰笂鍗囦笅闄嶅懡浠�
                     break;
                 case 3://鏈夎揣姝h浆
-                    command.setRun((short) 6);
+                    command = getLiftTurnCommand(1);//鑾峰彇鎻愬崌鏈鸿浆鍔ㄥ懡浠�
                     break;
                 case 4://鏈夎揣鍙嶈浆
-                    command.setRun((short) 3);
+                    command = getLiftTurnCommand(2);//鑾峰彇鎻愬崌鏈鸿浆鍔ㄥ懡浠�
                     break;
                 case 5://澶嶄綅
-                    command.setRun((short) 0);
-                    command.setLiftLock(false);
-                    liftProtocol.setTaskNo((short) 0);
-                    liftProtocol.setShuttleNo((short) 0);
-                    liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE);
-                    liftProtocol.setPakMk(true);
+                    command = getResetCommand();//鑾峰彇澶嶄綅鍛戒护
                     break;
                 default:
             }
@@ -358,16 +317,40 @@
             assignCommand.setCommands(commands);
         }
 
-        Object o = redisUtil.get("lift_wrk_no_" + assignCommand.getTaskNo());
+        LiftRedisCommand redisCommand = new LiftRedisCommand();
+        redisCommand.setLiftNo(assignCommand.getLiftNo());//鎻愬崌鏈哄彿
+        redisCommand.setWrkNo(assignCommand.getTaskNo());//宸ヤ綔鍙�
+        redisCommand.setCommandStep(0);//鍛戒护鎵ц姝ュ簭
+        redisCommand.setAssignCommand(assignCommand);//鍛戒护
+        //浠诲姟鏁版嵁淇濆瓨鍒皉edis
+        redisUtil.set("lift_wrk_no_" + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand));
+        liftProtocol.setAssignCommand(assignCommand);
+        liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);
+        //鎵ц涓嬪彂浠诲姟
+        executeWork(assignCommand.getTaskNo());
+    }
+
+    //鎵ц浠诲姟
+    private boolean executeWork(Short wrkNo) {
+        //璇诲彇redis鏁版嵁
+        if (wrkNo == null) {
+            return false;
+        }
+
+        //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂)
+        liftProtocol.setPakMk(false);
+
+        Object o = redisUtil.get("lift_wrk_no_" + wrkNo);
         if (o == null) {
             return false;
         }
-        HashMap map = JSON.parseObject(o.toString(), HashMap.class);
-        List<LiftCommand> commands = assignCommand.getCommands();
+        LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class);
+        List<LiftCommand> commands = redisCommand.getAssignCommand().getCommands();
         //褰撳墠姝ュ簭
-        int commandStep = Integer.parseInt(map.get("commandStep").toString());
+        int commandStep = redisCommand.getCommandStep();
         //鎬绘搴�
         int size = commands.size();
+        LiftAssignCommand assignCommand = redisCommand.getAssignCommand();
 
         //鍙栧嚭鍛戒护
         LiftCommand command = commands.get(commandStep);
@@ -383,17 +366,17 @@
                 //鏇存柊redis鏁版嵁
                 //姝ュ簭澧炲姞
                 commandStep++;
-                map.put("commandStep", commandStep);
+                redisCommand.setCommandStep(commandStep);
                 //浠诲姟鏁版嵁淇濆瓨鍒皉edis
-                redisUtil.set("lift_wrk_no_" + map.get("wrk_no").toString(), JSON.toJSONString(map));
+                redisUtil.set("lift_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
             }else {
                 //宸叉墽琛屽畬鎴�
                 //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘�
                 BasLiftOptService liftOptService = SpringUtils.getBean(BasLiftOptService.class);
                 if (liftOptService != null) {
                     BasLiftOpt opt = new BasLiftOpt(
-                            assignCommand.getTaskNo().intValue(),
-                            assignCommand.getLiftNo().intValue(),
+                            redisCommand.getWrkNo().intValue(),
+                            redisCommand.getLiftNo().intValue(),
                             new Date(),
                             null,
                             null,
@@ -403,7 +386,7 @@
                     liftOptService.insert(opt);
                 }
                 //鍒犻櫎redis
-                redisUtil.del("lift_wrk_no_" + map.get("wrk_no").toString());
+                redisUtil.del("lift_wrk_no_" + redisCommand.getWrkNo());
 
                 if (assignCommand.getAuto()) {
                     //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting
@@ -411,7 +394,18 @@
                     News.info("鎻愬崌鏈轰换鍔℃墽琛屽畬鎴愮瓑寰呯‘璁や腑锛屾彁鍗囨満鍙�={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
                 }else {
                     //鎵嬪姩妯″紡涓嶆姏鍑虹瓑寰呯姸鎬�
+                    liftProtocol.setTaskNo((short) 0);
+                    liftProtocol.setShuttleNo((short) 0);
+                    liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE);
+                    liftProtocol.setPakMk(true);
+                    liftProtocol.setSecurityMk(false);
                     News.info("鎻愬崌鏈烘墜鍔ㄤ换鍔℃墽琛屽畬鎴愶紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
+                }
+
+                //涓嬪彂涓�鏉℃彁鍗囨満瑙i攣鍛戒护
+                LiftCommand unlockCommand = getUnlockCommand(command.getLiftNo());
+                if (write(unlockCommand)) {
+                    News.info("鎻愬崌鏈虹姸鎬佸凡瑙i攣锛屾彁鍗囨満鍙�={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
                 }
 
             }
@@ -421,6 +415,71 @@
     }
 
     /**
+     * 鑾峰彇鎻愬崌鏈鸿В閿佸懡浠�
+     */
+    public LiftCommand getUnlockCommand(Short liftNo) {
+        LiftCommand command = new LiftCommand();
+        command.setRun((short) 0);
+        command.setLiftNo(liftNo);
+        command.setLiftLock(false);
+        return command;
+    }
+
+    /**
+     * 鑾峰彇澶嶄綅鍛戒护
+     */
+    public LiftCommand getResetCommand() {
+        LiftCommand command = new LiftCommand();
+        command.setRun((short) 0);
+        command.setLiftLock(false);
+        return command;
+    }
+
+    /**
+     * 鑾峰彇鎻愬崌鏈轰笂鍗囦笅闄嶅懡浠�
+     */
+    public LiftCommand getLiftUpDownCommand(Short lev) {
+        LiftCommand command = new LiftCommand();
+        command.setRun((short) 1);//鍗囬檷
+        command.setDistPosition(lev);
+        return command;
+    }
+
+    /**
+     * 鑾峰彇鎻愬崌鏈轰笂鍗囦笅闄嶅懡浠�
+     */
+    public LiftCommand getLiftUpDownCommand(Short liftNo, Short taskNo, Short lev) {
+        LiftCommand command = new LiftCommand();
+        command.setRun((short) 1);//鍗囬檷
+        command.setLiftNo(liftNo);//鎻愬崌鏈哄彿
+        command.setTaskNo(taskNo);//浠诲姟鍙�
+        command.setDistPosition(lev);//鐩爣妤煎眰1灞�
+        command.setLiftLock(true);//閿佸畾鎻愬崌鏈�
+        return command;
+    }
+
+    /**
+     * 鑾峰彇鎻愬崌鏈鸿浆鍔ㄥ懡浠わ紝direction锛�1=銆嬫湁璐ф杞紝2=銆嬫湁璐у弽杞�
+     */
+    public LiftCommand getLiftTurnCommand(Integer direction) {
+        LiftCommand command = new LiftCommand();
+        command.setRun(direction == 1 ? (short) 6 : (short) 3);
+        return command;
+    }
+
+    /**
+     * 鑾峰彇鎻愬崌鏈鸿浆鍔ㄥ懡浠わ紝direction锛�1=銆嬫湁璐ф杞紝2=銆嬫湁璐у弽杞�
+     */
+    public LiftCommand getLiftTurnCommand(Short liftNo, Short taskNo, Integer direction) {
+        LiftCommand command = new LiftCommand();
+        command.setRun(direction == 1 ? (short) 6 : (short) 3);
+        command.setLiftNo(liftNo);//鎻愬崌鏈哄彿
+        command.setTaskNo(taskNo);//浠诲姟鍙�
+        command.setLiftLock(true);//閿佸畾鎻愬崌鏈�
+        return command;
+    }
+
+    /**
      * 鍒濆鍖栨彁鍗囨満
      */
     private void initLift() {

--
Gitblit v1.9.1