public bool RemoveAlarm(CameraAlarmInfo item)
        {
            try
            {
                if (item == null)
                {
                    return(false);
                }
                Log.Info(LogTags.ExtremeVision, "RemoveAlarm:" + item.pic_name);
                var     entity  = db.CameraAlarmJsons.DeleteById(item.id);
                var     picName = item.pic_name;
                Picture pic     = db.Pictures.Find(i => i.Name == picName);
                if (pic != null)
                {
                    db.Pictures.Remove(pic);
                }

                if (AppSetting.DeleteAlarmKeepPictureFile == false)
                {
                    FileInfo file = GetPictureFile(picName);
                    if (file != null)
                    {
                        file.Delete();
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                Log.Error(LogTags.ExtremeVision, "RemoveAlarm", ex.ToString());
                return(false);
            }
        }
        //public Picture GetCameraAlarmPicture(int id)
        //{
        //    CameraAlarmJson camera = db.CameraAlarmJsons.Find(id);
        //    byte[] byte1 = camera.Json;
        //    string json = Encoding.UTF8.GetString(byte1);
        //    CameraAlarmInfo cameraAlarmInfo = JsonConvert.DeserializeObject<CameraAlarmInfo>(json);
        //    Picture pic = GetCameraAlarmPicture(cameraAlarmInfo.pic_name);
        //    return pic;
        //}

        public void GetCameraAlarmPicture(CameraAlarmInfo cameraAlarmInfo)
        {
            try
            {
                if (cameraAlarmInfo == null)
                {
                    return;
                }

                if (AppSetting.CameraAlarmPicSaveMode == 0)
                {
                    bool r = GetCameraAlarmPictureFromDb(cameraAlarmInfo);
                    if (r == false)
                    {
                        Log.Info(LogTags.ExtremeVision, string.Format("Mode={0};Name={1}. GetCameraAlarmPictureFromDb Fail,Try GetCameraAlarmPictureFromFile...", AppSetting.CameraAlarmPicSaveMode, cameraAlarmInfo.pic_name));
                        GetCameraAlarmPictureFromFile(cameraAlarmInfo);
                    }
                }
                else if (AppSetting.CameraAlarmPicSaveMode == 1)
                {
                    bool r = GetCameraAlarmPictureFromFile(cameraAlarmInfo);
                    if (r == false)
                    {
                        Log.Info(LogTags.ExtremeVision, string.Format("Mode={0};Name={1}. GetCameraAlarmPictureFromFile Fail,Try GetCameraAlarmPictureFromDb...", AppSetting.CameraAlarmPicSaveMode, cameraAlarmInfo.pic_name));
                        GetCameraAlarmPictureFromDb(cameraAlarmInfo);
                    }
                }
            }
            catch (System.Exception ex)
            {
                Log.Error(LogTags.ExtremeVision, "GetCameraAlarmPicture", ex.ToString());
            }
        }
 private static bool GetCameraAlarmPictureFromFile(CameraAlarmInfo cameraAlarmInfo)
 {
     try
     {
         FileInfo file = GetPictureFile(cameraAlarmInfo.pic_name);
         if (file != null)
         {
             byte[] imageBytes = File.ReadAllBytes(file.FullName);
             string base64     = Convert.ToBase64String(imageBytes);
             cameraAlarmInfo.pic_data = base64;
             //byte[] base64Bytes = Encoding.UTF8.GetBytes(base64);
             //pic.Info = base64Bytes;
             return(true);
         }
         else
         {
             return(false);
         }
     }
     catch (System.Exception ex)
     {
         Log.Error(LogTags.ExtremeVision, "GetCameraAlarmPictureFromFile", ex.ToString());
         return(false);
     }
 }
        private void SavePicture(CameraAlarmJson camera, Bll bll, int mode)
        {
            byte[]          byte1 = camera.Json;
            string          json  = Encoding.UTF8.GetString(byte1);
            CameraAlarmInfo info  = CameraAlarmInfo.Parse(json);

            info.time = GetDataTime(info.time_stamp);
            info.id   = camera.Id; //增加了id,这样能够获取到详情
            //int mode = AppSetting.CameraAlarmPicSaveMode;
            string base64 = info.pic_data;

            if (!string.IsNullOrEmpty(base64))
            {
                info.pic_data = "";                               //图片分开存
                string json2 = JsonConvert.SerializeObject(info); //新的没有图片的json
                camera.Json = Encoding.UTF8.GetBytes(json2);

                bll.CameraAlarmJsons.Edit(camera);

                SavePicture(bll, mode, base64, info.pic_name);

                SaveJsonToFile(info.time_stamp, json2);
            }
            else
            {
                Log.Info("没有图片");
                SaveJsonToFile(info.time_stamp, json);
            }
        }
        /// <summary>
        /// 合并
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        private List <CameraAlarmInfo> MergeAlarms(List <CameraAlarmInfo> input)
        {
            try
            {
                Dictionary <string, List <CameraAlarmInfo> > dict = new Dictionary <string, List <CameraAlarmInfo> >();
                foreach (CameraAlarmInfo info in input)
                {
                    string key = info.cid + info.cid_url;//用aid和ip作为键值
                    if (!dict.ContainsKey(key))
                    {
                        dict.Add(key, new List <CameraAlarmInfo>());
                    }
                    List <CameraAlarmInfo> list = dict[key];
                    list.Add(info);
                }

                List <CameraAlarmInfo> output = new List <CameraAlarmInfo>();
                int mergeInterval             = 35;//合并时间间隔
                foreach (string key in dict.Keys)
                {
                    var             list      = dict[key];
                    List <TimeSpan> timeSpane = new List <TimeSpan>();
                    CameraAlarmInfo startInfo = null;
                    for (int i = 0; i < list.Count - 1; i++)//一个摄像机上的相同告警,火警和安全帽是分开的
                    {
                        if (startInfo == null)
                        {
                            startInfo = list[i];
                        }

                        TimeSpan t = list[i + 1].time - list[i].time;
                        timeSpane.Add(t);
                        if (t.TotalSeconds < mergeInterval)
                        {
                            list[i + 1].startInfo = startInfo;
                            list.RemoveAt(i);
                            i--;
                        }
                        else
                        {
                            output.Add(list[i]);
                            startInfo = null;
                        }
                    }

                    output.Add(list[list.Count - 1]);
                }
                return(output);
            }
            catch (System.Exception ex)
            {
                Log.Error(LogTags.ExtremeVision, "GetPictureFile", ex.ToString());
                return(null);
            }
            ;
        }
    public void GetCameraAlarmData(AlarmPushInfo cameraAlarm)
    {
        if (string.IsNullOrEmpty(cameraAlarm.CameraAlarmInfor.cid_url))
        {
            CameraAlarmInfo aa = cameraAlarm.CameraAlarmInfor;
        }

        string devName = null;

        CurrentAlarmPushInfo = new global::AlarmPushInfo();
        CurrentAlarmPushInfo = cameraAlarm;
        if (cameraAlarm.CameraAlarmInfor.AlarmType == 1)
        {
            AlarmTypeImage.sprite = Safety;
            message.text          = "没戴安全帽!";
        }
        else if (cameraAlarm.CameraAlarmInfor.AlarmType == 2)
        {
            AlarmTypeImage.sprite = Fire;
            message.text          = "火警";
        }
        else if (cameraAlarm.CameraAlarmInfor.AlarmType == 3)
        {
            AlarmTypeImage.sprite = smogInfo;
            message.text          = "烟雾";
        }
        cid.text = cameraAlarm.CameraAlarmInfor.cid.ToString();
        Button but = AlarmObj.transform.GetComponent <Button>();

        but.onClick.RemoveAllListeners();
        but.onClick.AddListener(() =>
        {
            if (ScreenFlashesRedAndAudio.Instance != null)
            {
                ScreenFlashesRedAndAudio.Instance.FlashesRedTweenerStop_Click();
            }
            int?DevID = CommunicationObject.Instance.GetCameraDevIdByURL(cameraAlarm.CameraAlarmInfor.cid_url);
            if (DevID == null)
            {
                UGUIMessageBox.Show("视频ID未找到,URL:" + cameraAlarm.CameraAlarmInfor.cid_url);
                Log.Error("Dev.ParentId is null...");
                return;
            }

            DevInfo Dev = GetDevInfoByid((int)DevID);
            if (Dev == null)
            {
                Debug.LogError("Dev is null...");
                return;
            }
            LocationDev(DevID.ToString(), (int)Dev.ParentId, devName, cameraAlarm);
        });
    }
        private bool GetCameraAlarmPictureFromDb(CameraAlarmInfo cameraAlarmInfo)
        {
            string picName = cameraAlarmInfo.pic_name;
            //int count = db.Pictures.DbSet.Count();
            Picture pic = db.Pictures.Find(i => i.Name == picName);

            if (pic != null)
            {
                cameraAlarmInfo.pic_data = Encoding.UTF8.GetString(pic.Info);
                return(true);
            }
            return(false);
        }
示例#8
0
 private void MenuEdit_Click(object sender, RoutedEventArgs e)
 {
     foreach (var item in DataGrid1.SelectedItems)
     {
         CameraAlarmInfo info = item as CameraAlarmInfo;
         if (info == null)
         {
             continue;
         }
         CameraAlarmEditWindow win = new CameraAlarmEditWindow(info);
         win.Show();
     }
 }
        public void AlarmSaveToJson(CameraAlarmJson camera)
        {
            byte[]          byte1 = camera.Json;
            string          json  = Encoding.UTF8.GetString(byte1);
            CameraAlarmInfo info  = CameraAlarmInfo.Parse(json);

            info.id = camera.Id; //增加了id,这样能够获取到详情

            string pic = info.pic_data;

            DateTime now = GetDataTime(info.time_stamp);
            FileInfo fi  = CameraAlarmService.GetJsonFile(now);
        }
        public string ParseJson(string json, int mode)
        {
            try
            {
                FileInfo fi = GetNowJsonFile();
                File.WriteAllText(fi.FullName, json);

                var info = CameraAlarmInfo.Parse(json);
                CameraAlarmHub.SendInfo(info);//发送告警给客户端

                Bll bll = Bll.NewBllNoRelation();

                string base64 = info.pic_data;
                info.pic_data = "";                                   //图片分开存

                string jsonNoPic = JsonConvert.SerializeObject(info); //新的没有图片的json
                Log.Info(LogTags.ExtremeVision, jsonNoPic);
                string alarmType = "";
                if (info.AlarmType == 1)
                {
                    alarmType = "安全帽告警";
                }
                else if (info.AlarmType == 2)
                {
                    alarmType = "火焰告警";
                }
                else if (info.AlarmType == 3)
                {
                    alarmType = "烟雾告警";
                }
                else
                {
                    alarmType = "其他告警:" + info.AlarmType;
                }

                Log.Info(LogTags.ExtremeVision, "告警类型:" + alarmType);

                bool result = SaveToCameraAlarmJson(jsonNoPic);

                var picName = info.pic_name;

                SavePicture(bll, mode, base64, picName);
                return(info.ToString());
            }
            catch (Exception ex)
            {
                Log.Error(LogTags.ExtremeVision, "Error:" + ex);
                return("Error:" + ex.Message);
            }
        }
 public CameraAlarmEditWindow(CameraAlarmInfo info)
 {
     InitializeComponent();
     this.info          = info;
     lbdevName.Content  = info.DevName;
     lbdevIp.Content    = info.DevIp;
     lbdevId.Content    = info.DevID;
     txtAlarmType.Text  = info.AlarmType.ToString();
     lbid.Content       = info.id;
     lbstarinfo.Content = info.startInfo;
     lbtime.Content     = info.time;
     lbaid.Content      = info.aid;
     lbcid.Content      = info.cid;
     lbcidurl.Content   = info.cid_url;
 }
 public bool IsSameCamera(string devId, CameraAlarmInfo info)
 {
     if (info == null)
     {
         return(false);
     }
     if (devId.ToInt() == info.DevID)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
        public void LoadAlarmFromJson()
        {
            try
            {
                var list2 = GetAllCameraAlarms(false);
                Dictionary <string, CameraAlarmInfo> dict = new Dictionary <string, CameraAlarmInfo>();
                foreach (var item in list2)
                {
                    string picName = item.pic_name;
                    //picName = picName.Replace(".jpg", "");
                    if (dict.ContainsKey(picName))
                    {
                        var itemOld = dict[picName];
                        dict[picName] = item;
                    }
                    else
                    {
                        dict.Add(picName, item);
                    }
                }

                DirectoryInfo dir = CameraAlarmService.GetJsonDir();

                FileInfo[] files = dir.GetFiles();

                int count = 0;
                foreach (var item in files)
                {
                    string          json            = File.ReadAllText(item.FullName);
                    CameraAlarmInfo cameraAlarmInfo = CameraAlarmInfo.Parse(json);
                    if (dict.ContainsKey(cameraAlarmInfo.pic_name))//已经存在了
                    {
                    }
                    else
                    {
                        Log.Info(LogTags.ExtremeVision, "添加到数据库:" + cameraAlarmInfo.pic_name);
                        SaveToCameraAlarmJson(json);//保存到数据库中
                        count++;
                    }
                }

                Log.Info(LogTags.ExtremeVision, "LoadAlarmFromJson count:" + count);
            }
            catch (System.Exception ex)
            {
                Log.Error(LogTags.ExtremeVision, "LoadAlarmFromJson", ex.ToString());
            }
        }
    public void GetCameraAlarmData(CameraAlarmInfo alarm)
    {
        CurrentAlarm = new CameraAlarmInfo();
        CurrentAlarm = alarm;
        if (NameText != null)
        {
            if (alarm != null && !string.IsNullOrEmpty(alarm.DevName))
            {
                NameText.text = alarm.DevName;
            }
            else
            {
                NameText.text = "--";
            }
        }
        if (IPText != null)
        {
            if (alarm != null && !string.IsNullOrEmpty(alarm.DevIp))
            {
                IPText.text = alarm.DevIp;
            }
            else
            {
                IPText.text = "--";
            }
        }

        if (alarm.AlarmType == 1)
        {
            AlarmType.text = "未戴安全帽";
        }
        else if (alarm.AlarmType == 2)
        {
            AlarmType.text = "火警";
        }
        else if (alarm.AlarmType == 3)
        {
            AlarmType.text = "烟雾";
        }
        //AlarmTimeText.text = GetDataTime(alarm.time_stamp).ToString("yyyy年MM月dd日 HH时mm分ss秒");
        AlarmTimeText.text = GetDataTime(alarm.time_stamp).ToString("MM月dd日 HH时mm分ss秒");
        PictureData        = alarm.pic_data;
        PictureBut.onClick.AddListener(() =>
        {
            ShowPictureWindow(true);
        });
    }
示例#15
0
        private void MenuSendAlarm_Click(object sender, RoutedEventArgs e)
        {
            MessageBoxResult result = MessageBox.Show("该告警将发送给所有客户端,是否继续?", "告警测试", MessageBoxButton.OKCancel, MessageBoxImage.Question);

            if (result == MessageBoxResult.OK)
            {
                foreach (var item in DataGrid1.SelectedItems)
                {
                    CameraAlarmInfo info = item as CameraAlarmInfo;
                    if (info == null)
                    {
                        continue;
                    }
                    CameraAlarmHub.SendInfo(info);
                }
            }
        }
 private void btnSave_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         CameraAlarmInfo camera = this.info;
         camera.AlarmType = int.Parse(txtAlarmType.Text);
         CameraAlarmJson cameraJson = new CameraAlarmJson();
         cameraJson.Id = camera.id;
         string json = JsonConvert.SerializeObject(camera);
         cameraJson.Json = Encoding.UTF8.GetBytes(json);
         BLL.Bll bll = BLL.Bll.NewBllNoRelation();
         bll.CameraAlarmJsons.Edit(cameraJson);
     }
     catch (Exception ex)
     {
         Log.Info("saveCameraJson:" + ex.ToString());
     }
 }
    public void ShowPictureWindow(bool b)
    {
        SetParentTransform();
        PictureWindow.Instance.PictureWindowUI.SetActive(b);
        if (b)
        {
            CameraAlarmInfo cameraalarm = CommunicationObject.Instance.GetCameraAlarm(CurrentAlarm.id);
            Texture2D       texture     = new Texture2D(width, height);
            byte[]          Pic         = PictureDataInfo(cameraalarm.pic_data);

            texture.LoadImage(Pic);
            Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
            PictureWindow.Instance.Picture.sprite = sprite;
        }
        else
        {
            PictureWindow.Instance.Picture.sprite = PictureWindow.Instance.TransperantBack;
        }
    }
示例#18
0
        private void DataGrid1_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            CameraAlarmInfo info = DataGrid1.SelectedItem as CameraAlarmInfo;

            if (info == null)
            {
                return;
            }

            CameraAlarmInfo detail = service.GetCameraAlarmDetail(info.id);

            if (detail == null)
            {
                MessageBox.Show("未找到告警信息,id=" + info.id);;
                return;
            }
            GetImage(detail.pic_data);
            TbData.Text = detail.data + "";
        }
