From 7635dc25bd2a4d565df496b2d96354639966768d Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期四, 25 九月 2025 11:09:44 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/impl/NyLiftThread.java | 155 ++++++++++++++++++++++++++++-----------------------
1 files changed, 84 insertions(+), 71 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 e5a01e7..1af1ca3 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;
@@ -45,10 +42,11 @@
private DeviceConfig device;
private LiftProtocol liftProtocol;
private RedisUtil redisUtil;
- LiftPointModel liftPointModel;
+ private LiftPointModel liftPointModel;
private List<LiftStaProtocol> liftStaProtocols = new ArrayList<>();
private List<DeviceMsgModel> readResultList = new ArrayList<>();
private List<DeviceMsgModel> resultList = new ArrayList<>();
+ private String realtimeOriginData = "";
public NyLiftThread(DeviceConfig device, LiftPointModel liftPointModel, List<LiftStation> stationList, RedisUtil redisUtil) {
this.device = device;
@@ -57,7 +55,7 @@
//鍒濆鍖栫珯鐐�
for (LiftStation station : stationList) {
LiftStaProtocol liftStaProtocol = new LiftStaProtocol();
- liftStaProtocol.setStaNo(station.getStaNo());//绔欑偣鍙�
+ liftStaProtocol.setSiteId(station.getSiteId());//绔欑偣鍙�
liftStaProtocol.setLev(station.getLev());//绔欑偣妤煎眰
String locNo = Utils.getLocNo(station.getRow(), station.getBay(), station.getLev());
liftStaProtocol.setLocNo(locNo);//绔欑偣搴撲綅鍙�
@@ -160,7 +158,7 @@
if (null == liftProtocol) {
liftProtocol = new LiftProtocol();
liftProtocol.setLiftNo(device.getDeviceNo());
- liftProtocol.setProtocolStatus(LiftProtocolStatusType.NONE);
+ liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE);
InnerLiftExtend innerLiftExtend = new InnerLiftExtend();
liftProtocol.setExtend(innerLiftExtend);
@@ -171,8 +169,8 @@
liftProtocol.setModel(data.getInteger("model"));
//PLC浠诲姟鍙�
liftProtocol.setPlcTaskNo(data.getInteger("plcTaskNo"));
- //浠诲姟鐘舵��
- liftProtocol.setProtocolStatus(data.getInteger("protocolStatus"));
+ //璁惧鐘舵��
+ liftProtocol.setDeviceStatus(data.getInteger("deviceStatus"));
//浠诲姟妯″紡
liftProtocol.setTaskMode(data.getInteger("taskMode"));
//鍙栬揣鏁版嵁
@@ -193,26 +191,47 @@
//************琛ュ厖鎵╁睍瀛楁*************
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"));
- JSONArray trayList = data.getJSONArray("trayList");
- for (int i = 0; i < trayList.size(); i++) {
- int hasTray = (int) trayList.get(i);
- LiftStaProtocol liftStaProtocol = liftStaProtocols.get(i);
- liftStaProtocol.setHasTray(hasTray == 1);
+ if (!liftExtend.getPlcTaskNoComplete().equals(liftProtocol.getPlcTaskNo())) {
+ //璁惧鐘舵��
+ liftProtocol.setDeviceStatus(LiftDeviceStatusType.BUSY.id);
}
- JSONArray carList = data.getJSONArray("carList");
- for (int i = 0; i < carList.size(); i++) {
- int hasCar = (int) carList.get(i);
- LiftStaProtocol liftStaProtocol = liftStaProtocols.get(i);
- liftStaProtocol.setHasCar(hasCar == 1);
+ //璇诲彇绔欑偣
+ JSONArray stationList = data.getJSONArray("stationList");
+ if (stationList != null) {
+ for (int i = 0; i < stationList.size(); i++) {
+ JSONObject staObj = stationList.getJSONObject(i);
+ LiftStaProtocol liftStaProtocol = null;
+ for (LiftStaProtocol staProtocol : liftStaProtocols) {
+ if(staProtocol.getSiteId().equals(staObj.getInteger("siteId"))){
+ liftStaProtocol = staProtocol;
+ break;
+ }
+ }
+
+ if(liftStaProtocol == null){
+ continue;
+ }
+
+ liftStaProtocol.setModel(staObj.getInteger("model") == 1);
+ liftStaProtocol.setBusy(staObj.getInteger("busy") == 1);
+ liftStaProtocol.setHasTray(staObj.getInteger("hasTray") == 1);
+ liftStaProtocol.setDeviceError(staObj.getInteger("deviceError") == 1);
+ liftStaProtocol.setTaskNo(staObj.getInteger("taskNo"));
+ liftStaProtocol.setBarcode(staObj.getString("barcode"));
+ }
}
+
+ this.realtimeOriginData = JSON.toJSONString(data);
if (System.currentTimeMillis() - liftProtocol.getDeviceDataLog() > 1000 * 5) {
//閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
@@ -230,27 +249,7 @@
liftProtocol.setDeviceDataLog(System.currentTimeMillis());
}
- //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴�
- BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class);
- BasLift basLift = basLiftService.selectOne(new EntityWrapper<BasLift>()
- .eq("lift_no", device.getDeviceNo()));
- if (basLift == null) {
- basLift = new BasLift();
- //鎻愬崌鏈哄彿
- basLift.setLiftNo(liftProtocol.getLiftNo());
- basLift.setStatus(1);
- basLiftService.insert(basLift);
- }
- //浠诲姟鍙�
- basLift.setWrkNo(liftProtocol.getTaskNo());
- //淇敼鏃堕棿
- basLift.setUpdateTime(new Date());
- //璁惧鐘舵��
- basLift.setDeviceStatus(JSON.toJSONString(liftProtocol));
- if (basLiftService.updateById(basLift)) {
- OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), liftProtocol.getLiftNo()));
- }
-
+ OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), liftProtocol.getLiftNo()));
} catch (Exception e) {
e.printStackTrace();
OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戣鍙栨彁鍗囨満鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), device.getDeviceNo(), device.getIp(), device.getPort()));
@@ -381,30 +380,10 @@
@Override
public CommandResponse reset() {
- CommandResponse response = new CommandResponse(false);
- try {
- LiftCommand resetCommand = getResetCommand(9999);
-
- //鍙戝嚭璇锋眰
- String resultKey = requestCommand(resetCommand);
- //鏌ヨ璇锋眰缁撴灉
- 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;
- }
+ CommandResponse response = new CommandResponse(true);
+ this.setSyncTaskNo(0);
+ this.setProtocolStatus(LiftProtocolStatusType.IDLE);
+ return response;
}
@Override
@@ -413,6 +392,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
) {
@@ -422,9 +402,10 @@
InnerLiftExtend extend = (InnerLiftExtend) this.liftProtocol.getExtend();
boolean res = this.liftProtocol.getProtocolStatus() == LiftProtocolStatusType.IDLE.id
- && this.liftProtocol.getPlcTaskNo() == 0
+// && this.liftProtocol.getPlcTaskNo() == 0
&& this.liftProtocol.getTaskNo() == 0
&& this.liftProtocol.getModel() == 2
+ && this.liftProtocol.getDeviceStatus() == LiftDeviceStatusType.IDLE.id
&& this.liftProtocol.getErrorCode() == 0
&& !extend.getFrontOverrun()
&& !extend.getBackOverrun()
@@ -452,6 +433,7 @@
if (this.liftProtocol.getProtocolStatus() == null
|| this.liftProtocol.getModel() == null
+ || this.liftProtocol.getDeviceStatus() == null
|| this.liftProtocol.getErrorCode() == null
|| this.liftProtocol.getExtend() == null
) {
@@ -462,6 +444,7 @@
boolean res = this.liftProtocol.getProtocolStatus() == LiftProtocolStatusType.IDLE.id
&& this.liftProtocol.getModel() == 2
+ && this.liftProtocol.getDeviceStatus() == LiftDeviceStatusType.IDLE.id
&& this.liftProtocol.getErrorCode() == 0
&& !extend.getFrontOverrun()
&& !extend.getBackOverrun()
@@ -481,7 +464,8 @@
@Override
public boolean setSyncTaskNo(Integer taskNo) {
- this.liftProtocol.setSyncTaskNo(taskNo);
+ redisUtil.setSync(RedisKeyType.LIFT_FLAG.key + liftProtocol.getLiftNo(), taskNo);
+ this.liftProtocol.setTaskNo(taskNo);
return true;
}
@@ -499,6 +483,11 @@
}
@Override
+ public String getRealtimeOriginData() {
+ return this.realtimeOriginData;
+ }
+
+ @Override
public LiftCommand getPickAndPutCommand(Integer taskNo, Integer pick, Integer put) {
LiftCommand command = new LiftCommand();
command.setLiftNo(device.getDeviceNo());
@@ -507,6 +496,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;
}
@@ -519,6 +512,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;
}
@@ -531,6 +528,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;
}
@@ -655,6 +656,15 @@
}
}
+ private LiftStaProtocol findSta(Integer staNo) {
+ for (LiftStaProtocol liftStaProtocol : this.liftStaProtocols) {
+ if (liftStaProtocol.getSiteId().equals(staNo)) {
+ return liftStaProtocol;
+ }
+ }
+ return null;
+ }
+
/**
* 鎵╁睍瀛楁
*/
@@ -691,5 +701,8 @@
*/
private Boolean overWeight;
+ //PLC宸插畬鎴愪换鍔″彿
+ private Integer plcTaskNoComplete;
+
}
}
--
Gitblit v1.9.1