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 { 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 QueryRoutes(string startPosi, string endPosi) { return Service.QueryNextRoutes(startPosi, endPosi); } [HttpPost, Route("QueryAllPositions"), AllowAnonymous] public List QueryAllPositions(string deviceCode) { return Service.QueryAllPositions(deviceCode); } [HttpPost, Route("GetAllWholeRouters"), AllowAnonymous] public WebResponseContent GetAllWholeRouters() { WebResponseContent content = new(); try { List 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 routerTypes = new List(); Type routerType = typeof(RouterInOutType); List routerIndexs = Enum.GetValues(typeof(RouterInOutType)).Cast().ToList(); int routerIndex = 0; foreach (var item in routerIndexs) { FieldInfo? fieldInfo = routerType.GetField(((RouterInOutType)item).ToString()); DescriptionAttribute? description = fieldInfo.GetCustomAttribute(); 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 routersAddDTOs, int routerType) { return Service.AddRouters(routersAddDTOs, routerType); } } }