private void FillSummary(WcfSynonymBox result) { firms.Clear(); int matchCnt = 0; foreach (var res in result.SynonymBox) { var info = res.SynonymList; foreach (var item in info) { if (!firms.ContainsKey(item.FirmCode)) { firms[item.FirmCode] = new FirmSummary(item.FirmName); firms[item.FirmCode].AddInfo(res.OriginalName, item.ProductId, item.Junk); } } } firms = firms.OrderByDescending(f => f.Value.SynonymCount()).ToDictionary(pair => pair.Key, pair => pair.Value); }
public static WcfSynonymBox TransformToSynonymBox(Dictionary <string, SynonymSummary> matches) { var result = new WcfSynonymBox(); result.Status = TaskState.Success; foreach (var key in matches) { var listItem = new WcfSynonymList(); listItem.OriginalName = key.Value.OriginalName(); var summary = key.Value.Summary(); foreach (var synonymInfo in summary) { listItem.SynonymList.Add(new WcfSynonymItem() { FirmCode = synonymInfo.FirmCode, FirmName = synonymInfo.FirmName, ProductId = synonymInfo.ProductId, Junk = synonymInfo.Junk }); } result.SynonymBox.Add(listItem); } return(result); }
private void OnTimedEvent(object sender, System.EventArgs e) { try { if (matching) { if (StartMatching(currentPriceItemId, currentPriceCode)) { matching = false; if (!frmMatchProgr.Modal) { frmMatchProgr.ShowDialog(); } } else { timer.Stop(); } return; } WcfSynonymBox res = owner._priceProcessor.FindSynonymsResult(currentTask.ToString()); if (res.Status == TaskState.Running) { frmMatchProgr.SetValue(Convert.ToUInt32(res.Message)); owner.EnableMatchBtn(); return; } if (res.Status == TaskState.Success) { timer.Stop(); FillSummary(res); // заполняем информацию о совпадениях по поставщикам if (iterCount == 0) { frmMatchRes.Fill(firms); // выводим окно со списком совпадений CloseProgressBar(); } else if (firms.Count > 0 && iterCount > 0) { iterCount--; CreateSynonyms(firms.First().Key); if (iterCount == 0) { CloseProgressBar(); return; } StartMatching(currentPriceItemId, currentPriceCode); } else { iterCount = 0; CloseProgressBar(); } return; } if (res.Status == TaskState.Error) { iterCount = 0; timer.Stop(); CloseProgressBar(); MessageBox.Show(res.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (res.Status == TaskState.Canceled) { iterCount = 0; timer.Stop(); CloseProgressBar(); } } catch (EndpointNotFoundException ex) { timer.Stop(); CloseProgressBar(); ErrorOnConnectToPriceProcessor(_logger, ex); } catch (Exception ex) { _logger.Error("Ошибка при сопоставлении", ex); timer.Stop(); CloseProgressBar(); MessageBox.Show("Ошибка в процессе сопоставления синонимов. Сообщение об ошибке отправлено разработчику", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } }