From 2dc3f0507d6e883d16b1c3c095ca06455a6fa1a7 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期一, 25 十二月 2023 09:21:20 +0800 Subject: [PATCH] #提升机设备工作号优化 --- src/main/java/com/zy/core/thread/LiftThread.java | 130 ++++++++++++++++++++++++++++++++++++------ 1 files changed, 110 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java index ccc0864..a9f40e5 100644 --- a/src/main/java/com/zy/core/thread/LiftThread.java +++ b/src/main/java/com/zy/core/thread/LiftThread.java @@ -32,6 +32,7 @@ import java.text.MessageFormat; import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; import java.util.List; /** @@ -87,6 +88,8 @@ case 3: assignWork((LiftAssignCommand) task.getData()); break; + case 4: + write2((HashMap<String, Object>) task.getData()); default: break; } @@ -269,6 +272,13 @@ } } + Thread.sleep(100); + //鑾峰彇鎻愬崌鏈哄紓甯告暟鎹� + OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB82.22.0", (short) 2); + if (result3.IsSuccess) { + liftProtocol.setErrorCode(siemensS7Net.getByteTransform().TransInt16(result3.Content, 0));//閿欒鐮� + } + } catch (Exception e) { OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); } @@ -285,6 +295,7 @@ OperateResult result = siemensS7Net.Write("DB83.0", array); if (result != null && result.IsSuccess) { + liftProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 News.info("鎻愬崌鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); return true; @@ -326,7 +337,7 @@ redisCommand.setCommandStep(0);//鍛戒护鎵ц姝ュ簭 redisCommand.setAssignCommand(assignCommand);//鍛戒护 //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set("lift_wrk_no_" + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand)); + redisUtil.set(RedisKeyType.LIFT.key + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand)); liftProtocol.setAssignCommand(assignCommand); liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING); //鎵ц涓嬪彂浠诲姟 @@ -340,8 +351,16 @@ return false; } - WrkMastMapper wrkMastMapper = SpringUtils.getBean(WrkMastMapper.class); - Object o = redisUtil.get("lift_wrk_no_" + wrkNo); + if (wrkNo >= 20000 && wrkNo <= 30000) { + //鎻愬崌鏈鸿澶囧伐浣滃彿锛岄渶瑕佹煡璇㈠搴斾换鍔″彿 + BasLiftOptService basLiftOptService = SpringUtils.getBean(BasLiftOptService.class); + BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(liftProtocol.getTaskNo().toString(), liftProtocol.getLiftNo().intValue()); + if (basLiftOpt != null) { + wrkNo = basLiftOpt.getWrkNo().shortValue(); + } + } + + Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo); if (o == null) { return false; } @@ -351,6 +370,40 @@ int commandStep = redisCommand.getCommandStep(); //鎬绘搴� int size = commands.size(); + + if (!redisCommand.getLiftNo().equals(liftProtocol.getLiftNo())) { + return false; + } + + if (commandStep != 0) { + //鍒ゆ柇涓婁竴鏉℃寚浠ゆ槸鍚﹀仛瀹� + NyLiftCommand lastCommand = commands.get(commandStep - 1);//涓婁竴鏉℃寚浠� + if (!liftProtocol.getBusy() && liftProtocol.getTaskNo().equals(lastCommand.getTaskNo())) { + //鎻愬崌鏈虹┖闂层�佷笖鎻愬崌鏈哄伐浣滃彿涓庝笂涓�鏉℃寚浠ゅ伐浣滃彿鐩稿悓 + lastCommand.setComplete(true);//鏍囪浠诲姟瀹屾垚 + } + + //浠诲姟鏁版嵁淇濆瓨鍒皉edis + redisUtil.set(RedisKeyType.LIFT.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); + + if (!lastCommand.getComplete()) { + //涓婁竴鏉′换鍔℃湭瀹屾垚锛岀姝笅鍙戝懡浠� + return false; + } + + //鍒ゆ柇鏄惁涓烘渶鍚庝竴鏉″懡浠や笖鍛戒护鎵ц瀹屾垚锛屾姏鍑虹瓑寰呯‘璁ょ姸鎬� + NyLiftCommand endCommand = commands.get(commands.size() - 1); + if (endCommand.getComplete()) { + //宸叉墽琛屽畬鎴� + //鍒犻櫎redis + redisUtil.del(RedisKeyType.LIFT.key + redisCommand.getWrkNo()); + + //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting + liftProtocol.setProtocolStatus(LiftProtocolStatusType.WAITING); + News.info("鎻愬崌鏈轰换鍔℃墽琛屼笅鍙戝畬鎴愭墽琛岀粨鏉燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", redisCommand.getLiftNo(), JSON.toJSON(redisCommand)); + } + + } //鍙栧嚭鍛戒护 NyLiftCommand command = commands.get(commandStep); @@ -373,7 +426,7 @@ short[] commandArr = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃 BasLiftOpt opt = new BasLiftOpt( redisCommand.getWrkNo().intValue(), - redisCommand.getLiftNo().intValue(), + liftProtocol.getLiftNo().intValue(), new Date(), null, null, @@ -381,26 +434,34 @@ JSON.toJSONString(command), JSON.toJSONString(liftProtocol) ); + opt.setDeviceWrk(command.getTaskNo().toString());//璁惧宸ヤ綔鍙� liftOptService.insert(opt); } - //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚 - if (commandStep < size - 1) { - //鏇存柊redis鏁版嵁 - //姝ュ簭澧炲姞 - commandStep++; - redisCommand.setCommandStep(commandStep); - //浠诲姟鏁版嵁淇濆瓨鍒皉edis - redisUtil.set("lift_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); - }else { - //宸叉墽琛屽畬鎴� - //鍒犻櫎redis - redisUtil.del("lift_wrk_no_" + redisCommand.getWrkNo()); + //鏇存柊redis鏁版嵁 + //姝ュ簭澧炲姞 + commandStep++; + redisCommand.setCommandStep(commandStep); + //浠诲姟鏁版嵁淇濆瓨鍒皉edis + redisUtil.set(RedisKeyType.LIFT.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); - //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting - liftProtocol.setProtocolStatus(LiftProtocolStatusType.WAITING); - News.info("鎻愬崌鏈轰换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command)); - } +// //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚 +// if (commandStep < size - 1) { +// //鏇存柊redis鏁版嵁 +// //姝ュ簭澧炲姞 +// commandStep++; +// redisCommand.setCommandStep(commandStep); +// //浠诲姟鏁版嵁淇濆瓨鍒皉edis +// redisUtil.set(RedisKeyType.LIFT.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); +// }else { +// //宸叉墽琛屽畬鎴� +// //鍒犻櫎redis +// redisUtil.del(RedisKeyType.LIFT.key + redisCommand.getWrkNo()); +// +// //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting +// liftProtocol.setProtocolStatus(LiftProtocolStatusType.WAITING); +// News.info("鎻愬崌鏈轰换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command)); +// } if (redisCommand.getAssignCommand().getTaskMode() == NyLiftTaskModelType.RESET.id.shortValue()) { //澶嶄綅鍛戒护 @@ -417,6 +478,35 @@ return true; } + //缁欐彁鍗囨満鍐欏叆杩涘嚭鐘舵�� + private void write2(HashMap<String,Object> data) { +// //鍑� +// status = true; +// //杩� +// status = false; + int lev = Integer.parseInt(data.get("lev").toString()); + boolean status = Boolean.parseBoolean(data.get("status").toString()); + + ArrayList<String> list = new ArrayList<String>(){{ + add("83.8.0"); + add("83.8.1"); + add("83.8.2"); + add("83.8.3"); + add("83.8.4"); + add("83.8.5"); + add("83.8.6"); + add("83.8.7"); + add("83.9.0"); + add("83.9.1"); + }}; + OperateResult result = siemensS7Net.Write("DB" + list.get(lev - 1), status); + if (result != null && result.IsSuccess) { + News.info("鎻愬崌鏈哄懡浠や笅鍙慬id:{}]", slave.getId()); + } else { + News.error("鍐欏叆鎻愬崌鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + } + } + /******************************************************************************************/ /**************************************** 娴嬭瘯涓撶敤 *****************************************/ /*****************************************************************************************/ -- Gitblit v1.9.1