tangxu
2022-10-08 a36faf95b4bee06626f33a82448f93e364b29ec5
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
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>
    /// RunStatus
    /// </summary>
    [Route("Run/RunStatus/Mobile")]
    [ApiDescriptionSettings("Run", Name = "运行状态(手机)", Order = 899)]
    public class RunStatus_MobileController : IDynamicApiController 
    {
        /// <summary>
        /// 通过 ProductID 获取(手机)
        /// </summary>
        [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;
        }
 
        /// <summary>
        /// 通过 ProductIds 获取(手机)
        /// </summary>
        [Route("GetByProductIds@V1.0")]
        [HttpGet]
        public List<ProductRunStatusMobileDto> GetByProductIds([FromQuery][Required] ProductIdsUnderCorpInput input)
        {
            var corpId = input.CorpID;
            var productIds = LongListHelper.ToList(input.ProductIds);
            var vmList = new List<ProductRunStatusMobileDto>();
            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;
        }
 
 
 
 
 
 
 
 
    }
}