示例#19
0
        private void ReadInfoFile(string fileName)
        {
            string path = AppDomain.CurrentDomain.BaseDirectory + "Data\\" + fileName;

            if (!File.Exists(path))
            {
                MessageBox.Show("未找到文件:" + path);
                return;
            }

            string content = File.ReadAllText(path);

            //TbContent.Text = content;

            try
            {
                CameraAlarmInfo info   = CameraAlarmInfo.Parse(content);
                string          base64 = info.pic_data;
                GetImage(info.pic_data);

                info.time_stamp = GetTimeStamp();
                info.time       = GetDataTime(info.time_stamp);
                info.pic_data   = "";

                grid1.SelectedObject = info;

                info.ParseData();
                info.id = info.aid;
                string          json  = JsonConvert.SerializeObject(info);
                CameraAlarmInfo info2 = CameraAlarmInfo.Parse(json);
                info2.FlameData = null;
                info2.HeadData  = null;
                info2.SmogData  = null;
                info2.pic_data  = base64;
                info2.pic_name  = DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ffff") + ".jpg";
                string json2 = JsonConvert.SerializeObject(info2);
                TbContent.Text = json2;
            }
            catch (Exception ex)
            {
                MessageBox.Show("解析失败:" + ex);
            }
        }
示例#20
0
        public string Callback(CameraAlarmInfo info)
        {
            try
            {
                string json = JsonConvert.SerializeObject(info);

                Log.Info(LogTags.ExtremeVision, string.Format("ExtremeVisionController.Callback({0})", Request.GetClientIpAddress()));
                Log.Info(LogTags.ExtremeVision, json);
                FileInfo fi = CameraAlarmService.GetNowJsonFile();
                File.WriteAllText(fi.FullName, json);

                CameraAlarmHub.SendInfo(info);
                return(info + "");
            }
            catch (Exception ex)
            {
                Log.Error(LogTags.ExtremeVision, "ExtremeVisionController.Callback:" + ex.Message);
                return("error:" + ex);
            }
        }
