Example #1
0
        private void BtnSend_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            string err = string.Empty;
            Button btn = sender as Button;
            MyCmpFaceLogWidthImgModel selectedData = new MyCmpFaceLogWidthImgModel();

            try
            {
                foreach (MyCmpFaceLogWidthImgModel obj in ViewDataModel.WarningData.Property.CompareLogDatas)
                {
                    if (obj.ID == btn.CommandParameter.ToString())
                    {
                        selectedData = obj;
                        break;
                    }
                }
                int res = WarningMessageCmd.SendOneResultInfo(selectedData);
                Function.ClearPushedWaringData.ClearPushedData(ref err, res, selectedData);
            }
            catch (System.Exception ex)
            {
                err = ex.Message;
                MB_MODULES.Views.MyMessage.showYes(err);
            }
        }
Example #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="obj"></param>
 public SuspectAlarmViewModel(object obj, params object[] param)
 {
     if (obj is Compare)
     {
         DataObject = obj as Compare;
     }
     else if (obj is MyCmpFaceLogWidthImgModel)
     {
         //CloseWindowCmd = new DelegateCommand<object>(CloseWindowCmdFunc);
         PublishSuspectDataCmd = new DelegateCommand <object>(PublishSuspectDataCmdFunc);
         MyCmpFaceLogWidthImgModel suspectObj = obj as MyCmpFaceLogWidthImgModel;
         DataObject                           = new Compare();
         DataObject.Score                     = suspectObj.score;
         DataObject.Source                    = suspectObj.type;
         DataObject.Snap                      = new Snap();
         DataObject.Snap.Guid                 = suspectObj.ID;
         DataObject.Snap.SanpDateTime         = suspectObj.time;
         DataObject.Snap.SnapPhoto            = suspectObj.SnapImage;
         DataObject.Camera                    = new Camera();
         DataObject.Camera.Location           = suspectObj.channelName;
         DataObject.Template                  = new Template();
         DataObject.Template.Guid             = suspectObj.tcUuid;
         DataObject.Template.PersonInfo       = new Person();
         DataObject.Template.PersonInfo.Name  = suspectObj.name;
         DataObject.Template.PersonInfo.Photo = suspectObj.DBImage;
     }
 }
        public static string ClearPushedDataFormCodeBehind(ref string err, Button btn)
        {
            try
            {
                MyCmpFaceLogWidthImgModel selectedData = new MyCmpFaceLogWidthImgModel();
                foreach (MyCmpFaceLogWidthImgModel obj in ViewDataModel.WarningData.Property.CompareLogDatas)
                {
                    if (obj.ID == btn.CommandParameter.ToString())
                    {
                        selectedData = obj;
                        break;
                    }
                }

                if (ViewDataModel.WarningData.Property.CurCompareLogDatas.Count > 0 && ViewDataModel.WarningData.Property.CurCompareLogDatas.Contains(selectedData))
                {
                    ViewDataModel.WarningData.Property.CurCompareLogDatas.Remove(selectedData);
                }
                ViewDataModel.WarningData.Property.CompareLogDatas.Remove(selectedData);
                ViewDataModel.WarningData.Property.CompareLogDatasCache.Remove(selectedData);
                ViewDataModel.WarningData.RefreshProperty();
            }
            catch (System.Exception ex)
            {
                err = ex.Message;
                MB_MODULES.Views.MyMessage.showYes(ex.Message);
            }

            return(err);
        }
