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 Microsoft.AspNetCore.Http; using Furion.DependencyInjection; using Microsoft.AspNetCore.Authorization; using Furion.DataEncryption; using Furion.FriendlyException; namespace IStation.Application { /// /// PipeLine /// [AllowAnonymous] [Route("LargeScreen/Demo/PipeLine")] [ApiDescriptionSettings("LargeScreen", Name = "Demo(管路)", Order = 666)] public class DemoPipeLine_Controller : IDynamicApiController, ITransient { private readonly IHttpContextAccessor _httpContextAccessor; /// /// /// public DemoPipeLine_Controller(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } /// /// 通过 BelongType 和 BelongID 获取拓展泵性能曲线列表 /// [Route("GetExPumpFeatCurveListByBelongTypeAndBelongID")] [HttpGet] public List GetExPumpFeatCurveListByBelongTypeAndBelongID([FromQuery][Required] BelongUnderCorpInput input) { var corpId = input.CorpID; var belongType = input.BelongType; var belongId = input.BelongID; var cacheKey = $"LargeScreen_Demo_PipeLine_GetExPumpFeatCurveListByBelongTypeAndBelongID_{corpId}_{belongType}_{belongId}"; var vm_list = MemoryCacheHelper.GetSet(cacheKey, () => { var pipe_list = new Service.PipeLine().GetByBelongTypeAndBelongID(corpId, belongType, belongId); if (pipe_list == null || pipe_list.Count < 1) return default; var pipe_engine_pump_list = pipe_list.Where(x => x.Catalog == PipeLine.EnginePump).OrderBy(x => x.SerialNO).ToList(); if (pipe_engine_pump_list.Count < 1) return default; var service_binding = new Service.PipeLineBinding(); var service_product = new Service.Product(); var service_property = new Service.ProductTypePropertyGroup(); var service_curve = new Service.PumpCurveExMapping(); var vm_cache_list = new List(); foreach (var pipe_engine_pump in pipe_engine_pump_list) { var binding_list = service_binding.GetUseByPipeLineID(pipe_engine_pump.CorpID, pipe_engine_pump.ID); if (binding_list == null || binding_list.Count < 1) continue; var binding = binding_list.Find(x => x.BindingType == IStation.ObjectType.Product); if (binding == null) continue; var pump = service_product.GetChildPumpByEnginePumpID(binding.CorpID, binding.BindingID); if (pump == null) continue; var property_list = service_property.GetExItemsByProductTypeID(pump.CorpID, pump.ProductTypeID); var curve = service_curve.GetDefaultWorkingByPumpID(pump.CorpID, pump.ID); if (curve == null) continue; var vm_cache = new DemoPipeLineExPumpFeatCurveDto(pipe_engine_pump, pump, property_list, curve); vm_cache_list.Add(vm_cache); } return vm_cache_list; }, CacheHelper.CacheLevel3); return vm_list; } } }