From 50435a81915932eda06b7f1afd48f9ff1ae84f19 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期四, 10 四月 2025 17:50:28 +0800
Subject: [PATCH] 1
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java | 158 ++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 115 insertions(+), 43 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 97c5acf..a08d18d 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,10 +12,12 @@
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;
import com.zy.asrs.wcs.rcs.entity.DeviceDataLog;
+import com.zy.asrs.wcs.rcs.model.CommandResponse;
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;
@@ -27,10 +29,7 @@
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")
@@ -94,18 +93,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"));
//************琛ュ厖鎵╁睍瀛楁*************
@@ -212,148 +218,163 @@
}
@Override
- public synchronized boolean move(LiftCommand command) {
+ public synchronized CommandResponse move(LiftCommand command) {
+ CommandResponse response = new CommandResponse(false);
try {
String loginToken = requestLoginToken();
if (loginToken == null) {
- return false;
+ return response;
}
HashMap<String, Object> headers = new HashMap<>();
headers.put("Authorization", "Bearer " + loginToken);
- String response = new HttpHandler.Builder()
+ String responseStr = new HttpHandler.Builder()
.setUri(API_URL)
.setPath("/RDS/lifterTask")
.setHeaders(headers)
.setJson(command.getBody())
.build()
.doPost();
- JSONObject jsonObject = JSON.parseObject(response);
+ JSONObject jsonObject = JSON.parseObject(responseStr);
Integer code = jsonObject.getInteger("code");
+ response.setMessage(JSON.toJSONString(jsonObject));
if (code.equals(200)) {
- return true;
+ response.setResult(true);
+ return response;
}
} catch (Exception e) {
e.printStackTrace();
}
- return false;
+ return response;
}
@Override
- public synchronized boolean palletInOut(LiftCommand command) {
+ public synchronized CommandResponse palletInOut(LiftCommand command) {
+ CommandResponse response = new CommandResponse(false);
try {
String loginToken = requestLoginToken();
if (loginToken == null) {
- return false;
+ return response;
}
HashMap<String, Object> headers = new HashMap<>();
headers.put("Authorization", "Bearer " + loginToken);
- String response = new HttpHandler.Builder()
+ String responseStr = new HttpHandler.Builder()
.setUri(API_URL)
.setPath("/RDS/lifterTask")
.setHeaders(headers)
.setJson(command.getBody())
.build()
.doPost();
- JSONObject jsonObject = JSON.parseObject(response);
+ JSONObject jsonObject = JSON.parseObject(responseStr);
Integer code = jsonObject.getInteger("code");
+ response.setMessage(JSON.toJSONString(jsonObject));
if (code.equals(200)) {
- return true;
+ response.setResult(true);
+ return response;
}
} catch (Exception e) {
e.printStackTrace();
}
- return false;
+ return response;
}
@Override
- public synchronized boolean lock(LiftCommand command) {
+ public synchronized CommandResponse lock(LiftCommand command) {
+ CommandResponse response = new CommandResponse(false);
try {
String loginToken = requestLoginToken();
if (loginToken == null) {
- return false;
+ return response;
}
HashMap<String, Object> headers = new HashMap<>();
headers.put("Authorization", "Bearer " + loginToken);
- String response = new HttpHandler.Builder()
+ String responseStr = new HttpHandler.Builder()
.setUri(API_URL)
.setPath("/RDS/lifterOperation")
.setHeaders(headers)
.setJson(command.getBody())
.build()
.doPost();
- JSONObject jsonObject = JSON.parseObject(response);
+ JSONObject jsonObject = JSON.parseObject(responseStr);
Integer code = jsonObject.getInteger("code");
+ response.setMessage(JSON.toJSONString(jsonObject));
if (code.equals(200)) {
- return true;
+ response.setResult(true);
+ return response;
}
} catch (Exception e) {
e.printStackTrace();
}
- return false;
+ return response;
}
@Override
- public synchronized boolean unlock(LiftCommand command) {
+ public synchronized CommandResponse unlock(LiftCommand command) {
+ CommandResponse response = new CommandResponse(false);
try {
String loginToken = requestLoginToken();
if (loginToken == null) {
- return false;
+ return response;
}
HashMap<String, Object> headers = new HashMap<>();
headers.put("Authorization", "Bearer " + loginToken);
- String response = new HttpHandler.Builder()
+ String responseStr = new HttpHandler.Builder()
.setUri(API_URL)
.setPath("/RDS/lifterOperation")
.setHeaders(headers)
.setJson(command.getBody())
.build()
.doPost();
- JSONObject jsonObject = JSON.parseObject(response);
+ JSONObject jsonObject = JSON.parseObject(responseStr);
Integer code = jsonObject.getInteger("code");
+ response.setMessage(JSON.toJSONString(jsonObject));
if (code.equals(200)) {
- return true;
+ response.setResult(true);
+ return response;
}
} catch (Exception e) {
e.printStackTrace();
}
- return false;
+ return response;
}
@Override
- public synchronized boolean reset(LiftCommand command) {
+ public synchronized CommandResponse reset(LiftCommand command) {
+ CommandResponse response = new CommandResponse(false);
try {
String loginToken = requestLoginToken();
if (loginToken == null) {
- return false;
+ return response;
}
HashMap<String, Object> headers = new HashMap<>();
headers.put("Authorization", "Bearer " + loginToken);
- String response = new HttpHandler.Builder()
+ String responseStr = new HttpHandler.Builder()
.setUri(API_URL)
.setPath("/RDS/lifterOperation")
.setHeaders(headers)
.setJson(command.getBody())
.build()
.doPost();
- JSONObject jsonObject = JSON.parseObject(response);
+ JSONObject jsonObject = JSON.parseObject(responseStr);
Integer code = jsonObject.getInteger("code");
+ response.setMessage(JSON.toJSONString(jsonObject));
if (code.equals(200)) {
- return true;
+ response.setResult(true);
+ return response;
}
} catch (Exception e) {
e.printStackTrace();
}
- return false;
+ return response;
}
@Override
@@ -362,22 +383,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;
}
@@ -432,6 +499,11 @@
return extend.getLock();
}
+ @Override
+ public int generateDeviceTaskNo(int taskNo, MotionCtgType motionCtgType) {
+ return taskNo;
+ }
+
//***************璁惧灞傞�氳-涓嶅悓鍘傚晢璁惧閫氳鏂规涓嶄竴鑷�***************
//璇锋眰鐧诲綍
--
Gitblit v1.9.1