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 IStation.Calculation;
|
using IStation.Model;
|
|
namespace IStation.Application
|
{
|
/// <summary>
|
/// RunStatus
|
/// </summary>
|
[Route("Run/RunStatus/Mobile")]
|
[ApiDescriptionSettings("Run", Name = "运行状态(手机)", Order = 899)]
|
public class RunStatus_MobileController : IDynamicApiController
|
{
|
/// <summary>
|
/// 通过 ProductID 获取(手机)
|
/// </summary>
|
[Route("GetByProductID@V1.0")]
|
[HttpGet]
|
public int GetByProductID([FromQuery][Required] ProductIDUnderCorpInput input)
|
{
|
var corpId = input.CorpID;
|
var productId = input.ProductID;
|
var monitorMappingList = new Service.MonitorPointMapping().GetByObjectTypeAndObjectID(corpId,ObjectType.Product,productId);
|
if (monitorMappingList == null || monitorMappingList.Count < 1)
|
return RunStatus.UnKnown;
|
var monitorPointIds = monitorMappingList.Select(x => x.MonitorPointID).Distinct().ToList();
|
var monitorList = new Service.MonitorPoint().GetExSignalWithSignalTypeByIds(corpId,monitorPointIds,Model.eMonitorType.General,Model.Monitor.eCronType.Real);
|
if (monitorList == null || monitorList.Count < 1)
|
return RunStatus.UnKnown;
|
var monitorRunList = monitorList.Where(x => x.SignalList.First().SignalType.Identifier == IStation.SignalType.运行状态).ToList();
|
var monitorRunDefault= monitorRunList?.Find(x => x.Flags != null && x.Flags.Contains(IStation.LogicFlags.默认));
|
if (monitorRunDefault == null)
|
monitorRunDefault = monitorRunList?.FirstOrDefault();
|
if (monitorRunDefault == null)
|
return RunStatus.UnKnown;
|
var lastRecord = new Service.MonitorRealRecord().GetLastRecord(monitorRunDefault.CorpID, monitorRunDefault.ID, monitorRunDefault.SignalList.First().ID);
|
if (lastRecord == null)
|
return RunStatus.UnKnown;
|
if (!int.TryParse(lastRecord.DataValue, out int dataValue))
|
return RunStatus.UnKnown;
|
return dataValue;
|
}
|
|
/// <summary>
|
/// 通过 ProductIds 获取(手机)
|
/// </summary>
|
[Route("GetByProductIds@V1.0")]
|
[HttpGet]
|
public List<ProductRunStatusMobileDto> GetByProductIds([FromQuery][Required] ProductIdsUnderCorpInput input)
|
{
|
var corpId = input.CorpID;
|
var productIds = LongListHelper.ToList(input.ProductIds);
|
var vmList = new List<ProductRunStatusMobileDto>();
|
foreach (var productId in productIds)
|
{
|
var vm = new ProductRunStatusMobileDto();
|
vm.ProductID = productId;
|
vm.RunStatus = RunStatus.UnKnown;
|
vmList.Add(vm);
|
var monitorMappingList = new Service.MonitorPointMapping().GetByObjectTypeAndObjectID(corpId, ObjectType.Product, productId);
|
if (monitorMappingList == null || monitorMappingList.Count < 1)
|
continue;
|
var monitorPointIds = monitorMappingList.Select(x => x.MonitorPointID).Distinct().ToList();
|
var monitorList = new Service.MonitorPoint().GetExSignalWithSignalTypeByIds(corpId, monitorPointIds, Model.eMonitorType.General, Model.Monitor.eCronType.Real);
|
if (monitorList == null || monitorList.Count < 1)
|
continue;
|
var monitorRunList = monitorList.Where(x => x.SignalList.First().SignalType.Identifier == IStation.SignalType.运行状态).ToList();
|
var monitorRunDefault = monitorRunList?.Find(x => x.Flags != null && x.Flags.Contains(IStation.LogicFlags.默认));
|
if (monitorRunDefault == null)
|
monitorRunDefault = monitorRunList?.FirstOrDefault();
|
if (monitorRunDefault == null)
|
continue;
|
var lastRecord = new Service.MonitorRealRecord().GetLastRecord(monitorRunDefault.CorpID, monitorRunDefault.ID, monitorRunDefault.SignalList.First().ID);
|
if (lastRecord == null)
|
continue;
|
if (!int.TryParse(lastRecord.DataValue, out int dataValue))
|
continue;
|
vm.RunStatus = dataValue;
|
}
|
return vmList;
|
}
|
|
|
|
|
|
|
|
|
}
|
}
|