From 36b753105aa294e6a34fd7acccbd26693b9b93d1 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期二, 23 四月 2024 13:51:31 +0800
Subject: [PATCH] #
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java | 114 +++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 99 insertions(+), 15 deletions(-)
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
index 9dedf44..8919826 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
@@ -3,6 +3,8 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.zy.asrs.common.utils.HttpHandler;
import com.zy.asrs.framework.common.DateUtils;
import com.zy.asrs.framework.common.SpringUtils;
@@ -13,11 +15,11 @@
import com.zy.asrs.wcs.core.model.NavigateNode;
import com.zy.asrs.wcs.core.model.command.ShuttleCommand;
import com.zy.asrs.wcs.core.model.command.ShuttleRedisCommand;
-import com.zy.asrs.wcs.core.model.enums.ShuttleCommandModeType;
-import com.zy.asrs.wcs.core.model.enums.ShuttleRunDirection;
+import com.zy.asrs.wcs.core.model.enums.*;
import com.zy.asrs.wcs.core.service.BasShuttleService;
import com.zy.asrs.wcs.core.service.LocService;
import com.zy.asrs.wcs.core.utils.NavigateUtils;
+import com.zy.asrs.wcs.core.utils.Utils;
import com.zy.asrs.wcs.rcs.News;
import com.zy.asrs.wcs.rcs.cache.OutputQueue;
import com.zy.asrs.wcs.rcs.constant.DeviceRedisConstant;
@@ -29,6 +31,8 @@
import com.zy.asrs.wcs.rcs.thread.ShuttleThread;
import com.zy.asrs.wcs.core.utils.RedisUtil;
import com.zy.asrs.wcs.rcs.entity.Device;
+import com.zy.asrs.wcs.system.entity.Dict;
+import com.zy.asrs.wcs.system.service.DictService;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
@@ -109,6 +113,11 @@
//绂荤嚎
shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE);
}
+
+ if(deviceStatus != 4 || deviceStatus != 6 || deviceStatus != 7 || deviceStatus != 8 || deviceStatus != 255 || deviceStatus != -1) {
+ shuttleProtocol.setMode(1);//鑷姩鐘舵��
+ }
+
shuttleProtocol.setDeviceStatus(deviceStatus);
//褰撳墠浜岀淮鐮�
shuttleProtocol.setCurrentCode(data.getString("groundCode") == null ? "0" : data.getString("groundCode"));
@@ -132,6 +141,8 @@
extend.setStatusDescription(data.getString("statusDescription"));//鐘舵�佹弿杩�
shuttleProtocol.setExtend(extend);//鎵╁睍瀛楁
+ //鏈�杩戜竴娆″湪绾挎椂闂�
+ shuttleProtocol.setLastOnlineTime(System.currentTimeMillis());
///璇诲彇鍥涘悜绌挎杞︾姸鎬�-end
//灏忚溅澶勪簬蹇欑鐘舵�侊紝灏嗘爣璁扮疆涓簍rue
@@ -206,7 +217,10 @@
@Override
public ShuttleProtocol getStatus() {
- return this.shuttleProtocol;
+ if (this.shuttleProtocol == null) {
+ return null;
+ }
+ return this.shuttleProtocol.clone();
}
@Override
@@ -272,7 +286,7 @@
param.put("messageName", "runRoute");
param.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
param.put("deviceNo", device.getDeviceNo());
- param.put("taskId", generateDeviceTaskNo(taskNo));
+ param.put("taskId", taskNo);
param.put("nodeNum", nodes.size());
param.put("modes", modes);
String response = new HttpHandler.Builder()
@@ -316,6 +330,7 @@
JSONObject jsonObject = JSON.parseObject(response);
Integer code = jsonObject.getInteger("code");
if (code.equals(200)) {
+ this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
return true;
}
} catch (Exception e) {
@@ -346,6 +361,7 @@
JSONObject jsonObject = JSON.parseObject(response);
Integer code = jsonObject.getInteger("code");
if (code.equals(200)) {
+ this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
return true;
}
} catch (Exception e) {
@@ -376,6 +392,7 @@
JSONObject jsonObject = JSON.parseObject(response);
Integer code = jsonObject.getInteger("code");
if (code.equals(200)) {
+ this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
return true;
}
} catch (Exception e) {
@@ -386,7 +403,9 @@
@Override
public synchronized boolean reset(ShuttleCommand command) {
- return false;
+ this.shuttleProtocol.setTaskNo(0);
+ this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
+ return true;
}
@Override
@@ -412,7 +431,23 @@
boolean res = (this.shuttleProtocol.getDeviceStatus() == 3 || this.shuttleProtocol.getDeviceStatus() == 11)
&& this.shuttleProtocol.getPakMk()
&& this.shuttleProtocol.getErrorCode().equals("0")
- && this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id
+ && (this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id || this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id)
+ ;
+ return res;
+ }
+
+ @Override
+ public boolean isDeviceIdle() {
+ if (this.shuttleProtocol.getDeviceStatus() == null
+ || this.shuttleProtocol.getPakMk() == null
+ || this.shuttleProtocol.getErrorCode() == null
+ ) {
+ return false;
+ }
+
+ boolean res = (this.shuttleProtocol.getDeviceStatus() == 3 || this.shuttleProtocol.getDeviceStatus() == 11)
+ && this.shuttleProtocol.getPakMk()
+ && this.shuttleProtocol.getErrorCode().equals("0")
;
return res;
}
@@ -451,7 +486,6 @@
}
return Integer.valueOf(this.shuttleProtocol.getBatteryPower()) < chargeLine;
} catch (Exception e) {
- News.error("fail", e);
return false;
}
}
@@ -472,11 +506,22 @@
@Override
public boolean isChargingCompleted() {
+ Integer maxPower = 100;
+ DictService dictService = SpringUtils.getBean(DictService.class);
+ if (dictService != null) {
+ Dict chargeMaxValue = dictService.getOne(new LambdaQueryWrapper<Dict>()
+ .eq(Dict::getFlag, "chargeMaxValue")
+ .eq(Dict::getStatus, 1));
+ if (chargeMaxValue != null) {
+ maxPower = Integer.parseInt(chargeMaxValue.getValue());
+ }
+ }
+
if (this.shuttleProtocol.getBatteryPower() == null) {
return false;
}
- if (Integer.valueOf(this.shuttleProtocol.getBatteryPower()) >= 100) {
+ if (Integer.valueOf(this.shuttleProtocol.getBatteryPower()) >= maxPower) {
return true;
}
return false;
@@ -484,13 +529,22 @@
@Override
public List<NavigateNode> getMoveAdvancePath() {
+ ObjectMapper objectMapper = SpringUtils.getBean(ObjectMapper.class);
ArrayList<NavigateNode> path = new ArrayList<>();
if (shuttleProtocol.getTaskNo() != 0) {
//瀛樺湪浠诲姟锛岃幏鍙栨寚浠�
Object object = redisUtil.get(DeviceRedisConstant.SHUTTLE_WORK_FLAG + shuttleProtocol.getTaskNo());
if (object != null) {
- ShuttleRedisCommand redisCommand = JSON.parseObject(object.toString(), ShuttleRedisCommand.class);
+ ShuttleRedisCommand redisCommand = null;
+ try {
+ redisCommand = objectMapper.readValue(String.valueOf(object), ShuttleRedisCommand.class);
+ } catch (JsonProcessingException e) {
+ return path;
+ }
List<NavigateNode> nodes = redisCommand.getAssignCommand().getNodes();//绌挎杞﹂璁¤矾寰�
+ if (nodes == null) {
+ return path;
+ }
if (!nodes.isEmpty()) {
path.addAll(nodes);
}
@@ -500,12 +554,42 @@
}
@Override
- public int generateDeviceTaskNo(int taskNo) {
- int no = taskNo % 255;
- if (no <= 1) {
- no = 2;
+ public int generateDeviceTaskNo(int taskNo, MotionCtgType motionCtgType) {
+ int deviceTaskNo = taskNo;
+ try {
+ deviceTaskNo = Utils.getTaskNo("SURAY_SHUTTLE");
+ } catch (Exception e) {
+ return taskNo;
}
- return no;
+
+ switch (Objects.requireNonNull(MotionCtgType.get(String.valueOf(motionCtgType)))){
+ case SHUTTLE_MOVE://绌挎杞︾Щ鍔�
+ case SHUTTLE_MOVE_LIFT_PALLET://绌挎杞﹂《鍗囧苟绉诲姩
+ case SHUTTLE_MOVE_DOWN_PALLET://绌挎杞︾Щ鍔ㄥ苟鎵樼洏涓嬮檷
+ case SHUTTLE_MOVE_FROM_LIFT://鍑烘彁鍗囨満
+ case SHUTTLE_MOVE_TO_LIFT://杩涙彁鍗囨満
+ return deviceTaskNo;
+ default:
+ return taskNo;
+ }
+ }
+
+ @Override
+ public synchronized boolean setProtocolStatus(ShuttleProtocolStatusType status) {
+ this.shuttleProtocol.setProtocolStatus(status);
+ return true;
+ }
+
+ @Override
+ public synchronized boolean setSyncTaskNo(Integer taskNo) {
+ this.shuttleProtocol.setSyncTaskNo(taskNo);
+ return true;
+ }
+
+ @Override
+ public synchronized boolean setPakMk(boolean pakMk) {
+ this.shuttleProtocol.setPakMk(pakMk);
+ return true;
}
@Override
@@ -514,7 +598,7 @@
body.put("messageName", "runOrder");
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", generateDeviceTaskNo(taskNo));
+ body.put("taskId", taskNo);
LocService locService = SpringUtils.getBean(LocService.class);
Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>()
--
Gitblit v1.9.1