From 835be703696c44af1e510eca5fe2f6b8553a3b56 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期一, 24 六月 2024 17:04:57 +0800
Subject: [PATCH] #
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java | 85 +++++++++++++++++++++++++++++++++++++++---
1 files changed, 79 insertions(+), 6 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 bcd4c5a..b652a28 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
@@ -11,14 +11,17 @@
import com.zy.asrs.framework.exception.CoolException;
import com.zy.asrs.wcs.common.ExecuteSupport;
import com.zy.asrs.wcs.core.domain.param.ShuttleMoveLocParam;
+import com.zy.asrs.wcs.core.entity.BasLift;
import com.zy.asrs.wcs.core.entity.BasShuttle;
import com.zy.asrs.wcs.core.entity.Loc;
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.*;
+import com.zy.asrs.wcs.core.service.BasLiftService;
import com.zy.asrs.wcs.core.service.BasShuttleService;
import com.zy.asrs.wcs.core.service.LocService;
+import com.zy.asrs.wcs.core.utils.LiftDispatcher;
import com.zy.asrs.wcs.core.utils.NavigateUtils;
import com.zy.asrs.wcs.core.utils.Utils;
import com.zy.asrs.wcs.rcs.News;
@@ -46,7 +49,7 @@
@SuppressWarnings("all")
public class SurayShuttleThread implements ShuttleThread {
- private static final String API_URL = "http://127.0.0.1:8082";
+ private static String API_URL = "http://127.0.0.1:8082";
private Device device;
private RedisUtil redisUtil;
@@ -55,6 +58,7 @@
public SurayShuttleThread(Device device,RedisUtil redisUtil) {
this.device = device;
this.redisUtil = redisUtil;
+ API_URL = "http://" + device.getIp() + ":" + device.getPort();
}
@Override
@@ -238,6 +242,16 @@
@Override
public synchronized boolean movePath(List<NavigateNode> nodes, Integer taskNo) {
try {
+ //榛樿鍦板浘姣嶈建鏂瑰悜x
+ String mapDirection = "x";
+ DictService dictService = SpringUtils.getBean(DictService.class);
+ Dict dict = dictService.getOne(new LambdaQueryWrapper<Dict>()
+ .eq(Dict::getFlag, "direction_map")
+ .eq(Dict::getStatus, 1));
+ if (dict != null) {
+ mapDirection = dict.getValue();
+ }
+
String loginToken = requestLoginToken();
if (loginToken == null) {
return false;
@@ -262,13 +276,13 @@
NavigateNode startPath = sectionNodes.get(0);
//缁撴潫璺緞
NavigateNode targetPath = sectionNodes.get(sectionNodes.size() - 1);
- if (ShuttleRunDirection.get(startPath.getDirection()) == ShuttleRunDirection.LEFT
+ if (mapDirection.equals("y") && ShuttleRunDirection.get(startPath.getDirection()) == ShuttleRunDirection.LEFT
|| ShuttleRunDirection.get(startPath.getDirection()) == ShuttleRunDirection.RIGHT) {
- //瀛愯建鏂瑰悜
- oper = 6;
- } else {
//姣嶈建鏂瑰悜
oper = 5;
+ } else {
+ //瀛愯建鏂瑰悜
+ oper = 6;
}
for (int i = 0; i < sectionNodes.size(); i++) {
@@ -422,6 +436,37 @@
}
@Override
+ public boolean updateLocation(ShuttleCommand command) {
+ try {
+ String loginToken = requestLoginToken();
+ if (loginToken == null) {
+ return false;
+ }
+
+ HashMap<String, Object> headers = new HashMap<>();
+ headers.put("Authorization", "Bearer " + loginToken);
+
+ String response = new HttpHandler.Builder()
+ .setUri(API_URL)
+ .setPath("/RDS/changeLocation")
+ .setHeaders(headers)
+ .setJson(command.getBody())
+ .setTimeout(60, TimeUnit.SECONDS)
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ Integer code = jsonObject.getInteger("code");
+ if (code.equals(200)) {
+ this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
+ return true;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+
+ @Override
public boolean isIdle() {
return this.isIdle(null);
}
@@ -504,7 +549,7 @@
if (shuttleService == null) {
return false;
}
- BasShuttle basShuttle = shuttleService.getById(this.device.getDeviceNo());
+ BasShuttle basShuttle = shuttleService.getOne(new LambdaQueryWrapper<BasShuttle>().eq(BasShuttle::getDeviceId, this.device.getId()));
if (basShuttle == null) {
return false;
}
@@ -663,6 +708,17 @@
body.put("nodeY", loc.getBay());
body.put("nodeZ", loc.getLev());
+ //妫�娴嬬洰鏍囩偣鏄惁涓烘彁鍗囨満
+ BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class);
+ BasLift basLift = basLiftService.getOne(new LambdaQueryWrapper<BasLift>().eq(BasLift::getRow, loc.getRow())
+ .eq(BasLift::getBay, loc.getBay())
+ .eq(BasLift::getHostId, this.device.getHostId()));
+ if (basLift != null) {
+ LiftDispatcher liftDispatcher = SpringUtils.getBean(LiftDispatcher.class);
+ Integer realLev = liftDispatcher.getLiftLevOffset(basLift.getDeviceId().intValue(), loc.getLev());
+ body.put("nodeZ", realLev);
+ }
+
ShuttleCommand command = new ShuttleCommand();
command.setShuttleNo(Integer.parseInt(this.device.getDeviceNo()));
command.setBody(JSON.toJSONString(body));
@@ -703,6 +759,23 @@
return command;
}
+ @Override
+ public ShuttleCommand getUpdateLocationCommand(Integer taskNo, String locNo) {
+ HashMap<String, Object> body = new HashMap<>();
+ 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()));
+
+ String coord = "(" + Utils.getRow(locNo) + "," + Utils.getBay(locNo) + "," + Utils.getLev(locNo) + ")";
+ body.put("coord", coord);
+
+ ShuttleCommand command = new ShuttleCommand();
+ command.setShuttleNo(Integer.parseInt(this.device.getDeviceNo()));
+ command.setBody(JSON.toJSONString(body));
+ command.setMode(ShuttleCommandModeType.UPDATE_LOCATION.id);
+ return command;
+ }
+
//***************璁惧灞傞�氳-涓嶅悓鍘傚晢璁惧閫氳鏂规涓嶄竴鑷�***************
//璇锋眰鐧诲綍
--
Gitblit v1.9.1