| | |
| | | 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; |
| | |
| | | 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); |
| | |
| | | routes += str; |
| | | } |
| | | // 如果当前路由是入口 |
| | | if (item.InOutType == RouterInOutType.In) |
| | | if (item.InOutType == RouterInOutType.In.ObjToInt()) |
| | | { |
| | | // 将子路由反转并添加到data中 |
| | | List<string> itemRouters = routes.Split(",").Reverse().ToList(); |
| | |
| | | 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; |
| | |
| | | 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, |
| | |
| | | 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 => |