From d835d1b51f832889929cdf69010034a30ef44d02 Mon Sep 17 00:00:00 2001 From: Junjie <xjj@123> Date: 星期四, 17 十月 2024 13:57:29 +0800 Subject: [PATCH] # --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java | 109 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 95 insertions(+), 14 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 8366f44..f1c4e9e 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 @@ -12,6 +12,7 @@ import com.zy.asrs.wcs.core.entity.BasLift; import com.zy.asrs.wcs.core.model.command.LiftCommand; import com.zy.asrs.wcs.core.model.enums.LiftCommandModeType; +import com.zy.asrs.wcs.core.model.enums.MotionCtgType; import com.zy.asrs.wcs.core.service.BasLiftService; import com.zy.asrs.wcs.rcs.News; import com.zy.asrs.wcs.rcs.cache.OutputQueue; @@ -27,16 +28,13 @@ import java.text.MessageFormat; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; +import java.util.*; @Slf4j @SuppressWarnings("all") public class SurayLiftThread implements LiftThread { - private static final String API_URL = "http://127.0.0.1:8082"; + private static String API_URL = "http://127.0.0.1:8082"; private Device device; private RedisUtil redisUtil; @@ -45,6 +43,7 @@ public SurayLiftThread(Device device,RedisUtil redisUtil) { this.device = device; this.redisUtil = redisUtil; + API_URL = "http://" + device.getIp() + ":" + device.getPort(); } @Override @@ -93,18 +92,25 @@ //----------璇诲彇鎻愬崌鏈虹姸鎬�----------- //妯″紡 liftProtocol.setModel(true); + + boolean runningState = data.getInteger("runningState") == 1; + if (!data.getInteger("completeTaskNo").equals(data.getInteger("taskNo"))) { + runningState = true;//宸ヤ綔鍙蜂笉涓�鑷达紝璁や负澶勪簬杩愯涓� + } //杩愯鐘舵�� - liftProtocol.setRun(data.getInteger("runningState") == 1); + liftProtocol.setRun(runningState); //灏辩华鐘舵�� liftProtocol.setReady(data.getInteger("readyState") == 1); //鏈夋墭鐩� liftProtocol.setHasTray(data.getString("haveCargo").equals("Y")); //鏈夊皬杞� - liftProtocol.setHasCar(data.getString("haveCar").equals("Y")); + liftProtocol.setHasCar(data.getInteger("haveCar") == 1); //鏁呴殰鐮� liftProtocol.setErrorCode("0"); //灞� liftProtocol.setLev(data.getInteger("curFloor")); + //宸插畬鎴愮殑浠诲姟鍙� + liftProtocol.setCompleteTaskNo(data.getString("completeTaskNo")); //************琛ュ厖鎵╁睍瀛楁************* @@ -328,6 +334,30 @@ @Override public synchronized boolean reset(LiftCommand command) { + try { + String loginToken = requestLoginToken(); + if (loginToken == null) { + return false; + } + + HashMap<String, Object> headers = new HashMap<>(); + headers.put("Authorization", "Bearer " + loginToken); + + String response = new HttpHandler.Builder() + .setUri(API_URL) + .setPath("/RDS/lifterOperation") + .setHeaders(headers) + .setJson(command.getBody()) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + Integer code = jsonObject.getInteger("code"); + if (code.equals(200)) { + return true; + } + } catch (Exception e) { + e.printStackTrace(); + } return false; } @@ -337,22 +367,68 @@ } @Override - public boolean isIdle(ExecuteSupport support) { - if (null != support) { - if (!support.judgement()) { - return false; + public boolean isIdle(MotionCtgType flag) { + if (flag == null) { + InnerLiftExtend extend = (InnerLiftExtend) this.liftProtocol.getExtend();//鑾峰彇鎵╁睍瀛楁 + // 鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔ㄣ�佸氨缁�佺┖闂层�佹湭閿佸畾 + if (this.liftProtocol.getModel() + && !this.liftProtocol.getRun() + && this.liftProtocol.getPakMk() + && this.liftProtocol.getReady() + && this.liftProtocol.getErrorCode().equals("0") + && (this.liftProtocol.getProtocolStatusType().equals(LiftProtocolStatusType.IDLE) + || this.liftProtocol.getProtocolStatusType().equals(LiftProtocolStatusType.WAITING)) + && !extend.getLock() + ) { + return true; } + return false; } + + switch (Objects.requireNonNull(MotionCtgType.get(String.valueOf(flag)))){ + case SHUTTLE_MOVE_FROM_LIFT://绌挎杞﹀嚭鎻愬崌鏈� + case SHUTTLE_MOVE_TO_LIFT://绌挎杞﹁繘鎻愬崌鏈� + case LIFT_SHUTTLE_ARRIVAL://鎻愬崌鏈鸿В閿� + return isIdleShuttleMoveToLift(); + case LIFT_LOCK://鎻愬崌鏈洪攣瀹� + case LIFT_UNLOCK://鎻愬崌鏈鸿В閿� + return isIdleLiftLock(); + } + + return false; + } + + //绌挎杞﹁繘鎻愬崌鏈烘椂-鎻愬崌鏈虹姸鎬佸垽鏂� + private boolean isIdleShuttleMoveToLift() { InnerLiftExtend extend = (InnerLiftExtend) this.liftProtocol.getExtend();//鑾峰彇鎵╁睍瀛楁 - // 鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔ㄣ�佸氨缁�佺┖闂层�佹湭閿佸畾 + // 鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔ㄣ�佸氨缁�佺┖闂� if (this.liftProtocol.getModel() && !this.liftProtocol.getRun() && this.liftProtocol.getPakMk() - && this.liftProtocol.getReady() && this.liftProtocol.getErrorCode().equals("0") && (this.liftProtocol.getProtocolStatusType().equals(LiftProtocolStatusType.IDLE) || this.liftProtocol.getProtocolStatusType().equals(LiftProtocolStatusType.WAITING)) - && !extend.getLock() + ) { + if (!extend.getLock()) { + //鎻愬崌鏈烘湭閿佸畾锛岄渶瑕佸垽鏂槸鍚﹀氨缁� + if (!this.liftProtocol.getReady()) { + return false; + } + } + return true; + } + return false; + } + + //鎻愬崌鏈洪攣瀹�-鎻愬崌鏈虹姸鎬佸垽鏂� + private boolean isIdleLiftLock() { + // 鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔ㄣ�佸氨缁�佺┖闂� + if (this.liftProtocol.getModel() + && !this.liftProtocol.getRun() + && this.liftProtocol.getPakMk() + && this.liftProtocol.getErrorCode().equals("0") + && (this.liftProtocol.getProtocolStatusType().equals(LiftProtocolStatusType.IDLE) + || this.liftProtocol.getProtocolStatusType().equals(LiftProtocolStatusType.WAITING)) ) { return true; } @@ -407,6 +483,11 @@ return extend.getLock(); } + @Override + public int generateDeviceTaskNo(int taskNo, MotionCtgType motionCtgType) { + return taskNo; + } + //***************璁惧灞傞�氳-涓嶅悓鍘傚晢璁惧閫氳鏂规涓嶄竴鑷�*************** //璇锋眰鐧诲綍 -- Gitblit v1.9.1