public void GetDeviceAlarmInfo(AlarmSearchArg arg, PageInfo page)
    {
        SaveSelection();
        page.Size       = 10;
        page.Number     = StartPageNum;
        arg.Level       = AlarmLevel;
        arg.DevTypeName = GetDevType(DevType);
        if (IsGetData)
        {
            return;
        }
        BanClick.SetActive(true);
        Loom.StartSingleThread(() =>
        {
            DateTime start = DateTime.Now;
            IsGetData      = true;
            var devAlarms  = CommunicationObject.Instance.GetDeviceAlarms(arg);
            if (devAlarms == null)
            {
                IsGetData = false;
            }
            Debug.LogError("--------------------GetDeviceAlarms:" + (DateTime.Now - start).TotalMilliseconds + "ms");
            Loom.DispatchToMainThread(() =>
            {
                IsGetData = false;
                BanClick.SetActive(false);

                DevAlarmInfo = new DeviceAlarmInformation();
                DevAlarmInfo = devAlarms;
                if (DevAlarmInfo.Total == 0)
                {
                    pegeTotalText.text = "1";
                }
                else
                {
                    pegeTotalText.text = DevAlarmInfo.Total.ToString();
                }
                if (DevAlarmInfo.devAlarmList != null && DevAlarmInfo.Total != 0)
                {
                    ShowDevAlarmList = new List <DeviceAlarm>();
                    ShowDevAlarmList.AddRange(DevAlarmInfo.devAlarmList);
                    GetDevAlarmData(ShowDevAlarmList);
                }
            });
        });
    }
예제 #2
0
        public DeviceAlarmInformation GetDeviceAlarms(AlarmSearchArg arg)
        {
            if (allAlarms == null)
            {
                RefreshAlarmBuffer();
            }

            DeviceAlarmInformation DevAlarm = new DeviceAlarmInformation();

            DateTime start = DateTime.Now;
            var      devs  = db.DevInfos.ToList().ToTModel();

            if (devs == null || devs.Count == 0)
            {
                return(null);
            }
            var dict = new Dictionary <int, DevInfo>();

            foreach (var item in devs)
            {
                if (item.ParentId != null)
                {
                    dict.Add(item.Id, item);
                }
            }

            List <DeviceAlarm> alarms = new List <DeviceAlarm>();
            List <DbModel.Location.Alarm.DevAlarm> alarms1 = null;
            DateTime now        = DateTime.Now;
            DateTime todayStart = new DateTime(now.Year, now.Month, now.Day, 0, 0, 0, 0);
            DateTime todayEnd   = new DateTime(now.Year, now.Month, now.Day, 23, 59, 59, 999);

            //arg.Start = null;
            if (arg.Start != null && arg.End != null)
            {
                todayStart = Convert.ToDateTime(arg.Start);
                todayEnd   = Convert.ToDateTime(arg.End);
            }
            else if (arg.Start != null)
            {
                todayStart = Convert.ToDateTime(arg.Start);
            }
            else if (arg.End != null)
            {
                todayEnd = Convert.ToDateTime(arg.End);
            }

            var startStamp = TimeConvert.ToStamp(todayStart);
            var endStamp   = TimeConvert.ToStamp(todayEnd);

            if (arg.AreaId != 0)
            {
                var areas = db.Areas.GetAllSubAreas(arg.AreaId);//获取所有子区域
                if (arg.IsAll)
                {
                    alarms1 = allAlarms.FindAll(i => i.DevInfo != null && areas.Contains(i.DevInfo.ParentId));
                }
                else
                {
                    alarms1 = allAlarms.FindAll(i => i.DevInfo != null && areas.Contains(i.DevInfo.ParentId) && i.AlarmTimeStamp >= startStamp && i.AlarmTimeStamp <= endStamp);
                }
            }
            else
            {
                if (arg.IsAll)
                {
                    alarms1 = allAlarms;
                }
                else
                {
                    alarms1 = allAlarms.FindAll(i => i.AlarmTimeStamp >= startStamp && i.AlarmTimeStamp <= endStamp);
                }
            }

            if (alarms1 == null)
            {
                return(null);
            }
            alarms = alarms1.ToTModel();
            alarms.Sort();
            if (alarms.Count == 0)
            {
            }

            foreach (var item in alarms)
            {
                try
                {
                    if (dict.ContainsKey(item.DevId))
                    {
                        var dev = dict[item.DevId];
                        item.SetDev(dev);//这里设置DevId,AreaId等
                    }
                }
                catch (Exception ex)
                {
                    Log.Error(ex.ToString());
                }
            }

            DevAlarm.devAlarmList = new List <DeviceAlarm>();
            DeviceAlarmScreen(arg, alarms, DevAlarm.devAlarmList);
            DevAlarm.Total = DevAlarmTotal;

            TimeSpan time = DateTime.Now - start;

            DevAlarm.SetEmpty();
            return(DevAlarm);
        }