From 7c32ab19d3bf4c601212314a1617bbb51c5fdd2a Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 29 三月 2024 16:01:36 +0800
Subject: [PATCH] #
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java | 220 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 212 insertions(+), 8 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 2780f6e..6f679c5 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
@@ -2,9 +2,18 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.common.utils.HttpHandler;
import com.zy.asrs.framework.common.DateUtils;
+import com.zy.asrs.framework.common.SpringUtils;
import com.zy.asrs.framework.exception.CoolException;
+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.enums.ShuttleCommandModeType;
+import com.zy.asrs.wcs.core.model.enums.ShuttleRunDirection;
+import com.zy.asrs.wcs.core.service.LocService;
+import com.zy.asrs.wcs.core.utils.NavigateUtils;
import com.zy.asrs.wcs.rcs.News;
import com.zy.asrs.wcs.rcs.cache.OutputQueue;
import com.zy.asrs.wcs.rcs.model.enums.ShuttleProtocolStatusType;
@@ -16,8 +25,7 @@
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
+import java.util.*;
@Slf4j
@SuppressWarnings("all")
@@ -76,24 +84,29 @@
if (data != null) {
if (null == shuttleProtocol) {
shuttleProtocol = new ShuttleProtocol();
- shuttleProtocol.setShuttleNo(device.getDeviceNo());
+ shuttleProtocol.setShuttleNo(Integer.valueOf(device.getDeviceNo()));
shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
shuttleProtocol.setDevice(device);
}
//----------璇诲彇鍥涘悜绌挎杞︾姸鎬�-----------
- //灏忚溅蹇欑姸鎬佷綅
- shuttleProtocol.setDeviceStatus(data.getInteger("deviceStatus"));
+ //灏忚溅璁惧鐘舵��
+ Integer deviceStatus = data.getInteger("deviceStatus");
+ shuttleProtocol.setDeviceStatus(deviceStatus);
//褰撳墠浜岀淮鐮�
- shuttleProtocol.setCurrentCode(data.getString("deviceLocation"));
+ shuttleProtocol.setCurrentCode(data.getString("groundCode") == null ? "0" : data.getString("groundCode"));
//鐢垫睜鐢甸噺
- shuttleProtocol.setBatteryPower(data.getString("battery"));
+ shuttleProtocol.setBatteryPower(data.getString("battery") == null ? "0%" : data.getString("battery"));
//鏄惁椤跺崌
shuttleProtocol.setHasLift(data.getInteger("palletStatus") == 1 ? true : false);
+ //鏄惁鏈夋墭鐩�
+ shuttleProtocol.setHasPallet(data.getInteger("hasPallet") != 2 ? true : false);
//琛岄┒鏂瑰悜
- shuttleProtocol.setRunDirection(data.getString("direction"));
+ shuttleProtocol.setRunDirection(data.getString("direction") == null ? "none" : data.getString("direction"));
+ //鏄惁涓哄厖鐢电姸鎬�
+ shuttleProtocol.setHasCharge((deviceStatus == 5 || deviceStatus == 13) ? true : false);
///璇诲彇鍥涘悜绌挎杞︾姸鎬�-end
@@ -147,6 +160,197 @@
return this.shuttleProtocol;
}
+ @Override
+ public Device getDevice() {
+ return this.device;
+ }
+
+ @Override
+ public synchronized boolean movePath(List<NavigateNode> nodes, Integer taskNo) {
+ try {
+ String loginToken = requestLoginToken();
+ if (loginToken == null) {
+ return false;
+ }
+
+ HashMap<String, Object> headers = new HashMap<>();
+ headers.put("Authorization", "Bearer " + loginToken);
+
+ ArrayList<HashMap<String, Object>> modes = new ArrayList<>();
+ //鑾峰彇鍒嗘璺緞
+ ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(nodes);
+ for (ArrayList<NavigateNode> sectionNodes : data) {
+ boolean flag = true;
+ int oper;
+ //寮�濮嬭矾寰�
+ NavigateNode startPath = nodes.get(0);
+ if (ShuttleRunDirection.get(startPath.getDirection()) == ShuttleRunDirection.LEFT
+ || ShuttleRunDirection.get(startPath.getDirection()) == ShuttleRunDirection.RIGHT) {
+ //姣嶈建鏂瑰悜
+ oper = 5;
+ }else {
+ //瀛愯建鏂瑰悜
+ oper = 6;
+ }
+
+ for (NavigateNode node : sectionNodes) {
+ HashMap<String, Object> map = new HashMap<>();
+ map.put("nodexX", node.getX());
+ map.put("nodexY", node.getY());
+ map.put("nodexZ", node.getZ());
+ if (flag) {
+ map.put("oper", oper);
+ flag = false;
+ }
+ modes.add(map);
+ }
+ }
+
+
+ HashMap<String, Object> param = new HashMap<>();
+ 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", taskNo);
+ param.put("nodeNum", nodes.size());
+ param.put("modes", modes);
+ String response = new HttpHandler.Builder()
+ .setUri(API_URL)
+ .setPath("/RDS/runRoute")
+ .setHeaders(headers)
+ .setJson(JSON.toJSONString(param))
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ Integer code = jsonObject.getInteger("code");
+ if (code.equals(200)) {
+ return true;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+
+ @Override
+ public synchronized boolean move(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/runOrder")
+ .setHeaders(headers)
+ .setJson(command.getBody())
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ Integer code = jsonObject.getInteger("code");
+ if (code.equals(200)) {
+ return true;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+
+ @Override
+ public synchronized boolean lift(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/actionOrder")
+ .setHeaders(headers)
+ .setJson(command.getBody())
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ Integer code = jsonObject.getInteger("code");
+ if (code.equals(200)) {
+ return true;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+
+ @Override
+ public synchronized boolean charge(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/actionOrder")
+ .setHeaders(headers)
+ .setJson(command.getBody())
+ .build()
+ .doPost();
+ JSONObject jsonObject = JSON.parseObject(response);
+ Integer code = jsonObject.getInteger("code");
+ if (code.equals(200)) {
+ return true;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+
+ @Override
+ public synchronized boolean reset(ShuttleCommand command) {
+ return false;
+ }
+
+ @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");
+ 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", taskNo);
+
+ LocService locService = SpringUtils.getBean(LocService.class);
+ Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>()
+ .eq(Loc::getCode, distCodeNum)
+ .eq(Loc::getHostId, this.device.getHostId()));
+ if (loc == null) {
+ throw new CoolException("搴撲綅淇℃伅涓嶅瓨鍦�");
+ }
+ body.put("nodeX", loc.getRow());
+ body.put("nodeY", loc.getBay());
+ body.put("nodeZ", loc.getLev());
+
+ ShuttleCommand command = new ShuttleCommand();
+ command.setShuttleNo(Integer.parseInt(this.device.getDeviceNo()));
+ command.setBody(JSON.toJSONString(body));
+ command.setMode(ShuttleCommandModeType.MOVE.id);
+ command.setTargetLocNo(loc.getLocNo());
+ return command;
+ }
+
//***************璁惧灞傞�氳-涓嶅悓鍘傚晢璁惧閫氳鏂规涓嶄竴鑷�***************
--
Gitblit v1.9.1