1
hutongqing
2025-01-02 8c6fd742db249ad4cc819cf041eb98d880a3ef73
WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs
@@ -7,17 +7,27 @@
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_Core.Enums;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_DTO.BasicInfo;
using WIDESEAWCS_QuartzJob.Models;
using WIDESEAWCS_QuartzJob.Repository;
using WIDESEAWCS_QuartzJob.Service;
namespace WIDESEAWCS_BasicInfoService
namespace WIDESEAWCS_QuartzJob.Service
{
    /// <summary>
    /// 路由配置业务层
    /// </summary>
    public class RouterService : ServiceBase<Dt_Router, IRouterRepository>, IRouterService
    {
        private readonly IDeviceProtocolRepository _deviceProtocolRepository;
        private readonly IDeviceInfoRepository _deviceInfoRepository;
        /// <summary>
        /// 路由配置业务层
        /// </summary>
        /// <param name="BaseDal"></param>
        /// <param name="deviceProtocolRepository"></param>
        /// <param name="deviceInfoRepository"></param>
        public RouterService(IRouterRepository BaseDal, IDeviceProtocolRepository deviceProtocolRepository, IDeviceInfoRepository deviceInfoRepository) : base(BaseDal)
        {
            _deviceProtocolRepository = deviceProtocolRepository;
@@ -89,10 +99,10 @@
            try
            {
                // 查询所有进入路由器的位置
                List<string> inRouterPositions = BaseDal.QueryData(x => x.ChildPosiDeviceCode == deviceCode && x.InOutType == RouterInOutType.In).GroupBy(x => x.StartPosi).Select(x => x.Key).ToList();
                List<string> inRouterPositions = BaseDal.QueryData(x => x.ChildPosiDeviceCode == deviceCode && x.InOutType == RouterInOutType.In.ObjToInt()).GroupBy(x => x.StartPosi).Select(x => x.Key).ToList();
                // 查询所有离开路由器的位置
                List<string> outRouterPositions = BaseDal.QueryData(x => x.ChildPosiDeviceCode == deviceCode && x.InOutType == RouterInOutType.Out).GroupBy(x => x.ChildPosi).Select(x => x.Key).ToList();
                List<string> outRouterPositions = BaseDal.QueryData(x => x.ChildPosiDeviceCode == deviceCode && x.InOutType == RouterInOutType.Out.ObjToInt()).GroupBy(x => x.ChildPosi).Select(x => x.Key).ToList();
                // 将进入和离开路由器的位置添加到列表中
                positions.AddRange(inRouterPositions);
@@ -136,7 +146,7 @@
                    routes += str;
                }
                // 如果当前路由是入口
                if (item.InOutType == RouterInOutType.In)
                if (item.InOutType == RouterInOutType.In.ObjToInt())
                {
                    // 将子路由反转并添加到data中
                    List<string> itemRouters = routes.Split(",").Reverse().ToList();
@@ -157,7 +167,7 @@
            return data;
        }
        private string GetPreviousRoutes(string startPosi, List<Dt_Router> allRouters, RouterInOutType routerType)
        private string GetPreviousRoutes(string startPosi, List<Dt_Router> allRouters, int routerType)
        {
            // 定义一个空字符串routers
            string routers = string.Empty;
@@ -230,7 +240,7 @@
                        ChildPosi = routersAddDTOs[i + 1].PositionCode,
                        ChildPosiDeviceCode = obj.DeviceCode,
                        Depth = 1,
                        InOutType = (RouterInOutType)routerType,
                        InOutType = routerType,
                        NextPosi = routersAddDTOs[i + 1].PositionCode,
                        SrmColumn = string.IsNullOrEmpty(routersAddDTOs[i].SCColumn) ? int.TryParse(routersAddDTOs[i + 1].SCColumn, out int col) ? col : null : int.TryParse(routersAddDTOs[i].SCColumn, out int col2) ? col2 : null,
                        SrmLayer = string.IsNullOrEmpty(routersAddDTOs[i].SCLayer) ? int.TryParse(routersAddDTOs[i + 1].SCLayer, out int lay) ? lay : null : int.TryParse(routersAddDTOs[i].SCLayer, out int lay2) ? lay2 : null,
@@ -258,7 +268,7 @@
                    return content = WebResponseContent.Instance.Error("输入数据起点位置编号与终点位置编号相同");
                }
                // 查询数据库中已有的路由信息
                List<Dt_Router> dt_Routers = BaseDal.QueryData(x => x.InOutType == (RouterInOutType)routerType);
                List<Dt_Router> dt_Routers = BaseDal.QueryData(x => x.InOutType == routerType);
                // 移除重复的路由信息
                dt_Routers.ForEach(x =>