| | |
| | | } |
| | | |
| | | private void handleCommand(StationCommand command) { |
| | | Integer stationId = command.getStationId(); |
| | | Integer targetStationId = command.getTargetStaNo(); |
| | | |
| | | String startLev = String.valueOf(stationId).substring(0, 1); |
| | | String endLev = String.valueOf(targetStationId).substring(0, 1); |
| | | |
| | | if (startLev.equals(endLev)) { |
| | | currentLevCommand(command); |
| | | }else { |
| | | diffLevCommand(command); |
| | | } |
| | | } |
| | | |
| | | private void currentLevCommand(StationCommand command) { |
| | | NavigateUtils navigateUtils = SpringUtils.getBean(NavigateUtils.class); |
| | | if (navigateUtils == null) { |
| | | return; |
| | |
| | | Integer stationId = command.getStationId(); |
| | | Integer targetStationId = command.getTargetStaNo(); |
| | | |
| | | String startLev = String.valueOf(stationId).substring(0, 1); |
| | | |
| | | List<NavigateNode> navigateNodes = null; |
| | | |
| | | try { |
| | | navigateNodes = navigateUtils.calcByStationId(stationId, targetStationId); |
| | | navigateNodes = navigateUtils.calcByStationId(Integer.parseInt(startLev), stationId, targetStationId); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | return; |
| | | } |
| | | |
| | | stationMove(navigateNodes, taskNo, targetStationId); |
| | | } |
| | | |
| | | private void diffLevCommand(StationCommand command) { |
| | | NavigateUtils navigateUtils = SpringUtils.getBean(NavigateUtils.class); |
| | | if (navigateUtils == null) { |
| | | return; |
| | | } |
| | | |
| | | Integer taskNo = command.getTaskNo(); |
| | | Integer stationId = command.getStationId(); |
| | | Integer targetStationId = command.getTargetStaNo(); |
| | | |
| | | String startLev = String.valueOf(stationId).substring(0, 1); |
| | | String endLev = String.valueOf(targetStationId).substring(0, 1); |
| | | |
| | | List<NavigateNode> navigateNodes = null; |
| | | List<NavigateNode> targetNavigateNodes = null; |
| | | |
| | | try { |
| | | List<NavigateNode> liftStationList = navigateUtils.findLiftStationList(Integer.parseInt(startLev)); |
| | | if(liftStationList.isEmpty()){ |
| | | //未找到提升机节点 |
| | | return; |
| | | } |
| | | |
| | | List<NavigateNode> targetLiftStationList = navigateUtils.findLiftStationList(Integer.parseInt(endLev)); |
| | | if(targetLiftStationList.isEmpty()){ |
| | | //未找到提升机节点 |
| | | return; |
| | | } |
| | | for (NavigateNode liftStation : liftStationList) { |
| | | JSONObject valuObject = JSON.parseObject(liftStation.getNodeValue()); |
| | | if(valuObject == null){ |
| | | continue; |
| | | } |
| | | Integer liftStationId = valuObject.getInteger("stationId"); |
| | | Integer liftNo = valuObject.getInteger("liftNo"); |
| | | |
| | | Integer targetLiftStationId = null; |
| | | for (NavigateNode targetLiftStation : targetLiftStationList) { |
| | | JSONObject targetValuObject = JSON.parseObject(targetLiftStation.getNodeValue()); |
| | | if(targetValuObject == null){ |
| | | continue; |
| | | } |
| | | Integer targetLiftNo = targetValuObject.getInteger("liftNo"); |
| | | if(liftNo.equals(targetLiftNo)){ |
| | | targetLiftStationId = targetValuObject.getInteger("stationId"); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if(targetLiftStationId == null){ |
| | | continue; |
| | | } |
| | | |
| | | navigateNodes = navigateUtils.calcByStationId(Integer.parseInt(startLev), stationId, liftStationId); |
| | | if(navigateNodes == null){ |
| | | continue; |
| | | } |
| | | |
| | | //计算提升机到目标站的路径 |
| | | targetNavigateNodes = navigateUtils.calcByStationId(Integer.parseInt(endLev), targetLiftStationId, targetStationId); |
| | | if(targetNavigateNodes == null) { |
| | | continue; |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | if (navigateNodes == null || targetNavigateNodes == null) { |
| | | return; |
| | | } |
| | | |
| | | stationMove(navigateNodes, taskNo, stationId); |
| | | stationMove(targetNavigateNodes, taskNo, targetStationId); |
| | | } |
| | | |
| | | private void stationMove(List<NavigateNode> navigateNodes, Integer taskNo, Integer targetStationId) { |
| | | Integer lastStationId = null; |
| | | for (int i = 0; i < navigateNodes.size(); i++) { |
| | | NavigateNode navigateNode = navigateNodes.get(i); |