tangxu
2022-10-24 54f46d7fa5555927fda3edebf89cba02a8c91768
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
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
{
    /// <summary>
    /// PipeLine
    /// </summary>
    [AllowAnonymous]
    [Route("LargeScreen/Demo/PipeLine")]
    [ApiDescriptionSettings("LargeScreen", Name = "Demo(管路)", Order = 666)]
    public class DemoPipeLine_Controller : IDynamicApiController, ITransient
    {
 
        private readonly IHttpContextAccessor _httpContextAccessor;
 
        /// <summary>
        /// 
        /// </summary>
        public DemoPipeLine_Controller(IHttpContextAccessor httpContextAccessor) 
        {
            _httpContextAccessor = httpContextAccessor;
        }
 
        /// <summary>
        /// 通过 BelongType 和 BelongID 获取拓展泵性能曲线列表
        /// </summary>
        [Route("GetExPumpFeatCurveListByBelongTypeAndBelongID")]
        [HttpGet]
        public List<DemoPipeLineExPumpFeatCurveDto> 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<DemoPipeLineExPumpFeatCurveDto>();
                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;
        }
 
    }
}