From e6f9daceecb5994da3413360358d000fba26e0e5 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期二, 16 四月 2024 15:38:27 +0800
Subject: [PATCH] #
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java | 117 +++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 99 insertions(+), 18 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 600cd12..461c4e2 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;
@@ -135,7 +137,7 @@
///璇诲彇鍥涘悜绌挎杞︾姸鎬�-end
//灏忚溅澶勪簬蹇欑鐘舵�侊紝灏嗘爣璁扮疆涓簍rue
- if (!shuttleProtocol.getIdle()) {
+ if (deviceStatus == 1 || deviceStatus == 2 || deviceStatus == 5) {
shuttleProtocol.setPakMk(true);
}
@@ -206,7 +208,10 @@
@Override
public ShuttleProtocol getStatus() {
- return this.shuttleProtocol;
+ if (this.shuttleProtocol == null) {
+ return null;
+ }
+ return this.shuttleProtocol.clone();
}
@Override
@@ -228,25 +233,37 @@
ArrayList<HashMap<String, Object>> modes = new ArrayList<>();
//鑾峰彇鍒嗘璺緞
ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(nodes);
- for (ArrayList<NavigateNode> sectionNodes : data) {
+ for (int idx = 0; idx < data.size(); idx++) {
+ ArrayList<NavigateNode> sectionNodes = data.get(idx);
+ boolean isRemoveFooterNode = false;//鏄惁鍓旈櫎灏捐妭鐐�
+ if (idx != data.size() - 1) {
+ isRemoveFooterNode = true;//鍓旈櫎灏捐妭鐐�
+ }
+
boolean flag = true;
int oper;
//寮�濮嬭矾寰�
- NavigateNode startPath = nodes.get(0);
+ NavigateNode startPath = sectionNodes.get(0);
+ //缁撴潫璺緞
+ NavigateNode targetPath = sectionNodes.get(sectionNodes.size() - 1);
if (ShuttleRunDirection.get(startPath.getDirection()) == ShuttleRunDirection.LEFT
|| ShuttleRunDirection.get(startPath.getDirection()) == ShuttleRunDirection.RIGHT) {
//姣嶈建鏂瑰悜
oper = 5;
- }else {
+ } else {
//瀛愯建鏂瑰悜
oper = 6;
}
- for (NavigateNode node : sectionNodes) {
+ for (int i = 0; i < sectionNodes.size(); i++) {
+ if (isRemoveFooterNode && i == sectionNodes.size() - 1) {
+ continue;
+ }
+ NavigateNode node = sectionNodes.get(i);
HashMap<String, Object> map = new HashMap<>();
- map.put("nodexX", node.getX());
- map.put("nodexY", node.getY());
- map.put("nodexZ", node.getZ());
+ map.put("nodeX", node.getX());
+ map.put("nodeY", node.getY());
+ map.put("nodeZ", node.getZ());
if (flag) {
map.put("oper", oper);
flag = false;
@@ -389,7 +406,7 @@
return false;
}
}
- if (this.shuttleProtocol.getIdle() == null
+ if (this.shuttleProtocol.getDeviceStatus() == null
|| this.shuttleProtocol.getPakMk() == null
|| this.shuttleProtocol.getErrorCode() == null
|| this.shuttleProtocol.getProtocolStatus() == null
@@ -397,17 +414,33 @@
return false;
}
- boolean res = this.shuttleProtocol.getIdle()
+ 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;
}
@Override
public boolean isRequireCharge() {
- if (this.shuttleProtocol.getIdle() == null
+ if (this.shuttleProtocol.getDeviceStatus() == null
|| this.shuttleProtocol.getPakMk() == null
|| this.shuttleProtocol.getErrorCode() == null
|| this.shuttleProtocol.getProtocolStatus() == null
@@ -415,7 +448,7 @@
return false;
}
- boolean res = this.shuttleProtocol.getIdle()
+ boolean res = (this.shuttleProtocol.getDeviceStatus() == 3)
&& this.shuttleProtocol.getPakMk()
&& this.shuttleProtocol.getErrorCode().equals("0")
&& this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id
@@ -472,13 +505,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_FLAG + shuttleProtocol.getTaskNo());
+ 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);
}
@@ -488,6 +530,45 @@
}
@Override
+ public int generateDeviceTaskNo(int taskNo, MotionCtgType motionCtgType) {
+ int deviceTaskNo = taskNo;
+ try {
+ deviceTaskNo = Utils.getTaskNo("SURAY_SHUTTLE");
+ } catch (Exception e) {
+ return taskNo;
+ }
+
+ 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
public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed) {
HashMap<String, Object> body = new HashMap<>();
body.put("messageName", "runOrder");
--
Gitblit v1.9.1