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; namespace IStation.Application { /// /// MonitorPoint /// [Route("Monitor/MonitorPoint/Mobile")] [ApiDescriptionSettings("Monitor", Name = "监测点(手机)", Order = 788)] public class MonitorPoint_MobileController : IDynamicApiController { /// /// 通过 ProductID 获取 /// [Route("GetByProductID@V1.0")] [HttpGet] public List GetByProductID([FromQuery][Required] ProductIDUnderCorpInput input) { var corpId=input.CorpID; var productId = input.ProductID; var cacheKey = $"Monitor_MonitorPoint_Mobile_GetByProductID_{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); var vmCacheList = monitorList?.Select(x => new MonitorPointExSignalListMobileDto(x)).ToList(); return vmCacheList; }, CacheHelper.CacheLevel3); return vm_list; } /// /// 通过 StationID 获取(手机) /// [Route("GetByMeterID@V1.0")] [HttpGet] public List GetByMeterID([FromQuery][Required] MeterIDUnderCorpInput input) { var corpId = input.CorpID; var meterId = input.MeterID; var cacheKey = $"Monitor_MonitorPoint_Mobile_GetByMeterID_{corpId}_{meterId}"; var vm_list = MemoryCacheHelper.GetSet(cacheKey, () => { var monitorMappingList = new Service.MonitorPointMapping().GetByObjectTypeAndObjectID(corpId, ObjectType.Product, meterId); 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); var vmCacheList = monitorList?.Select(x => new MonitorPointExSignalListMobileDto(x)).ToList(); return vmCacheList; }, CacheHelper.CacheLevel3); return vm_list; } /// /// 通过 MeterID 获取KPI /// /// 客户标识 /// 泵站标识 /// KPI数量 [Route("GetKpiByStationID@V1.0")] [HttpGet] public List GetKpiByStationID ( [Required, Range(1, long.MaxValue, ErrorMessage = "CorpID 必须大于0")] long CorpID, [Required, Range(1, long.MaxValue, ErrorMessage = "StationID 必须大于0")] long StationID, int Count = 2 ) { var cacheKey = $"Monitor_MonitorPoint_Mobile_GetKpiByStationID_{CorpID}_{StationID}_{Count}"; var vm_list = MemoryCacheHelper.GetSet(cacheKey, () => { //最后kpi记录列表 var monitor_list = new Service.MonitorPoint().GetExSignalWithSignalTypeByBelongTypeAndBelongID (CorpID, ObjectType.Station, StationID, Model.eMonitorType.General, Model.Monitor.eCronType.Real); var monitor_kpi_list = monitor_list?.Where(x => x.Flags != null && x.Flags.Contains(LogicFlags.KPI)) .OrderBy(x => x.ImportanceIndex == null ? int.MaxValue : x.ImportanceIndex.Value).ToList(); var vmCacheList = new List(); if (monitor_kpi_list != null) { var take_count = monitor_kpi_list.Count > Count ? Count : monitor_kpi_list.Count; monitor_kpi_list = monitor_kpi_list.Take(take_count).ToList(); foreach (var monitor_kpi in monitor_kpi_list) { var vm = new MonitorPointExSignalListMobileDto(monitor_kpi); vmCacheList.Add(vm); } } return vmCacheList; }, CacheHelper.CacheLevel4); return vm_list; } /// /// 通过 StationID 获取分组列表 /// [Route("GetGroupListByStationID@V1.0")] [HttpGet] public List GetGroupListByStationID([FromQuery][Required] StationIDUnderCorpInput input) { var corpId = input.CorpID; var stationId = input.StationID; var cacheKey = $"Monitor_MonitorPoint_Mobile_GetGroupListByStationID_{corpId}_{stationId}"; var vm_list = MemoryCacheHelper.GetSet(cacheKey, () => { var monitorList = new Service.MonitorPoint().GetExSignalWithSignalTypeByBelongTypeAndBelongID(corpId,ObjectType.Station,stationId); if (monitorList == null || monitorList.Count < 1) return default; var vmCacheList = new List(); var monitorGroupList = new Service.MonitorPointGroup().GetByBelongTypeAndBelongID(corpId, ObjectType.Station, stationId); if (monitorGroupList != null || monitorGroupList.Count > 0) { foreach (var monitorGroup in monitorGroupList) { if (monitorList.Exists(t => t.GroupID == monitorGroup.ID)) { var vmGroup = new MonitorPointGroupMobileDto(); vmGroup.ID=monitorGroup.ID; vmGroup.Name=monitorGroup.Name; vmGroup.Description=monitorGroup.Description; vmGroup.Items = new List(); vmCacheList.Add(vmGroup); } } } foreach (var monitor in monitorList) { var item=new MonitorPointExSignalListMobileDto(monitor); var vmGroup = vmCacheList.Find(t=>t.ID==monitor.GroupID); if (vmGroup == null) { vmGroup = new MonitorPointGroupMobileDto(); vmGroup.ID = 0; vmGroup.Name = "未分组"; vmGroup.Description = string.Empty; vmGroup.Items = new List(); vmCacheList.Add(vmGroup); } vmGroup.Items.Add(item); } return vmCacheList; }, CacheHelper.CacheLevel2); return vm_list; } /// /// 通过 StationID 获取常规分组列表 /// [Route("GetGeneralGroupListByStationID@V1.0")] [HttpGet] public List GetGeneralGroupListByStationID([FromQuery][Required] StationIDUnderCorpInput input) { var corpId = input.CorpID; var stationId = input.StationID; var cacheKey = $"Monitor_MonitorPoint_Mobile_GetGeneralGroupListByStationID_{corpId}_{stationId}"; var vm_list = MemoryCacheHelper.GetSet(cacheKey, () => { var monitorList = new Service.MonitorPoint().GetExSignalWithSignalTypeByBelongTypeAndBelongID(corpId, ObjectType.Station, stationId,Model.eMonitorType.General); if (monitorList == null || monitorList.Count < 1) return default; var vmCacheList = new List(); var monitorGroupList = new Service.MonitorPointGroup().GetByBelongTypeAndBelongID(corpId, ObjectType.Station, stationId); if (monitorGroupList != null || monitorGroupList.Count > 0) { foreach (var monitorGroup in monitorGroupList) { if (monitorList.Exists(t => t.GroupID == monitorGroup.ID)) { var vmGroup = new MonitorPointGroupMobileDto(); vmGroup.ID = monitorGroup.ID; vmGroup.Name = monitorGroup.Name; vmGroup.Description = monitorGroup.Description; vmGroup.Items = new List(); vmCacheList.Add(vmGroup); } } } foreach (var monitor in monitorList) { var item = new MonitorPointExSignalListMobileDto(monitor); var vmGroup = vmCacheList.Find(t => t.ID == monitor.GroupID); if (vmGroup == null) { vmGroup = new MonitorPointGroupMobileDto(); vmGroup.ID = 0; vmGroup.Name = "未分组"; vmGroup.Description = string.Empty; vmGroup.Items = new List(); vmCacheList.Add(vmGroup); } vmGroup.Items.Add(item); } return vmCacheList; }, CacheHelper.CacheLevel2); return vm_list; } } }