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