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 IStation.Calculation; using IStation.Model; namespace IStation.Application { /// /// MonitorVibrationRecord /// [Route("Run/MonitorVibrationRecord")] [ApiDescriptionSettings("Run", Name = "监测振动记录", Order = 980)] public class MonitorVibrationRecord_Controller : IDynamicApiController { /// /// 通过 MonitorPointID 获取某天的基础数据 /// [Route("GetBasicByMonitorPointIDOfDay@V1.0")] [HttpGet] public List GetBasicByMonitorPointIDOfDay ( [Required, Range(1, long.MaxValue, ErrorMessage = "CorpID 必须大于0")] long CorpID, [Required, Range(1, long.MaxValue, ErrorMessage = "MonitorPointID 必须大于0")] long MonitorPointID, [Required] DateTime Day ) { var monitor = new Service.MonitorPoint().GetExSignalWithSignalTypeByID(CorpID,MonitorPointID); if (monitor == null) return default; if (monitor.MonitorType != eMonitorType.Vibration) return default; var signalList = monitor.SignalList.ToList(); signalList.RemoveAll(x => x.Flags != null && x.Flags.Count > 0 && (x.Flags.Contains(LogicFlags.配置) || x.Flags.Contains(LogicFlags.波形) || x.Flags.Contains(LogicFlags.FFT))); if (signalList.Count < 1) return default; var recordList = new Service.MonitorRealRecord().GetBySignalIdsOfDay(CorpID,MonitorPointID,signalList.Select(x=>x.ID),Day); if (recordList == null || recordList.Count < 1) return default; var groupList = recordList.GroupBy(x => x.DataTime).OrderBy(x=>x.Key).ToList(); var vmList = new List(); foreach (var group in groupList) { var vm = new MonitorVibrationBasicRecordDto(); vm.CorpID= CorpID; vm.MonitorPointID= MonitorPointID; vm.DataTime = group.Key; vm.SignalRecordList = new List(group.Count()); foreach (var item in group) { var signal = signalList.Find(t=>t.ID==item.SignalID); var vmItem=new MonitorVibrationBasicSignalRecordDto(signal,item); vm.SignalRecordList.Add(vmItem); } vmList.Add(vm); } return vmList; } /// /// 通过 MonitorPointID 获取某个时刻的波形记录 /// [Route("GetWaveByMonitorPointIDOfDataTime@V1.0")] [HttpGet] public MonitorVibrationWaveRecordDto GetWaveByMonitorPointIDOfDataTime ( [Required, Range(1, long.MaxValue, ErrorMessage = "CorpID 必须大于0")] long CorpID, [Required, Range(1, long.MaxValue, ErrorMessage = "MonitorPointID 必须大于0")] long MonitorPointID, [Required] DateTime DataTime ) { var monitor = new Service.MonitorPoint().GetExSignalWithSignalTypeByID(CorpID, MonitorPointID); if (monitor == null) return default; if (monitor == null) return default; if (monitor.MonitorType != eMonitorType.Vibration) return default; var signal = monitor.SignalList.Find(t=>t.Flags!=null&&t.Flags.Contains(LogicFlags.波形)); if (signal == null) return default; var record = new Service.MonitorRealRecord().GetBySignalIDOfDataTime(CorpID,MonitorPointID,signal.ID,DataTime); if (record == null) return default; var vm = new MonitorVibrationWaveRecordDto(record); return vm; } } }