public TempDrawingsStorage ConvertSiemensProjectToDomainModel(SiemensProject siemensProject) { var drawSotrage = new TempDrawingsStorage(); var project = new Drawing { Count = 1, CountAll = 1 }; LoadFromArticle(siemensProject, project, drawSotrage); return drawSotrage; }
public virtual void SaveDrawingsToDataBase(TempDrawingsStorage storage) { storage.Drawings.Where(x => x.ParentId == null).Map(x => x.ParentId = ParentId); foreach (var drawing in storage.Drawings.OrderBy(x => x.Id)) { var oldId = drawing.Id; drawing.Id = null; DrawingsDataManager.Insert(drawing); storage.Drawings.Where(x => x.ParentId == oldId).Map(x => x.ParentId = drawing.Id); } }
public override void SaveDrawingsToDataBase(TempDrawingsStorage storage) { storage.Drawings.Where(x => x.ParentId == null).Map(x => x.ParentId = ParentId); var drawingsList = storage.Drawings.ToList(); var taskList = new List<Task>(); foreach (var drawing in storage.Drawings.OrderBy(x => x.Id)) { var oldId = drawing.Id; drawing.Id = null; DrawingsDataManager.Insert(drawing); storage.Drawings.Where(x => x.ParentId == oldId).Map(x => x.ParentId = drawing.Id); //taskList.Add(_factory.StartNew(() => //{ LoadFiles(drawing, drawingsList); DrawingsDataManager.Update(drawing); //})); } //Task.WaitAll(taskList.ToArray()); }
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(); } }
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; }