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
{
///
/// RunStatus
///
[Route("Run/RunStatus/Mobile")]
[ApiDescriptionSettings("Run", Name = "运行状态(手机)", Order = 899)]
public class RunStatus_MobileController : IDynamicApiController
{
///
/// 通过 ProductID 获取(手机)
///
[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;
}
///
/// 通过 ProductIds 获取(手机)
///
[Route("GetByProductIds@V1.0")]
[HttpGet]
public List GetByProductIds([FromQuery][Required] ProductIdsUnderCorpInput input)
{
var corpId = input.CorpID;
var productIds = LongListHelper.ToList(input.ProductIds);
var vmList = new List();
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;
}
}
}