Example #1
0
        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);
        }
Example #3
0
        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);
            }
        }