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")]
|
[ApiDescriptionSettings("Run", Name = "运行状态", Order = 900)]
|
public class RunStatus_Controller : IDynamicApiController
|
{
|
|
/// <summary>
|
/// 通过 MonitorPointGroupID 获取最后一条记录
|
/// </summary>
|
[Route("GetLastRecordByMonitorPointGroupID@V1.0")]
|
[HttpGet]
|
public MonitorObjectLastRunStatusRecord GetLastRecordByMonitorPointGroupID
|
(
|
[Required, Range(1, long.MaxValue, ErrorMessage = "CorpID 必须大于0")]
|
long CorpID,
|
[Required, Range(1, long.MaxValue, ErrorMessage = "MonitorPointGroupID 必须大于0")]
|
long MonitorPointGroupID
|
)
|
{
|
var monitor_group = new Service.MonitorPointGroup().GetByID(CorpID, MonitorPointGroupID);
|
if (monitor_group == null)
|
{
|
return default;
|
}
|
|
var monitor_list = new Service.MonitorPoint().GetExSignalWithSignalTypeByGroupID
|
(CorpID, MonitorPointGroupID, Model.eMonitorType.General, Model.Monitor.eCronType.Real);
|
var monitor_run_list = monitor_list?.Where(x => x.SignalList.First().SignalType.Identifier == IStation.SignalType.运行状态).ToList();
|
var monitor_run_default = monitor_run_list?.Find(x => x.Flags != null && x.Flags.Contains(IStation.LogicFlags.默认));
|
if (monitor_run_default == null)
|
monitor_run_default = monitor_run_list?.FirstOrDefault();
|
|
var vm = new MonitorObjectLastRunStatusRecord();
|
vm.CorpID = monitor_group.CorpID;
|
vm.ObjectType = IStation.ObjectType.MonitorPointGroup;
|
vm.ObjectID = monitor_group.ID;
|
vm.ObjectName = monitor_group.Name;
|
vm.RunStatus = IStation.RunStatus.Shut;
|
|
if (monitor_run_default != null)
|
{
|
var last_record = new Service.MonitorRealRecord().GetLastRecord(monitor_run_default.CorpID, monitor_run_default.ID, monitor_run_default.SignalList.First().ID);
|
if (last_record != null)
|
{
|
vm.DataTime =last_record.DataTime;
|
if (double.TryParse(last_record.DataValue, out double data_value))
|
{
|
vm.RunStatus = data_value > 0 ? IStation.RunStatus.Run : IStation.RunStatus.Shut;
|
}
|
}
|
}
|
|
return vm;
|
}
|
|
/// <summary>
|
/// 通过 MonitorPointGroupIds 获取最后一条记录
|
/// </summary>
|
[Route("GetLastRecordByMonitorPointGroupIds@V1.0")]
|
[HttpGet]
|
public List<MonitorObjectLastRunStatusRecord> GetLastRecordByMonitorPointGroupIds([FromQuery][Required] MonitorPointGroupIdsUnderCorpInput input)
|
{
|
var ids = LongListHelper.ToList(input.MonitorPointGroupIds);
|
var monitor_group_list = new Service.MonitorPointGroup().GetByIds(input.CorpID, ids);
|
if (monitor_group_list == null || monitor_group_list.Count < 1)
|
{
|
return default;
|
}
|
|
var service_monitor = new Service.MonitorPoint();
|
var service_record = new Service.MonitorRealRecord();
|
|
var vm_list = new List<MonitorObjectLastRunStatusRecord>();
|
foreach (var monitor_group in monitor_group_list)
|
{
|
var monitor_list = new Service.MonitorPoint().GetExSignalWithSignalTypeByGroupID
|
(input.CorpID, monitor_group.ID, Model.eMonitorType.General, Model.Monitor.eCronType.Real);
|
var monitor_run_list = monitor_list?.Where(x => x.SignalList.First().SignalType.Identifier == IStation.SignalType.运行状态).ToList();
|
var monitor_run_default = monitor_run_list?.Find(x => x.Flags != null && x.Flags.Contains(IStation.LogicFlags.默认));
|
if (monitor_run_default == null)
|
monitor_run_default = monitor_run_list?.FirstOrDefault();
|
|
var vm = new MonitorObjectLastRunStatusRecord();
|
vm.CorpID = monitor_group.CorpID;
|
vm.ObjectType = IStation.ObjectType.MonitorPointGroup;
|
vm.ObjectID = monitor_group.ID;
|
vm.ObjectName = monitor_group.Name;
|
vm.RunStatus = IStation.RunStatus.Shut;
|
vm_list.Add(vm);
|
|
if (monitor_run_default != null)
|
{
|
var last_record = new Service.MonitorRealRecord().GetLastRecord(monitor_run_default.CorpID, monitor_run_default.ID, monitor_run_default.SignalList.First().ID);
|
if (last_record != null)
|
{
|
vm.DataTime = last_record.DataTime;
|
if (double.TryParse(last_record.DataValue, out double data_value))
|
{
|
vm.RunStatus = data_value > 0 ? IStation.RunStatus.Run : IStation.RunStatus.Shut;
|
}
|
}
|
}
|
}
|
return vm_list;
|
|
}
|
|
|
/// <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<ProductRunStatusLogicDto> GetByProductIds([FromQuery][Required] ProductIdsUnderCorpInput input)
|
{
|
var corpId = input.CorpID;
|
var productIds = LongListHelper.ToList(input.ProductIds);
|
var vmList = new List<ProductRunStatusLogicDto>();
|
foreach (var productId in productIds)
|
{
|
var vm = new ProductRunStatusLogicDto();
|
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;
|
}
|
|
|
|
|
|
}
|
}
|