namespace IStation.Application
{
///
/// StationMap
///
[Route("SZJT/Station/Map/Logic")]
[ApiDescriptionSettings("SZJT", Name = "泵站地图(Logic)", Order = 6000)]
public class StationMap_LogicController : IDynamicApiController
{
///
/// 获取监测KPI列表
///
[Route("GetMonitorKpiList@V1.0")]
[HttpGet]
public List GetMonitorKpiList(int Count = 4)
{
var allStationList = new Service.LogicSite().GetAll();
if (allStationList == null || allStationList.Count < 1)
{
return default;
}
var serviceMonitor = new Yw.Service.MonitorPoint();
var serviceMonitorRecord = new Yw.Service.MonitorRealRecord();
var serviceEquipment = new Yw.Service.Equipment();
var serviceRunRecord = new Yw.Service.RunRealRecord();
var serviceMap = new Yw.Service.MapInfo();
var vmList = new List();
foreach (var station in allStationList)
{
var vm = new StationMapMonitorKpiInfoDto(station);
vmList.Add(vm);
var map = serviceMap.Get(IStation.DataType.LogicSite, station.ID, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location);
if (map != null)
{
var position = Yw.Model.Map.Marker.ToModel(map.Position);
vm.Position = position;
}
var allMonitorList = serviceMonitor.GetExSignalWithSignalTypeByBelongTypeAndBelongID(IStation.DataType.LogicSite, station.ID);
allMonitorList = allMonitorList?.Where(x => x.CronType == Yw.Monitor.eCronType.Real).ToList();
if (allMonitorList != null && allMonitorList.Count > 0)
{
allMonitorList = allMonitorList.Where(x => x.Flags.Contains(Flags.KPI)).OrderByDescending(X => X.Importance).ToList();
if (allMonitorList.Count > 0)
{
allMonitorList = allMonitorList.Take(Count).ToList();
foreach (var monitor in allMonitorList)
{
var monitorRecord = serviceMonitorRecord.GetLastRecord(monitor.SignalList.First().ID);
vm.LastRecordList.Add(new StationMapMonitorKpiLastRecordDto(monitor, monitorRecord));
}
}
}
var allEquipmentList = serviceEquipment.GetByBelongTypeAndBelongID(IStation.DataType.LogicSite, station.ID);
allEquipmentList = allEquipmentList?.Where(x => x.ParentIds.Count < 1).ToList();
if (allEquipmentList != null && allEquipmentList.Count > 0)
{
foreach (var equipment in allEquipmentList)
{
var runRecord = serviceRunRecord.GetLastRecord(Yw.Assets.DataType.Equipment, equipment.ID);
vm.LastStatusList.Add(new StationMapMonitorKpiLastStatusDto(equipment, runRecord));
}
}
}
return vmList;
}
}
}