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 Microsoft.AspNetCore.Http;
using Furion.DependencyInjection;
using Microsoft.AspNetCore.Authorization;
using Furion.DataEncryption;
using Furion.FriendlyException;
namespace IStation.Application
{
///
/// 监测
///
[AllowAnonymous]
[Route("LargeScreen/Demo/Monitor")]
[ApiDescriptionSettings("LargeScreen", Name = "Demo(监测)", Order = 666)]
public class DemoMonitor_Controller : IDynamicApiController, ITransient
{
private readonly IHttpContextAccessor _httpContextAccessor;
///
///
///
public DemoMonitor_Controller(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
///
/// 通过 StationID 获取Master常规实时列表
///
[Route("GetMasterGeneralRealMonitorPointListByStationID")]
[HttpGet]
public List GetMasterGeneralRealMonitorPointListByStationID([FromQuery][Required] StationIDUnderCorpInput input)
{
var corpId = input.CorpID;
var belongType = IStation.ObjectType.Station;
var belongId = input.StationID;
var cacheKey = $"LargeScreen_Demo_Monitor_GetMasterGeneralRealMonitorPointListByStationID_{corpId}_{belongId}";
var vm_list = MemoryCacheHelper.GetSet(cacheKey, () =>
{
var allGroupList = new Service.MonitorPointGroup().GetByBelongTypeAndBelongID(corpId, belongType, belongId);
if (allGroupList == null || allGroupList.Count < 1)
{
var monitorList = new Service.MonitorPoint().GetExSignalWithSignalTypeByBelongTypeAndBelongID(corpId, belongType, belongId);
var vmCacheList = monitorList?.Select(x => new DemoMonitorPointExSignalListDto(x)).ToList();
return vmCacheList;
}
else
{
var groupList = allGroupList.Where(x => x.Flags != null && x.Flags.Contains(LogicFlags.总站)).ToList();
if (groupList == null || groupList.Count < 1)
{
var monitorList = new Service.MonitorPoint().GetExSignalWithSignalTypeByBelongTypeAndBelongID(corpId, belongType, belongId);
var vmCacheList = monitorList?.Select(x => new DemoMonitorPointExSignalListDto(x)).ToList();
return vmCacheList;
}
else
{
var monitorList = new Service.MonitorPoint().GetExSignalWithSignalTypeByGroupIds(corpId, groupList.Select(x => x.ID), Model.eMonitorType.General, Model.Monitor.eCronType.Real);
var vmCacheList = monitorList?.Select(x => new DemoMonitorPointExSignalListDto(x)).ToList();
return vmCacheList;
}
}
}, CacheHelper.CacheLevel3);
return vm_list;
}
///
/// 通过 ProductID 获取常规实时测点列表
///
[Route("GetGeneralRealMonitorPointListByProductID")]
[HttpGet]
public List GetGeneralRealMonitorPointListByProductID([FromQuery][Required] ProductIDUnderCorpInput input)
{
var corpId = input.CorpID;
var productId = input.ProductID;
var cacheKey = $"LargeScreen_Demo_Monitor_GetGeneralRealMonitorPointListByProductID_{corpId}_{productId}";
var vm_list = MemoryCacheHelper.GetSet(cacheKey, () =>
{
var monitorMappingList = new Service.MonitorPointMapping().GetByObjectTypeAndObjectID(corpId, ObjectType.Product, productId);
if (monitorMappingList == null || monitorMappingList.Count < 1)
return default;
var monitorIds = monitorMappingList.Select(x => x.MonitorPointID).Distinct().ToList();
var monitorList = new Service.MonitorPoint().GetExSignalWithSignalTypeByIds(corpId, monitorIds, Model.eMonitorType.General, Model.Monitor.eCronType.Real);
var vmCacheList = monitorList?.Select(x => new DemoMonitorPointExSignalListDto(x)).ToList();
return vmCacheList;
}, CacheHelper.CacheLevel3);
return vm_list;
}
///
/// 通过 BelongType 和 BelongID 获取常规实时列表
///
[Route("GetGeneralRealMonitorPointListByStationID")]
[HttpGet]
public List GetGeneralRealMonitorPointListByStationID([FromQuery][Required] StationIDUnderCorpInput input)
{
var corpId = input.CorpID;
var belongType = IStation.ObjectType.Station;
var belongId = input.StationID;
var cacheKey = $"LargeScreen_Demo_Monitor_GetGeneralRealMonitorPointListByStationID_{corpId}_{belongId}";
var vm_list = MemoryCacheHelper.GetSet(cacheKey, () =>
{
var monitorList = new Service.MonitorPoint().GetExSignalWithSignalTypeByBelongTypeAndBelongID
(corpId, belongType, belongId, Model.eMonitorType.General, Model.Monitor.eCronType.Real);
var vmCacheList = monitorList?.Select(x => new DemoMonitorPointExSignalListDto(x)).ToList();
return vmCacheList;
}, CacheHelper.CacheLevel3);
return vm_list;
}
///
/// 通过 BelongType 和 BelongID 获取常规测点逻辑树
///
[Route("GetGeneralMonitorPointLogicalTreeByBelongTypeAndBelongID")]
[HttpGet]
public List GetGeneralMonitorPointLogicalTreeByBelongTypeAndBelongID([FromQuery][Required] BelongUnderCorpInput input)
{
var corpId = input.CorpID;
var belongType = input.BelongType;
var belongId = input.BelongID;
var cacheKey = $"LargeScreen_Demo_Monitor_GetGeneralMonitorPointLogicalTreeByBelongTypeAndBelongID_{corpId}_{belongType}_{belongId}";
var vm_list = MemoryCacheHelper.GetSet(cacheKey, () =>
{
#region 监测点组
var group_list = new Service.MonitorPointGroup().GetByBelongTypeAndBelongID(corpId, belongType, belongId);
var vm_group_list = group_list?.Select(x => new DemoMonitorPointGroupDto(x)).ToList();
var vm_cache_group_list = vm_group_list?.Select(x =>
{
var vm_cache_group = new LogicalTreeItemDto();
vm_cache_group.ID = $"{ObjectType.MonitorPointGroup}_{x.ID}";
vm_cache_group.ParentID = $"{ObjectType.MonitorPointGroup}_{x.ParentID}";
vm_cache_group.LogicalName = x.Name;
vm_cache_group.LogicalType = ObjectType.MonitorPointGroup;
vm_cache_group.LogicalID = x.ID;
vm_cache_group.LogicalModel = x;
vm_cache_group.Children = new List();
return vm_cache_group;
}).ToList();
#endregion
#region 监测点
var monitor_list = new Service.MonitorPoint().GetExSignalWithSignalTypeByBelongTypeAndBelongID(corpId, belongType, belongId, Model.eMonitorType.General);
var vm_monitor_list = monitor_list?.Select(x => new DemoMonitorPointExSignalListDto(x)).ToList();
var vm_cache_monitor_list = vm_monitor_list?.Select(x =>
{
var vm_cache_monitor = new LogicalTreeItemDto();
vm_cache_monitor.ID = $"{ObjectType.MonitorPoint}_{x.ID}";
vm_cache_monitor.ParentID = $"{ObjectType.MonitorPointGroup}_{x.GroupID}";
vm_cache_monitor.LogicalName = x.Name;
vm_cache_monitor.LogicalType = ObjectType.MonitorPoint;
vm_cache_monitor.LogicalID = x.ID;
vm_cache_monitor.LogicalModel = x;
vm_cache_monitor.Children = null;
return vm_cache_monitor;
}).ToList();
#endregion
#region 生成树
var vm_cache_list = new List();
//遍历测点
if (vm_cache_monitor_list != null && vm_cache_monitor_list.Count > 0)
{
foreach (var vm_cache_monitor in vm_cache_monitor_list)
{
var vm_cache_monitor_parent = vm_cache_group_list?.Find(t => t.ID == vm_cache_monitor.ParentID);
if (vm_cache_monitor_parent == null)
{
vm_cache_list.Add(vm_cache_monitor);
}
else
{
vm_cache_monitor_parent.Children.Add(vm_cache_monitor);
}
}
}
//遍历测点组
if (vm_cache_group_list != null && vm_cache_group_list.Count > 0)
{
foreach (var vm_cache_group in vm_cache_group_list)
{
var vm_cahce_group_parent = vm_cache_group_list.Find(t => t.ID == vm_cache_group.ParentID);
if (vm_cahce_group_parent == null)
{
vm_cache_list.Add(vm_cache_group);
}
else
{
vm_cahce_group_parent.Children.Add(vm_cache_group);
}
}
}
return vm_cache_list;
#endregion
}, CacheHelper.CacheLevel2);
return vm_list;
}
///
/// 通过 BelongType 和 BelongID 获取常规实时测点逻辑树
///
[Route("GetGeneralRealMonitorPointLogicalTreeByBelongTypeAndBelongID")]
[HttpGet]
public List GetGeneralRealMonitorPointLogicalTreeByBelongTypeAndBelongID([FromQuery][Required] BelongUnderCorpInput input)
{
var corpId = input.CorpID;
var belongType = input.BelongType;
var belongId = input.BelongID;
var cacheKey = $"LargeScreen_Demo_Monitor_GetGeneralRealMonitorPointLogicalTreeByBelongTypeAndBelongID_{corpId}_{belongType}_{belongId}";
var vm_list = MemoryCacheHelper.GetSet(cacheKey, () =>
{
#region 监测点组
var group_list = new Service.MonitorPointGroup().GetByBelongTypeAndBelongID(corpId, belongType, belongId);
var vm_group_list = group_list?.Select(x => new DemoMonitorPointGroupDto(x)).ToList();
var vm_cache_group_list = vm_group_list?.Select(x =>
{
var vm_cache_group = new LogicalTreeItemDto();
vm_cache_group.ID = $"{ObjectType.MonitorPointGroup}_{x.ID}";
vm_cache_group.ParentID = $"{ObjectType.MonitorPointGroup}_{x.ParentID}";
vm_cache_group.LogicalName = x.Name;
vm_cache_group.LogicalType = ObjectType.MonitorPointGroup;
vm_cache_group.LogicalID = x.ID;
vm_cache_group.LogicalModel = x;
vm_cache_group.Children = new List();
return vm_cache_group;
}).ToList();
#endregion
#region 监测点
var monitor_list = new Service.MonitorPoint().GetExSignalWithSignalTypeByBelongTypeAndBelongID
(corpId, belongType, belongId, Model.eMonitorType.General, Model.Monitor.eCronType.Real);
var vm_monitor_list = monitor_list?.Select(x => new DemoMonitorPointExSignalListDto(x)).ToList();
var vm_cache_monitor_list = vm_monitor_list?.Select(x =>
{
var vm_cache_monitor = new LogicalTreeItemDto();
vm_cache_monitor.ID = $"{ObjectType.MonitorPoint}_{x.ID}";
vm_cache_monitor.ParentID = $"{ObjectType.MonitorPointGroup}_{x.GroupID}";
vm_cache_monitor.LogicalName = x.Name;
vm_cache_monitor.LogicalType = ObjectType.MonitorPoint;
vm_cache_monitor.LogicalID = x.ID;
vm_cache_monitor.LogicalModel = x;
vm_cache_monitor.Children = null;
return vm_cache_monitor;
}).ToList();
#endregion
#region 生成树
var vm_cache_list = new List();
//遍历测点
if (vm_cache_monitor_list != null && vm_cache_monitor_list.Count > 0)
{
foreach (var vm_cache_monitor in vm_cache_monitor_list)
{
var vm_cache_monitor_parent = vm_cache_group_list?.Find(t => t.ID == vm_cache_monitor.ParentID);
if (vm_cache_monitor_parent == null)
{
vm_cache_list.Add(vm_cache_monitor);
}
else
{
vm_cache_monitor_parent.Children.Add(vm_cache_monitor);
}
}
}
//遍历测点组
if (vm_cache_group_list != null && vm_cache_group_list.Count > 0)
{
foreach (var vm_cache_group in vm_cache_group_list)
{
var vm_cahce_group_parent = vm_cache_group_list.Find(t => t.ID == vm_cache_group.ParentID);
if (vm_cahce_group_parent == null)
{
vm_cache_list.Add(vm_cache_group);
}
else
{
vm_cahce_group_parent.Children.Add(vm_cache_group);
}
}
}
return vm_cache_list;
#endregion
}, CacheHelper.CacheLevel2);
return vm_list;
}
}
}