namespace IStation.Application
{
///
/// StationMonitorList
///
[Route("SZJT/Station/Monitor/List/Mobile")]
[ApiDescriptionSettings("SZJT", Name = "泵站监测列表(手机)", Order = 1800)]
public class StationMonitorList_MobileController : IDynamicApiController
{
///
/// 通过 StationID 获取
///
[Route("GetByStationID@V1.0")]
[HttpGet]
public List GetByStationID([FromQuery][Required] StationIDInput input)
{
var allGroupList = new Yw.Service.MonitorPointGroup().GetByBelongTypeAndBelongID(IStation.DataType.LogicSite, input.StationID);
if (allGroupList == null || allGroupList.Count < 1)
{
return default;
}
var service_monitor = new Yw.Service.MonitorPoint();
var service_monitor_record = new Yw.Service.MonitorRealRecord();
var vmList = new List();
foreach (var group in allGroupList)
{
var vm_group = new StationMonitorListGroupMobileDto(group);
vmList.Add(vm_group);
var allMonitorList = service_monitor.GetExSignalWithSignalTypeByGroupID(group.ID);
allMonitorList = allMonitorList?.Where(x => x.UseStatus == Yw.Model.eUseStatus.Enable).ToList();
allMonitorList = allMonitorList?.Where(x => x.CronType == Yw.Monitor.eCronType.Real).ToList();
if (allMonitorList != null && allMonitorList.Count > 1)
{
foreach (var monitor in allMonitorList)
{
var signal = monitor.SignalList.First();
var record = service_monitor_record.GetLastRecord(signal.ID);
var vm_monitor = new StationMonitorListItemMobileDto(monitor, signal, record);
vm_group.MonitorList.Add(vm_monitor);
}
if (group.Flags.Contains(IStation.Flags.机组))
{
var monitor_run_list = allMonitorList.Where(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.运行状态)).ToList();
if (monitor_run_list != null && monitor_run_list.Count > 0)
{
var monitor_run = monitor_run_list.Find(x => x.Flags.Contains(IStation.Flags.默认));
if (monitor_run == null)
{
monitor_run = monitor_run_list.First();
}
vm_group.RunStatus = vm_group.MonitorList.Find(x => x.SignalID == monitor_run.SignalList.First().ID)?.DataValue;
}
}
}
}
return vmList;
}
}
}