Esempio n. 1
0
 public IList<Epdm.BomCells> Bom(string filePath, string config, bool asBuild)
 {
     var bomClass = new Epdm
     {
         BomId = BomId,
         AssemblyPath = filePath,
     };
     Exception exception;
     return bomClass.BomList(filePath, config, asBuild, out exception);
 }
        void ПолучитьПереченьДеталей()
        {
            try
            {
                if (AutoCompleteTextBox1.Text.ToLower().EndsWith("dprt"))
                {
                    var emdpService = new Epdm();
                    var path = emdpService.SearchDoc(AutoCompleteTextBox1.Text);
                    var filePath = path[0].FilePath;
                    ПутьКСборке = filePath;
                    var lastVersion = SwEpdm.GetVersionOfFile(filePath, Settings.Default.PdmBaseName);
                    int pdmId;
                    int curVer;
                    string name;
                    List<string> configurations;
                    SwEpdm.GetIdPdm(filePath, out name, out pdmId, out curVer, out configurations, true); 

                    var partsListXml2S = new List<PartsListXml2>();

                    var listOfExc = new List<Exception>();

                    foreach (var configname in configurations)
                    {
                        Exception exc;
                        var existDxf = ExistLastDxf(pdmId, curVer, configname, out exc);
                        if (exc != null)
                        {
                            listOfExc.Add(exc);
                        } 

                        partsListXml2S.Add(new PartsListXml2
                        {
                            Наименование = Path.GetFileNameWithoutExtension(filePath),
                            Путь = filePath,
                            Xml = ExportXmlSql.ExistXml(filePath, lastVersion),
                            CurrentVersion = lastVersion,
                            Конфигурация = configname,
                            IdPmd = pdmId,
                            Dxf = existDxf,
                            ImageSrc = existDxf ?
                                        @"\DataControls\Pictures\cancel.jpg" : @"\DataControls\Pictures\empty.jpg",
                            НаименованиеБезРасширения = Path.GetFileNameWithoutExtension(filePath)
                        });
                    }                  

                    PartsListXml2sDataGrid.ItemsSource = null;
                    PartsListXml2sDataGrid.ItemsSource = partsListXml2S;

                    ПереченьДеталей_Copy.Visibility = PartsListXml2sDataGrid.ItemsSource == null
                        ? Visibility.Hidden
                        : Visibility.Visible;

                    PartsListXml2sDataGrid_Copy.Visibility = Visibility.Collapsed;
                    XmlParts1_Copy.Visibility = Visibility.Collapsed;
                    
                }

                else
                {
                    if (CurrentModel != AutoCompleteTextBox1.Text)
                    {
                        var emdpService = new Epdm();
                        var path = emdpService.SearchDoc(AutoCompleteTextBox1.Text);                         
                        ПутьКСборке = path[0].FilePath;
                        var configs = emdpService.GetConfiguration(path[0].FilePath);
                        AssemblyConfigs = configs.ToList();
                        ConfigsCombo.ItemsSource = AssemblyConfigs;
                        COnf.Visibility = Visibility.Visible;
                        ConfigsCombo.Text = AssemblyConfigs[0];
                    }

                    var bomClass = new Epdm
                    {
                        BomId = 8,
                        AssemblyPath = ПутьКСборке
                    };
                    Exception exception;
                    var спецификация = bomClass.BomList(ПутьКСборке, ConfigsCombo.Text, false, out exception);
                    if (exception != null)
                    {
                        MessageBox.Show(exception.StackTrace);
                    }                    
                    
                    var partsListXml2S = new List<PartsListXml2>();
                    foreach (var item in спецификация)
                    {
                        if (!item.ТипФайла.ToLower().Contains("dprt")) continue;
                        if (item.Раздел == "Детали" || item.Раздел == "")
                        {
                            partsListXml2S.Add(new PartsListXml2
                            {
                                CurrentVersion = Convert.ToInt32(item.ПоследняяВерсия),
                                IdPmd = (int)item.IdPdm,
                                Наименование = item.FileName,
                                Путь = item.FilePath + @"\" + item.FileName,
                                Конфигурация = item.Конфигурация,
                                Материал = item.Материал
                            });
                        }
                    }

                    #region to delete
                    //var message = "";
                    //foreach (var item in excList)
                    //{
                    //    message = message + "\n_________\n" + item.Message + "\n" + item.StackTrace;
                    //}
                    //if (!string.IsNullOrEmpty(message))
                    //{
                    //    MessageBox.Show(message);
                    //} 
                    #endregion

                    foreach (var listXml in partsListXml2S)
                    {
                        listXml.Xml =
                            ExportXmlSql.ExistXml(listXml.Наименование, listXml.CurrentVersion);
                        listXml.НаименованиеБезРасширения = listXml.Наименование.ToUpper().Replace(".SLDPRT", "");
                    }

                    var list = InnerPartsList();

                    var newList = from partsListXml2 in partsListXml2S
                        join listXml2 in list
                            on partsListXml2.НаименованиеБезРасширения.ToLower() equals
                            listXml2.PartNumber.ToLower()
                        select new
                        {
                            partsListXml2.НаименованиеБезРасширения,
                            listXml2.PartNumber,

                            listXml2.ЗаготовкаВысота,
                            listXml2.Толщина,
                            listXml2.ЗаготовкаШирина,
                            listXml2.Гибы,
                            listXml2.ПлощадьПокрытия,
                            listXml2.Конфигурация,
                            listXml2.ПлощадьS,
                            listXml2.МассаS,
                            partsListXml2.Материал
                        };


                    var newList2 = newList.Select(variable => new PartsListXml2
                    {
                        НаименованиеБезРасширения = variable.НаименованиеБезРасширения,
                        PartNumber = variable.PartNumber,
                        ЗаготовкаВысота = variable.ЗаготовкаВысота,
                        Толщина = variable.Толщина,
                        ЗаготовкаШирина = variable.ЗаготовкаШирина,
                        Гибы = variable.Гибы,
                        ПлощадьПокрытия = variable.ПлощадьПокрытия,
                        Конфигурация = variable.Конфигурация,
                        Материал = variable.Материал
                    }).ToList();


                    var newListOrder = new List<PartsListXml2>();
                    foreach (var partsListXml2 in partsListXml2S)
                    {
                        try
                        {
                            var selectedItem =
                                newList2.Where(
                                    x =>
                                        string.Equals(x.НаименованиеБезРасширения.ToLower(),
                                            partsListXml2.Наименование.Replace(".SLDPRT", "").ToLower(),
                                            StringComparison.CurrentCultureIgnoreCase) &&
                                        x.Конфигурация == partsListXml2.Конфигурация);

                            foreach (var listXml2 in selectedItem)
                            {
                                if (newListOrder.Any(x => string.Equals(x.НаименованиеБезРасширения,
                                    listXml2.НаименованиеБезРасширения,
                                    StringComparison.CurrentCultureIgnoreCase) &&
                                                          x.Конфигурация == listXml2.Конфигурация)) continue;

                                newListOrder.Add(new PartsListXml2
                                {
                                    НаименованиеБезРасширения = listXml2.НаименованиеБезРасширения,
                                    PartNumber = listXml2.PartNumber,

                                    ЗаготовкаВысота = listXml2.ЗаготовкаВысота,
                                    Толщина = listXml2.Толщина,
                                    ЗаготовкаШирина = listXml2.ЗаготовкаШирина,
                                    Гибы = listXml2.Гибы,
                                    ПлощадьПокрытия = listXml2.ПлощадьПокрытия,
                                    Конфигурация = listXml2.Конфигурация,

                                    Материал = listXml2.Материал,
                                    МассаS = GetMass(listXml2.ПлощадьПокрытия, listXml2.Толщина)
                                });
                            }
                        }
                        catch (Exception exceptio)
                        {
                            MessageBox.Show(exceptio.StackTrace);
                        }
                    }

                    var listXml2S = new List<PartsListXml2>();

                    partsListXml2S = partsListXml2S.OrderBy(x => x.Наименование).ThenBy(x=>x.Конфигурация).ToList();
                    listXml2S.Add(partsListXml2S[0]);

                    for (var i = 0; i < partsListXml2S.Count - 1; i++)
                    {
                        var currentItem = partsListXml2S[i];
                        var newItem = partsListXml2S[i + 1];
                        if (!(currentItem.Наименование == newItem.Наименование && currentItem.Конфигурация == newItem.Конфигурация))
                        {                            
                            listXml2S.Add(newItem);
                        }
                    }

                    foreach (var item in listXml2S)
                    {
                        Exception exc;
                        var existDxf = ExistLastDxf((int)item.IdPmd, (int)item.CurrentVersion, item.Конфигурация, out exc);
                        item.Dxf = existDxf;
                        item.ImageSrc = existDxf ?
                                        @"\DataControls\Pictures\cancel.jpg" : @"\DataControls\Pictures\empty.jpg";
                    }



                    PartsListXml2sDataGrid.ItemsSource = null;
                    PartsListXml2sDataGrid.ItemsSource = listXml2S;

                    ПереченьДеталей_Copy.Visibility = PartsListXml2sDataGrid.ItemsSource == null
                        ? Visibility.Hidden
                        : Visibility.Visible;

                    PartsListXml2sDataGrid_Copy.Visibility = Visibility.Visible;
                    XmlParts1_Copy.Visibility = Visibility.Visible;

                    PartsListXml2sDataGrid_Copy.ItemsSource =
                        newListOrder.OrderBy(x => x.НаименованиеБезРасширения).ThenBy(x => x.Конфигурация);
                }
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.ToString());
            }
            finally
            {
                CurrentModel = AutoCompleteTextBox1.Text;
                var sdgv = (List<PartsListXml2>)PartsListXml2sDataGrid.ItemsSource;
                ПереченьДеталей_Copy.Header = CurrentModel.ToLower().EndsWith("prt") ? $"Деталь {CurrentModel}" : 
                    $"Перечень деталей для сборки {CurrentModel.ToUpper().Replace(".SLDASM","")}-{ConfigsCombo.Text} (Всего деталей: {PartsListXml2sDataGrid.Items.Count}шт. Разверток - {sdgv.Count(x=>x.Dxf)} 1С - {sdgv.Count(x => x.Xml)})";
            }
        }