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;
}
}
}