public Dictionary<int, Event> GetEventCustom(ref string errMessage, string str) { Database db = DatabaseFactory.CreateDatabase(); errMessage = ""; Dictionary<int, Event> list = new Dictionary<int, Event>(); try { DataSet ds = EventDataAccess.GetEventCustom(db, str); Event et; for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { et = new Event(ds.Tables[0].Rows[i]); et.CapturePicture = CapturePictureBusiness.Instance.GetCapturePicture(ref errMessage, et.PictureID); et.CameraInfo = CameraBusiness.Instance.GetCameraInfoByCameraId(ref errMessage, et.CapturePicture.CameraID); et.VideoInfo = VideoBusiness.Instance.GetVideoInfoById(ref errMessage, et.VideoId); list.Add(et.EventId, et); } return list; } catch (Exception ex) { errMessage = ex.Message + ex.StackTrace; logger.Error("Error Message:" + ex.Message + " Trace:" + ex.StackTrace); return null; } }
public Event GetEvent(ref string errMessage, int cameraId, DateTime captureDataTime) { Database db = DatabaseFactory.CreateDatabase(); errMessage = ""; Event et = null; try { DataSet ds = EventDataAccess.GetEventCustom(db, string.Format(" and CapturePicture.CameraId={0} and CapturePicture.DateTime='{1}'", cameraId, captureDataTime)); et = new Event(ds.Tables[0].Rows[0]); et.CapturePicture = CapturePictureBusiness.Instance.GetCapturePicture(ref errMessage, et.PictureID); et.CameraInfo = CameraBusiness.Instance.GetCameraInfoByCameraId(ref errMessage, et.CapturePicture.CameraID); et.VideoInfo = VideoBusiness.Instance.GetVideoInfoById(ref errMessage, et.VideoId); return et; } catch (Exception ex) { errMessage = ex.Message + ex.StackTrace; logger.Error("Error Message:" + ex.Message + " Trace:" + ex.StackTrace); return null; } }
public void Handle(byte[] bytes) { try { logger.Info("开始解析事件数据"); //获取xml XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(BitConverter.ToString(bytes, 4)); string errMessage = ""; int cameraid; int pictureid = 0; int eventid; int objid; DateTime timeid; XmlNodeList xml_cameras; xml_cameras = xmlDocument.SelectSingleNode("/pr/cameras").ChildNodes; foreach (XmlNode xmlItem in xml_cameras) { XmlElement camera = (XmlElement)xmlItem; cameraid = Convert.ToInt32(camera.GetAttribute("id")); timeid = new DateTime(long.Parse(camera.GetAttribute("timeid"))); if (!CapturePictureBusiness.Instance.IsExistCapturePicture(ref errMessage,cameraid,timeid)) { //将改图像从TempPicture表移动到CapturePicture//先获取临时图像GetTempPicture,再移动图像MoveTempPicture //图像还在临时图像库中 TempPicture tempPicture = TempPictureBusiness.Instance.GetTempPicture(ref errMessage, cameraid, timeid); string destFile = TempPictureBusiness.Instance.MoveTempPicture(ref errMessage, tempPicture); CapturePicture capturePictureinsert = new CapturePicture() { CameraID = cameraid, Datetime = timeid, FilePath = destFile }; pictureid = CapturePictureBusiness.Instance.Insert(ref errMessage, capturePictureinsert); } CapturePicture oCapturePicture = CapturePictureBusiness.Instance.GetCapturePicture(ref errMessage, cameraid, timeid); Event ev = new Event(); ev.CarNum = Convert.ToInt32(camera.GetAttribute("CarNum")); ev.Congestion = Convert.ToInt32(camera.GetAttribute("Congestion")); ev.PictureID = pictureid; eventid = EventBusiness.Instance.Insert(ref errMessage, ev); XmlNodeList objectlist = xmlItem.ChildNodes; foreach (XmlNode xmlitem1 in objectlist) { XmlElement objecttarget = (XmlElement)xmlitem1; ObjectInfo obj = new ObjectInfo(); if (Convert.ToInt32(objecttarget.GetAttribute("stop")) == 1) { obj.stop = true; } else { obj.stop = false; } if (Convert.ToInt32(objecttarget.GetAttribute("illegalDir")) == 1) { obj.illegalDir = true; } else { obj.illegalDir = false; } if (Convert.ToInt32(objecttarget.GetAttribute("CrossLine")) == 1) { obj.CrossLine = true; } else { obj.CrossLine = false; } if (Convert.ToInt32(objecttarget.GetAttribute("changeChannel")) == 1) { obj.changeChannel = true; } else { obj.changeChannel = false; } obj.EventId = eventid; objid = ObjectBusiness.Instance.Insert(ref errMessage, obj); foreach (XmlNode rectitem in objecttarget.ChildNodes) { XmlElement rectelement = (XmlElement)rectitem; EventRect myrect = new EventRect(); myrect.x = Convert.ToInt32(rectelement.GetAttribute("x")); myrect.y = Convert.ToInt32(rectelement.GetAttribute("y")); myrect.w = Convert.ToInt32(rectelement.GetAttribute("w")); myrect.h = Convert.ToInt32(rectelement.GetAttribute("h")); myrect.ObjectId = objid; EventRectBusiness.Instance.Insert(ref errMessage, myrect); } } } /*******************处理流程: * 1)解析xml文件,获取cameraid和DateTime * 2)根据cameraid和DateTime判断改图像是否已经进入CapturePicture表 * 3)如果是;转5; * 4)如果否,将改图像从TempPicture表移动到CapturePicture//先获取临时图像GetTempPicture,再移动图像MoveTempPicture * 5)识别结果入库 */ logger.Info("结束解析事件数据"); } catch (Exception ex) { logger.Error("解析事件数据错误:" + FromASCIIByteArray(bytes)); } }
public static int Insert(Database db, Event oEvent) { StringBuilder sbField = new StringBuilder(); StringBuilder sbValue = new StringBuilder(); sbField.Append("INSERT INTO [EventInfo]("); sbValue.Append("values ("); sbField.Append("[CarNum]"); sbValue.AppendFormat("{0}", oEvent.CarNum); sbField.Append(",[Congestion]"); sbValue.AppendFormat(",{0}", oEvent.Congestion); sbField.Append(",[PictureID])"); sbValue.AppendFormat(",{0})", oEvent.PictureID); string cmdText = sbField.ToString() + " " + sbValue.ToString(); try { cmdText = cmdText.Replace("\r\n", ""); db.ExecuteNonQuery(CommandType.Text, cmdText); int id = int.Parse(db.ExecuteScalar(CommandType.Text, "SELECT ident_current('EventInfo')").ToString()); return id; } catch (Exception ex) { throw ex; } }
public int Insert(ref string errMessage, Event oEvent) { Database db = DatabaseFactory.CreateDatabase(); errMessage = ""; try { return EventDataAccess.Insert(db, oEvent); } catch (Exception ex) { errMessage = ex.Message + ex.StackTrace; logger.Error("Error Message:" + ex.Message + " Trace:" + ex.StackTrace); return -1; } }
private void advBandedGridViewEvent_SelectionChanged(object sender, DevExpress.Data.SelectionChangedEventArgs e) { if (advBandedGridViewEvent.SelectedRowsCount > 0) { int getSelectedRow = this.advBandedGridViewEvent.GetSelectedRows()[0]; _selectedEvent = (Event)(this.advBandedGridViewEvent.GetRowCellValue(getSelectedRow, "�¼�����")); FillPicVideoEvent(_selectedEvent); } }
private void advBandedGridViewEvent_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e) { if (advBandedGridViewEvent.SelectedRowsCount > 0) { int getSelectedRow = this.advBandedGridViewEvent.GetSelectedRows()[0]; _selectedEvent = (Event)(this.advBandedGridViewEvent.GetRowCellValue(getSelectedRow, "�¼�����")); FillPicVideoEvent(_selectedEvent); } }
private void FillPicVideoEvent(Event oevent) { if (File.Exists(oevent.CapturePicture.FilePath)) { pictureEditVehicle.Image = Image.FromFile(oevent.CapturePicture.FilePath); } if (File.Exists(oevent.VideoInfo.FilePath)) { if (_lastVideoPortEvent != -1) { bool ret = HikPlayer.PlayM4_CloseFile(_lastVideoPortEvent); } if (File.Exists(oevent.VideoInfo.FilePath)) { _lastVideoPortEvent = 1; splitContainerControlEventVideo.Visible = true; HikPlayer.PlayM4_OpenFile(_lastVideoPortEvent, oevent.VideoInfo.FilePath); HikPlayer.PlayM4_Play(_lastVideoPortEvent, splitContainerControlEventVideo.Panel1.Handle); } } }