Example #1
0
 public TempDrawingsStorage ConvertSiemensProjectToDomainModel(SiemensProject siemensProject)
 {
     var drawSotrage = new TempDrawingsStorage();
     var project = new Drawing { Count = 1, CountAll = 1 };
     LoadFromArticle(siemensProject, project, drawSotrage);
     return drawSotrage;
 }
Example #2
0
 /// <summary>
 /// Загрузить структуру проекта
 /// </summary>
 public SiemensProject LoadStructureProject()
 {
     try
     {
         ErrorDuringLoad = false;
         var firstArticle = _articlesFactory.GetFirstArticle();
         var structure = new SiemensProject
         {
             Article = firstArticle,
             FileNames = GetFileNames(firstArticle)
         };
         LoadStructureRecursiveWithLog(structure);
         return structure;
     }
     catch (FileNotSearizableException ex)
     {
         AppendErrorToLog("Невозможно загрузить стартовый файл. Загрузка прервана.");
         return null;
     }
     catch (FileNotFoundException ex)
     {
         AppendErrorToLog(" Стартовый файл не найден. Загрузка прервана!");
         return null;
     }
     catch (Exception ex)
     {
         AppendErrorToLog(string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
         return null;
     }
 }
        public TempDrawingsStorage ConvertSiemensToDrawings(SiemensProject project, ILogging logger)
        {
            var converter = new ConverterSiemensProject(logger);
            var parser = _dataImportToolsFactory.GetMaterialParser();
            var excluder = _dataImportToolsFactory.GetProjectExcluder();
            var searcher = _dataImportToolsFactory.GetNameMaterialSearch();
            var normalizer = _dataImportToolsFactory.GetFieldsNormalizer();
            converter.ExcluderProject = excluder;
            converter.Log = logger;
            converter.MaterialParser = parser;
            converter.NameMaterialSearch = searcher;
            converter.Normalizer = normalizer;

            return converter.ConvertSiemensProjectToDomainModel(project);
        }
Example #4
0
        private async void wizardControl1_NextClick(object sender, WizardCommandButtonClickEventArgs e)
        {
            if (e.Page == welcomeWizardPage)
            {
                wpPreviewPackSiemens.Enabled = false;
                rtbPreviewLoad.Text = string.Empty;
                var logger = new Logger();
                SiemensProject project = null;

                var task = new Task(() => { project = Controller.LoadStructureSiemens(btnPath.Text, logger); });

                waitPanel.Visible = true;
                wpPreviewPackSiemens.AllowNext = false;
                wpPreviewPackSiemens.AllowBack = false;
                wpPreviewPackSiemens.AllowCancel = false;

                task.Start();
                await task;

                waitPanel.Visible = false;
                wpPreviewPackSiemens.AllowBack = true;
                wpPreviewPackSiemens.AllowCancel = true;

                wpPreviewPackSiemens.Enabled = true;

                foreach (var mess in logger.Messages)
                {
                    rtbPreviewLoad.AppendText(string.Format("{0}\n\r", mess));
                }

                if (!logger.ErrorHappens)
                {
                    _project = project;
                    wpPreviewPackSiemens.AllowNext = true;
                    rtbPreviewLoad.Text += rtbPreviewLoad.Text.Length == 0 ? "Загрузка прошла успешно, ошибок нет!\nМожно переходить к следующему этапу." : "Есть предупреждения. Переходите к следующему этапу, если вы игнорируете их.";
                }
            }

            if (e.Page == wpPreviewPackSiemens)
            {

                wpConvertedDataView.AllowNext = false;
                wpConvertedDataView.AllowBack = false;
                wpConvertedDataView.AllowCancel = false;
                waitPanelConversion.Visible = true;

                var logger = new Logger();
                var task = new Task(() => { _storage = Controller.ConvertSiemensToDrawings(_project, logger); });

                task.Start();
                await task;

                waitPanelConversion.Visible = false;
                if (_storage != null)
                {
                    tlDarwings.DataSource = _storage.Drawings;
                }

                lbMessages.DataSource = logger.Messages.Select(mess => new MessageListBox() { Tag = mess.Tag, Message = mess.Message }).ToList();

                waitPanelConversion.Visible = false;
                wpConvertedDataView.AllowNext = true;
                wpConvertedDataView.AllowBack = true;
                wpConvertedDataView.AllowCancel = true;
                SetVisibleLevelsLine();
            }
        }
Example #5
0
        private void LoadFromArticle(SiemensProject siemensProject, Drawing drawing, TempDrawingsStorage drawStorage)
        {
            var childrenProject = new List<Drawing>();

            drawing.Name = $"{siemensProject.Article.Head.ARTName} {siemensProject.Article.Head.ARTNameRem}".Trim();
            drawing.Designation = siemensProject.Article.Head.ARTPartID.Trim();
            //drawing.Dimension = string.Empty;
            drawing.GostOnMaterial = string.Empty;
            drawing.GostOnSort = string.Empty;
            drawing.MarkSteal = string.Empty;
            drawing.StandartSize = string.Empty;
            drawing.Profile = string.Empty;
            drawing.Files = siemensProject.FileNames.Select(x => new UppyFileInfo() { FileName = x }).ToList();

            if (siemensProject.Article.BOM.Length == 1 && siemensProject.Article.BOM[0].ARTARTPartID.Contains("#"))
            {
                //для проектов состоящих из одного подпроекта, являющегося терминальным - загоняем всю инфу в проект
                var position = siemensProject.Article.BOM[0];

                drawing.Weight = Convert.ToDecimal(siemensProject.Article.Head.ARTWeight) /
                               Convert.ToInt32(position.ARTARTQuant) / 1000;
                drawing.CountAll = drawing.CountAll * Convert.ToInt32(position.ARTARTQuant);
                drawing.WeightAll = drawing.Weight * drawing.CountAll;
                drawing.Count = Convert.ToInt32(position.ARTARTQuant) * drawing.Count;

                try
                {
                    drawing.Length = MaterialParser.GetLength(position);
                    drawing.Width = MaterialParser.GetWidth(position);
                }
                catch (Exception ex)
                {
                    AppendMessageToLog(new LogMessage("Ошибка парсиинга длина и/или ширины.", drawing, TypeMessage.Error));
                }

                drawing.GostOnSort = Normalizer.SetEmptySpacesGost(MaterialParser.GetGOSTS(position));
                drawing.StandartSize = MaterialParser.GetStandartSize(position);
                drawing.Designation = MaterialParser.GetDesignation(position) == string.Empty ? drawing.Designation : MaterialParser.GetDesignation(position);
                drawing.MarkSteal = MaterialParser.GetMarkSteal(position);
                drawing.Profile = NameMaterialSearch.GetNameMaterialByGost(drawing.GostOnSort);
                drawing.MarkSteal = Normalizer.RemoveUnUseInfoAboutMarkSteal(drawing.MarkSteal);

                drawStorage.Add(drawing);
            }
            else
            {
                drawStorage.Add(drawing);

                foreach (var position in siemensProject.Article.BOM.Where(x => (ExcluderProject != null && !ExcluderProject.IsNeedExclude(x)) || ExcluderProject == null))
                {
                    var subProject = new Drawing
                    {
                        ParentId = drawing.Id,
                        Count = Convert.ToInt32(position.ARTARTQuant),
                        Note = string.Empty,
                        NumberOnSpec = Normalizer.NormalizePositionNumber(position.ARTARTPosNo),
                        Profile = string.Empty
                    };

                    subProject.CountAll = subProject.Count * drawing.CountAll;

                    if (position.ARTARTPartID.Contains("#"))
                    {
                        //дальше лезть не надо
                        subProject.Name = position.ARTARTPosName.Trim();
                        subProject.Designation = position.ARTARTSZNo.Trim();

                        if (subProject.Designation == string.Empty)
                        {
                            subProject.Designation = $"{drawing.Designation} поз. {subProject.NumberOnSpec}".Trim();
                        }

                        try
                        {
                            subProject.Length = MaterialParser.GetLength(position);
                            subProject.Width = MaterialParser.GetWidth(position);
                        }
                        catch (Exception ex)
                        {
                            AppendMessageToLog(new LogMessage("Ошибка парсиинга длина и/или ширины.", drawing, TypeMessage.Error));
                        }

                        subProject.GostOnSort = Normalizer.SetEmptySpacesGost(MaterialParser.GetGOSTS(position));
                        subProject.StandartSize = MaterialParser.GetStandartSize(position);
                        subProject.Designation = MaterialParser.GetDesignation(position) == string.Empty ? subProject.Designation : MaterialParser.GetDesignation(position);
                        subProject.MarkSteal = MaterialParser.GetMarkSteal(position);
                        subProject.Profile = NameMaterialSearch.GetNameMaterialByGost(subProject.GostOnSort);
                        //subProject.Dimension = string.Empty;
                        subProject.GostOnMaterial = string.Empty;
                        subProject.Weight = Convert.ToDecimal(position.ARTARTPosWeight) / 1000 / subProject.Count;
                        subProject.WeightAll = subProject.CountAll * subProject.Weight;
                        subProject.MarkSteal = Normalizer.RemoveUnUseInfoAboutMarkSteal(subProject.MarkSteal);

                        childrenProject.Add(subProject);
                        drawStorage.Add(subProject);
                    }
                    else
                    {
                        //ищем следующий файл
                        if (!string.IsNullOrWhiteSpace(position.ARTARTPartID))
                        {
                            var subSiemensProject =
                                siemensProject.Positions.FirstOrDefault(
                                    x => x.Article.Head.ARTPartID.Contains(position.ARTARTPartID));

                            LoadFromArticle(subSiemensProject, subProject, drawStorage);

                            childrenProject.Add(subProject);
                        }
                        else
                        {
                            subProject.Note = position.ARTARTPosNo + "_ERROR!!!!";
                            subProject.Name = position.Items.Aggregate((x, y) => x.Trim() + " " + y.Trim()).Trim();
                            subProject.Designation = string.Empty;
                            //subProject.Dimension = string.Empty;
                            subProject.GostOnMaterial = string.Empty;
                            subProject.GostOnSort = string.Empty;
                            subProject.MarkSteal = string.Empty;
                            subProject.StandartSize = string.Empty;
                            drawStorage.Add(subProject);

                            AppendMessageToLog(new LogMessage("Ошибка поиска следующего файла.", subProject, TypeMessage.Warning));

                            childrenProject.Add(subProject);
                        }
                    }
                }

                drawing.WeightAll = childrenProject.Sum(x => x.WeightAll);
            }

            if (Math.Round(drawing.WeightAll) == 0)
            {
                drawing.WeightAll = Convert.ToDecimal(siemensProject.Article.Head.ARTWeight) * drawing.CountAll / 1000;
            }

            drawing.Weight = drawing.WeightAll / drawing.CountAll;
        }
Example #6
0
 private static string GetFullStrucutrePath(SiemensProject structure)
 {
     if (structure.Parent != null)
         return " Входит в: " + structure.Article.Head.ARTPartID + GetFullStrucutrePath(structure.Parent);
     return " Входит в: " + structure.Article.Head.ARTPartID;
 }
Example #7
0
 private void LoadStructureRecursiveWithLog(SiemensProject structure)
 {
     foreach (var position in structure.Article.BOM.Where(x => !x.ARTARTPartID.Contains("#")).Where(y => !string.IsNullOrWhiteSpace(y.ARTARTPartID)))
     {
         try
         {
             var firstArticle = _articlesFactory.GetArticle(position.ARTARTPartID);
             var subStructure = new SiemensProject { Article = firstArticle, Parent = structure };
             subStructure.FileNames = GetFileNames(firstArticle);
             structure.Positions.Add(subStructure);
             LoadStructureRecursiveWithLog(subStructure);
         }
         catch (ArgumentException ex)
         {
             AppendMessageToLog(
                 $"Невозможно загрузить файл чертежа {position.ARTARTPartID}, загрузка прервана. Структура: {GetFullStrucutrePath(structure)}");
         }
         catch (FileNotSearizableException ex)
         {
             AppendMessageToLog(
                 $"Невозможно загрузить файл чертежа {position.ARTARTPartID}, загрузка прервана. Структура: {GetFullStrucutrePath(structure)}");
         }
         catch (FileNotFoundException ex)
         {
             AppendMessageToLog(
                 $"Не найден файл чертежа {position.ARTARTPartID}, загрузка прервана. Структура: {GetFullStrucutrePath(structure)}");
         }
         catch (Exception ex)
         {
             AppendMessageToLog(
                 $"{ex.Message}\n{ex.StackTrace}\n\n\n. Ошибка при обработке чертежа {position.ARTARTPartID}. Структура: {GetFullStrucutrePath(structure)}");
         }
     }
 }