lixiaojun
2024-04-04 0a48aec6a38d34db6e9194920aac7d2d19cadcb3
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
namespace IStation.Application
{
    /// <summary>
    /// StationAssets
    /// </summary>
    [Route("SZJT/Station/Assets/Mobile")]
    [ApiDescriptionSettings("SZJT", Name = "泵站资产(手机)", Order = 1400)]
    public class StationAssets_MobileController : IDynamicApiController
    {
 
        /// <summary>
        /// 获取机组列表
        /// </summary>
        [Route("GetEnginePumpList@V1.0")]
        [HttpGet]
        public List<StationEnginePumpMobileDto> GetEnginePumpList([FromQuery][Required] StationIDInput input)
        {
            var keyContent = $"SZJT_Station_Assets_Mobile_GetEnginePumpList_{input.StationID}";
            var cacheKey = MemoryCacheKeyHelper.GetKey(MemoryCacheKey.WebApiLevel, MemoryCacheKey.Module, keyContent);
 
            var vm_list = MemoryCacheHelper.GetSet(cacheKey, () =>
            {
                var allEquipmentList = new Yw.Service.Equipment().GetByBelongTypeAndBelongID(IStation.DataType.LogicSite, input.StationID);
                Yw.Service.Equipment.PublishCache(cacheKey);
                allEquipmentList = allEquipmentList?.Where(x => x.UseStatus == Yw.Model.eUseStatus.Enable).ToList();
                allEquipmentList = allEquipmentList?.Where(x => x.Flags.Contains(IStation.Flags.机组)).ToList();
                if (allEquipmentList == null || allEquipmentList.Count < 1)
                {
                    return default;
                }
                var vmList = new List<StationEnginePumpMobileDto>();
                foreach (var equipment in allEquipmentList)
                {
                    var vm = new StationEnginePumpMobileDto(equipment);
                    vmList.Add(vm);
                }
                return vmList;
            }, Yw.Service.ConfigHelper.CacheLevel3);
 
            if (vm_list != null && vm_list.Count > 0)
            {
                var service_run = new Yw.Service.RunRealRecord();
                foreach (var vm in vm_list)
                {
                    var record = service_run.GetLastRecord(Yw.Assets.DataType.Equipment, vm.ID);
                    if (record != null)
                    {
                        vm.RunStatus = record.RSa;
                    }
                }
            }
            return vm_list;
        }
 
        /// <summary>
        /// 获取机组详细
        /// </summary>
        [Route("GetEnginePumpDetail@V1.0")]
        [HttpGet]
        public StationEnginePumpDetailMobileDto GetEnginePumpDetail([FromQuery][Required] IDInput input)
        {
            var service_equipment = new Yw.Service.Equipment();
            var equipment = service_equipment.GetByID(input.ID);
            if (equipment == null)
            {
                throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D001, $"ID:{input.ID} 数据不存在");
            }
            var supplier = new Yw.Service.Supplier().GetByID(equipment.SupplierID);
 
            var vm = new StationEnginePumpDetailMobileDto(equipment, supplier);
 
            var equipmentList = service_equipment.GetChildAndSelfByID(equipment.ID);
            var equipmentIds = equipmentList.Select(x => x.ID).Distinct().ToList();
 
            var mappingList = new Yw.Service.EquipmentMonitorMapping().GetByEquipmentIds(equipmentIds);
            if (mappingList != null && mappingList.Count > 0)
            {
                var monitorIds = mappingList.Select(x => x.MonitorPointID).Distinct().ToList();
                var monitorList = new Yw.Service.MonitorPoint().GetExSignalWithSignalTypeByIds(monitorIds);
                monitorList = monitorList?.Where(x => x.UseStatus == Yw.Model.eUseStatus.Enable).ToList();
                monitorList = monitorList?.Where(x => x.CronType == Yw.Monitor.eCronType.Real).ToList();
                if (monitorList != null && monitorList.Count > 0)
                {
                    vm.LastRecordList = new List<StationEnginePumpDetailLastRecordMobileDto>();
                    var service_monitor_record = new Yw.Service.MonitorRealRecord();
                    foreach (var monitor in monitorList)
                    {
                        var signal = monitor.SignalList.First();
                        var record = service_monitor_record.GetLastRecord(signal.ID);
                        vm.LastRecordList.Add(new StationEnginePumpDetailLastRecordMobileDto(monitor, record));
                    }
                }
            }
 
            return vm;
 
        }
 
 
 
    }
}