using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; using IStation.Model.Api; using AutoMapper; using IStation.WebApi.Models; using Microsoft.Web.Http; namespace IStation.WebApi.Controllers { /// /// 测点业务标准api /// [RoutePrefix("v1/Standard/MonitorPoint")] [ApiVersion("v1")] public class MonitorPoint_StandardController : ApiController { /// /// 通过 BelongType 和 BelongID 获取逻辑树 /// [Route("GetLogicalTreeByBelongTypeAndBelongID")] [HttpGet] public Result GetLogicalTreeByBelongTypeAndBelongID(long CorpID, string BelongType, long BelongID) { if (CorpID < 1) { return new Result(Code.Error, "CorpID 参数错误"); } if (string.IsNullOrEmpty(BelongType)) { return new Result(Code.Error, "BelongType 参数错误"); } if (BelongID < 1) { return new Result(Code.Error, "BelongID 参数错误"); } var cacheKey = $"Standard_MonitorPoint_GetLogicalTreeByBelongTypeAndBelongID_{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 ViewModel.MonitorPointGroup(x)).ToList(); var vm_cache_group_list = vm_group_list?.Select(x => { var vm_cache_group = new ViewModel.LogicalTreeItem(); vm_cache_group.ID = $"{ObjectType.Monitor_监测点组}_{x.ID}"; vm_cache_group.ParentID = $"{ObjectType.Monitor_监测点组}_{x.ParentID}"; vm_cache_group.LogicalName = x.Name; vm_cache_group.LogicalType = ObjectType.Monitor_监测点组; 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); var vm_monitor_list = monitor_list?.Select(x => new ViewModel.MonitorPointExSignalList(x)).ToList(); var vm_cache_monitor_list = vm_monitor_list?.Select(x => { var vm_cache_monitor = new ViewModel.LogicalTreeItem(); vm_cache_monitor.ID = $"{ObjectType.Monitor_监测点}_{x.ID}"; vm_cache_monitor.ParentID = $"{ObjectType.Monitor_监测点组}_{x.GroupID}"; vm_cache_monitor.LogicalName = x.Name; vm_cache_monitor.LogicalType = ObjectType.Monitor_监测点; 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 new Result>(vm_list); } /// /// 通过 BelongType 和 BelongID 获取常规逻辑树 /// [Route("GetGeneralLogicalTreeByBelongTypeAndBelongID")] [HttpGet] public Result GetGeneralLogicalTreeByBelongTypeAndBelongID(long CorpID, string BelongType, long BelongID) { if (CorpID < 1) { return new Result(Code.Error, "CorpID 参数错误"); } if (string.IsNullOrEmpty(BelongType)) { return new Result(Code.Error, "BelongType 参数错误"); } if (BelongID < 1) { return new Result(Code.Error, "BelongID 参数错误"); } var cacheKey = $"Standard_MonitorPoint_GetGeneralLogicalTreeByBelongTypeAndBelongID_{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 ViewModel.MonitorPointGroup(x)).ToList(); var vm_cache_group_list = vm_group_list?.Select(x => { var vm_cache_group = new ViewModel.LogicalTreeItem(); vm_cache_group.ID = $"{ObjectType.Monitor_监测点组}_{x.ID}"; vm_cache_group.ParentID = $"{ObjectType.Monitor_监测点组}_{x.ParentID}"; vm_cache_group.LogicalName = x.Name; vm_cache_group.LogicalType = ObjectType.Monitor_监测点组; 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); monitor_list = monitor_list?.Where(x => x.MonitorType == Model.MonitorPoint.eMonitorType.General).ToList(); var vm_monitor_list = monitor_list?.Select(x => new ViewModel.MonitorPointExSignalList(x)).ToList(); var vm_cache_monitor_list = vm_monitor_list?.Select(x => { var vm_cache_monitor = new ViewModel.LogicalTreeItem(); vm_cache_monitor.ID = $"{ObjectType.Monitor_监测点}_{x.ID}"; vm_cache_monitor.ParentID = $"{ObjectType.Monitor_监测点组}_{x.GroupID}"; vm_cache_monitor.LogicalName = x.Name; vm_cache_monitor.LogicalType = ObjectType.Monitor_监测点; 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 new Result>(vm_list); } /// /// 通过 BelongType 和 BelongID 获取实时测点逻辑树 /// [Route("GetRealLogicalTreeByBelongTypeAndBelongID")] [HttpGet] public Result GetRealLogicalTreeByBelongTypeAndBelongID(long CorpID, string BelongType, long BelongID) { if (CorpID < 1) { return new Result(Code.Error, "CorpID 参数错误"); } if (string.IsNullOrEmpty(BelongType)) { return new Result(Code.Error, "BelongType 参数错误"); } if (BelongID < 1) { return new Result(Code.Error, "BelongID 参数错误"); } var cacheKey = $"Standard_MonitorPoint_GetRealLogicalTreeByBelongTypeAndBelongID_{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 ViewModel.MonitorPointGroup(x)).ToList(); var vm_cache_group_list = vm_group_list?.Select(x => { var vm_cache_group = new ViewModel.LogicalTreeItem(); vm_cache_group.ID = $"{ObjectType.Monitor_监测点组}_{x.ID}"; vm_cache_group.ParentID = $"{ObjectType.Monitor_监测点组}_{x.ParentID}"; vm_cache_group.LogicalName = x.Name; vm_cache_group.LogicalType = ObjectType.Monitor_监测点组; 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); monitor_list = monitor_list?.Where(x => x.CronType == Model.MonitorPoint.eCronType.Real).ToList(); var vm_monitor_list = monitor_list?.Select(x => new ViewModel.MonitorPointExSignalList(x)).ToList(); var vm_cache_monitor_list = vm_monitor_list?.Select(x => { var vm_cache_monitor = new ViewModel.LogicalTreeItem(); vm_cache_monitor.ID = $"{ObjectType.Monitor_监测点}_{x.ID}"; vm_cache_monitor.ParentID = $"{ObjectType.Monitor_监测点组}_{x.GroupID}"; vm_cache_monitor.LogicalName = x.Name; vm_cache_monitor.LogicalType = ObjectType.Monitor_监测点; 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 new Result>(vm_list); } /// /// 通过 BelongType 和 BelongID 获取常规实时测点逻辑树 /// [Route("GetGeneralRealLogicalTreeByBelongTypeAndBelongID")] [HttpGet] public Result GetGeneralRealLogicalTreeByBelongTypeAndBelongID(long CorpID, string BelongType, long BelongID) { if (CorpID < 1) { return new Result(Code.Error, "CorpID 参数错误"); } if (string.IsNullOrEmpty(BelongType)) { return new Result(Code.Error, "BelongType 参数错误"); } if (BelongID < 1) { return new Result(Code.Error, "BelongID 参数错误"); } var cacheKey = $"Standard_MonitorPoint_GetGeneralRealLogicalTreeByBelongTypeAndBelongID_{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 ViewModel.MonitorPointGroup(x)).ToList(); var vm_cache_group_list = vm_group_list?.Select(x => { var vm_cache_group = new ViewModel.LogicalTreeItem(); vm_cache_group.ID = $"{ObjectType.Monitor_监测点组}_{x.ID}"; vm_cache_group.ParentID = $"{ObjectType.Monitor_监测点组}_{x.ParentID}"; vm_cache_group.LogicalName = x.Name; vm_cache_group.LogicalType = ObjectType.Monitor_监测点组; 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); monitor_list = monitor_list?.Where(x =>x.MonitorType==Model.MonitorPoint.eMonitorType.General&& x.CronType == Model.MonitorPoint.eCronType.Real).ToList(); var vm_monitor_list = monitor_list?.Select(x => new ViewModel.MonitorPointExSignalList(x)).ToList(); var vm_cache_monitor_list = vm_monitor_list?.Select(x => { var vm_cache_monitor = new ViewModel.LogicalTreeItem(); vm_cache_monitor.ID = $"{ObjectType.Monitor_监测点}_{x.ID}"; vm_cache_monitor.ParentID = $"{ObjectType.Monitor_监测点组}_{x.GroupID}"; vm_cache_monitor.LogicalName = x.Name; vm_cache_monitor.LogicalType = ObjectType.Monitor_监测点; 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 new Result>(vm_list); } /// /// 通过 BelongType 和 BelongID 获取录入测点逻辑树 /// [Route("GetInputLogicalTreeByBelongTypeAndBelongID")] [HttpGet] public Result GetInputLogicalTreeByBelongTypeAndBelongID(long CorpID, string BelongType, long BelongID) { if (CorpID < 1) { return new Result(Code.Error, "CorpID 参数错误"); } if (string.IsNullOrEmpty(BelongType)) { return new Result(Code.Error, "BelongType 参数错误"); } if (BelongID < 1) { return new Result(Code.Error, "BelongID 参数错误"); } var cacheKey = $"Standard_MonitorPoint_GetInputLogicalTreeByBelongTypeAndBelongID_{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 ViewModel.MonitorPointGroup(x)).ToList(); var vm_cache_group_list = vm_group_list?.Select(x => { var vm_cache_group = new ViewModel.LogicalTreeItem(); vm_cache_group.ID = $"{ObjectType.Monitor_监测点组}_{x.ID}"; vm_cache_group.ParentID = $"{ObjectType.Monitor_监测点组}_{x.ParentID}"; vm_cache_group.LogicalName = x.Name; vm_cache_group.LogicalType = ObjectType.Monitor_监测点组; 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); monitor_list = monitor_list?.Where(x => x.SourceType == Model.MonitorPoint.eSourceType.Input).ToList(); var vm_monitor_list = monitor_list?.Select(x => new ViewModel.MonitorPointExSignalList(x)).ToList(); var vm_cache_monitor_list = vm_monitor_list?.Select(x => { var vm_cache_monitor = new ViewModel.LogicalTreeItem(); vm_cache_monitor.ID = $"{ObjectType.Monitor_监测点}_{x.ID}"; vm_cache_monitor.ParentID = $"{ObjectType.Monitor_监测点组}_{x.GroupID}"; vm_cache_monitor.LogicalName = x.Name; vm_cache_monitor.LogicalType = ObjectType.Monitor_监测点; 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 new Result>(vm_list); } /// /// 通过 BelongType 和 BelongID 获取常规录入测点逻辑树 /// [Route("GetGeneralInputLogicalTreeByBelongTypeAndBelongID")] [HttpGet] public Result GetGeneralInputLogicalTreeByBelongTypeAndBelongID(long CorpID, string BelongType, long BelongID) { if (CorpID < 1) { return new Result(Code.Error, "CorpID 参数错误"); } if (string.IsNullOrEmpty(BelongType)) { return new Result(Code.Error, "BelongType 参数错误"); } if (BelongID < 1) { return new Result(Code.Error, "BelongID 参数错误"); } var cacheKey = $"Standard_MonitorPoint_GetGeneralInputLogicalTreeByBelongTypeAndBelongID_{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 ViewModel.MonitorPointGroup(x)).ToList(); var vm_cache_group_list = vm_group_list?.Select(x => { var vm_cache_group = new ViewModel.LogicalTreeItem(); vm_cache_group.ID = $"{ObjectType.Monitor_监测点组}_{x.ID}"; vm_cache_group.ParentID = $"{ObjectType.Monitor_监测点组}_{x.ParentID}"; vm_cache_group.LogicalName = x.Name; vm_cache_group.LogicalType = ObjectType.Monitor_监测点组; 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); monitor_list = monitor_list?.Where(x =>x.MonitorType==Model.MonitorPoint.eMonitorType.General&& x.SourceType == Model.MonitorPoint.eSourceType.Input).ToList(); var vm_monitor_list = monitor_list?.Select(x => new ViewModel.MonitorPointExSignalList(x)).ToList(); var vm_cache_monitor_list = vm_monitor_list?.Select(x => { var vm_cache_monitor = new ViewModel.LogicalTreeItem(); vm_cache_monitor.ID = $"{ObjectType.Monitor_监测点}_{x.ID}"; vm_cache_monitor.ParentID = $"{ObjectType.Monitor_监测点组}_{x.GroupID}"; vm_cache_monitor.LogicalName = x.Name; vm_cache_monitor.LogicalType = ObjectType.Monitor_监测点; 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 new Result>(vm_list); } } }