using Microsoft.AspNetCore.Mvc; using System.Net; using System.Net.Http.Headers; using Microsoft.Extensions.Hosting.Internal; using Microsoft.AspNetCore.Http.Extensions; using IStation.Untity; using Furion.DynamicApiController; using System.ComponentModel.DataAnnotations; using Mapster; using Microsoft.AspNetCore.Http; using Furion.DependencyInjection; using Microsoft.AspNetCore.Authorization; using Furion.DataEncryption; using Furion.FriendlyException; namespace IStation.Application { /// /// MonitorRecord /// [AllowAnonymous] [Route("LinuxTest/MonitorRecord")] [ApiDescriptionSettings("LinuxTest", Name = "监测记录", Order = 999)] public class MonitorRecord_Controller : IDynamicApiController, ITransient { private readonly IHttpContextAccessor _httpContextAccessor; /// /// /// public MonitorRecord_Controller(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } //服务 private readonly Service.MonitorRecord _service = new Service.MonitorRecord(); #region Insert /// /// 插入一条 /// [Route("Insert@V1.0")] [HttpPost] public bool Insert([Required] AddMonitorRecordInput input) { if (input == null) return default; var model = input.Adapt(); var bol = _service.InsertLastRecord(model, out bool redis); if (!redis) { throw Oops.Oh("Redis 创建失败!"); } return bol; } /// /// 插入多条 /// [Route("Inserts@V1.0")] [HttpPost] public bool Inserts([Required] List inputList) { if (inputList == null || inputList.Count < 1) return false; var list = inputList.Select(x => x.Adapt()).ToList(); var bol = _service.InsertsLastRecord(list); return bol; } #endregion #region 获取所有 /// /// 获取所有 /// [Route("GetAll")] [HttpGet] public List GetAll() { var list = _service.GetAll(); var vmList = list?.Select(x => new MonitorRecordDto(x)).ToList(); return vmList; } #endregion #region 获取最近记录 /// /// 通过 MonitorPointID 获取最近一条数据 /// [Route("GetLastRecordByMonitorPointID")] [HttpGet] public MonitorRecordDto GetLastRecordByMonitorPointID([FromQuery][Required] MonitorPointIDInput input) { var model = _service.GetLastRecord( input.MonitorPointID); if (model == null) return default; return new MonitorRecordDto(model); } /// /// 通过 MonitorPointIds 获取最近一条数据 /// [Route("GetLastRecordByMonitorPointIds")] [HttpGet] public List GetLastRecordByMonitorPointIds([FromQuery][Required] MonitorPointIdsInput input) { var ids = LongListHelper.ToList(input.MonitorPointIds); var list = _service.GetLastRecord(ids); var vmList = list?.Select(x => new MonitorRecordDto(x)).ToList(); return vmList; } #endregion #region 通过测点标识获取 /// /// 通过 MonitorPointID 获取某天的数据 /// [Route("GetByMonitorPointIDOfDay")] [HttpGet] public List GetByMonitorPointIDOfDay ( [Required, Range(1, long.MaxValue, ErrorMessage = "MonitorPointID 必须大于0")] long MonitorPointID, [Required] DateTime Day ) { var list = _service.GetByMonitorPointIDOfDay( MonitorPointID, Day); var vmList = list?.Select(x => new MonitorRecordDto(x)).ToList(); return vmList; } /// /// 通过 MonitorPointID 获取日期区间内的数据 /// [Route("GetByMonitorPointIDOfDayRange")] [HttpGet] public List GetByMonitorPointIDOfDayRange ( [Required, Range(1, long.MaxValue, ErrorMessage = "MonitorPointID 必须大于0")] long MonitorPointID, [Required] DateTime StartDay, [Required] DateTime EndDay ) { if (StartDay.Date > EndDay.Date) { return default; } var list = _service.GetByMonitorPointIDOfDayRange( MonitorPointID, StartDay, EndDay); var vmList = list?.Select(x => new MonitorRecordDto(x)).ToList(); return vmList; } /// /// 通过 MonitorPointID 获取时间区间内的数据 /// [Route("GetByMonitorPointIDOfTimeRange")] [HttpGet] public List GetByMonitorPointIDOfTimeRange ( [Required, Range(1, long.MaxValue, ErrorMessage = "MonitorPointID 必须大于0")] long MonitorPointID, [Required] DateTime StartTime, [Required] DateTime EndTime ) { if (StartTime > EndTime) { return default; } var list = _service.GetByMonitorPointIDOfTimeRange( MonitorPointID, StartTime, EndTime); var vmList = list?.Select(x => new MonitorRecordDto(x)).ToList(); return vmList; } #endregion } }