From 8ef2bb5e46d84594e6ed632c07ea0b47a1bf6c4d Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期三, 11 十二月 2024 16:15:17 +0800 Subject: [PATCH] #path similarity --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java | 150 ++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 121 insertions(+), 29 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 c0adf3c..aa74579 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,20 +11,24 @@ 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; import com.zy.asrs.wcs.rcs.cache.OutputQueue; import com.zy.asrs.wcs.rcs.constant.DeviceRedisConstant; import com.zy.asrs.wcs.rcs.entity.DeviceDataLog; +import com.zy.asrs.wcs.rcs.model.CommandResponse; import com.zy.asrs.wcs.rcs.model.enums.ShuttleProtocolStatusType; import com.zy.asrs.wcs.rcs.model.enums.SlaveType; import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol; @@ -124,7 +128,7 @@ //褰撳墠浜岀淮鐮� shuttleProtocol.setCurrentCode(data.getString("groundCode") == null ? "0" : data.getString("groundCode")); //鐢垫睜鐢甸噺 - shuttleProtocol.setBatteryPower(data.getString("battery") == null ? "0%" : data.getString("battery")); + shuttleProtocol.setBatteryPower(data.getString("battery") == null ? "0" : data.getString("battery")); //鏁呴殰 shuttleProtocol.setErrorCode(deviceStatus == 6 ? "1" : "0"); @@ -237,8 +241,10 @@ } @Override - public synchronized boolean movePath(List<NavigateNode> nodes, Integer taskNo) { + public synchronized CommandResponse movePath(List<NavigateNode> nodes, Integer taskNo) { + CommandResponse response = new CommandResponse(false); try { + NavigateUtils navigateUtils = SpringUtils.getBean(NavigateUtils.class); //榛樿鍦板浘姣嶈建鏂瑰悜x String mapDirection = "x"; DictService dictService = SpringUtils.getBean(DictService.class); @@ -251,7 +257,7 @@ String loginToken = requestLoginToken(); if (loginToken == null) { - return false; + return response; } HashMap<String, Object> headers = new HashMap<>(); @@ -259,7 +265,7 @@ ArrayList<HashMap<String, Object>> modes = new ArrayList<>(); //鑾峰彇鍒嗘璺緞 - ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(nodes); + ArrayList<ArrayList<NavigateNode>> data = navigateUtils.getSectionPath(nodes); for (int idx = 0; idx < data.size(); idx++) { ArrayList<NavigateNode> sectionNodes = data.get(idx); boolean isRemoveFooterNode = false;//鏄惁鍓旈櫎灏捐妭鐐� @@ -307,7 +313,7 @@ param.put("taskId", taskNo); param.put("nodeNum", nodes.size()); param.put("modes", modes); - String response = new HttpHandler.Builder() + String responseStr = new HttpHandler.Builder() .setUri(API_URL) .setPath("/RDS/runRoute") .setHeaders(headers) @@ -315,33 +321,36 @@ .setTimeout(60, TimeUnit.SECONDS) .build() .doPost(); - JSONObject jsonObject = JSON.parseObject(response); + JSONObject jsonObject = JSON.parseObject(responseStr); Integer code = jsonObject.getInteger("code"); System.out.println("璺緞涓嬪彂" + taskNo); System.out.println(JSON.toJSONString(jsonObject)); System.out.println(JSON.toJSONString(param)); if (code.equals(200)) { System.out.println("璺緞涓嬪彂" + taskNo); - return true; + response.setResult(true); + response.setMessage(responseStr); + return response; } } catch (Exception e) { e.printStackTrace(); } - return false; + return response; } @Override - public synchronized boolean move(ShuttleCommand command) { + public synchronized CommandResponse move(ShuttleCommand command) { + CommandResponse response = new CommandResponse(false); try { String loginToken = requestLoginToken(); if (loginToken == null) { - return false; + return response; } HashMap<String, Object> headers = new HashMap<>(); headers.put("Authorization", "Bearer " + loginToken); - String response = new HttpHandler.Builder() + String responseStr = new HttpHandler.Builder() .setUri(API_URL) .setPath("/RDS/runOrder") .setHeaders(headers) @@ -349,31 +358,34 @@ .setTimeout(60, TimeUnit.SECONDS) .build() .doPost(); - JSONObject jsonObject = JSON.parseObject(response); + JSONObject jsonObject = JSON.parseObject(responseStr); Integer code = jsonObject.getInteger("code"); System.out.println(JSON.toJSONString(command.getBody())); if (code.equals(200)) { this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 - return true; + response.setResult(true); + response.setMessage(responseStr); + return response; } } catch (Exception e) { e.printStackTrace(); } - return false; + return response; } @Override - public synchronized boolean lift(ShuttleCommand command) { + public synchronized CommandResponse lift(ShuttleCommand command) { + CommandResponse response = new CommandResponse(false); try { String loginToken = requestLoginToken(); if (loginToken == null) { - return false; + return response; } HashMap<String, Object> headers = new HashMap<>(); headers.put("Authorization", "Bearer " + loginToken); - String response = new HttpHandler.Builder() + String responseStr = new HttpHandler.Builder() .setUri(API_URL) .setPath("/RDS/actionOrder") .setHeaders(headers) @@ -381,30 +393,33 @@ .setTimeout(60, TimeUnit.SECONDS) .build() .doPost(); - JSONObject jsonObject = JSON.parseObject(response); + JSONObject jsonObject = JSON.parseObject(responseStr); Integer code = jsonObject.getInteger("code"); if (code.equals(200)) { this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 - return true; + response.setResult(true); + response.setMessage(responseStr); + return response; } } catch (Exception e) { e.printStackTrace(); } - return false; + return response; } @Override - public synchronized boolean charge(ShuttleCommand command) { + public synchronized CommandResponse charge(ShuttleCommand command) { + CommandResponse response = new CommandResponse(false); try { String loginToken = requestLoginToken(); if (loginToken == null) { - return false; + return response; } HashMap<String, Object> headers = new HashMap<>(); headers.put("Authorization", "Bearer " + loginToken); - String response = new HttpHandler.Builder() + String responseStr = new HttpHandler.Builder() .setUri(API_URL) .setPath("/RDS/actionOrder") .setHeaders(headers) @@ -412,24 +427,60 @@ .setTimeout(60, TimeUnit.SECONDS) .build() .doPost(); - JSONObject jsonObject = JSON.parseObject(response); + JSONObject jsonObject = JSON.parseObject(responseStr); Integer code = jsonObject.getInteger("code"); if (code.equals(200)) { this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 - return true; + response.setResult(true); + response.setMessage(responseStr); + return response; } } catch (Exception e) { e.printStackTrace(); } - return false; + return response; } @Override - public synchronized boolean reset(ShuttleCommand command) { + public synchronized CommandResponse reset(ShuttleCommand command) { setSyncTaskNo(0); setProtocolStatus(ShuttleProtocolStatusType.IDLE); enableMoveLoc(null, false); - return true; + return new CommandResponse(true, JSON.toJSONString(command)); + } + + @Override + public CommandResponse updateLocation(ShuttleCommand command) { + CommandResponse response = new CommandResponse(false); + try { + String loginToken = requestLoginToken(); + if (loginToken == null) { + return response; + } + + HashMap<String, Object> headers = new HashMap<>(); + headers.put("Authorization", "Bearer " + loginToken); + + String responseStr = new HttpHandler.Builder() + .setUri(API_URL) + .setPath("/RDS/changeLocation") + .setHeaders(headers) + .setJson(command.getBody()) + .setTimeout(60, TimeUnit.SECONDS) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(responseStr); + Integer code = jsonObject.getInteger("code"); + if (code.equals(200)) { + this.shuttleProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿 + response.setResult(true); + response.setMessage(responseStr); + return response; + } + } catch (Exception e) { + e.printStackTrace(); + } + return response; } @Override @@ -515,7 +566,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; } @@ -656,6 +707,15 @@ } @Override + public boolean requestWaiting() { + if (this.shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.IDLE)) { + this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING); + return true; + } + return false; + } + + @Override public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes) { HashMap<String, Object> body = new HashMap<>(); body.put("messageName", "runOrder"); @@ -674,11 +734,23 @@ 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)); command.setMode(ShuttleCommandModeType.MOVE.id); command.setTargetLocNo(loc.getLocNo()); + command.setTaskNo(taskNo); return command; } @@ -695,6 +767,7 @@ command.setShuttleNo(Integer.parseInt(this.device.getDeviceNo())); command.setBody(JSON.toJSONString(body)); command.setMode(lift ? ShuttleCommandModeType.PALLET_LIFT.id : ShuttleCommandModeType.PALLET_DOWN.id); + command.setTaskNo(taskNo); return command; } @@ -711,6 +784,25 @@ command.setShuttleNo(Integer.parseInt(this.device.getDeviceNo())); command.setBody(JSON.toJSONString(body)); command.setMode(charge ? ShuttleCommandModeType.CHARGE_OPEN.id : ShuttleCommandModeType.CHARGE_CLOSE.id); + command.setTaskNo(taskNo); + 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); + command.setTaskNo(taskNo); return command; } -- Gitblit v1.9.1