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?.Where(x => x.UseStatus == Model.eUseStatus.Enable).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?.Where(x => x.UseStatus == Model.eUseStatus.Enable).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.UseStatus== Model.eUseStatus.Enable&& 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);
monitorList = monitorList?.Where(x=>x.UseStatus== Model.eUseStatus.Enable).ToList();
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);
monitorList = monitorList?.Where(x=>x.UseStatus== Model.eUseStatus.Enable).ToList();
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;
}
}
}