namespace IStation.Application
{
///
/// AssetsOrg
///
[Route("Assets/Org/Logic")]
[ApiDescriptionSettings("Assets", Name = "设备目录(Logic)", Order = 9000)]
public class AssetsOrg_LogicController : IDynamicApiController
{
///
/// 获取全逻辑树列表
///
[Route("GetFullLogicalTreeList@V1.0")]
[HttpGet]
public List GetFullLogicalTreeList()
{
var keyContent = $"Assets_Org_Logic_GetFullLogicalTreeList";
var cacheKey = MemoryCacheKeyHelper.GetKey(MemoryCacheKey.WebApiLevel, MemoryCacheKey.Module, keyContent);
var vm_list = MemoryCacheHelper.GetSet(cacheKey, () =>
{
var allSiteList = new Service.LogicSite().GetAll();
Service.LogicSite.PublishCache(cacheKey);
if (allSiteList == null || allSiteList.Count < 1)
{
return default;
}
var serviceEquipment = new Yw.Service.Equipment();
Yw.Service.Equipment.PublishCache(cacheKey);
var vmList = new List();
foreach (var site in allSiteList)
{
var vmSite = new EquipmentFullLogicalTreeDto(site);
vmList.Add(vmSite);
var equipmentList = serviceEquipment.GetByBelongTypeAndBelongID(IStation.DataType.LogicSite, site.ID);
equipmentList = equipmentList?.Where(x => x.ParentIds.Count < 1).ToList();
if (equipmentList != null && equipmentList.Count > 0)
{
foreach (var equipment in equipmentList)
{
var vmEquipment = new EquipmentFullLogicalTreeDto(equipment);
vmEquipment.ParentId = vmSite.Id;
vmSite.Children.Add(vmEquipment);
}
}
}
return vmList;
}, Yw.Service.ConfigHelper.CacheLevel5);
return vm_list;
}
}
}