From ebb63d5ac2fb6c822e9d0541d4b86c7d71f21bdb Mon Sep 17 00:00:00 2001 From: Junjie <xjj@123> Date: 星期四, 18 四月 2024 15:44:22 +0800 Subject: [PATCH] # --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java | 80 ++++++++++++++++++++++++++++------------ 1 files changed, 56 insertions(+), 24 deletions(-) diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java index 8fde087..d4f8011 100644 --- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java +++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java @@ -7,6 +7,7 @@ import com.zy.asrs.framework.common.DateUtils; import com.zy.asrs.framework.common.SpringUtils; import com.zy.asrs.framework.exception.CoolException; +import com.zy.asrs.wcs.common.ExecuteSupport; import com.zy.asrs.wcs.core.entity.Loc; import com.zy.asrs.wcs.core.model.command.LiftCommand; import com.zy.asrs.wcs.core.model.command.ShuttleCommand; @@ -15,8 +16,10 @@ import com.zy.asrs.wcs.core.service.LocService; import com.zy.asrs.wcs.rcs.News; import com.zy.asrs.wcs.rcs.cache.OutputQueue; +import com.zy.asrs.wcs.rcs.entity.DeviceDataLog; import com.zy.asrs.wcs.rcs.model.enums.LiftProtocolStatusType; import com.zy.asrs.wcs.rcs.model.protocol.LiftProtocol; +import com.zy.asrs.wcs.rcs.service.DeviceDataLogService; import com.zy.asrs.wcs.rcs.thread.LiftThread; import com.zy.asrs.wcs.core.utils.RedisUtil; import com.zy.asrs.wcs.rcs.entity.Device; @@ -25,6 +28,7 @@ import java.text.MessageFormat; import java.text.SimpleDateFormat; +import java.util.Base64; import java.util.Date; import java.util.HashMap; @@ -61,18 +65,10 @@ try { readStatus(); -// //鎻愬崌鏈哄浜庤繍琛岀姸鎬侊紝灏嗘爣璁扮疆涓篺alse -// if (liftProtocol.getBusy()) { -// liftProtocol.setPakMk(false); -// } -// -// //鎻愬崌鏈哄浜庢湭杩愯銆佸氨缁�佹爣璁皌rue銆佹湁浠诲姟鍙� -// if (!liftProtocol.getBusy() -// && !liftProtocol.getPakMk() -// && liftProtocol.getTaskNo() != 0) { -// //杩樻湁鏈畬鎴愮殑鍛戒护 -// executeWork(liftProtocol.getTaskNo()); -// } + //鎻愬崌鏈哄浜庤繍琛岀姸鎬侊紝灏嗘爣璁扮疆涓篺alse + if (liftProtocol.getRun()) { + liftProtocol.setPakMk(false); + } } catch (Exception e) { OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戣鍙栨彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), device.getId(), device.getIp(), device.getPort())); } @@ -141,6 +137,24 @@ // //宸插畬鎴愪换鍔″彿 // liftProtocol.setCompleteTaskNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, 6)); // liftProtocol.setLev(lev); + + if (System.currentTimeMillis() - liftProtocol.getDeviceDataLog() > 1000 * 5) { + //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰� + //淇濆瓨鏁版嵁璁板綍 + DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class); + DeviceDataLog deviceDataLog = new DeviceDataLog(); + deviceDataLog.setOriginData(JSON.toJSONString(data)); + deviceDataLog.setWcsData(JSON.toJSONString(liftProtocol)); + deviceDataLog.setType("lift"); + deviceDataLog.setDeviceNo(String.valueOf(liftProtocol.getLiftNo())); + deviceDataLog.setCreateTime(new Date()); + deviceDataLog.setHostId(device.getHostId()); + deviceDataLogService.save(deviceDataLog); + + //鏇存柊閲囬泦鏃堕棿 + liftProtocol.setDeviceDataLog(System.currentTimeMillis()); + } + }else { OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆憑1}璇诲彇鎻愬崌鏈虹姸鎬佷俊鎭け璐�", DateUtils.convert(new Date()), device.getId())); throw new CoolException(MessageFormat.format( "璇诲彇鎻愬崌鏈虹姸鎬佷俊鎭け璐� ===>> [id:{0}] [ip:{1}] [port:{2}]", device.getId(), device.getIp(), device.getPort())); @@ -294,11 +308,24 @@ @Override public boolean isIdle() { - InnerLiftExtend extend = (InnerLiftExtend) liftProtocol.getExtend();//鑾峰彇鎵╁睍瀛楁 + return isIdle(null); + } + + @Override + public boolean isIdle(ExecuteSupport support) { + if (null != support) { + if (!support.judgement()) { + return false; + } + } + InnerLiftExtend extend = (InnerLiftExtend) this.liftProtocol.getExtend();//鑾峰彇鎵╁睍瀛楁 // 鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔ㄣ�佸氨缁�佺┖闂层�佹湭閿佸畾 - if (liftProtocol.getModel() - && !liftProtocol.getRun() - && liftProtocol.getReady() + if (this.liftProtocol.getModel() + && !this.liftProtocol.getRun() + && this.liftProtocol.getReady() + && this.liftProtocol.getPakMk() + && this.liftProtocol.getErrorCode().equals("0") + && this.liftProtocol.getProtocolStatus().equals(LiftProtocolStatusType.IDLE) && !extend.getLock() ) { return true; @@ -370,7 +397,12 @@ //绌鸿浇绉诲姩 @Override - public LiftCommand getEmptyMoveCommand(Integer taskNo, Integer targetLev) { + public LiftCommand getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer mode) { + int taskMode = 3;//绌鸿浇绉诲姩 + if (mode == null) { + taskMode = mode.shortValue(); + } + HashMap<String, Object> body = new HashMap<>(); body.put("messageName", "lifterTask"); body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); @@ -378,7 +410,7 @@ body.put("taskId", taskNo); body.put("startLayer", 0); body.put("endLayer", targetLev); - body.put("model", 3);//绌鸿浇绉诲姩 + body.put("model", taskMode); LiftCommand command = new LiftCommand(); command.setLiftNo(Integer.valueOf(this.device.getDeviceNo())); @@ -391,13 +423,13 @@ //杞借溅绉诲姩 @Override - public LiftCommand getMoveWithShuttleCommand(Integer taskNo, Integer originLev, Integer targetLev) { + public LiftCommand getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer mode) { HashMap<String, Object> body = new HashMap<>(); body.put("messageName", "lifterTask"); body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); body.put("deviceNo", Integer.parseInt(this.device.getDeviceNo())); body.put("taskId", taskNo); - body.put("startLayer", originLev); + body.put("startLayer", sourceLev); body.put("endLayer", targetLev); body.put("model", 2);//杞借溅绉诲姩 @@ -405,20 +437,20 @@ command.setLiftNo(Integer.valueOf(this.device.getDeviceNo())); command.setBody(JSON.toJSONString(body)); command.setMode(LiftCommandModeType.MOVE.id); - command.setOriginLev(originLev); + command.setOriginLev(sourceLev); command.setTargetLev(targetLev); return command; } //鎵樼洏鍑哄叆 @Override - public LiftCommand getPalletInOutCommand(Integer taskNo, Integer originLev, Integer targetLev, Integer originSta, Integer targetSta) { + public LiftCommand getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, Integer mode) { HashMap<String, Object> body = new HashMap<>(); body.put("messageName", "lifterTask"); body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); body.put("deviceNo", Integer.parseInt(this.device.getDeviceNo())); body.put("taskId", taskNo); - body.put("startLayer", originLev); + body.put("startLayer", sourceLev); body.put("endLayer", targetLev); body.put("startLocation", originSta); body.put("endLocation", targetSta); @@ -428,7 +460,7 @@ command.setLiftNo(Integer.valueOf(this.device.getDeviceNo())); command.setBody(JSON.toJSONString(body)); command.setMode(LiftCommandModeType.PALLET_INOUT.id); - command.setOriginLev(originLev); + command.setOriginLev(sourceLev); command.setTargetLev(targetLev); command.setOriginSta(originSta); command.setTargetSta(targetSta); -- Gitblit v1.9.1