示例#21
0
        private void MenuDelete_Click(object sender, RoutedEventArgs e)
        {
            //可以删除全部告警
            List <CameraAlarmInfo> list = new List <CameraAlarmInfo>();

            foreach (var item in DataGrid1.SelectedItems)
            {
                CameraAlarmInfo info = item as CameraAlarmInfo;
                if (info == null)
                {
                    continue;
                }
                list.Add(info);
            }
            Worker.Run(() =>
            {
                foreach (CameraAlarmInfo item in list)
                {
                    service.RemoveAlarm(item);
                }
            }, () => { LoadData(); });
        }
        private CameraAlarmInfo GetCamaraAlarmInfo(CameraAlarmJson camera, Dictionary <string, Dev_CameraInfo> cameraDict, Dictionary <int, DevInfo> devs)
        {
            try
            {
                byte[]          byte1           = camera.Json;
                string          json            = Encoding.UTF8.GetString(byte1);
                int             id              = camera.Id;
                CameraAlarmInfo cameraAlarmInfo = CameraAlarmInfo.Parse(json);
                cameraAlarmInfo.id       = camera.Id; //增加了id,这样能够获取到详情
                cameraAlarmInfo.pic_data = "";        //在详情的地方获取
                cameraAlarmInfo.data     = null;
                cameraAlarmInfo.time     = GetDataTime(cameraAlarmInfo.time_stamp);


                string ip = GetCameraIp(cameraAlarmInfo.cid_url);
                cameraAlarmInfo.DevIp = ip;

                if (cameraDict.ContainsKey(ip))
                {
                    var camerainfo = cameraDict[ip];
                    if (devs.ContainsKey(camerainfo.DevInfoId))
                    {
                        cameraAlarmInfo.DevName = devs[camerainfo.DevInfoId].Name;
                        cameraAlarmInfo.DevID   = camerainfo.DevInfoId;
                    }
                }
                else
                {
                }

                return(cameraAlarmInfo);
            }
            catch (System.Exception ex)
            {
                Log.Error(LogTags.ExtremeVision, "GetCamaraAlarmInfo", ex.ToString());
                return(null);
            }
        }
 /// <summary>
 /// 获取一个告警的详情 主要是告警图片
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
 public CameraAlarmInfo GetCameraAlarmDetail(int id)
 {
     try
     {
         CameraAlarmJson camera = db.CameraAlarmJsons.Find(id);
         if (camera == null)
         {
             return(null);
         }
         byte[]          byte1           = camera.Json;
         string          json            = Encoding.UTF8.GetString(byte1);
         CameraAlarmInfo cameraAlarmInfo = CameraAlarmInfo.Parse(json);
         cameraAlarmInfo.id   = camera.Id;//增加了id,这样能够获取到详情
         cameraAlarmInfo.time = GetDataTime(cameraAlarmInfo.time_stamp);
         GetCameraAlarmPicture(cameraAlarmInfo);
         return(cameraAlarmInfo);
     }
     catch (System.Exception ex)
     {
         Log.Error(LogTags.ExtremeVision, "GetCameraAlarmDetail", ex.ToString());
         return(null);
     }
 }
 public void SetAlarmInfo(CameraAlarmInfo alaem)
 {
     AlarmType        = AlarmPushInfoType.CameraAlarmInfo;
     CameraAlarmInfor = alaem;
 }
