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