| using Microsoft.AspNetCore.Authorization; | 
| using Microsoft.AspNetCore.DataProtection.KeyManagement; | 
| using Microsoft.AspNetCore.Http; | 
| using Microsoft.AspNetCore.Mvc; | 
| using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; | 
| using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; | 
| using Quartz.Util; | 
| using SqlSugar; | 
| using System.ComponentModel; | 
| using System.Reflection; | 
| using WIDESEAWCS_Common; | 
| using WIDESEAWCS_Core; | 
| using WIDESEAWCS_Core.BaseController; | 
| using WIDESEAWCS_Core.Enums; | 
| using WIDESEAWCS_Core.Helper; | 
| using WIDESEAWCS_DTO.BasicInfo; | 
| using WIDESEAWCS_Model.Models; | 
| using WIDESEAWCS_QuartzJob.Models; | 
| using WIDESEAWCS_QuartzJob.Repository; | 
| using WIDESEAWCS_QuartzJob.Service; | 
|   | 
| namespace WIDESEAWCS_Server.Controllers.BasicInfo | 
| { | 
|     [Route("api/Router")] | 
|     [ApiController] | 
|     public class RouterController : ApiBaseController<IRouterService, Dt_Router> | 
|     { | 
|         private readonly IDeviceInfoRepository _deviceInfoRepository; | 
|         private readonly IDeviceProtocolRepository _deviceProtocolRepository; | 
|         public RouterController(IRouterService service, IDeviceInfoRepository deviceInfoRepository, IDeviceProtocolRepository deviceProtocolRepository) : base(service) | 
|         { | 
|             _deviceInfoRepository = deviceInfoRepository; | 
|             _deviceProtocolRepository = deviceProtocolRepository; | 
|         } | 
|   | 
|         [HttpPost, Route("QueryRoutes"), AllowAnonymous] | 
|         public List<Dt_Router> QueryRoutes(string startPosi, string endPosi) | 
|         { | 
|             return Service.QueryNextRoutes(startPosi, endPosi); | 
|         } | 
|   | 
|         [HttpPost, Route("QueryAllPositions"), AllowAnonymous] | 
|         public List<string> QueryAllPositions(string deviceCode) | 
|         { | 
|             return Service.QueryAllPositions(deviceCode); | 
|         } | 
|   | 
|         [HttpPost, Route("GetAllWholeRouters"), AllowAnonymous] | 
|         public WebResponseContent GetAllWholeRouters() | 
|         { | 
|             WebResponseContent content = new(); | 
|             try | 
|             { | 
|                 List<object> dynamics = Service.GetAllWholeRouters(); | 
|   | 
|                 content = WebResponseContent.Instance.OK(data: dynamics); | 
|             } | 
|             catch (Exception ex) | 
|             { | 
|                 content = WebResponseContent.Instance.Error(ex.Message); | 
|             } | 
|             return content;        } | 
|   | 
|         [HttpPost, Route("GetBaseRouterInfo"), AllowAnonymous] | 
|         public WebResponseContent GetBaseRouterInfo() | 
|         { | 
|             try | 
|             { | 
|                 #region 获取路由类型 | 
|                 List<object> routerTypes = new List<object>(); | 
|                 Type routerType = typeof(RouterInOutType); | 
|                 List<int> routerIndexs = Enum.GetValues(typeof(RouterInOutType)).Cast<int>().ToList(); | 
|                 int routerIndex = 0; | 
|                 foreach (var item in routerIndexs) | 
|                 { | 
|                     FieldInfo? fieldInfo = routerType.GetField(((RouterInOutType)item).ToString()); | 
|                     DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>(); | 
|                     if (description != null) | 
|                     { | 
|                         routerTypes.Add(new { key = item.ToString(), value = description.Description }); | 
|                     } | 
|                     else | 
|                     { | 
|                         routerTypes.Add(new { key = item.ToString(), value = item.ToString() }); | 
|                     } | 
|                     routerIndex++; | 
|                 } | 
|                 #endregion | 
|   | 
|                 #region 获取设备编号 | 
|                 object deviceCodes = _deviceProtocolRepository.QueryData(x => true).GroupBy(x => x.DeviceChildCode).Select(x => new { key = x.Key, value = x.Key }).ToList(); | 
|   | 
|                 object areaInfos = Enum.GetNames(typeof(AreaInfo)).Select(x => new { key = x, value = x }).ToList(); | 
|   | 
|   | 
|                 #endregion | 
|   | 
|                 return WebResponseContent.Instance.OK(data: new { routerTypes, deviceCodes, areaInfos }); | 
|             } | 
|             catch (Exception ex) | 
|             { | 
|                 return WebResponseContent.Instance.Error(ex.Message); | 
|             } | 
|   | 
|         } | 
|   | 
|         [HttpPost, Route("AddRouters"), AllowAnonymous] | 
|         public WebResponseContent AddRouters([FromBody] List<RoutersAddDTO> routersAddDTOs, int routerType) | 
|         { | 
|             return Service.AddRouters(routersAddDTOs, routerType); | 
|         } | 
|     } | 
| } |