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;
using System.Threading;
using Furion.DataValidation;
namespace IStation.Application
{
///
/// MonitorRecord
///
[Route("Run/MonitorRecord/Mobile")]
[ApiDescriptionSettings("Run", Name = "监测记录(手机)", Order = 999)]
public class MonitorRecord_MobileController : IDynamicApiController
{
///
/// 通过 MonitorPointID 获取最近一条数据 (已进行单位转换,使用的是信号显示单位)
///
[Route("GetLastRecordByMonitorPointID@V1.0")]
[HttpGet]
public List GetLastRecordByMonitorPointID([FromQuery][Required] MonitorPointIDUnderCorpInput input)
{
var corpId = input.CorpID;
var monitorPointId = input.MonitorPointID;
var list = new Service.MonitorRecord().GetLastRecord(corpId, monitorPointId);
if (list == null || list.Count < 1)
return default;
var monitor = new Service.MonitorPoint().GetExSignalWithSignalTypeByID(corpId, monitorPointId);
var vm_list = list.Select(x =>
{
var signal = monitor.SignalList.Find(t => t.ID == x.SignalID);
var vm = new MonitorBasicRecordSignalContentMobileDto(x, signal);
return vm;
}).ToList();
return vm_list;
}
///
/// 通过 MonitorPointIds 获取最近一条数据 (已进行单位转换,使用的是信号显示单位)
///
[Route("GetLastRecordByMonitorPointIds@V1.0")]
[HttpGet]
public List GetLastRecordByMonitorPointIds([FromQuery][Required] MonitorPointIdsUnderCorpInput input)
{
var corpId = input.CorpID;
var monitorPointIds = LongListHelper.ToList(input.MonitorPointIds);
var monitorList = new Service.MonitorPoint().GetExSignalWithSignalTypeByIds(corpId, monitorPointIds);
if (monitorList == null || monitorList.Count < 1)
return default;
var list = new List();
var virtualMonitorPoints = monitorList.Where(x => x.SourceType == Model.Monitor.eSourceType.Virtual);
if (virtualMonitorPoints != null && virtualMonitorPoints.Count() > 0)
{
foreach (var monitor in virtualMonitorPoints)
{
if (string.IsNullOrEmpty(monitor.SourceParas))
continue;
var analyModel = Model.Monitor.AnalyseParameters.ToModel(monitor.SourceParas);
if (analyModel.FormulaType != Model.Monitor.FormulaType.Calculation_Const)
continue;
var formulaModel = Model.Monitor.ConstCalculationFormulaParas.ToModel(analyModel.FormulaParas);
if (formulaModel == null)
continue;
var signal = monitor.SignalList.First();
var record = new Model.MonitorBasicRecord();
record.MonitorPointID = monitor.ID;
record.SignalID = signal.ID;
record.CorpID = input.CorpID;
record.DataTime = DateTime.Now;
record.DataValue = formulaModel.Value;
record.DataStatus = new List();
var vm = new MonitorBasicRecordMobileDto(record, signal);
list.Add(vm);
}
}
var lastRecords = new Service.MonitorRecord().GetLastRecord(corpId, monitorPointIds);
if (lastRecords == null || lastRecords.Count < 1)
return list;
var vm_list = lastRecords.Select(x =>
{
var monitor = monitorList.Find(t => t.ID == x.MonitorPointID);
var signal = monitor.SignalList.Find(t => t.ID == x.SignalID);
var vm = new MonitorBasicRecordMobileDto(x, signal);
return vm;
}).ToList();
list.AddRange(vm_list);
return list;
}
///
/// 通过 StationID 获取最近一条数据 (已进行单位转换,使用的是信号显示单位)
///
[Route("GetLastRecordByStationID@V1.0")]
[HttpGet]
public List GetLastRecordByStationID([FromQuery][Required] StationIDUnderCorpInput input)
{
var corpId = input.CorpID;
var stationId = input.StationID;
var monitorList = new Service.MonitorPoint().GetExSignalWithSignalTypeByBelongTypeAndBelongID(corpId, ObjectType.Station, stationId);
if (monitorList == null || monitorList.Count < 1)
return default;
var list = new List();
var virtualMonitorPoints = monitorList.Where(x => x.SourceType == Model.Monitor.eSourceType.Virtual);
if (virtualMonitorPoints != null && virtualMonitorPoints.Count() > 0)
{
foreach (var monitor in virtualMonitorPoints)
{
if (string.IsNullOrEmpty(monitor.SourceParas))
continue;
var analyModel = Model.Monitor.AnalyseParameters.ToModel(monitor.SourceParas);
if (analyModel.FormulaType != Model.Monitor.FormulaType.Calculation_Const)
continue;
var formulaModel = Model.Monitor.ConstCalculationFormulaParas.ToModel(analyModel.FormulaParas);
if (formulaModel == null)
continue;
var signal = monitor.SignalList.First();
var record = new Model.MonitorBasicRecord();
record.MonitorPointID = monitor.ID;
record.SignalID = signal.ID;
record.CorpID = input.CorpID;
record.DataTime = DateTime.Now;
record.DataValue = formulaModel.Value;
record.DataStatus = new List();
var vm = new MonitorBasicRecordMobileDto(record, signal);
list.Add(vm);
}
}
var monitorPointIds = monitorList.Select(x => x.ID).Distinct().ToList();
var lastRecords = new Service.MonitorRecord().GetLastRecord(corpId, monitorPointIds);
if (lastRecords == null || lastRecords.Count < 1)
return list;
var vm_list = lastRecords.Select(x =>
{
var monitor = monitorList.Find(t => t.ID == x.MonitorPointID);
var signal = monitor.SignalList.Find(t => t.ID == x.SignalID);
var vm = new MonitorBasicRecordMobileDto(x, signal);
return vm;
}).ToList();
list.AddRange(vm_list);
return list;
}
///
/// 通过 StationID 获取最近一条数据 (已进行单位转换,使用的是信号显示单位)
///
[Route("GetGeneralLastRecordByStationID@V1.0")]
[HttpGet]
public List GetGeneralLastRecordByStationID([FromQuery][Required] StationIDUnderCorpInput input)
{
var corpId = input.CorpID;
var stationId = input.StationID;
var monitorList = new Service.MonitorPoint().GetExSignalWithSignalTypeByBelongTypeAndBelongID(corpId, ObjectType.Station, stationId, eMonitorType.General);
if (monitorList == null || monitorList.Count < 1)
return default;
var list = new List();
var virtualMonitorPoints = monitorList.Where(x => x.SourceType == Model.Monitor.eSourceType.Virtual);
if (virtualMonitorPoints != null && virtualMonitorPoints.Count() > 0)
{
foreach (var monitor in virtualMonitorPoints)
{
if (string.IsNullOrEmpty(monitor.SourceParas))
continue;
var analyModel = Model.Monitor.AnalyseParameters.ToModel(monitor.SourceParas);
if (analyModel.FormulaType != Model.Monitor.FormulaType.Calculation_Const)
continue;
var formulaModel = Model.Monitor.ConstCalculationFormulaParas.ToModel(analyModel.FormulaParas);
if (formulaModel == null)
continue;
var signal = monitor.SignalList.First();
var record = new Model.MonitorBasicRecord();
record.MonitorPointID = monitor.ID;
record.SignalID = signal.ID;
record.CorpID = input.CorpID;
record.DataTime = DateTime.Now;
record.DataValue = formulaModel.Value;
record.DataStatus = new List();
var vm = new MonitorBasicRecordMobileDto(record, signal);
list.Add(vm);
}
}
var monitorPointIds = monitorList.Select(x => x.ID).Distinct().ToList();
var lastRecords = new Service.MonitorRecord().GetLastRecord(corpId, monitorPointIds);
if (lastRecords == null || lastRecords.Count < 1)
return list;
var vm_list = lastRecords.Select(x =>
{
var monitor = monitorList.Find(t => t.ID == x.MonitorPointID);
var signal = monitor.SignalList.Find(t => t.ID == x.SignalID);
var vm = new MonitorBasicRecordMobileDto(x, signal);
return vm;
}).ToList();
list.AddRange(vm_list);
return list;
}
}
}