|  |  | 
 |  |  | 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; | 
 |  |  | 
 |  |  |                 //当前二维码 | 
 |  |  |                 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"); | 
 |  |  |  | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @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); | 
 |  |  | 
 |  |  |  | 
 |  |  |             String loginToken = requestLoginToken(); | 
 |  |  |             if (loginToken == null) { | 
 |  |  |                 return false; | 
 |  |  |                 return response; | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             HashMap<String, Object> headers = new HashMap<>(); | 
 |  |  | 
 |  |  |  | 
 |  |  |             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;//是否剔除尾节点 | 
 |  |  | 
 |  |  |             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) | 
 |  |  | 
 |  |  |                     .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) | 
 |  |  | 
 |  |  |                     .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) | 
 |  |  | 
 |  |  |                     .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) | 
 |  |  | 
 |  |  |                     .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 boolean updateLocation(ShuttleCommand command) { | 
 |  |  |     public CommandResponse updateLocation(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/changeLocation") | 
 |  |  |                     .setHeaders(headers) | 
 |  |  | 
 |  |  |                     .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 | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @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"); | 
 |  |  | 
 |  |  |         command.setBody(JSON.toJSONString(body)); | 
 |  |  |         command.setMode(ShuttleCommandModeType.MOVE.id); | 
 |  |  |         command.setTargetLocNo(loc.getLocNo()); | 
 |  |  |         command.setTaskNo(taskNo); | 
 |  |  |         return command; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         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; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         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; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         command.setShuttleNo(Integer.parseInt(this.device.getDeviceNo())); | 
 |  |  |         command.setBody(JSON.toJSONString(body)); | 
 |  |  |         command.setMode(ShuttleCommandModeType.UPDATE_LOCATION.id); | 
 |  |  |         command.setTaskNo(taskNo); | 
 |  |  |         return command; | 
 |  |  |     } | 
 |  |  |  |