| | |
| | | if (directRoute != null) |
| | | return directRoute; |
| | | |
| | | //// 如果没有直接路由,使用查找算法找到朝向终点的路由 |
| | | //List<Dt_Router> allRouters = BaseDal.QueryData(x => x.InOutType == routeType); |
| | | //foreach (var route in routes) |
| | | //{ |
| | | // // 检查从这个路由的下一个位置是否能到达终点 |
| | | // var pathToEnd = FindRoutesInMemory(route.NextPosi, endPosi, allRouters, routeType); |
| | | // if (pathToEnd.Count > 0) |
| | | // return route; |
| | | //} |
| | | |
| | | // 如果都不能到达终点,返回第一个路由 |
| | | return routes.FirstOrDefault(); |
| | | } |
| | |
| | | public List<object> GetAllWholeRouters() |
| | | { |
| | | List<object> data = new List<object>(); |
| | | // 查询所有路由 |
| | | List<Dt_Router> allRouters = BaseDal.QueryData(x => true); |
| | | // 从缓存加载入口类型和出口类型的全量路由数据并合并 |
| | | List<Dt_Router> inRouters = GetAllRoutersFromCache(RouterInOutType.In.ObjToInt()); |
| | | List<Dt_Router> outRouters = GetAllRoutersFromCache(RouterInOutType.Out.ObjToInt()); |
| | | List<Dt_Router> allRouters = inRouters.Concat(outRouters).ToList(); |
| | | // 查询所有结束的路由,并按Id排序 |
| | | List<Dt_Router> dt_Routers = allRouters.Where(x => x.IsEnd).OrderBy(x => x.Id).ToList(); |
| | | |