| | |
| | | using SqlSugar; |
| | | using Masuit.Tools; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Diagnostics; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.BaseServices; |
| | | using WIDESEAWCS_Core.Enums; |
| | | using WIDESEAWCS_Core.LogHelper; |
| | | using WIDESEAWCS_DTO.BasicInfo; |
| | | using WIDESEAWCS_QuartzJob.Models; |
| | | using WIDESEAWCS_QuartzJob.Repository; |
| | |
| | | { |
| | | // 用于记录已经访问过的起点和终点组合,避免重复访问进入死循环 |
| | | HashSet<string> visitedRoutes = new HashSet<string>(); |
| | | return QueryNextRoutesInternal(startPosi, endPosi, visitedRoutes); |
| | | var stopwatch = Stopwatch.StartNew(); |
| | | var rasult = QueryNextRoutesInternal(startPosi, endPosi, visitedRoutes); |
| | | |
| | | stopwatch.Stop(); |
| | | var elapsed = stopwatch.ElapsedMilliseconds; |
| | | QuartzLogger.WriteLogToFile("路由查询", $"时长{elapsed},起点:{startPosi},终点{endPosi}"); |
| | | return rasult; |
| | | } |
| | | |
| | | private List<Dt_Router> QueryNextRoutesInternal(string startPosi, string endPosi, HashSet<string> visitedRoutes) |
| | |
| | | } |
| | | visitedRoutes.Add(routeKey); |
| | | |
| | | 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) && x.StartPosi == startPosi, new Dictionary<string, OrderByType> { { nameof(Dt_Router.IsEnd), OrderByType.Desc } }); |
| | | if (dt_Routers.IsNullOrEmpty()) |
| | | { |
| | | 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) |
| | |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | throw new Exception($"该路径未配置或配置错误,请检查设备路由信息,起点:【{startPosi}】,终点:【{endPosi}】"); |
| | | } |
| | | //else |
| | | //{ |
| | | // throw new Exception($"该路径未配置或配置错误,请检查设备路由信息,起点:【{startPosi}】,终点:【{endPosi}】"); |
| | | //} |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | { |
| | | if (routerType == (int)RouterInOutType.Out) |
| | | router.ChildPosi = routersAddDTOs[i + 1].ChildPositionCode; |
| | | router.IsEnd = true; |
| | | router.IsEnd = true; |
| | | } |
| | | routers.Add(router); |
| | | } |