lixiaojun
2024-05-15 e45eab5980c08520aee01a72224ccdfd12600543
IStation.Application.SZJT/99-logic/11-big-screen/BigScreen_LogicController.cs
@@ -1,4 +1,6 @@
namespace IStation.Application
using Microsoft.VisualBasic;
namespace IStation.Application
{
    /// <summary>
    /// BigScreen
@@ -11,7 +13,7 @@
        #region 所有
        /// <summary>
        /// 获取所有泵站kpi信息
        /// 获取所有泵站kpi信息(待完善)
        /// </summary>
        [Route("GetAllStationKpiInfo@V1.0")]
        [HttpGet]
@@ -370,19 +372,43 @@
            var dtEnd = DateTime.Now.Date;
            var dtStart = dtEnd.AddMonths(-1);
            List<Yw.Model.MonitorDayRecord> allWsRecordList = null;//所有供水量
            List<Yw.Model.MonitorDayRecord> allPsRecordList = null;//所有用电量
            Yw.Model.Signal_SignalType signalWs = null;//用水量信号
            Yw.Model.Signal_SignalType signalPs = null;//用电量信号
            var service_day_record = new Lazy<Yw.Service.MonitorDayRecord>(() => new Yw.Service.MonitorDayRecord());
            var allMonitorList = new Yw.Service.MonitorPoint().GetExSignalWithSignalTypeByBelongTypeAndBelongID(IStation.DataType.LogicSite, input.StationID, Yw.Monitor.eCronType.EachDay);
            if (allMonitorList != null && allMonitorList.Count > 0)
            {
                var monitorWs = allMonitorList.Find(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.累积流量));
                if (monitorWs != null)
                {
                    signalWs = monitorWs.SignalList.Find(x => x.SignalType.Code == Yw.Monitor.SignalType.累积流量);
                    allWsRecordList = service_day_record.Value.GetBySignalIDOfDayRange(signalWs.ID, dtStart, dtEnd);
                }
                var monitorPs = allMonitorList.Find(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.有功电度));
                if (monitorPs != null)
                {
                    signalPs = monitorPs.SignalList.Find(x => x.SignalType.Code == Yw.Monitor.SignalType.有功电度);
                    allPsRecordList = service_day_record.Value.GetBySignalIDOfDayRange(signalPs.ID, dtStart, dtEnd);
                }
            }
            for (DateTime dt = dtStart; dt <= dtEnd; dt = dt.AddDays(1))
            {
                var ws = allWsRecordList?.Find(x => x.DataDay.Date == dt.Date);
                vm.Ws.Add(new BigScreenSingleStationQuotaItemDto()
                {
                    Day = dt,
                    Value = RandomHelper.Random(1000, 10000).ToString(),
                    UnitName = "m³"
                    Value = ws == null ? "0" : signalWs.GetDisplayValue(ws.DataValue),
                    UnitName = signalWs?.GetDisplayUnitNames()
                });
                var ps = allPsRecordList.Find(x => x.DataDay.Date == dt.Date);
                vm.Ps.Add(new BigScreenSingleStationQuotaItemDto()
                {
                    Day = dt,
                    Value = RandomHelper.Random(2000, 3000).ToString(),
                    UnitName = "kW‧h"
                    Value = ps == null ? "0" : signalPs.GetDisplayValue(ps.DataValue),
                    UnitName = signalPs?.GetDisplayUnitNames()
                });
            }
            return vm;
@@ -486,7 +512,7 @@
        }
        /// <summary>
        /// 获取单泵站工单Kpi信息
        /// 获取单泵站工单Kpi信息(待完善)
        /// </summary>
        [Route("GetSingleStationRepairKpiInfo@V1.0")]
        [HttpGet]
@@ -578,42 +604,45 @@
        public List<BigScreenSingleStationAlarmItemDto> GetSingleStationAlarmInfo([FromQuery][Required] StationIDInput input)
        {
            var vmList = new List<BigScreenSingleStationAlarmItemDto>();
            vmList.Add(new BigScreenSingleStationAlarmItemDto()
            var allEquipmentList = new Yw.Service.Equipment().GetByBelongTypeAndBelongID(IStation.DataType.LogicSite, input.StationID);
            if (allEquipmentList == null || allEquipmentList.Count < 1)
            {
                ID = 1,
                Name = "1#机组",
                Content = "出口压力过低,请关注状态变化"
            });
            vmList.Add(new BigScreenSingleStationAlarmItemDto()
                return vmList;
            }
            var allEnginePumpList = allEquipmentList.Where(x => x.Flags.Contains(IStation.Flags.机组)).ToList();
            if (allEnginePumpList.Count < 1)
            {
                ID = 2,
                Name = "2#机组",
                Content = "瞬时流量数据异常,请检修"
            });
            vmList.Add(new BigScreenSingleStationAlarmItemDto()
                return vmList;
            }
            var service_monitor_maping = new Yw.Service.EquipmentMonitorMapping();
            var service_monitor = new Lazy<Yw.Service.MonitorPoint>(() => new Yw.Service.MonitorPoint());
            var servie_alarm_record = new Lazy<Yw.Service.MonitorValueAlarmRecord>(() => new Yw.Service.MonitorValueAlarmRecord());
            foreach (var enginePump in allEnginePumpList)
            {
                ID = 3,
                Name = "2#机组",
                Content = "瞬时流量数据异常,请检修"
            });
            vmList.Add(new BigScreenSingleStationAlarmItemDto()
            {
                ID = 4,
                Name = "2#机组",
                Content = "瞬时流量数据异常,请检修"
            });
            vmList.Add(new BigScreenSingleStationAlarmItemDto()
            {
                ID = 5,
                Name = "2#机组",
                Content = "瞬时流量数据异常,请检修"
            });
            vmList.Add(new BigScreenSingleStationAlarmItemDto()
            {
                ID = 6,
                Name = "2#机组",
                Content = "瞬时流量数据异常,请检修"
            });
                var allMonitorMappingList = service_monitor_maping.GetByEquipmentIDContainsChildren(enginePump.ID);
                if (allMonitorMappingList != null && allMonitorMappingList.Count > 0)
                {
                    var allMonitorIds = allMonitorMappingList.Select(x => x.MonitorPointID).Distinct().ToList();
                    var allMonitorList = service_monitor.Value.GetExSignalWithSignalTypeByIds(allMonitorIds);
                    var allSignalList = allMonitorList.SelectMany(x => x.SignalList).ToList();
                    var allSignalIds = allSignalList.Select(x => x.ID).Distinct().ToList();
                    var allAlarmList = servie_alarm_record.Value.GetLastListBySignalIds(allSignalIds, 3);
                    if (allAlarmList != null && allAlarmList.Count > 0)
                    {
                        foreach (var alarm in allAlarmList)
                        {
                            var vm = new BigScreenSingleStationAlarmItemDto()
                            {
                                ID = alarm.ID,
                                Name = enginePump.Name,
                                Content = alarm.AlarmName
                            };
                            vmList.Add(vm);
                        }
                    }
                }
            }
            return vmList;
        }