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 | 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