|  |  | 
 |  |  |             return false; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         //清空下发索引 | 
 |  |  |         Set<String> keys = redisUtil.searchKeys(RedisKeyType.SHUTTLE_SEND_COMMAND_INDEX.key + shuttleNo); | 
 |  |  |         for (String key : keys) { | 
 |  |  |             redisUtil.del(key); | 
 |  |  |         } | 
 |  |  |         //Clear Traffic Control | 
 |  |  |         trafficControlThread.forceCancelTrafficControl(shuttleNo); | 
 |  |  |  | 
 |  |  | 
 |  |  |  | 
 |  |  |         shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.WORKING); | 
 |  |  |  | 
 |  |  |         //存储下发指令索引 | 
 |  |  |         redisUtil.set(RedisKeyType.SHUTTLE_SEND_COMMAND_INDEX.key + shuttleNo + "_" + taskNo + "_" + commandStep, commandStep); | 
 |  |  |  | 
 |  |  |         commandStep += 1; | 
 |  |  |         //更新redis数据 | 
 |  |  |         redisCommand.setCommandStep(commandStep); | 
 |  |  | 
 |  |  |             return 0; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         //上一条指令 | 
 |  |  |         String searchKey = RedisKeyType.SHUTTLE_SEND_COMMAND_INDEX.key + shuttleNo + "_" + redisCommand.getWrkNo() + "_"; | 
 |  |  |         Set<String> keys = redisUtil.searchKeys(searchKey); | 
 |  |  |         TreeSet<Integer> treeSet = new TreeSet<>(); | 
 |  |  |         for (String key : keys) { | 
 |  |  |             String[] split = key.split(searchKey); | 
 |  |  |             treeSet.add(Integer.parseInt(split[1])); | 
 |  |  |         boolean supportContinuously = false; | 
 |  |  |         int checkIdx = commandStep - 2; | 
 |  |  |         if (checkIdx < 0) { | 
 |  |  |             checkIdx = commandStep - 1; | 
 |  |  |         } | 
 |  |  |         if (treeSet.isEmpty()) { | 
 |  |  |             return 1; | 
 |  |  |         ShuttleCommand last2Command = commands.get(checkIdx); | 
 |  |  |         if(last2Command.getComplete()){ | 
 |  |  |             supportContinuously = true; | 
 |  |  |             checkIdx = commandStep - 1; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         String firstKey = searchKey + treeSet.first(); | 
 |  |  |         Integer lastCommandIdx = (Integer) redisUtil.get(firstKey); | 
 |  |  |         ShuttleCommand lastCommand = commands.get(lastCommandIdx); | 
 |  |  |         ShuttleCommand lastCommand = commands.get(checkIdx); | 
 |  |  |         if (!lastCommand.getComplete()) { | 
 |  |  |             //检测更新命令完成 | 
 |  |  |             boolean checked = updateCommandComplete(lastCommandIdx, commands, shuttleNo); | 
 |  |  |             boolean checked = updateCommandComplete(checkIdx, commands, shuttleNo); | 
 |  |  |             if (checked) { | 
 |  |  |                 //删除索引 | 
 |  |  |                 redisUtil.del(firstKey); | 
 |  |  |  | 
 |  |  |                 // 更新redis数据 | 
 |  |  |                 redisUtil.set(RedisKeyType.SHUTTLE_WORK_FLAG.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand, SerializerFeature.DisableCircularReferenceDetect)); | 
 |  |  |             }else { | 
 |  |  |                 //小车移动连续下发指令 | 
 |  |  |                 if (assignCommand.getShuttleMoveCommandsContinuously()) { | 
 |  |  |                     if (treeSet.size() <= 1) { | 
 |  |  |                         if(commandStep >= commands.size()) { | 
 |  |  |                     if (!supportContinuously) { | 
 |  |  |                             return 0; | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  | 
 |  |  |                         if(currentStartNode.getLinePartFlag().equals(linePartFlag)) { | 
 |  |  |                             //数据标识一致 | 
 |  |  |                             return 2;//允许小车移动连续下发指令 | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  | 
 |  |  |             trafficControlThread.trafficReport(command.getNodesDeepCopy(), shuttleNo, shuttleProtocol.getTaskNo()); | 
 |  |  |  | 
 |  |  |             String currentLocNo = shuttleProtocol.getCurrentLocNo(); | 
 |  |  |             if (currentLocNo == null) { | 
 |  |  |                 return false; | 
 |  |  |             } | 
 |  |  |             if (targetPoints.contains(Utils.getRow(currentLocNo) + "-" + Utils.getBay(currentLocNo))) { | 
 |  |  |                 command.setComplete(true); | 
 |  |  |                 boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(shuttleProtocol.getCurrentLocNo()), shuttleProtocol.getShuttleNo(), nodes, false);//解锁路径 |