示例#25
0
        private void LoadData()
        {
            try
            {
                if (DataGrid1 == null)
                {
                    return;
                }
                var list = service.GetAllCameraAlarms(false);
                if (list == null)
                {
                    MessageBox.Show("加载数据失败,GetAllCameraAlarms list == null");
                    return;
                }
                var type = CbType.SelectedIndex;
                if (type == 0)
                {
                    DataGrid1.ItemsSource = list;
                }
                else
                {
                    DataGrid1.ItemsSource = list.FindAll(i => i.AlarmType == type);
                }

                Dictionary <string, FileInfo> fileDict = new Dictionary <string, FileInfo>();


                int fileCount = 0;
                var files     = service.GetAllPictureFiles();
                if (files != null)
                {
                    fileCount = files.Length;
                    //Log.Info(LogTags.ExtremeVision, " fileCount:" + files.Length);
                    foreach (var item in files)
                    {
                        fileDict.Add(item.Name, item);
                    }
                }

                var picList = service.GetPictureCount();
                Log.Info(LogTags.ExtremeVision, string.Format("AlarmCount:{0},fileCount:{1}, PictureCount:{2}", list.Count, fileCount, picList));

                List <CameraAlarmInfo> noPicList   = new List <CameraAlarmInfo>();
                List <CameraAlarmInfo> havePicList = new List <CameraAlarmInfo>();
                foreach (var item in list)
                {
                    if (item.id == 11320)
                    {
                        CameraAlarmInfo info = item;
                    }
                    if (fileDict.ContainsKey(item.pic_name))
                    {
                        havePicList.Add(item);
                        fileDict.Remove(item.pic_name);//删除已经有的
                    }
                    else
                    {
                        noPicList.Add(item);
                    }
                    //service.GetCameraAlarmDetail
                }

                //DataGrid1.ItemsSource = havePicList;

                var picNoAlarms = fileDict.Values.ToList();//剩下来的没有告警的图片(在当前数据库中)
                Log.Info(LogTags.ExtremeVision, string.Format(" picAlarms:{0}, picNoAlarms:{1}", havePicList.Count, picNoAlarms.Count));
            }
            catch (Exception ex)
            {
                Log.Error(LogTags.ExtremeVision, ex.ToString());
                MessageBox.Show("加载数据失败:" + ex.Message);
            }
        }
