| | |
| | | import com.zy.asrs.framework.common.SpringUtils; |
| | | 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.BasShuttle; |
| | | import com.zy.asrs.wcs.core.entity.Loc; |
| | | import com.zy.asrs.wcs.core.model.MapNode; |
| | |
| | | NyShuttleHttpCommand readStatusCommand = getReadStatusCommand(Integer.parseInt(device.getDeviceNo())); |
| | | JSONObject data = requestCommand(readStatusCommand); |
| | | if (data == null) { |
| | | // shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE); |
| | | if (System.currentTimeMillis() - shuttleProtocol.getLastOnlineTime() > 1000 * 60) { |
| | | //最后一次上线时间超过60s,认定离线 |
| | | shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE); |
| | | } |
| | | OutputQueue.SHUTTLE.offer(MessageFormat.format("【{0}】四向穿梭车Socket状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), device.getId(), device.getIp(), device.getPort())); |
| | | }else { |
| | | |
| | |
| | | |
| | | @Override |
| | | public ShuttleProtocol getStatus() { |
| | | return getStatus(true); |
| | | } |
| | | |
| | | @Override |
| | | public ShuttleProtocol getStatus(boolean clone) { |
| | | if (this.shuttleProtocol == null) { |
| | | return null; |
| | | } |
| | | return this.shuttleProtocol.clone(); |
| | | return clone ? this.shuttleProtocol.clone() : this.shuttleProtocol; |
| | | } |
| | | |
| | | @Override |
| | |
| | | try { |
| | | //发出请求 |
| | | NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); |
| | | JSONObject result = requestCommand(httpCommand); |
| | | if (result == null) { |
| | | return false;//请求失败 |
| | | Map<String, Object> body = httpCommand.getRequest().getBody(); |
| | | Object pathObj = body.get("path"); |
| | | List<JSONObject> path = JSON.parseArray(JSON.toJSONString(pathObj), JSONObject.class); |
| | | ArrayList<NyShuttleHttpCommand> commandList = new ArrayList<>(); |
| | | while (!path.isEmpty()) { |
| | | ArrayList<Map<String, Object>> list = new ArrayList<>(); |
| | | if (path.size() > 10) { |
| | | List<JSONObject> subList = path.subList(0, 10); |
| | | list.addAll(subList); |
| | | subList.clear(); |
| | | }else { |
| | | list.addAll(path); |
| | | path.clear(); |
| | | } |
| | | |
| | | NyShuttleHttpCommand httpCommandCopy = JSON.parseObject(JSON.toJSONString(httpCommand), NyShuttleHttpCommand.class); |
| | | JSONObject bodyCopy = JSON.parseObject(JSON.toJSONString(body)); |
| | | |
| | | NyShuttleHttpCommand.NyRequest request = httpCommandCopy.getRequest(); |
| | | bodyCopy.put("path", list); |
| | | request.setBody(bodyCopy); |
| | | httpCommandCopy.setRequest(request); |
| | | |
| | | commandList.add(httpCommandCopy);//add copy |
| | | } |
| | | this.shuttleProtocol.setSendTime(System.currentTimeMillis());//指令下发时间 |
| | | |
| | | for (NyShuttleHttpCommand requestCommand : commandList) { |
| | | JSONObject result = requestCommand(requestCommand); |
| | | if (result == null) { |
| | | return false;//请求失败 |
| | | } |
| | | this.shuttleProtocol.setSendTime(System.currentTimeMillis());//指令下发时间 |
| | | } |
| | | return true; |
| | | } catch (IOException e) { |
| | | return false; |
| | |
| | | } |
| | | |
| | | @Override |
| | | public boolean enableMoveLoc(ShuttleMoveLocParam param) { |
| | | shuttleProtocol.setMoveLoc(true);//开启跑库 |
| | | shuttleProtocol.setMoveType(param.getMoveType()); |
| | | shuttleProtocol.setXStart(param.getStartX()); |
| | | shuttleProtocol.setXTarget(param.getTargetX()); |
| | | shuttleProtocol.setXCurrent(param.getStartX()); |
| | | shuttleProtocol.setYStart(param.getStartY()); |
| | | shuttleProtocol.setYTarget(param.getTargetY()); |
| | | shuttleProtocol.setYCurrent(param.getStartY()); |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes) { |
| | | NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); |
| | | NyShuttleHttpCommand httpStandard = getHttpStandard(Integer.parseInt(device.getDeviceNo()), taskNo); |