namespace IStation.Application
{
///
/// MonitorOrg
///
[Route("Monitor/Org/Logic")]
[ApiDescriptionSettings("Monitor", Name = "监测目录(Logic)", Order = 10000)]
public class MonitorOrg_LogicController : IDynamicApiController
{
///
/// 获取全逻辑树列表
///
[Route("GetFullLogicalTreeList@V1.0")]
[HttpGet]
public List GetFullLogicalTreeList()
{
var keyContent = $"Monitor_Org_Logic_GetFullLogicalTreeList";
var cacheKey = MemoryCacheKeyHelper.GetKey(MemoryCacheKey.WebApiLevel, MemoryCacheKey.Module, keyContent);
var vm_list = MemoryCacheHelper.GetSet(cacheKey, () =>
{
var allSiteList = new Service.LogicSite().GetAll();
if (allSiteList == null || allSiteList.Count < 1)
{
return default;
}
var serviceGroup = new Yw.Service.MonitorPointGroup();
var serviceMonitor = new Yw.Service.MonitorPoint();
var vmList = new List();
foreach (var siteInfo in allSiteList)
{
var vmSite = new MonitorFullLogicalTreeDto(siteInfo);
vmList.Add(vmSite);
var allGroupList = serviceGroup.GetByBelongTypeAndBelongID(IStation.DataType.LogicSite, siteInfo.ID);
if (allGroupList != null && allGroupList.Count > 0)
{
var vmGroupList = new List();
foreach (var group in allGroupList)
{
var monitorList = serviceMonitor.GetExSignalWithSignalTypeByGroupID(group.ID);
var vmGroup = new MonitorFullLogicalTreeDto(group, monitorList);
vmGroupList.Add(vmGroup);
var vmGroupParent = vmGroupList.Find(x => x.Id == vmGroup.ParentId);
if (vmGroupParent == null)
{
vmSite.Children.Add(vmGroup);
}
else
{
vmGroupParent.Children.Add(vmGroup);
}
}
}
}
return vmList;
}, Yw.Service.ConfigHelper.CacheLevel5);
return vm_list;
}
}
}