|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private static final boolean DEBUG = false;//调试模式 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private List<JSONObject> socketReadResults = new ArrayList<>(); | 
|---|
|  |  |  | private List<JSONObject> socketResults = new ArrayList<>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //原始设备数据 | 
|---|
|  |  |  | 
|---|
|  |  |  | while (true) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | listenSocketMessage(); | 
|---|
|  |  |  | listenInit();//监听初始化事件 | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Object object = redisUtil.get(RedisKeyType.SHUTTLE.key + slave.getId()); | 
|---|
|  |  |  | Object object = redisUtil.get(RedisKeyType.SHUTTLE_FLAG.key + slave.getId()); | 
|---|
|  |  |  | if (object == null) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | //                    //小车空闲且有跑库程序 | 
|---|
|  |  |  | //                    shuttleAction.moveLoc(slave.getId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //演示模式 | 
|---|
|  |  |  | shuttleAction.demo(slave.getId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Thread.sleep(200); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | 
|---|
|  |  |  | Thread otherThread = new Thread(() -> { | 
|---|
|  |  |  | while (true) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | listenInit();//监听初始化事件 | 
|---|
|  |  |  | saveLog();//保存数据 | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | 
|---|
|  |  |  | //采集时间超过5s,保存一次数据记录 | 
|---|
|  |  |  | //保存数据记录 | 
|---|
|  |  |  | DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class); | 
|---|
|  |  |  | if (deviceDataLogService == null) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | DeviceDataLog deviceDataLog = new DeviceDataLog(); | 
|---|
|  |  |  | deviceDataLog.setOriginData(JSON.toJSONString(this.originDeviceData)); | 
|---|
|  |  |  | deviceDataLog.setWcsData(JSON.toJSONString(shuttleProtocol)); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //更新采集时间 | 
|---|
|  |  |  | shuttleProtocol.setDeviceDataLog(System.currentTimeMillis()); | 
|---|
|  |  |  | OutputQueue.SHUTTLE.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //将四向穿梭车状态保存至数据库 | 
|---|
|  |  |  | BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class); | 
|---|
|  |  |  | BasShuttle basShuttle = shuttleService.selectOne(new EntityWrapper<BasShuttle>() | 
|---|
|  |  |  | .eq("shuttle_no", slave.getId())); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (basShuttle == null) { | 
|---|
|  |  |  | basShuttle = new BasShuttle(); | 
|---|
|  |  |  | //四向穿梭车号 | 
|---|
|  |  |  | basShuttle.setShuttleNo(slave.getId()); | 
|---|
|  |  |  | basShuttle.setStatus(1); | 
|---|
|  |  |  | shuttleService.insert(basShuttle); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //任务号 | 
|---|
|  |  |  | basShuttle.setWrkNo(shuttleProtocol.getTaskNo().intValue()); | 
|---|
|  |  |  | //修改时间 | 
|---|
|  |  |  | basShuttle.setUpdateTime(new Date()); | 
|---|
|  |  |  | //设备状态 | 
|---|
|  |  |  | basShuttle.setDeviceStatus(JSON.toJSONString(shuttleProtocol)); | 
|---|
|  |  |  | if (shuttleService.updateById(basShuttle)) { | 
|---|
|  |  |  | OutputQueue.SHUTTLE.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | JSONObject result = JSON.parseObject(sb.toString());//得到响应结果集 | 
|---|
|  |  |  | if (!socketResults.isEmpty() && socketResults.size() >= 5) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String msgType = result.getString("msgType"); | 
|---|
|  |  |  | if ("responseMsg".equals(msgType)) { | 
|---|
|  |  |  | JSONObject response = result.getJSONObject("response"); | 
|---|
|  |  |  | JSONObject body = response.getJSONObject("body"); | 
|---|
|  |  |  | if (body.containsKey("workingMode")) { | 
|---|
|  |  |  | //read | 
|---|
|  |  |  | socketReadResults.add(body); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!socketResults.isEmpty() && socketResults.size() >= 20) { | 
|---|
|  |  |  | socketResults.remove(0);//清理头节点 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | socketResults.add(result);//添加数据 | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public JSONObject getRequestBody(String type) { | 
|---|
|  |  |  | public JSONObject getRequestBody(String type, String taskId) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | // 获取服务器响应 | 
|---|
|  |  |  | JSONObject result = null; | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!responseType.equals(type)) { | 
|---|
|  |  |  | continue;//响应ID与请求ID不一致,不在调试模式下 | 
|---|
|  |  |  | continue;//响应类型与请求类型不一致,不在调试模式下 | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (taskId != null) { | 
|---|
|  |  |  | String responseTaskId = resultBody.get("taskId").toString(); | 
|---|
|  |  |  | if (!responseTaskId.equals(taskId)) { | 
|---|
|  |  |  | continue;//响应ID与请求ID不一致,不在调试模式下 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | result = socketResult; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //----------读取四向穿梭车状态----------- | 
|---|
|  |  |  | NyShuttleHttpCommand readStatusCommand = getReadStatusCommand(slave.getId()); | 
|---|
|  |  |  | JSONObject data = requestCommand(readStatusCommand); | 
|---|
|  |  |  | requestCommandAsync(readStatusCommand);//请求状态 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (this.socketReadResults.isEmpty()) { | 
|---|
|  |  |  | if (System.currentTimeMillis() - shuttleProtocol.getLastOnlineTime() > 1000 * 60) { | 
|---|
|  |  |  | //最后一次上线时间超过60s,认定离线 | 
|---|
|  |  |  | this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | JSONObject data = this.socketReadResults.get(0); | 
|---|
|  |  |  | this.socketReadResults.remove(0); | 
|---|
|  |  |  | if (data == null) { | 
|---|
|  |  |  | if (System.currentTimeMillis() - shuttleProtocol.getLastOnlineTime() > 1000 * 60) { | 
|---|
|  |  |  | //最后一次上线时间超过60s,认定离线 | 
|---|
|  |  |  | shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE); | 
|---|
|  |  |  | this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | OutputQueue.SHUTTLE.offer(MessageFormat.format("【{0}】四向穿梭车Socket状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | 
|---|
|  |  |  | shuttleProtocol.setRunDirection(data.getString("runDir") == null ? "none" : data.getString("runDir")); | 
|---|
|  |  |  | //是否为充电状态 | 
|---|
|  |  |  | shuttleProtocol.setHasCharge(data.getInteger("chargState") == 1 ? true : false); | 
|---|
|  |  |  | //运行速度 | 
|---|
|  |  |  | shuttleProtocol.setSpeed(data.getInteger("speed")); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //*********读取扩展字段********** | 
|---|
|  |  |  | InnerSuhttleExtend extend = (InnerSuhttleExtend) shuttleProtocol.getExtend(); | 
|---|
|  |  |  | //管制状态 | 
|---|
|  |  |  | extend.setSuspendState(data.getInteger("suspendState")); | 
|---|
|  |  |  | //当前速度 | 
|---|
|  |  |  | extend.setSpeed(data.getInteger("speed")); | 
|---|
|  |  |  | //最高电芯电压(mV) | 
|---|
|  |  |  | extend.setMaxCellVoltage(data.getInteger("maxCellVoltage")); | 
|---|
|  |  |  | //最低电芯电压(mV) | 
|---|
|  |  |  | extend.setMinCellVoltage(data.getInteger("minCellVoltage")); | 
|---|
|  |  |  | //电池电压 | 
|---|
|  |  |  | extend.setVoltage(data.getInteger("voltage")); | 
|---|
|  |  |  | //充放电循环次数 | 
|---|
|  |  |  | extend.setChargeCycleTimes(data.getInteger("chargeCycleTimes")); | 
|---|
|  |  |  | //剩余电量 | 
|---|
|  |  |  | extend.setSurplusQuantity(data.getInteger("surplusQuantity")); | 
|---|
|  |  |  | //总电量 | 
|---|
|  |  |  | 
|---|
|  |  |  | ///读取四向穿梭车状态-end | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //小车处于运行中,将标记置为true | 
|---|
|  |  |  | if (shuttleProtocol.getDeviceStatus() == 1) { | 
|---|
|  |  |  | if (shuttleProtocol.getDeviceStatus() == 0) { | 
|---|
|  |  |  | shuttleProtocol.setPakMk(true); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (shuttleProtocol.getProtocolStatusType() == null && shuttleProtocol.getDeviceStatus().intValue() == 0) { | 
|---|
|  |  |  | if (shuttleProtocol.getProtocolStatusType() == null && shuttleProtocol.getDeviceStatus().intValue() == 1) { | 
|---|
|  |  |  | //小车空闲状态、小车任务状态为未知,认定曾离线过,需要复位成空闲 | 
|---|
|  |  |  | shuttleProtocol.setProtocolStatusType(ShuttleProtocolStatusType.IDLE); | 
|---|
|  |  |  | this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.OFFLINE) && shuttleProtocol.getDeviceStatus().intValue() == 1) { | 
|---|
|  |  |  | this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.originDeviceData = data; | 
|---|
|  |  |  | 
|---|
|  |  |  | int removeIdx = -1; | 
|---|
|  |  |  | for (int i = 0; i < socketResults.size(); i++) { | 
|---|
|  |  |  | JSONObject socketResult = socketResults.get(i); | 
|---|
|  |  |  | if (socketResult == null) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (!socketResult.get("msgType").equals("requestMsg")) {//不是请求内容 | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | String requestType = resultBody.getString("requestType"); | 
|---|
|  |  |  | Integer requestId = resultHeader.getInteger("requestId"); | 
|---|
|  |  |  | if (requestType.equals("init")) { | 
|---|
|  |  |  | removeIdx = i;//此数据已经处理,从结果集中剔除 | 
|---|
|  |  |  | socketResults.remove(removeIdx); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Integer code = resultBody.getInteger("code"); | 
|---|
|  |  |  | //小车复位请求 | 
|---|
|  |  |  | ShuttleCommand initCommand = getInitCommand(requestId, code); | 
|---|
|  |  |  | 
|---|
|  |  |  | NyShuttleHttpCommand httpCommand = JSON.parseObject(initCommand.getBody(), NyShuttleHttpCommand.class); | 
|---|
|  |  |  | JSONObject requestResult = requestCommand(httpCommand); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | removeIdx = i;//此数据已经处理,从结果集中剔除 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | log.info(MessageFormat.format("【{0}】四向车复位上报 ===>> [code:{1}] [ip:{2}] [port:{3}]", slave.getId(), code, slave.getIp(), slave.getPort())); | 
|---|
|  |  |  | OutputQueue.SHUTTLE.offer(MessageFormat.format("【{0}】四向车复位上报 ===>> [code:{1}] [ip:{2}] [port:{3}]", slave.getId(), code, slave.getIp(), slave.getPort())); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (removeIdx != -1) { | 
|---|
|  |  |  | socketResults.remove(removeIdx); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (NyShuttleHttpCommand requestCommand : commandList) { | 
|---|
|  |  |  | JSONObject result = requestCommand(requestCommand); | 
|---|
|  |  |  | if (result == null) { | 
|---|
|  |  |  | return response;//请求失败 | 
|---|
|  |  |  | while (true) { | 
|---|
|  |  |  | JSONObject result = requestCommand(requestCommand); | 
|---|
|  |  |  | if (result == null) { | 
|---|
|  |  |  | //                        return response;//请求失败 | 
|---|
|  |  |  | continue;//请求失败尝试重新请求 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.shuttleProtocol.setSendTime(System.currentTimeMillis());//指令下发时间 | 
|---|
|  |  |  | response.setMessage(JSON.toJSONString(result)); | 
|---|
|  |  |  | response.setResult(true); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.shuttleProtocol.setSendTime(System.currentTimeMillis());//指令下发时间 | 
|---|
|  |  |  | response.setMessage(JSON.toJSONString(result)); | 
|---|
|  |  |  | response.setResult(true); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return response; | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | 
|---|
|  |  |  | && this.shuttleProtocol.getMode() == 1 | 
|---|
|  |  |  | && this.shuttleProtocol.getPakMk() | 
|---|
|  |  |  | && this.shuttleProtocol.getErrorCode().equals("0") | 
|---|
|  |  |  | && this.shuttleProtocol.getTaskNo() == 0 | 
|---|
|  |  |  | && (this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id | 
|---|
|  |  |  | || this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id | 
|---|
|  |  |  | || this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.CHARGING_WAITING.id) | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public boolean isFault() { | 
|---|
|  |  |  | if (this.shuttleProtocol.getErrorCode() == null | 
|---|
|  |  |  | || this.shuttleProtocol.getMode() == null | 
|---|
|  |  |  | || this.shuttleProtocol.getExtend() == null | 
|---|
|  |  |  | ) { | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (this.shuttleProtocol.getMode() == 0) { | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!this.shuttleProtocol.getErrorCode().equals("0")) { | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (extend.getSuspendState() == 1) { | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<NavigateNode> getMoveAdvancePath() { | 
|---|
|  |  |  | ObjectMapper objectMapper = SpringUtils.getBean(ObjectMapper.class); | 
|---|
|  |  |  | NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); | 
|---|
|  |  |  | ArrayList<NavigateNode> path = new ArrayList<>(); | 
|---|
|  |  |  | if (shuttleProtocol.getTaskNo() != 0) { | 
|---|
|  |  |  | //存在任务,获取指令 | 
|---|
|  |  |  | Object object = redisUtil.get(RedisKeyType.SHUTTLE.key + shuttleProtocol.getTaskNo()); | 
|---|
|  |  |  | Object object = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + shuttleProtocol.getTaskNo()); | 
|---|
|  |  |  | if (object != null) { | 
|---|
|  |  |  | ShuttleRedisCommand redisCommand = null; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public boolean enableDemo(boolean enable) { | 
|---|
|  |  |  | shuttleProtocol.setDemo(enable); | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public boolean offerSystemMsg(String format, Object... arguments) { | 
|---|
|  |  |  | String msg = News.replace(format, arguments); | 
|---|
|  |  |  | shuttleProtocol.setSystemMsg(msg); | 
|---|
|  |  |  | 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(slave.getId(), taskNo); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | LocMastService locMastService = SpringUtils.getBean(LocMastService.class); | 
|---|
|  |  |  | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() | 
|---|
|  |  |  | .eq("code", distCodeNum)); | 
|---|
|  |  |  | .eq("qr_code_value", distCodeNum)); | 
|---|
|  |  |  | if (locMast == null) { | 
|---|
|  |  |  | throw new CoolException("库位信息不存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String mapStr = JSON.toJSONString(map); | 
|---|
|  |  |  | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() | 
|---|
|  |  |  | .eq("code", mapStr) | 
|---|
|  |  |  | .eq("status", 1)); | 
|---|
|  |  |  | .eq("qr_code_value", mapStr)); | 
|---|
|  |  |  | if (locMast == null) { | 
|---|
|  |  |  | throw new CoolException("地址码不存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | //            System.out.println("Sent message to server: " + JSON.toJSONString(httpCommand)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String requestType = null; | 
|---|
|  |  |  | String taskId = null; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | requestType = httpCommand.getRequest().getBody().get("requestType").toString(); | 
|---|
|  |  |  | taskId = httpCommand.getRequest().getBody().get("taskId").toString(); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | //            return null; | 
|---|
|  |  |  | //taskId可能取空,不报错,正常情况 | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 获取服务器响应 | 
|---|
|  |  |  | // 尝试10次 | 
|---|
|  |  |  | JSONObject result = null; | 
|---|
|  |  |  | for (int i = 0; i < 10; i++) { | 
|---|
|  |  |  | result = getRequestBody(requestType); | 
|---|
|  |  |  | result = getRequestBody(requestType, taskId); | 
|---|
|  |  |  | if (result == null) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | Thread.sleep(100); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return result;//返回Body结果集 | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void requestCommandAsync(NyShuttleHttpCommand httpCommand) throws IOException { | 
|---|
|  |  |  | if (this.socket == null) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //压缩数据包 | 
|---|
|  |  |  | JSONObject data = JSON.parseObject(JSON.toJSONString(httpCommand)); | 
|---|
|  |  |  | data.remove("nodes"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 获取输出流 | 
|---|
|  |  |  | OutputStreamWriter writer = new OutputStreamWriter(this.socket.getOutputStream()); | 
|---|
|  |  |  | writer.write(JSON.toJSONString(data) + "\r\n"); | 
|---|
|  |  |  | writer.flush(); | 
|---|
|  |  |  | //            System.out.println("Sent message to server: " + JSON.toJSONString(httpCommand)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private JSONObject filterBodyData(JSONObject data) { | 
|---|
|  |  |  | 
|---|
|  |  |  | //        int x1 = Math.abs(y - 61) + 11; | 
|---|
|  |  |  | //        //WCS系统X轴 => 牛眼Y轴转换公式 | 
|---|
|  |  |  | //        int y1 = x + 10; | 
|---|
|  |  |  | int x1 = x + 10; | 
|---|
|  |  |  | int y1 = y + 10; | 
|---|
|  |  |  | return new int[]{y1, x1, z}; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //        int x1 = x + 10; | 
|---|
|  |  |  | //        int y1 = y + 10; | 
|---|
|  |  |  | LocMastService locMastService = SpringUtils.getBean(LocMastService.class); | 
|---|
|  |  |  | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() | 
|---|
|  |  |  | .eq("row1", x) | 
|---|
|  |  |  | .eq("bay1", y) | 
|---|
|  |  |  | .eq("lev1", z) | 
|---|
|  |  |  | .eq("status", 1)); | 
|---|
|  |  |  | if (locMast == null) { | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String qrCodeValue = locMast.getQrCodeValue(); | 
|---|
|  |  |  | JSONObject data = JSON.parseObject(qrCodeValue); | 
|---|
|  |  |  | return new int[]{data.getInteger("y"), data.getInteger("x"), z}; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Data | 
|---|
|  |  |  | 
|---|
|  |  |  | private Integer suspendState; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 当前速度,单位mm/s | 
|---|
|  |  |  | * 最高电芯电压(mV) | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private Integer speed; | 
|---|
|  |  |  | private Integer maxCellVoltage; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 最低电芯电压(mV),低于2900mv需要立即充电 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private Integer minCellVoltage; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 电池电压(mV) | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private Integer voltage; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 充放电循环次数 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private Integer chargeCycleTimes; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 剩余电量/10(A) | 
|---|