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; } } }