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); }); }); }
/// <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); }
public void OnClearAllCommand(object obj) { Task.Run(() => { var result = DbHistory.ClearBooks(AppDataPath.GetAppCacheDbPath()); DispatcherHelper.CheckBeginInvokeOnUI(() => { if (result) { Books.Clear(); } }); }); }
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(); }); } }); }
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); }
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); } }); }