示例#26
0
    private void CameraAlarmHub_OnCameraAlarmsRecieved(List <CameraAlarmInfo> CameraInfo)
    {
        try
        {
            if (CameraInfo == null || CameraInfo.Count == 0)
            {
                return;
            }
            //string json = Newtonsoft.Json.JsonConvert.SerializeObject(obj);
            Log.Info("CameraAlarmHub_OnCameraAlarmsRecieved", "count:" + CameraInfo.Count);
            //Debug.LogError(json);
            IsBaoXin           = true;
            IsNewAlarm         = true;
            AllCameraAlarmPush = new List <CameraAlarmInfo>();

            if (NewestCameraAlarmPush == null)
            {
                NewestCameraAlarmPush = new List <CameraAlarmInfo>();
            }
            CameraAlarmPushList = new List <CameraAlarmInfo>();

            FullViewController mainPage = FullViewController.Instance;
            foreach (var cam in CameraInfo)
            {
                if (cam.status == 1)
                {
                    AllCameraAlarmPush.Add(cam);
                }
                else
                {
                    Log.Error("CameraAlarmHub_OnCameraAlarmsRecieved", "cam.status != 1 :" + cam.status);
                }
            }

            Log.Info("CameraAlarmHub_OnCameraAlarmsRecieved", "AllCameraAlarmPush:" + AllCameraAlarmPush.Count);
            if (mainPage && mainPage.IsFullView)
            {
                return;
            }
            if (ScreenFlashesRedAndAudio.Instance != null)
            {
                ScreenFlashesRedAndAudio.Instance.FlashesRedTweenerPlay();
            }
            foreach (var camAlarm in AllCameraAlarmPush)
            {
                NewestCameraAlarmPush.Add(camAlarm);
                AlarmPushInfo AlarmInformation = new AlarmPushInfo();
                AlarmInformation.SetAlarmInfo(camAlarm);
                CameraAlarmInfo CurrentCameraAlarm  = new CameraAlarmInfo();
                AlarmPushInfo   CompleteCameraAlarm = new AlarmPushInfo();
                AlarmPushInfo   nullData            = CompleteAlarmPushInfoList.Find(i => i.CameraAlarmInfor != null);
                if (nullData != null)
                {
                    if (camAlarm.AlarmType == 2)
                    {
                        CompleteCameraAlarm = CompleteAlarmPushInfoList.Find(i => i.CameraAlarmInfor != null && i.CameraAlarmInfor.cid == camAlarm.cid && i.CameraAlarmInfor.FlameData != null);
                    }
                    else if (camAlarm.AlarmType == 1)
                    {
                        CompleteCameraAlarm = CompleteAlarmPushInfoList.Find(i => i.CameraAlarmInfor != null && i.CameraAlarmInfor.cid == camAlarm.cid && i.CameraAlarmInfor.HeadData != null);
                    }
                    else if (camAlarm.AlarmType == 3)
                    {
                        CompleteCameraAlarm = CompleteAlarmPushInfoList.Find(i => i.CameraAlarmInfor != null && i.CameraAlarmInfor.cid == camAlarm.cid && i.CameraAlarmInfor.SmogData != null);
                    }
                    if (CompleteCameraAlarm == null)
                    {
                        CurrentAlarmPushInfoList.Add(AlarmInformation);
                        CameraAlarmPushList.AddRange(AllCameraAlarmPush);
                    }
                }
                else
                {
                    CurrentAlarmPushInfoList.Add(AlarmInformation);
                    CameraAlarmPushList.AddRange(AllCameraAlarmPush);
                }
                CameraAlarmFollowUI.RefreshAll();
            }
        }
        catch (Exception ex)
        {
            Log.Error("CameraAlarmHub_OnCameraAlarmsRecieved", "Exception :" + ex);
        }
    }
        /// <summary>
        /// 获取全部告警
        /// </summary>
        /// <param name="arg"></param>
        /// <returns></returns>
        public List <CameraAlarmInfo> GetAllCameraAlarms(bool merge)
        {
            try
            {
                List <CameraAlarmJson> list2 = db.CameraAlarmJsons.ToList();
                List <CameraAlarmInfo> list3 = new List <CameraAlarmInfo>();

                List <Dev_CameraInfo> cameras = db.Dev_CameraInfos.ToList();
                Dictionary <string, Dev_CameraInfo> cameraDict = new Dictionary <string, Dev_CameraInfo>();

                var devs = db.DevInfos.ToDictionary();

                foreach (Dev_CameraInfo camerainfo in cameras)
                {
                    if (devs.ContainsKey(camerainfo.DevInfoId))
                    {
                        camerainfo.DevInfo = devs[camerainfo.DevInfoId];
                    }

                    if (cameraDict.ContainsKey(camerainfo.Ip))
                    {
                        var cameraOld = cameraDict[camerainfo.Ip];
                        cameraDict[camerainfo.Ip] = camerainfo;
                    }
                    else
                    {
                        cameraDict.Add(camerainfo.Ip, camerainfo);
                    }
                }
                //todo:list2=>list3
                if (list2 != null)
                {
                    foreach (CameraAlarmJson cameraJson in list2)
                    {
                        //byte[] byte1 = camera.Json;
                        //string json = Encoding.UTF8.GetString(byte1);
                        //CameraAlarmInfo cameraAlarmInfo = CameraAlarmInfo.Parse(json);
                        //cameraAlarmInfo.id = camera.Id;//增加了id,这样能够获取到详情
                        //cameraAlarmInfo.pic_data = "";//在详情的地方获取
                        //
                        //cameraAlarmInfo.data = null;
                        CameraAlarmInfo cameraAlarmInfo = GetCamaraAlarmInfo(cameraJson, cameraDict, devs);
                        //string key = cameraAlarmInfo.cid + cameraAlarmInfo.cid_url + "";//用key和

                        list3.Add(cameraAlarmInfo);
                    }
                }

                list3.Sort();//按时间排序
                //if (merge)//默认传true
                //{
                //    list3 = MergeAlarms(list3);//合并相同的告警
                //}
                return(list3.ToWCFList());
            }
            catch (Exception e)
            {
                Log.Error(LogTags.ExtremeVision, "GetAllCameraAlarms", e.ToString());
                return(null);
            }
        }