lixiaojun
2022-08-03 aa5aa380cb4e3f63b2e98c5e686b69becefce332
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
103
104
105
106
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>
    /// MonitorVibrationRecord
    /// </summary>
    [Route("Run/MonitorVibrationRecord")]
    [ApiDescriptionSettings("Run", Name = "监测振动记录", Order = 980)]
    public class MonitorVibrationRecord_Controller : IDynamicApiController 
    {
 
        /// <summary>
        /// 通过 MonitorPointID 获取某天的基础数据
        /// </summary>
        [Route("GetBasicByMonitorPointIDOfDay@V1.0")]
        [HttpGet]
        public List<MonitorVibrationBasicRecordDto> GetBasicByMonitorPointIDOfDay
            (
                [Required, Range(1, long.MaxValue, ErrorMessage = "CorpID 必须大于0")]
                long CorpID,
                [Required, Range(1, long.MaxValue, ErrorMessage = "MonitorPointID 必须大于0")]
                long MonitorPointID,
                [Required]
                DateTime Day
            )
        {
            var monitor = new Service.MonitorPoint().GetExSignalWithSignalTypeByID(CorpID,MonitorPointID);
            if (monitor == null)
                return default;
            if (monitor.MonitorType != eMonitorType.Vibration)
                return default;
            var signalList = monitor.SignalList.ToList();
            signalList.RemoveAll(x => x.Flags != null && x.Flags.Count > 0 &&
                    (x.Flags.Contains(LogicFlags.配置) || x.Flags.Contains(LogicFlags.波形) || x.Flags.Contains(LogicFlags.FFT)));
            if (signalList.Count < 1)
                return default;
            var recordList = new Service.MonitorRealRecord().GetBySignalIdsOfDay(CorpID,MonitorPointID,signalList.Select(x=>x.ID),Day);
            if (recordList == null || recordList.Count < 1)
                return default;
            var groupList = recordList.GroupBy(x => x.DataTime).OrderBy(x=>x.Key).ToList();
            var vmList = new List<MonitorVibrationBasicRecordDto>();
            foreach (var group in groupList)
            {
                var vm = new MonitorVibrationBasicRecordDto();
                vm.CorpID= CorpID;
                vm.MonitorPointID= MonitorPointID;
                vm.DataTime = group.Key;
                vm.SignalRecordList = new List<MonitorVibrationBasicSignalRecordDto>(group.Count());
                foreach (var item in group)
                {
                    var signal = signalList.Find(t=>t.ID==item.SignalID);
                    var vmItem=new MonitorVibrationBasicSignalRecordDto(signal,item);
                    vm.SignalRecordList.Add(vmItem);
                }
                vmList.Add(vm);
            }
            return vmList;
        }
 
        /// <summary>
        /// 通过 MonitorPointID 获取某个时刻的波形记录
        /// </summary>
        [Route("GetWaveByMonitorPointIDOfDataTime@V1.0")]
        [HttpGet]
        public MonitorVibrationWaveRecordDto GetWaveByMonitorPointIDOfDataTime
            (
                [Required, Range(1, long.MaxValue, ErrorMessage = "CorpID 必须大于0")]
                long CorpID,
                [Required, Range(1, long.MaxValue, ErrorMessage = "MonitorPointID 必须大于0")]
                long MonitorPointID,
                [Required]
                DateTime DataTime
            )
        {
            var monitor = new Service.MonitorPoint().GetExSignalWithSignalTypeByID(CorpID, MonitorPointID);
            if (monitor == null)
                return default;
            if (monitor == null)
                return default;
            if (monitor.MonitorType != eMonitorType.Vibration)
                return default;
            var signal = monitor.SignalList.Find(t=>t.Flags!=null&&t.Flags.Contains(LogicFlags.波形));
            if (signal == null)
                return default;
            var record = new Service.MonitorRealRecord().GetBySignalIDOfDataTime(CorpID,MonitorPointID,signal.ID,DataTime);
            if (record == null)
                return default;
            var vm = new MonitorVibrationWaveRecordDto(record);
            return vm;
        }
 
 
 
    }
}