| | |
| | | try |
| | | { |
| | | //查询下一个路由信息 |
| | | List<Dt_Router> dt_Routers = BaseDal.QueryData(x => x.NextPosi == endPosi || x.ChildPosi == endPosi, new Dictionary<string, OrderByType> { { nameof(Dt_Router.IsEnd), OrderByType.Desc } }); |
| | | List<Dt_Router> dt_Routers = BaseDal.QueryData(x => (x.NextPosi == endPosi || x.ChildPosi == endPosi), new Dictionary<string, OrderByType> { { nameof(Dt_Router.IsEnd), OrderByType.Desc } }); |
| | | if (dt_Routers.Count > 0) |
| | | { |
| | | foreach (var item in dt_Routers) |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据起点/当前位置、终点获取下一个子节点。 |
| | | /// </summary> |
| | | /// <param name="startPosi">起点/当前位置。</param> |
| | | /// <param name="endPosi">终点。</param> |
| | | /// <param name="routeType">路由类型。</param> |
| | | /// <returns>返回路由实体集合。</returns> |
| | | public List<Dt_Router> QueryNextRoutes(string startPosi, string endPosi, int routeType) |
| | | { |
| | | //todo 方法需优化 |
| | | List<Dt_Router> routers = new List<Dt_Router>(); |
| | | try |
| | | { |
| | | //查询下一个路由信息 |
| | | List<Dt_Router> dt_Routers = BaseDal.QueryData(x => (x.NextPosi == endPosi || x.ChildPosi == endPosi) && x.InOutType == routeType, new Dictionary<string, OrderByType> { { nameof(Dt_Router.IsEnd), OrderByType.Desc } }); |
| | | if (dt_Routers.Count > 0) |
| | | { |
| | | foreach (var item in dt_Routers) |
| | | { |
| | | //如果下一个路由的起点和终点都匹配,则添加到路由列表中 |
| | | if (item.StartPosi == startPosi && !routers.Any(x => x.Id == item.Id)) |
| | | { |
| | | routers.Add(item); |
| | | } |
| | | else |
| | | { |
| | | //否则,递归查询下一个路由的起点 |
| | | List<Dt_Router> tempRouters = QueryNextRoutes(startPosi, item.StartPosi, routeType); |
| | | foreach (var router in tempRouters) |
| | | { |
| | | //如果下一个路由的起点和终点都匹配,则添加到路由列表中 |
| | | if (router.StartPosi == startPosi && !routers.Any(x => x.Id == router.Id)) |
| | | { |
| | | routers.Add(router); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //如果查询不到下一个路由信息,则抛出异常 |
| | | throw new Exception($"该路径未配置或配置错误,请检查设备路由信息,起点:【{startPosi}】,终点:【{endPosi}】"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | //throw new Exception(ex.Message); |
| | | //记录错误信息 |
| | | } |
| | | return routers; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据设备编号获取对应的路由点位编号(输送线站台编号)信息 |
| | | /// </summary> |
| | | /// <param name="deviceCode">设备编号</param> |