public static List <UnChekedWordInfo> GetUnChekedWordInfoList(string text) { List <UnChekedWordInfo> result = new List <UnChekedWordInfo>(); try { try { if (WordModels.Count == 0 && !string.IsNullOrEmpty(UtilSystemVar.UserToken)) { GetAllCheckWordByToken(UtilSystemVar.UserToken); } } catch (Exception ex) { } foreach (var item in WordModels) { if (text.Contains(item.Name)) { var defaultObj = result.FirstOrDefault(x => x.Name == item.Name); if (text.Contains(item.Name) && defaultObj == null) { UnChekedWordInfo unChekedWordInfo = new UnChekedWordInfo(); unChekedWordInfo.ID = item.ID; unChekedWordInfo.Name = item.Name; result.Add(unChekedWordInfo); } } } } catch (Exception ex) { } return(result); }
/// <summary> /// 获取文本中包含的违禁词集合 /// </summary> /// <param name="text"></param> /// <returns></returns> public static List <UnChekedWordInfo> GetUnChekedWordInfoList(string text) { List <UnChekedWordInfo> result = new List <UnChekedWordInfo>(); try { CheckWordRequestInfo info = new CheckWordRequestInfo() { Text = text }; string json = JsonConvert.SerializeObject(info); string resultStr = PostSend("http://localhost:8888/WPFClientCheckWordService/CheckWord", json); CheckWordResponseResult resultInfo = JsonConvert.DeserializeObject <CheckWordResponseResult>(resultStr); if (resultInfo != null && resultInfo.Result && resultInfo.UncheckWordModels != null) { foreach (var item in resultInfo.UncheckWordModels) { var defaultObj = result.FirstOrDefault(x => x.Name == item.Name); if (text.Contains(item.Name) && defaultObj == null) { UnChekedWordInfo unChekedWordInfo = new UnChekedWordInfo(); unChekedWordInfo.ID = item.ID; unChekedWordInfo.Name = item.Name; foreach (var dbInfo in item.SourceDBs) { foreach (var typeInfo in item.NameTypes) { UnChekedDetailWordInfo unChekedDetailWordInfo = new UnChekedDetailWordInfo(); unChekedDetailWordInfo.Name = item.Name; unChekedDetailWordInfo.SourceDB = dbInfo.name; unChekedDetailWordInfo.NameType = typeInfo.name; unChekedDetailWordInfo.SourceDBID = dbInfo.code; unChekedDetailWordInfo.SourceDBPublishtime = dbInfo.publishtime; unChekedWordInfo.UnChekedWordDetailInfos.Add(unChekedDetailWordInfo); } } result.Add(unChekedWordInfo); } } } } catch (Exception ex) { CheckWordUtil.Log.TextLog.SaveError(ex.Message); } return(result); }
private void InLineDetailNameBtn_Click(object sender, RoutedEventArgs e) { var btn = sender as System.Windows.Controls.Button; if (btn != null) { UnChekedWordInfo unChekedWordInfo = btn.Tag as UnChekedWordInfo; unChekedWordInfo.IsSelected = !unChekedWordInfo.IsSelected; foreach (var item in viewModel.UncheckedWordLists) { if (item != unChekedWordInfo) { item.IsSelected = false; } } } }
private void UnCheckWordGrid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Grid grid = sender as Grid; if (grid != null) { UnChekedWordInfo unChekedWordInfo = grid.Tag as UnChekedWordInfo; unChekedWordInfo.IsSelected = !unChekedWordInfo.IsSelected; foreach (var item in viewModel.UncheckedWordLists) { if (item != unChekedWordInfo) { item.IsSelected = false; } } } }
private async void InLineDetailNameBtn_Click(object sender, RoutedEventArgs e) { var btn = sender as Button; if (btn != null) { UnChekedWordInfo unChekedWordInfo = btn.Tag as UnChekedWordInfo; viewModel.SelectedUnChekedWordInfo = unChekedWordInfo; viewModel.IsDetailInfoPopWindowOpen = true; if (unChekedWordInfo.UnChekedWordDetailInfos.Count == 0 && !string.IsNullOrEmpty(unChekedWordInfo.ID)) { List <UnChekedDetailWordInfo> _detailInfos = new List <UnChekedDetailWordInfo>(); //查询违禁词描述 System.Threading.Tasks.Task taskGetWordDiscribe = new System.Threading.Tasks.Task(() => { APIService serviceApi = new APIService(); _detailInfos = serviceApi.GetWordDiscribeLists(unChekedWordInfo.ID); }); taskGetWordDiscribe.Start(); await taskGetWordDiscribe; unChekedWordInfo.UnChekedWordDetailInfos = new ObservableCollection <UnChekedDetailWordInfo>(_detailInfos); viewModel.SelectedUnChekedWordInfo = unChekedWordInfo; } } }
/// <summary> /// 查找文本并高亮显示 /// </summary> private void FindTextAndHightLight() { listUnCheckWordsImages = new List <UnChekedWordInfo>(); listUnCheckWords = new List <UnChekedWordInfo>(); rangeCurrentDealingLists = new ConcurrentBag <Range>(); HasUnChenckedWordsParagraphs = new ConcurrentBag <UnChekedWordExcelRangeInfo>(); var workBook = Globals.ThisAddIn.Application.ActiveWorkbook; var workSheet = (Worksheet)workBook.ActiveSheet; int MaxRow = GetMaxRow(workSheet); int MaxColumn = GetMaxColumn(workSheet); //线程池处理数据 ThreadPool.SetMaxThreads(500, 500); countDealParagraph = MaxRow * MaxColumn; for (int i = 1; i <= MaxRow; i++) { for (int j = 1; j <= MaxColumn; j++) { ThreadPool.QueueUserWorkItem(DealSingleParagraph, (Range)(workSheet.Cells[i, j])); } } myEvent.WaitOne(); foreach (var ItemInfo in HasUnChenckedWordsParagraphs) { Microsoft.Office.Interop.Excel.Range item = ItemInfo.Range; var listUnChekedWord = ItemInfo.UnChekedWordLists; string str = ItemInfo.RangeText; foreach (var strFind in listUnChekedWord.ToList()) { UnChekedWordInfo SelectUnCheckWord = new UnChekedWordInfo() { Name = strFind.Name, UnChekedWordDetailInfos = strFind.UnChekedWordDetailInfos }; MatchCollection mc = Regex.Matches(str, strFind.Name, RegexOptions.IgnoreCase); if (mc.Count > 0) { rangeCurrentDealingLists.Add(item); foreach (Match m in mc) { try { SelectUnCheckWord.UnChekedWordInLineDetailInfos.Add(new UnChekedInLineDetailWordInfo() { InLineText = str, UnCheckWordExcelRange = item }); SelectUnCheckWord.ErrorTotalCount++; } catch (Exception ex) { } } var infoExist = listUnCheckWords.AsParallel().FirstOrDefault(x => x.Name == SelectUnCheckWord.Name); if (infoExist == null) { listUnCheckWords.Add(SelectUnCheckWord); } else { foreach (var itemInfo in SelectUnCheckWord.UnChekedWordInLineDetailInfos) { infoExist.UnChekedWordInLineDetailInfos.Add(itemInfo); infoExist.ErrorTotalCount++; } } } } } List <ImagesDetailInfo> ImagesDetailInfos = GetPicsFromExcel(); foreach (var item in ImagesDetailInfos) { string hashPic = HashHelper.ComputeSHA1(item.ImgResultPath); if (!MyWordAddIn.HostSystemVar.CurrentImgsDictionary.ContainsKey(hashPic)) { var listResult = AutoExcutePicOCR(item.ImgResultPath, item.UnCheckWordExcelRange); if (listResult != null) { listUnCheckWordsImages.AddRange(listResult.ToList()); MyWordAddIn.HostSystemVar.CurrentImgsDictionary.Add(hashPic, listResult.ToList()); } } else { listUnCheckWordsImages.AddRange(MyWordAddIn.HostSystemVar.CurrentImgsDictionary[hashPic].ToList()); } } foreach (var item in listUnCheckWordsImages.ToList()) { var infoExist = listUnCheckWords.AsParallel().FirstOrDefault(x => x.Name == item.Name); if (infoExist == null) { UnChekedWordInfo unChekedWordInfoNoExist = new UnChekedWordInfo(); unChekedWordInfoNoExist.ID = item.ID; unChekedWordInfoNoExist.Name = item.Name; unChekedWordInfoNoExist.ErrorTotalCount = item.ErrorTotalCount; unChekedWordInfoNoExist.UnChekedWordInLineDetailInfos = new ObservableCollection <UnChekedInLineDetailWordInfo>(item.UnChekedWordInLineDetailInfos.ToList()); unChekedWordInfoNoExist.UnChekedWordDetailInfos = new ObservableCollection <UnChekedDetailWordInfo>(item.UnChekedWordDetailInfos.ToList()); unChekedWordInfoNoExist.TypeTextFrom = item.TypeTextFrom; unChekedWordInfoNoExist.IsSelected = item.IsSelected; listUnCheckWords.Add(unChekedWordInfoNoExist); } else { UnChekedWordInfo unChekedWordInfoExist = new UnChekedWordInfo(); unChekedWordInfoExist.ID = infoExist.ID; unChekedWordInfoExist.Name = infoExist.Name; unChekedWordInfoExist.ErrorTotalCount = infoExist.ErrorTotalCount; unChekedWordInfoExist.UnChekedWordInLineDetailInfos = new ObservableCollection <UnChekedInLineDetailWordInfo>(infoExist.UnChekedWordInLineDetailInfos.ToList()); unChekedWordInfoExist.UnChekedWordDetailInfos = new ObservableCollection <UnChekedDetailWordInfo>(infoExist.UnChekedWordDetailInfos.ToList()); unChekedWordInfoExist.TypeTextFrom = infoExist.TypeTextFrom; unChekedWordInfoExist.IsSelected = infoExist.IsSelected; Dispatcher.Invoke(new System.Action(() => { foreach (var detail in item.UnChekedWordInLineDetailInfos.ToList()) { unChekedWordInfoExist.UnChekedWordInLineDetailInfos.Add(detail); unChekedWordInfoExist.ErrorTotalCount++; } listUnCheckWords.Remove(infoExist); listUnCheckWords.Add(unChekedWordInfoExist); })); } } foreach (var SelectUnCheckWord in listUnCheckWords) { var itemInfo = viewModel.UncheckedWordLists.AsParallel().FirstOrDefault(x => x.Name == SelectUnCheckWord.Name); Dispatcher.Invoke(new System.Action(() => { if (itemInfo == null) { viewModel.UncheckedWordLists.Add(SelectUnCheckWord); } else { itemInfo.UnChekedWordInLineDetailInfos = SelectUnCheckWord.UnChekedWordInLineDetailInfos; itemInfo.ErrorTotalCount = SelectUnCheckWord.ErrorTotalCount; } })); } for (int i = 0; i < viewModel.UncheckedWordLists.Count; i++) { var itemInfo = listUnCheckWords.AsParallel().FirstOrDefault(x => x.Name == viewModel.UncheckedWordLists[i].Name); if (itemInfo == null) { Dispatcher.Invoke(new System.Action(() => { viewModel.UncheckedWordLists.RemoveAt(i); })); i--; } } int countTotal = 0; Parallel.ForEach(viewModel.UncheckedWordLists, (item, loopState) => { lock (lockObject) { countTotal += item.ErrorTotalCount; } }); Dispatcher.Invoke(new System.Action(() => { viewModel.WarningTotalCount = countTotal; })); }
/// <summary> /// 查找文本并高亮显示 /// </summary> /// <param name="strFind"></param> private void FindTextAndHightLight() { listUnCheckWords = new List <UnChekedWordInfo>(); rangeSelectLists = new ConcurrentBag <Range>(); HasUnChenckedWordsParagraphs = new ConcurrentBag <UnChekedWordParagraphInfo>(); //线程池处理数据 ThreadPool.SetMaxThreads(500, 500); countDealParagraph = Application.ActiveDocument.Paragraphs.Count; //检测整个文档 foreach (Microsoft.Office.Interop.Word.Paragraph paragraph in Application.ActiveDocument.Paragraphs) { ThreadPool.QueueUserWorkItem(DealSingleParagraph, paragraph); } myEvent.WaitOne(); foreach (var ItemInfo in HasUnChenckedWordsParagraphs) { Microsoft.Office.Interop.Word.Paragraph paragraph = ItemInfo.Paragraph; var listUnChekedWord = ItemInfo.UnChekedWordLists; foreach (var strFind in listUnChekedWord.ToList()) { UnChekedWordInfo SelectUnCheckWord = new UnChekedWordInfo() { ID = strFind.ID, Name = strFind.Name, UnChekedWordDetailInfos = strFind.UnChekedWordDetailInfos }; MatchCollection mc = Regex.Matches(paragraph.Range.Text, strFind.Name, RegexOptions.IgnoreCase); if (mc.Count > 0) { foreach (Match m in mc) { try { int startIndex = paragraph.Range.Start + m.Index; int endIndex = paragraph.Range.Start + m.Index + m.Length; Range keywordRange = Application.ActiveDocument.Range(startIndex, endIndex); rangeSelectLists.Add(keywordRange); SelectUnCheckWord.UnChekedWordInLineDetailInfos.Add(new UnChekedInLineDetailWordInfo() { InLineText = paragraph.Range.Text, UnCheckWordRange = keywordRange }); SelectUnCheckWord.ErrorTotalCount++; } catch (Exception ex) { } } var infoExist = listUnCheckWords.AsParallel().FirstOrDefault(x => x.Name == SelectUnCheckWord.Name); if (infoExist == null) { listUnCheckWords.Add(SelectUnCheckWord); } else { foreach (var item in SelectUnCheckWord.UnChekedWordInLineDetailInfos) { infoExist.UnChekedWordInLineDetailInfos.Add(item); infoExist.ErrorTotalCount++; } } } } } APIService service = new APIService(); bool isCheckPicInDucument = service.GetIsCheckPicAddIn(); if (isCheckPicInDucument) { foreach (var item in listUnCheckWordsImages.ToList()) { var infoExist = listUnCheckWords.AsParallel().FirstOrDefault(x => x.Name == item.Name); if (infoExist == null) { UnChekedWordInfo unChekedWordInfoNoExist = new UnChekedWordInfo(); unChekedWordInfoNoExist.ID = item.ID; unChekedWordInfoNoExist.Name = item.Name; unChekedWordInfoNoExist.ErrorTotalCount = item.ErrorTotalCount; unChekedWordInfoNoExist.Range = item.Range; unChekedWordInfoNoExist.UnCheckWordRange = item.UnCheckWordRange; unChekedWordInfoNoExist.UnChekedWordInLineDetailInfos = new ObservableCollection <UnChekedInLineDetailWordInfo>(item.UnChekedWordInLineDetailInfos.ToList()); unChekedWordInfoNoExist.UnChekedWordDetailInfos = new ObservableCollection <UnChekedDetailWordInfo>(item.UnChekedWordDetailInfos.ToList()); unChekedWordInfoNoExist.TypeTextFrom = item.TypeTextFrom; unChekedWordInfoNoExist.IsSelected = item.IsSelected; listUnCheckWords.Add(unChekedWordInfoNoExist); } else { UnChekedWordInfo unChekedWordInfoExist = new UnChekedWordInfo(); unChekedWordInfoExist.ID = infoExist.ID; unChekedWordInfoExist.Name = infoExist.Name; unChekedWordInfoExist.ErrorTotalCount = infoExist.ErrorTotalCount; unChekedWordInfoExist.Range = infoExist.Range; unChekedWordInfoExist.UnCheckWordRange = infoExist.UnCheckWordRange; unChekedWordInfoExist.UnChekedWordInLineDetailInfos = new ObservableCollection <UnChekedInLineDetailWordInfo>(infoExist.UnChekedWordInLineDetailInfos.ToList()); unChekedWordInfoExist.UnChekedWordDetailInfos = new ObservableCollection <UnChekedDetailWordInfo>(infoExist.UnChekedWordDetailInfos.ToList()); unChekedWordInfoExist.TypeTextFrom = infoExist.TypeTextFrom; unChekedWordInfoExist.IsSelected = infoExist.IsSelected; Dispatcher.Invoke(new Action(() => { foreach (var detail in item.UnChekedWordInLineDetailInfos.ToList()) { unChekedWordInfoExist.UnChekedWordInLineDetailInfos.Add(detail); unChekedWordInfoExist.ErrorTotalCount++; } listUnCheckWords.Remove(infoExist); listUnCheckWords.Add(unChekedWordInfoExist); })); } } } foreach (var SelectUnCheckWord in listUnCheckWords) { var itemInfo = viewModel.UncheckedWordLists.AsParallel().FirstOrDefault(x => x.Name == SelectUnCheckWord.Name); if (itemInfo == null) { Dispatcher.Invoke(new Action(() => { viewModel.UncheckedWordLists.Add(SelectUnCheckWord); })); } else { Dispatcher.Invoke(new Action(() => { itemInfo.UnChekedWordInLineDetailInfos = SelectUnCheckWord.UnChekedWordInLineDetailInfos; itemInfo.ErrorTotalCount = SelectUnCheckWord.ErrorTotalCount; })); } } for (int i = 0; i < viewModel.UncheckedWordLists.Count; i++) { var itemInfo = listUnCheckWords.AsParallel().FirstOrDefault(x => x.Name == viewModel.UncheckedWordLists[i].Name); if (itemInfo == null) { Dispatcher.Invoke(new Action(() => { viewModel.UncheckedWordLists.RemoveAt(i); })); i--; } } int countTotal = 0; Parallel.ForEach(viewModel.UncheckedWordLists, (item, loopState) => { lock (lockObject) { countTotal += item.ErrorTotalCount; } }); Dispatcher.Invoke(new Action(() => { viewModel.WarningTotalCount = countTotal; })); }
/// <summary> /// 获取文本中包含的违禁词集合 /// </summary> /// <param name="text"></param> /// <returns></returns> public static List <UnChekedWordInfo> GetUnChekedWordInfoList(string text, string typeInfo = "Word") { List <UnChekedWordInfo> result = new List <UnChekedWordInfo>(); try { bool isGetAllWord = true; string isGetAllWordsInfo = ""; if (typeInfo == "Word") { isGetAllWordsInfo = string.Format(@"{0}\IsWordGetAllWordsInfo.xml", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\WordAndImgOCR\\LoginInOutInfo\\"); } else { isGetAllWordsInfo = string.Format(@"{0}\IsExcelGetAllWordsInfo.xml", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\WordAndImgOCR\\LoginInOutInfo\\"); } var ui = DataParse.ReadFromXmlPath <string>(isGetAllWordsInfo); if (ui != null && ui.ToString() != "") { try { var isGetAllWords = JsonConvert.DeserializeObject <IsGetAllWordsInfo>(ui.ToString()); if (isGetAllWords != null) { isGetAllWord = isGetAllWords.IsGetAllWords; } } catch (Exception ex) { } } if (isGetAllWord || WordModels.Count == 0) { string myWordModelsInfo = string.Format(@"{0}\MyWordModelsInfo.xml", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\WordAndImgOCR\\LoginInOutInfo\\"); int countTime = 0; while (true) { var uiMyWords = CheckWordUtil.DataParse.ReadFromXmlPath <string>(myWordModelsInfo); if (uiMyWords != null && uiMyWords.ToString() != "") { try { WordModels = JsonConvert.DeserializeObject <List <WordModel> >(uiMyWords.ToString()); IsGetAllWordsInfo info = new IsGetAllWordsInfo(); info.IsGetAllWords = false; DataParse.WriteToXmlPath(JsonConvert.SerializeObject(info), isGetAllWordsInfo); if (WordModels.Count > 0) { break; } } catch { } } countTime++; System.Threading.Thread.Sleep(500); if (countTime > 10) { break; } } } foreach (var item in WordModels) { if (text.Contains(item.Name)) { var defaultObj = result.FirstOrDefault(x => x.Name == item.Name); if (text.Contains(item.Name) && defaultObj == null) { UnChekedWordInfo unChekedWordInfo = new UnChekedWordInfo(); unChekedWordInfo.ID = item.ID; unChekedWordInfo.Name = item.Name; result.Add(unChekedWordInfo); } } } } catch (Exception ex) { CheckWordUtil.Log.TextLog.SaveError(ex.Message); } return(result); }