|  |  | 
 |  |  |      */ | 
 |  |  |     public boolean writeNavigateNodeToRedisMap(List<NavigateNode> nodes, boolean lock) { | 
 |  |  |         RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class); | 
 |  |  |         Object o = redisUtil.get("realtimeBasMap_" + lev); | 
 |  |  |         if (o == null) { | 
 |  |  |             return false; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         BasMap basMap = JSON.parseObject(o.toString(), BasMap.class); | 
 |  |  |         ArrayList arrayList = JSON.parseObject(basMap.getData(), ArrayList.class); | 
 |  |  |         List<List<MapNode>> lists = filterMap(NavigationMapType.NONE.id, arrayList, lev, null, null);//获取全部地图数据 | 
 |  |  |  | 
 |  |  |         NavigateMapData mapData = new NavigateMapData(nodes.get(0).getZ()); | 
 |  |  |         List<List<MapNode>> realMap = mapData.getJsonData(-1, null, null);//获取完整地图(包括入库出库) | 
 |  |  |         for (NavigateNode node : nodes) { | 
 |  |  |             if (node.getZ() != lev) { | 
 |  |  |                 continue; | 
 |  |  |         try { | 
 |  |  |             if (!redisUtil.tryLock("realtimeBasMap_" + lev)) { | 
 |  |  |                 return false;//加锁失败 | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             List<MapNode> listX = lists.get(node.getX()); | 
 |  |  |             MapNode mapNode = listX.get(node.getY()); | 
 |  |  |             if (lock) { | 
 |  |  |                 mapNode.setValue(-999);//禁用库位 | 
 |  |  |             }else { | 
 |  |  |                 //获取原始节点数据 | 
 |  |  |                 List<MapNode> rows = realMap.get(node.getX()); | 
 |  |  |                 MapNode col = rows.get(node.getY()); | 
 |  |  |                 mapNode.setValue(col.getValue());//恢复库位 | 
 |  |  |             Object o = redisUtil.get("realtimeBasMap_" + lev); | 
 |  |  |             if (o == null) { | 
 |  |  |                 return false; | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             listX.set(node.getY(), mapNode); | 
 |  |  |             lists.set(node.getX(), listX); | 
 |  |  |             BasMap basMap = JSON.parseObject(o.toString(), BasMap.class); | 
 |  |  |             ArrayList arrayList = JSON.parseObject(basMap.getData(), ArrayList.class); | 
 |  |  |             List<List<MapNode>> lists = filterMap(NavigationMapType.NONE.id, arrayList, lev, null, null);//获取全部地图数据 | 
 |  |  |  | 
 |  |  |             NavigateMapData mapData = new NavigateMapData(nodes.get(0).getZ()); | 
 |  |  |             List<List<MapNode>> realMap = mapData.getJsonData(-1, null, null);//获取完整地图(包括入库出库) | 
 |  |  |             for (NavigateNode node : nodes) { | 
 |  |  |                 if (node.getZ() != lev) { | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 List<MapNode> listX = lists.get(node.getX()); | 
 |  |  |                 MapNode mapNode = listX.get(node.getY()); | 
 |  |  |                 if (lock) { | 
 |  |  |                     mapNode.setValue(-999);//禁用库位 | 
 |  |  |                 } else { | 
 |  |  |                     //获取原始节点数据 | 
 |  |  |                     List<MapNode> rows = realMap.get(node.getX()); | 
 |  |  |                     MapNode col = rows.get(node.getY()); | 
 |  |  |                     mapNode.setValue(col.getValue());//恢复库位 | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 listX.set(node.getY(), mapNode); | 
 |  |  |                 lists.set(node.getX(), listX); | 
 |  |  |             } | 
 |  |  |             basMap.setData(JSON.toJSONString(lists)); | 
 |  |  |             basMap.setUpdateTime(new Date()); | 
 |  |  |             //将数据库地图数据存入redis | 
 |  |  |             redisUtil.set("realtimeBasMap_" + lev, JSON.toJSONString(basMap)); | 
 |  |  |         } catch (Exception e) { | 
 |  |  |             e.printStackTrace(); | 
 |  |  |         }finally { | 
 |  |  |             //解锁 | 
 |  |  |             redisUtil.unlock("realtimeBasMap_" + lev); | 
 |  |  |         } | 
 |  |  |         basMap.setData(JSON.toJSONString(lists)); | 
 |  |  |         basMap.setUpdateTime(new Date()); | 
 |  |  |         //将数据库地图数据存入redis | 
 |  |  |         redisUtil.set("realtimeBasMap_" + lev, JSON.toJSONString(basMap)); | 
 |  |  |         return true; | 
 |  |  |     } | 
 |  |  |  |