|  |  |  | 
|---|
|  |  |  | return false;//检测目标站点路径是否未被占用 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //尝试锁定目标站路径 | 
|---|
|  |  |  | boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), targetNodes, true);//所使用的路径进行锁定禁用 | 
|---|
|  |  |  | boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), shuttleProtocol.getShuttleNo().intValue(), targetNodes, true);//所使用的路径进行锁定禁用 | 
|---|
|  |  |  | if (!result2) { | 
|---|
|  |  |  | News.info("{}任务,{}小车,路径锁定失败,禁止派发", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); | 
|---|
|  |  |  | return false;//路径锁定失败 | 
|---|
|  |  |  | 
|---|
|  |  |  | if (result == null) { | 
|---|
|  |  |  | //路径获取失败,需要解锁上面锁定的路径 | 
|---|
|  |  |  | //尝试解锁目标站路径 | 
|---|
|  |  |  | boolean result3 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), targetNodes, false);//所使用的路径进行解锁 | 
|---|
|  |  |  | boolean result3 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), shuttleProtocol.getShuttleNo().intValue(), targetNodes, false);//所使用的路径进行解锁 | 
|---|
|  |  |  | if (!result3) { | 
|---|
|  |  |  | News.info("{}任务,{}小车,路径解锁失败", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); | 
|---|
|  |  |  | return false;//路径解锁失败 | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson.JSON; | 
|---|
|  |  |  | import com.core.common.SpringUtils; | 
|---|
|  |  |  | import com.zy.asrs.entity.BasMap; | 
|---|
|  |  |  | import com.zy.asrs.utils.Utils; | 
|---|
|  |  |  | import com.zy.common.model.MapNode; | 
|---|
|  |  |  | import com.zy.common.model.NavigateNode; | 
|---|
|  |  |  | import com.zy.common.model.enums.NavigationMapType; | 
|---|
|  |  |  | 
|---|
|  |  |  | * 写入路径节点数据到redis地图中 | 
|---|
|  |  |  | * lock为true 禁用库位,lock为false恢复库位 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public synchronized boolean writeNavigateNodeToRedisMap(Integer lev, List<NavigateNode> nodes, boolean lock) { | 
|---|
|  |  |  | public synchronized boolean writeNavigateNodeToRedisMap(Integer lev, Integer shuttleNo, List<NavigateNode> nodes, boolean lock) { | 
|---|
|  |  |  | RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class); | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | if (nodes.isEmpty()) { | 
|---|
|  |  |  | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //获取小车节点 | 
|---|
|  |  |  | List<int[]> shuttlePoints = Utils.getShuttlePoints(shuttleNo, lev); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | BasMap basMap = JSON.parseObject(o.toString(), BasMap.class); | 
|---|
|  |  |  | ArrayList arrayList = JSON.parseObject(basMap.getData(), ArrayList.class); | 
|---|
|  |  |  | List<List<MapNode>> lists = navigateMapData.filterMap(NavigationMapType.NONE.id, arrayList, lev, null, null);//获取全部地图数据 | 
|---|
|  |  |  | List<List<MapNode>> lists = navigateMapData.filterMap(NavigationMapType.NONE.id, arrayList, lev, null, shuttlePoints);//获取全部地图数据 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //检测路径是否被锁定 | 
|---|
|  |  |  | if (lock) { | 
|---|
|  |  |  | 
|---|
|  |  |  | allNode.addAll(nodes); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(startPoint), allNode, true);//锁定路径 | 
|---|
|  |  |  | boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(startPoint), shuttleNo, allNode, true);//锁定路径 | 
|---|
|  |  |  | if (!result) { | 
|---|
|  |  |  | return null;//路径锁定失败 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | nodes.add(node); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(startPoint), nodes, true);//锁定路径 | 
|---|
|  |  |  | boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(startPoint), shuttleNo, nodes, true);//锁定路径 | 
|---|
|  |  |  | if (!result) { | 
|---|
|  |  |  | return null;//路径锁定失败 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | if (!(targetNode.getX() == node.getX() && targetNode.getY() == node.getY())) { | 
|---|
|  |  |  | nodes.remove(nodes.size() - 1);//剔除尾节点 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(shuttleProtocol.getCurrentLocNo()), nodes, false);//解锁路径 | 
|---|
|  |  |  | boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(shuttleProtocol.getCurrentLocNo()), shuttleProtocol.getShuttleNo().intValue(), nodes, false);//解锁路径 | 
|---|
|  |  |  | if (!result) { | 
|---|
|  |  |  | return false;//解锁失败 | 
|---|
|  |  |  | } | 
|---|