From 3979820ffea1120bc553accbdeba6445da91f277 Mon Sep 17 00:00:00 2001
From: qlsxk <qlsxk@qq.com>
Date: 星期四, 16 十月 2025 14:58:05 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/impl/NyLiftThread.java | 208 ++++++++++++++++++++++++++++++++++-----------------
1 files changed, 138 insertions(+), 70 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/impl/NyLiftThread.java b/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
index b495438..d1ade24 100644
--- a/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
+++ b/src/main/java/com/zy/core/thread/impl/NyLiftThread.java
@@ -3,13 +3,10 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
-import com.zy.asrs.entity.BasLift;
import com.zy.asrs.entity.DeviceConfig;
import com.zy.asrs.entity.DeviceDataLog;
-import com.zy.asrs.service.BasLiftService;
import com.zy.asrs.service.DeviceDataLogService;
import com.zy.asrs.utils.Utils;
import com.zy.common.ExecuteSupport;
@@ -88,7 +85,7 @@
try {
listenMessageFromRedis();
readStatus();
- Thread.sleep(100);
+ Thread.sleep(200);
} catch (Exception e) {
log.error("LiftThread Fail", e);
}
@@ -96,13 +93,18 @@
});
readThread.start();
- while (true) {
- try {
- execute();
- } catch (Exception e) {
- e.printStackTrace();
+ //璁惧鎵ц
+ Thread executeThread = new Thread(() -> {
+ while (true) {
+ try {
+ execute();
+ Thread.sleep(200);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
- }
+ });
+ executeThread.start();
}
private void execute() {
@@ -184,8 +186,6 @@
liftProtocol.setHasTray(data.getInteger("hasTray") == 1);
//鏈夊皬杞�
liftProtocol.setHasCar(data.getInteger("hasCar") == 1);
- //鍑哄叆搴撴ā寮�
- liftProtocol.setIOMode(data.getInteger("iOMode"));
//鏁呴殰鐮�
liftProtocol.setErrorCode(data.getInteger("errorCode"));
//褰撳墠灞�
@@ -194,12 +194,19 @@
//************琛ュ厖鎵╁睍瀛楁*************
InnerLiftExtend liftExtend = (InnerLiftExtend) liftProtocol.getExtend();
liftProtocol.setExtend(liftExtend);
- liftExtend.setFrontOverrun(data.getBoolean("frontOverrun"));
- liftExtend.setBackOverrun(data.getBoolean("backOverrun"));
- liftExtend.setLeftOverrun(data.getBoolean("leftOverrun"));
- liftExtend.setRightOverrun(data.getBoolean("rightOverrun"));
- liftExtend.setOverHeight(data.getBoolean("overHeight"));
- liftExtend.setOverWeight(data.getBoolean("overWeight"));
+ JSONObject extend = data.getJSONObject("extend");
+ liftExtend.setFrontOverrun(extend.getInteger("frontOverrun") == 1);
+ liftExtend.setBackOverrun(extend.getInteger("backOverrun") == 1);
+ liftExtend.setLeftOverrun(extend.getInteger("leftOverrun") == 1);
+ liftExtend.setRightOverrun(extend.getInteger("rightOverrun") == 1);
+ liftExtend.setOverHeight(extend.getInteger("overHeight") == 1);
+ liftExtend.setOverWeight(extend.getInteger("overWeight") == 1);
+ liftExtend.setPlcTaskNoComplete(extend.getInteger("plcTaskNoComplete"));
+
+ if (!liftExtend.getPlcTaskNoComplete().equals(liftProtocol.getPlcTaskNo())) {
+ //璁惧鐘舵��
+ liftProtocol.setDeviceStatus(LiftDeviceStatusType.BUSY.id);
+ }
//璇诲彇绔欑偣
JSONArray stationList = data.getJSONArray("stationList");
@@ -229,7 +236,7 @@
this.realtimeOriginData = JSON.toJSONString(data);
- if (System.currentTimeMillis() - liftProtocol.getDeviceDataLog() > 1000 * 5) {
+ if (System.currentTimeMillis() - liftProtocol.getDeviceDataLog() > 1000 * 2) {
//閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
//淇濆瓨鏁版嵁璁板綍
DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
@@ -349,29 +356,10 @@
}
@Override
- public CommandResponse switchIOMode(LiftCommand command) {
- CommandResponse response = new CommandResponse(false);
- try {
- //鍙戝嚭璇锋眰
- String resultKey = requestCommand(command);
- //鏌ヨ璇锋眰缁撴灉
- JSONObject result = queryCommandStatus(resultKey);
- if (result == null) {
- return response;//璇锋眰澶辫触
- }
- if(!result.getString("result").equals("success")) {
- return response;//璇锋眰澶辫触
- }
-
- this.liftProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
- response.setMessage(JSON.toJSONString(result));
- response.setResult(true);
- return response;
- } catch (Exception e) {
- e.printStackTrace();
- response.setMessage(e.getMessage());
- return response;
- }
+ public CommandResponse switchIOMode(LiftIoModeType type) {
+ CommandResponse response = new CommandResponse(true);
+ liftProtocol.setIOMode(type);
+ return response;
}
@Override
@@ -388,6 +376,7 @@
|| this.liftProtocol.getPlcTaskNo() == null
|| this.liftProtocol.getProtocolStatus() == null
|| this.liftProtocol.getModel() == null
+ || this.liftProtocol.getDeviceStatus() == null
|| this.liftProtocol.getErrorCode() == null
|| this.liftProtocol.getExtend() == null
) {
@@ -396,19 +385,51 @@
InnerLiftExtend extend = (InnerLiftExtend) this.liftProtocol.getExtend();
- boolean res = this.liftProtocol.getProtocolStatus() == LiftProtocolStatusType.IDLE.id
-// && this.liftProtocol.getPlcTaskNo() == 0
- && this.liftProtocol.getTaskNo() == 0
- && this.liftProtocol.getModel() == 2
- && this.liftProtocol.getErrorCode() == 0
- && !extend.getFrontOverrun()
- && !extend.getBackOverrun()
- && !extend.getLeftOverrun()
- && !extend.getRightOverrun()
- && !extend.getOverHeight()
- && !extend.getOverWeight()
- ;
- return res;
+ if (this.liftProtocol.getProtocolStatus() != LiftProtocolStatusType.IDLE.id) {
+ return false;//浠诲姟涓嶇┖闂�
+ }
+
+ if (this.liftProtocol.getTaskNo() != 0) {
+ return false;//鏈変换鍔″彿
+ }
+
+ if (this.liftProtocol.getModel() != 2) {
+ return false;//闈炶嚜鍔�
+ }
+
+ if (this.liftProtocol.getDeviceStatus() != LiftDeviceStatusType.IDLE.id) {
+ return false;//闈炵┖闂�
+ }
+
+ if (this.liftProtocol.getErrorCode() != 0) {
+ return false;//鏈夋晠闅�
+ }
+
+ if (extend.getFrontOverrun()) {
+ return false;
+ }
+
+ if (extend.getBackOverrun()) {
+ return false;
+ }
+
+ if (extend.getLeftOverrun()) {
+ return false;
+ }
+
+ if (extend.getRightOverrun()) {
+ return false;
+ }
+
+ if (extend.getOverHeight()) {
+ return false;
+ }
+
+ if (extend.getOverWeight()) {
+ return false;
+ }
+
+ return true;
}
@Override
@@ -425,8 +446,8 @@
}
}
- if (this.liftProtocol.getProtocolStatus() == null
- || this.liftProtocol.getModel() == null
+ if (this.liftProtocol.getModel() == null
+ || this.liftProtocol.getDeviceStatus() == null
|| this.liftProtocol.getErrorCode() == null
|| this.liftProtocol.getExtend() == null
) {
@@ -435,17 +456,43 @@
InnerLiftExtend extend = (InnerLiftExtend) this.liftProtocol.getExtend();
- boolean res = this.liftProtocol.getProtocolStatus() == LiftProtocolStatusType.IDLE.id
- && this.liftProtocol.getModel() == 2
- && this.liftProtocol.getErrorCode() == 0
- && !extend.getFrontOverrun()
- && !extend.getBackOverrun()
- && !extend.getLeftOverrun()
- && !extend.getRightOverrun()
- && !extend.getOverHeight()
- && !extend.getOverWeight()
- ;
- return res;
+ if (this.liftProtocol.getModel() != 2) {
+ return false;//闈炶嚜鍔�
+ }
+
+ if (this.liftProtocol.getDeviceStatus() != LiftDeviceStatusType.IDLE.id) {
+ return false;//闈炵┖闂�
+ }
+
+ if (this.liftProtocol.getErrorCode() != 0) {
+ return false;//鏈夋晠闅�
+ }
+
+ if (extend.getFrontOverrun()) {
+ return false;
+ }
+
+ if (extend.getBackOverrun()) {
+ return false;
+ }
+
+ if (extend.getLeftOverrun()) {
+ return false;
+ }
+
+ if (extend.getRightOverrun()) {
+ return false;
+ }
+
+ if (extend.getOverHeight()) {
+ return false;
+ }
+
+ if (extend.getOverWeight()) {
+ return false;
+ }
+
+ return true;
}
@Override
@@ -488,6 +535,10 @@
command.setPick(pick);
command.setPut(put);
+ LiftStaProtocol pickSta = findSta(pick);
+ LiftStaProtocol putSta = findSta(put);
+ command.setPickLev(pickSta.getLev());
+ command.setPutLev(putSta.getLev());
return command;
}
@@ -500,6 +551,10 @@
command.setPick(pick);
command.setPut(put);
+ LiftStaProtocol pickSta = findSta(pick);
+ LiftStaProtocol putSta = findSta(put);
+ command.setPickLev(pickSta.getLev());
+ command.setPutLev(putSta.getLev());
return command;
}
@@ -512,6 +567,10 @@
command.setPick(pick);
command.setPut(put);
+ LiftStaProtocol pickSta = findSta(pick);
+ LiftStaProtocol putSta = findSta(put);
+ command.setPickLev(pickSta.getLev());
+ command.setPutLev(putSta.getLev());
return command;
}
@@ -636,6 +695,15 @@
}
}
+ private LiftStaProtocol findSta(Integer staNo) {
+ for (LiftStaProtocol liftStaProtocol : this.liftStaProtocols) {
+ if (liftStaProtocol.getSiteId().equals(staNo)) {
+ return liftStaProtocol;
+ }
+ }
+ return null;
+ }
+
/**
* 鎵╁睍瀛楁
*/
@@ -672,8 +740,8 @@
*/
private Boolean overWeight;
- //鎻愬崌鏈虹珯鐐�
- private List<LiftStaProtocol> liftStaProtocols;
+ //PLC宸插畬鎴愪换鍔″彿
+ private Integer plcTaskNoComplete;
}
}
--
Gitblit v1.9.1