1
huangxiaoqiang
2026-02-25 02a4fdd78cef9c7d2a26bfb9aa187179cf0baac3
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs
@@ -1,12 +1,15 @@
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;
@@ -81,7 +84,13 @@
        {
            // 用于记录已经访问过的起点和终点组合,避免重复访问进入死循环
            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)
@@ -98,7 +107,11 @@
                }
                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)
@@ -120,10 +133,10 @@
                        }
                    }
                }
                else
                {
                    throw new Exception($"该路径未配置或配置错误,请检查设备路由信息,起点:【{startPosi}】,终点:【{endPosi}】");
                }
                //else
                //{
                //    throw new Exception($"该路径未配置或配置错误,请检查设备路由信息,起点:【{startPosi}】,终点:【{endPosi}】");
                //}
            }
            catch (Exception ex)
            {
@@ -264,7 +277,7 @@
                    {
                        if (routerType == (int)RouterInOutType.Out)
                            router.ChildPosi = routersAddDTOs[i + 1].ChildPositionCode;
                         router.IsEnd = true;
                        router.IsEnd = true;
                    }
                    routers.Add(router);
                }