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); }
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); }); }
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; } }
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 + ""; }
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); } }
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); } }
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; }
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); } }
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); } }