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
|
{
|
/// <summary>
|
/// MonitorPoint
|
/// </summary>
|
[Route("Monitor/MonitorPoint/Mobile")]
|
[ApiDescriptionSettings("Monitor", Name = "监测点(手机)", Order = 788)]
|
public class MonitorPoint_MobileController : IDynamicApiController
|
{
|
/// <summary>
|
/// 通过 ProductID 获取
|
/// </summary>
|
[Route("GetByProductID@V1.0")]
|
[HttpGet]
|
public List<MonitorPointExSignalListMobileDto> 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;
|
}
|
|
/// <summary>
|
/// 通过 StationID 获取(手机)
|
/// </summary>
|
[Route("GetByMeterID@V1.0")]
|
[HttpGet]
|
public List<MonitorPointExSignalListMobileDto> 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;
|
}
|
|
/// <summary>
|
/// 通过 MeterID 获取KPI
|
/// </summary>
|
/// <param name="CorpID">客户标识</param>
|
/// <param name="StationID">泵站标识</param>
|
/// <param name="Count">KPI数量</param>
|
[Route("GetKpiByStationID@V1.0")]
|
[HttpGet]
|
public List<MonitorPointExSignalListMobileDto> 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<MonitorPointExSignalListMobileDto>();
|
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;
|
|
}
|
|
/// <summary>
|
/// 通过 StationID 获取分组列表
|
/// </summary>
|
[Route("GetGroupListByStationID@V1.0")]
|
[HttpGet]
|
public List<MonitorPointGroupMobileDto> 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<MonitorPointGroupMobileDto>();
|
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<MonitorPointExSignalListMobileDto>();
|
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<MonitorPointExSignalListMobileDto>();
|
vmCacheList.Add(vmGroup);
|
}
|
vmGroup.Items.Add(item);
|
}
|
|
|
return vmCacheList;
|
|
}, CacheHelper.CacheLevel2);
|
return vm_list;
|
}
|
|
/// <summary>
|
/// 通过 StationID 获取常规分组列表
|
/// </summary>
|
[Route("GetGeneralGroupListByStationID@V1.0")]
|
[HttpGet]
|
public List<MonitorPointGroupMobileDto> 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<MonitorPointGroupMobileDto>();
|
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<MonitorPointExSignalListMobileDto>();
|
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<MonitorPointExSignalListMobileDto>();
|
vmCacheList.Add(vmGroup);
|
}
|
vmGroup.Items.Add(item);
|
}
|
|
|
return vmCacheList;
|
|
}, CacheHelper.CacheLevel2);
|
return vm_list;
|
}
|
|
}
|
}
|