Example #4
0
        private void listComparisonRecord_MouseDoubleClick(object sender, RoutedEventArgs e)
        {
            ThriftServiceNameSpace.ThriftService thirft             = new ThriftServiceNameSpace.ThriftService();
            MyCmpFaceLogWidthImgModel            cmpFaceLogWidthImg = listComparisonRecord.SelectedItem as MyCmpFaceLogWidthImgModel;

            if (cmpFaceLogWidthImg != null)
            {
                if (!isHeader)
                {
                    try
                    {
                        List <byte[]> senceImg = thirft.QuerySenceImg(cmpFaceLogWidthImg.ID, cmpFaceLogWidthImg.date.Split(' ')[0].Replace(@"/", "").Replace(@"/", ""));
                        if (senceImg != null && senceImg.Count > 0 && senceImg[0].Length > 0)
                        {
                            CompInfo    comInfoWin = new CompInfo();
                            BitmapImage bitImage   = ImageConvert.ToBitmapImage(senceImg[0]);

                            comInfoWin.SetCmpInfo(cmpFaceLogWidthImg.SnapImage, cmpFaceLogWidthImg.T1.TemplateImage, bitImage, cmpFaceLogWidthImg.score, cmpFaceLogWidthImg.T1.UserName, cmpFaceLogWidthImg.type,
                                                  cmpFaceLogWidthImg.date + " " + cmpFaceLogWidthImg.time, cmpFaceLogWidthImg.channelName);
                            comInfoWin.Show();
                        }
                        else
                        {
                            MB_MODULES.Views.MyMessage.showYes("获取抓拍实时帧失败!");
                        }
                    }
                    catch (Exception ex)
                    {
                        MB_MODULES.Views.MyMessage.showYes(ex.Message);
                        Logger <OperaExcel> .Log.Error("listComparisonRecord_MouseDoubleClick", ex);
                    }
                }
            }
        }
 /// <summary>
 /// 单个清理已推送结果
 /// </summary>
 /// <param name="selectedData"></param>
 /// <returns></returns>
 public static void ClearSinglePushedData(MyCmpFaceLogWidthImgModel selectedData)
 {
     if (ViewDataModel.WarningData.Property.CurCompareLogDatas.Count > 0 && ViewDataModel.WarningData.Property.CurCompareLogDatas.Contains(selectedData))
     {
         ViewDataModel.WarningData.Property.CurCompareLogDatas.Remove(selectedData);
     }
     ViewDataModel.WarningData.Property.CompareLogDatas.Remove(selectedData);
     ViewDataModel.WarningData.Property.CompareLogDatasCache.Remove(selectedData);
     ViewDataModel.WarningData.RefreshProperty();
 }
        private void GotoBICommandFunc(object obj)
        {
            MyCmpFaceLogWidthImgModel model = obj as MyCmpFaceLogWidthImgModel;

            if (string.IsNullOrEmpty(model.T1.UserName) && string.IsNullOrEmpty(model.T1.TemplateType))
            {
                MyMessage.Show("因智能分析取自模板照片\n请添加模板照片后重新进入智能分析功能");
                return;
            }
            GoToCommandFunc(model, 6);
        }
        /// <summary>
        /// 异步线程,执行告警结果推送服务
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public async Task ExecSendOpt()
        {
            await Task.Run(() =>
            {
                MyCmpFaceLogWidthImgModel gt10Obj = new MyCmpFaceLogWidthImgModel();

                try
                {
                    lock (ViewDataModel.WarningData.Property.OccurNumber)
                    {
                        foreach (var item in ViewDataModel.WarningData.Property.OccurNumber)
                        {
                            //自动推送一条分数较高的

                            /**
                             *
                             * **/
                            if (item.Value == GlobalCache.AppearLimited)
                            {
                                int max  = 0;
                                int curr = 1;
                                MyCmpFaceLogWidthImgModel willSendObj = new MyCmpFaceLogWidthImgModel();
                                foreach (var highScore in ViewDataModel.WarningData.Property.CompareLogDatas)
                                {
                                    //推送完成,删除
                                    Function.ClearPushedWaringData.ClearSinglePushedData(willSendObj);//逐条删除告警结果

                                    if (item.Key.name == highScore.name)
                                    {
                                        ViewDataModel.WarningData.Property.OccurNumber[item.Key] = 0;

                                        curr = highScore.score;
                                        if (curr > max)
                                        {
                                            max         = curr;
                                            willSendObj = highScore;
                                            gt10Obj     = highScore;
                                        }
                                    }
                                }

                                //推送分数较高的告警结果
                                SendOneResultInfo(willSendObj);
                            }
                            //ViewDataModel.WarningData.RefreshProperty();
                        }
                    }
                }
                catch (Exception)
                {
                }
            });
        }
        public static string ClearPushedData(ref string err, object isPushSuccessed, MyCmpFaceLogWidthImgModel selectedData)
        {
            if ((int)isPushSuccessed == 0)
            {
                if (ViewDataModel.WarningData.Property.CurCompareLogDatas.Count > 0 && ViewDataModel.WarningData.Property.CurCompareLogDatas.Contains(selectedData))
                {
                    ViewDataModel.WarningData.Property.CurCompareLogDatas.Remove(selectedData);
                }
                ViewDataModel.WarningData.Property.CompareLogDatas.Remove(selectedData);
                ViewDataModel.WarningData.Property.CompareLogDatasCache.Remove(selectedData);
                ViewDataModel.WarningData.RefreshProperty();
            }

            return(err);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <returns></returns>
        //async Task<ObservableCollection<PointLatLngImg>> SearchResult(object sender, RoutedEventArgs e)
        //{
        //    return await Task<ObservableCollection<PointLatLngImg>>.Run(() =>
        //    {
        //        ObservableCollection<PointLatLngImg> Points = new ObservableCollection<PointLatLngImg>();
        //        if (Convert.ToDateTime(StartDay) <= Convert.ToDateTime(EndDay))
        //        {
        //            long start = DateTimeConvert.ToTotalSeconds(true, StartDay, StartHour, StartMinute);
        //            long end = DateTimeConvert.ToTotalSeconds(false, EndDay, EndHour, EndMinute);

        //            try
        //            {
        //                List<TrackInfo> TrackInfos = new List<TrackInfo>();
        //                if (SnapPersonInfo != null)
        //                {
        //                    TrackInfos = thirft.QueryTrackPlayback(SnapPersonInfo.SnapId, SnapPersonInfo.PhotoByteArray, start, end);
        //                }
        //                else
        //                {
        //                    comServer.SocketOpter.ExceptionMsgFromSTAThread("请添加照片");
        //                }

        //                ListItemSourceObj = new List<CameraSnapPerson>();

        //                int row = 0;
        //                foreach (TrackInfo item in TrackInfos)
        //                {
        //                    CameraSnapPerson csp = new CameraSnapPerson();

        //                    csp.RowNumber = ++row;
        //                    csp.CameraInfo = new Camera();
        //                    csp.CameraInfo.Name = item.Name;
        //                    csp.Datetime = item.Capimg != null ? DateTimeConvert.LongTimeToString(item.Capimg[0].Time) : "";
        //                    csp.CameraInfo.Location = item.Channel_address;
        //                    csp.CameraInfo.Longitude = item.Longitude;
        //                    csp.CameraInfo.Latitude = item.Latitude;
        //                    ListItemSourceObj.Add(csp);

        //                    PointLatLngImg ipoint = new PointLatLngImg();
        //                    if (!string.IsNullOrEmpty(item.Latitude) && !string.IsNullOrEmpty(item.Longitude))
        //                        ipoint.Point = new GMap.NET.PointLatLng(Convert.ToDouble(item.Latitude), Convert.ToDouble(item.Longitude));
        //                    ipoint.Img = ImageConvert.ToBitmapImage(SnapPersonInfo.PhotoByteArray);
        //                    ipoint.ImgVisibility = Visibility.Visible;
        //                    ipoint.ImgframeVisibility = Visibility.Visible;
        //                    Points.Add(ipoint);
        //                }

        //            }
        //            catch (Exception ex)
        //            {
        //                Logger<MainTraceAnalysisView>.Log.Error(ex);
        //            }
        //            OnPropertyChanged("ListItemSourceObj");
        //        }
        //        else
        //        {
        //            comServer.SocketOpter.ExceptionMsgFromSTAThread("结束时间不能大于开始时间");
        //        }

        //        return Points;
        //    }).ConfigureAwait(false);
        //}


        public void GetPersonInfo(object obj)
        {
            Type type = obj.GetType();

            SnapPersonInfo = new CameraSnapPerson();

            try
            {
                if (obj is MyCmpFaceLogWidthImgModel)//对比记录至此
                {
                    MyCmpFaceLogWidthImgModel mfl = obj as MyCmpFaceLogWidthImgModel;
                    SnapPersonInfo.Name                 = mfl.T1.UserName;
                    SnapPersonInfo.Photo                = mfl.SnapImage;
                    SnapPersonInfo.PhotoByteArray       = mfl.SnapImageBuffer;
                    SnapPersonInfo.Datetime             = mfl.date + mfl.time;
                    SnapPersonInfo.CameraInfo           = new Camera();
                    SnapPersonInfo.CameraInfo.Location  = mfl.Address;
                    SnapPersonInfo.CameraInfo.Longitude = mfl.Longitude;
                    SnapPersonInfo.CameraInfo.Latitude  = mfl.Latitude;
                    SnapPersonInfo.Score                = mfl.Score;
                    SnapPersonInfo.Source               = "抓拍库";
                }
                else if (obj is CameraSnapPerson)//静态分析至此
                {
                    SnapPersonInfo        = obj as CameraSnapPerson;
                    SnapPersonInfo.Name   = "通道:" + SnapPersonInfo.Name;
                    SnapPersonInfo.Source = "抓拍库";
                }
                else if (obj is MyFaceObj)//模板库至此
                {
                    MyFaceObj mfo = obj as MyFaceObj;
                    SnapPersonInfo.Name           = "姓名:" + mfo.tcName;
                    SnapPersonInfo.Photo          = mfo.img;
                    SnapPersonInfo.Source         = "模板库";
                    SnapPersonInfo.PhotoByteArray = mfo.imgStream; //ImageConvert.ToImageStream(mfo.img as BitmapImage);
                    SnapPersonInfo.Datetime       = mfo.fa_ob_dTm;
                }
            }
            catch (Exception ex)
            {
                Logger <MainTraceAnalysisView> .Log.Error(ex);
            }
            finally
            {
                OnPropertyChanged("SnapPersonInfo");
            }
        }
        private void GotoTRCommandFunc(object obj)
        {
            MyCmpFaceLogWidthImgModel model = obj as MyCmpFaceLogWidthImgModel;

            GoToCommandFunc(model, 5);
        }
        /// <summary>
        /// 推送一条
        /// </summary>
        /// <param name="signleObj"></param>
        public static int SendOneResultInfo(MyCmpFaceLogWidthImgModel signleObj)
        {
            int res = -1;

            ThriftServiceNameSpace.ThriftService thirft = new ThriftServiceNameSpace.ThriftService();
            try
            {
                RealtimeCmpInfoLBS newRci = new RealtimeCmpInfoLBS();
                newRci.CapID     = signleObj.ID;
                newRci.ObjID     = signleObj.tcUuid;
                newRci.Name      = signleObj.name;
                newRci.Channel   = signleObj.channelName;
                newRci.Longitude = signleObj.Longitude;
                newRci.Latitude  = signleObj.Latitude;
                newRci.Address   = signleObj.Address;
                List <byte[]> snapImgStream = thirft.QueryCmpLogImageH(
                    signleObj.ID,
                    DataConvert.DatetimeConvertToStr.ConvertToString(Convert.ToDateTime(signleObj.time), "yyyyMMdd")
                    );
                if (snapImgStream.Count > 0 && snapImgStream[0].Length > 0)
                {
                    newRci.CapImg = snapImgStream[0];
                }
                List <FaceObj> templateList = thirft.QueryFaceObj(signleObj.tcUuid);
                if (templateList.Count > 0)
                {
                    newRci.Name += "|" + templateList[0].TcRemarks;
                    if (templateList[0].NMain_ftID > 0)
                    {
                        newRci.ObjImg = templateList[0].Tmplate.FirstOrDefault(x => x.NIndex == templateList[0].NMain_ftID - 1).Img;
                    }
                    else
                    {
                        newRci.ObjImg = templateList[0].Tmplate[0].Img;
                    }
                }

                #region old
                //RealtimeCmpInfo info = new RealtimeCmpInfo();
                //info.CapID = signleObj.ID;
                //info.ObjID = signleObj.tcUuid;
                //info.Name = signleObj.name;
                //info.Channel = signleObj.channelName;
                //List<byte[]> listImageBytes = thirft.QueryCmpLogImageH(signleObj.ID, DataConvert.DatetimeConvertToStr.ConvertToString(Convert.ToDateTime(signleObj.time), "yyyyMMdd"));
                //if (listImageBytes.Count > 0 && listImageBytes[0].Length > 0)
                //{
                //    info.CapImg = listImageBytes[0];
                //    Console.WriteLine("抓拍照片大小为:" + listImageBytes[0].Length);
                //}
                //List<FaceObj> ListFaceObj = thirft.QueryFaceObj(signleObj.tcUuid);
                //if (ListFaceObj.Count > 0)
                //{
                //    info.Name += "|" + ListFaceObj[0].TcRemarks;
                //    if (ListFaceObj[0].NMain_ftID > 0)
                //    {
                //        for (int i = 0; i < ListFaceObj[0].Tmplate.Count; i++)//遍历查找主模板照片
                //        {
                //            if (ListFaceObj[0].NMain_ftID - 1 == ListFaceObj[0].Tmplate[i].NIndex)
                //            {
                //                info.ObjImg = ListFaceObj[0].Tmplate[i].Img;
                //                Console.WriteLine("模版照片大小为:" + ListFaceObj[0].Tmplate[i].Img.Length);
                //            }
                //        }
                //    }
                //    else
                //    {
                //        info.ObjImg = ListFaceObj[0].Tmplate[0].Img;
                //        Console.WriteLine("模版照片大小为:" + ListFaceObj[0].Tmplate[0].Img.Length);
                //    }
                //}
                #endregion
                newRci.Time =
                    DateTimeConvert.ToLongFromSubstract(Convert.ToDateTime(signleObj.time), new DateTime(1970, 1, 1));
                //info.Type = cORViewModel.Type.IndexOf(cmpface.type) + 1;
                newRci.Type  = 2;
                newRci.Score = signleObj.score;
                res          = SendCmpToClient(newRci);
            }
            catch (Exception ex)
            {
                MB_MODULES.Views.MyMessage.showYes(ex.Message);
            }
            return(res);
        }
        /// <summary>
        /// 接收跳转过来的对象
        /// 1、智能分析
        /// 2、比对记录
        /// 3、
        /// </summary>
        /// <param name="obj"></param>
        void SetReceivedData(object obj)
        {
            //Type type = obj.GetType();
            Points = new ObservableCollection <PointLatLngImg>();

            try
            {
                if (obj is MyCmpFaceLogWidthImgModel)
                {
                    MyCmpFaceLogWidthImgModel mfl = obj as MyCmpFaceLogWidthImgModel;
                    ForTargetPage                      = new CameraSnapPerson();
                    ForTargetPage.Name                 = mfl.T1.UserName;
                    ForTargetPage.Photo                = mfl.SnapImage;
                    ForTargetPage.PhotoByteArray       = mfl.SnapImageBuffer;
                    ForTargetPage.SnapDate             = mfl.date;
                    ForTargetPage.SnapTime             = mfl.time;
                    ForTargetPage.CameraInfo           = new Camera();
                    ForTargetPage.CameraInfo.Name      = mfl.channelName;
                    ForTargetPage.CameraInfo.Longitude = mfl.Longitude;
                    ForTargetPage.CameraInfo.Latitude  = mfl.Latitude;
                    ForTargetPage.CameraInfo.Location  = mfl.Address;
                    ForTargetPage.Score                = mfl.Score;

                    //PointLatLngImg ipoint = new PointLatLngImg();
                    //ipoint.Img = ImageConvert.ToBitmapImage((SusipciousInfo.PhotoByteArray));

                    //if (!string.IsNullOrEmpty(SusipciousInfo.CameraInfo.Latitude) && !string.IsNullOrEmpty(SusipciousInfo.CameraInfo.Longitude))
                    //    ipoint.Point = new GMap.NET.PointLatLng(Convert.ToDouble(SusipciousInfo.CameraInfo.Latitude), Convert.ToDouble(SusipciousInfo.CameraInfo.Longitude));
                    //else
                    //    ipoint.Point = new GMap.NET.PointLatLng(0, 0);

                    //ipoint.ImgVisibility = Visibility.Visible;
                    //Points.Add(ipoint);
                }
                else if (obj is CameraSnapPerson)//静态分析抓拍库跳至这里
                {
                    CameraSnapPerson cor = obj as CameraSnapPerson;
                    ForTargetPage = new CameraSnapPerson();
                    if ("抓拍库".Equals(cor.Source))
                    {
                        ForTargetPage.Name = "通道:" + cor.Name;
                    }
                    else
                    {
                        ForTargetPage.Name = "姓名:" + cor.Name;
                    }
                    ForTargetPage.Photo                = cor.Photo;
                    ForTargetPage.PhotoByteArray       = cor.PhotoByteArray;
                    ForTargetPage.SnapDate             = cor.SnapDate;
                    ForTargetPage.SnapTime             = cor.SnapTime;
                    ForTargetPage.CameraInfo           = cor.CameraInfo ?? new Camera();
                    ForTargetPage.CameraInfo.Location  = cor.CameraInfo.Location;
                    ForTargetPage.CameraInfo.Longitude = cor.CameraInfo.Longitude;
                    ForTargetPage.CameraInfo.Latitude  = cor.CameraInfo.Latitude;
                }
            }
            catch (Exception ex)
            {
                Logger <MainControlViewModel> .Log.Error("SetReceivedData", ex);
            }
            finally
            {
                //更新统计结果 柱状图
                initBarCharts(true, null);
                SearchSchemaDatas.IsTargetValue = "有目标分析";
                OnPropertyChanged("SearchSchemaDatas");
                OnPropertyChanged("SusipciousInfo");
                //OnPropertyChanged("Points");
            }

            //DrawingAnchor();
        }