From 3b64c807f60e5d6b71deca3f79c9be4be19abfaa Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期五, 23 二月 2024 10:47:58 +0800 Subject: [PATCH] #显示器更新 --- src/main/java/com/zy/core/thread/LiftThread.java | 116 ++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 92 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java index d14f4a4..4195f76 100644 --- a/src/main/java/com/zy/core/thread/LiftThread.java +++ b/src/main/java/com/zy/core/thread/LiftThread.java @@ -10,9 +10,11 @@ import com.core.exception.CoolException; import com.zy.asrs.entity.BasLift; import com.zy.asrs.entity.BasLiftOpt; +import com.zy.asrs.entity.DeviceDataLog; import com.zy.asrs.mapper.WrkMastMapper; import com.zy.asrs.service.BasLiftOptService; import com.zy.asrs.service.BasLiftService; +import com.zy.asrs.service.DeviceDataLogService; import com.zy.asrs.utils.Utils; import com.zy.common.utils.RedisUtil; import com.zy.core.News; @@ -30,10 +32,7 @@ import lombok.extern.slf4j.Slf4j; import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; +import java.util.*; /** * 鎻愬崌鏈虹嚎绋� @@ -272,6 +271,29 @@ } } + Thread.sleep(100); + //鑾峰彇鎻愬崌鏈哄紓甯告暟鎹� + OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB82.22.0", (short) 2); + if (result3.IsSuccess) { + liftProtocol.setErrorCode(siemensS7Net.getByteTransform().TransInt16(result3.Content, 0));//閿欒鐮� + } + + if (System.currentTimeMillis() - liftProtocol.getDeviceDataLog() > 1000 * 5) { + //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰� + //淇濆瓨鏁版嵁璁板綍 + DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class); + DeviceDataLog deviceDataLog = new DeviceDataLog(); + deviceDataLog.setOriginData(Base64.getEncoder().encodeToString(result1.Content)); + deviceDataLog.setWcsData(JSON.toJSONString(liftProtocol)); + deviceDataLog.setType("lift"); + deviceDataLog.setDeviceNo(liftProtocol.getLiftNo().intValue()); + deviceDataLog.setCreateTime(new Date()); + deviceDataLogService.insert(deviceDataLog); + + //鏇存柊閲囬泦鏃堕棿 + liftProtocol.setDeviceDataLog(System.currentTimeMillis()); + } + } 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())); } @@ -288,6 +310,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; @@ -343,7 +366,15 @@ return false; } - WrkMastMapper wrkMastMapper = SpringUtils.getBean(WrkMastMapper.class); + 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; @@ -355,12 +386,42 @@ //鎬绘搴� int size = commands.size(); - //鍙栧嚭鍛戒护 - NyLiftCommand command = commands.get(commandStep); - 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); //涓嬪彂鍛戒护 if (!write(command)) { @@ -392,23 +453,30 @@ liftOptService.insert(opt); } - //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚 - 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()); + //鏇存柊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()) { //澶嶄綅鍛戒护 -- Gitblit v1.9.1