コード例 #1
0
        public void InserOrUpdateHistory(Book bookPara)
        {
            if (bookPara == null)
            {
                return;
            }
            var book = bookPara.Clone();

            Task.Run(() =>
            {
                DbHelper.AddDbOperator(new Action(() =>
                {
                    DbHistory.InsertOrUpdatHistory(AppDataPath.GetAppCacheDbPath(), book);
                }));

                var temp = Books.FirstOrDefault(p => p.BookId == book.BookId);
                DispatcherHelper.CheckBeginInvokeOnUI(() =>
                {
                    if (temp != null)
                    {
                        Books.Remove(temp);
                    }
                    Books.Insert(0, book);
                });
            });
        }
コード例 #2
0
        /// <summary>
        /// 写入位置信息
        /// </summary>
        /// <param name="positions"></param>
        /// <returns></returns>
        public bool AddPositions(List <Position> positions)
        {
            bool r = true;

            try
            {
                if (positions == null || positions.Count == 0)
                {
                    return(false);
                }

                AddPositionsBySql(positions);
                if (PartitionThread == null)
                {
                    int count2 = DbHistory.U3DPositions.Count();
                    PartitionThread = new Thread(InsertPartitionInfo);
                    PartitionThread.Start();
                    while (bPartitionInitFlag)
                    {
                    }
                }

                //1.批量插入历史数据数据
                DbHistory.BulkInsert(positions);//插件Z.EntityFramework.Extensions功能

                //修改实时数据
                EditTagPositionListOP(positions);
            }
            catch (Exception ex)
            {
                r = false;
            }
            return(r);
        }
コード例 #3
0
        public void OnClearAllCommand(object obj)
        {
            Task.Run(() =>
            {
                var result = DbHistory.ClearBooks(AppDataPath.GetAppCacheDbPath());

                DispatcherHelper.CheckBeginInvokeOnUI(() =>
                {
                    if (result)
                    {
                        Books.Clear();
                    }
                });
            });
        }
コード例 #4
0
        public void LoadData()
        {
            Task.Run(() =>
            {
                var histoies = DbHistory.GetBooks(AppDataPath.GetAppCacheDbPath());

                if (histoies != null)
                {
                    DispatcherHelper.CheckBeginInvokeOnUI(() =>
                    {
                        Books.Clear();
                        histoies.ForEach(p => Books.Add(p));
                    });
                }
                else
                {
                    DispatcherHelper.CheckBeginInvokeOnUI(() =>
                    {
                        Books.Clear();
                    });
                }
            });
        }
コード例 #5
0
        public bool AddPositions(List <Position> positions)
        {
            bool r = true;

            try
            {
                if (positions == null || positions.Count == 0)
                {
                    return(false);
                }

                //string sql = GetInsertSql(positions);
                //if (!string.IsNullOrEmpty(sql))
                //    DbHistory.Database.ExecuteSqlCommand(sql);

                //List<TagPosition> tagPosList = EditTagPositionList(positions);
                //string sql2 = GetUpdateSql(tagPosList);
                //if (!string.IsNullOrEmpty(sql2))
                //    Db.Database.ExecuteSqlCommand(sql2);

                //todo:获取位置信息参与计算的基站
                foreach (Position position in positions)
                {
                    if (position.Archors != null)
                    {
                        List <Archor> archorList = Archors.FindByCodes(position.Archors);
                        foreach (Archor archor in archorList)
                        {
                            //基站位置和Position位置相等(0.1是为了应对Double类型比较,可能出现的误差)
                            if (Math.Abs(archor.Y - position.Y) < 0.1f)
                            {
                                //找到对应ID,不往后找
                                position.TopoNodeId = archor.Dev.ParentId;
                                break;
                            }
                            //if (!position.TopoNodes.Contains(archor.Dev.ParentId))
                            //    position.TopoNodes.Add(archor.Dev.ParentId);
                        }
                    }
                    else
                    {
                        position.TopoNodeId = null;
                    }
                    //Todo:找不到合适的ID,需要处理一下


                    //foreach (string code in position.Archors)
                    //{
                    //    Archor archor=Archors.FindByCode(code);
                    //    if(!position.TopoNodes.Contains(archor.Dev.ParentId))
                    //        position.TopoNodes.Add(archor.Dev.ParentId);
                    //}
                }
                //1.批量插入历史数据数据
                DbHistory.BulkInsert(positions);//插件Z.EntityFramework.Extensions功能
                //2.获取并修改列表
                List <TagPosition> tagPosList = EditTagPositionList(positions);
                //3.更新列表
                TagPositions.Db.BulkUpdate(tagPosList);//插件Z.EntityFramework.Extensions功能
            }
            catch (Exception ex)
            {
                r = false;
            }
            return(r);
        }
コード例 #6
0
ファイル: TabsVM.cs プロジェクト: vildar82/AcadLib
        private void LoadHistory()
        {
            Logger.Info("RestoreTabs TabsVM LoadHistory start");
            var cache = HistoryModel.LoadHistoryCache();

            if (cache.Any())
            {
                Task.Run(() =>
                {
                    var tabs = cache.Select(s => GetTab(s.File, false, s.Start)).ToList();
                    dispatcher.Invoke(() =>
                    {
                        try
                        {
                            tabs.ForEach(t => historySrc.Add(t));
                        }
                        catch (Exception ex)
                        {
                            Logger.Error(ex, "RestoreTabs TabsVM dispatcher.Invoke History adds from cache.");
                        }
                    });
                });
            }

            Task.Run(() =>
            {
                var dbItems = cache.Any()
                    ? new DbHistory().LoadHistoryFiles(cache.Max(m => m.Start)).ToList()
                    : new DbHistory().LoadHistoryFiles().ToList();
                Logger.Info("RestoreTabs TabsVM Load dbItems.");
                var tabs = dbItems.Select(s => GetTab(s.DocPath, false, s.Start)).ToList();
                Task.Delay(TimeSpan.FromMilliseconds(300)).Wait();
                dispatcher.Invoke(() =>
                {
                    try
                    {
                        tabs.ForEach(t => historySrc.Add(t));
                    }
                    catch (Exception ex)
                    {
                        Logger.Error(ex, "RestoreTabs TabsVM dispatcher.Invoke History");
                    }
                });

                var removeTabs = historySrc.Items.GroupBy(g => g.File).SelectMany(s => s.OrderByDescending(o => o.Start).Skip(1));
                Task.Delay(TimeSpan.FromMilliseconds(300)).Wait();
                foreach (var tab in removeTabs)
                {
                    dispatcher.Invoke(() =>
                    {
                        try
                        {
                            historySrc.Remove(tab);
                        }
                        catch
                        {
                        }
                    });
                }
            });

            // Загрузка из базы и сохранение в кеш
            Task.Run(() =>
            {
                if (!cache.Any() || HistoryModel.NeedUpdateCashe())
                {
                    var dbItems = new DbHistory().LoadHistoryFiles().ToList();
                    var tabs    = dbItems.Select(s => new HistoryTab {
                        File = s.DocPath, Start = s.Start
                    })
                                  .GroupBy(g => g.File).Select(s => s.OrderByDescending(o => o.Start).FirstOrDefault()).ToList();
                    HistoryModel.SaveHistoryCache(tabs);
                }
            });
        }