From e31d3ceb4a6196f565794ccfd6b4540e99e4d71b Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期四, 28 三月 2024 15:32:00 +0800 Subject: [PATCH] Merge branch 'Four-Way-Rack' of http://47.97.1.152:5880/r/zy-asrs-master into Four-Way-Rack --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java | 172 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 163 insertions(+), 9 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 1091fc4..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 @@ -8,8 +8,12 @@ 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; @@ -21,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") @@ -81,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") == null ? "0" : data.getString("deviceLocation")); + shuttleProtocol.setCurrentCode(data.getString("groundCode") == null ? "0" : data.getString("groundCode")); //鐢垫睜鐢甸噺 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") == null ? "none" : data.getString("direction")); + //鏄惁涓哄厖鐢电姸鎬� + shuttleProtocol.setHasCharge((deviceStatus == 5 || deviceStatus == 13) ? true : false); ///璇诲彇鍥涘悜绌挎杞︾姸鎬�-end @@ -158,17 +166,161 @@ } @Override - public synchronized boolean movePath() { + 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() { + 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() { + 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; } @@ -194,6 +346,8 @@ 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