/// <summary> /// Создание списка xml объектов /// </summary> /// <param name="modelAuto">Модель схемы по которой делаем список</param> /// <param name="modelXlsx">Xlsx файлы откуда тянем список</param> /// <param name="xmlModel">Модель файлов xml</param> /// <param name="pathSaveXml">Путь сохранения файла xml</param> public void CreateListModel(GenerateSchemesAutoModel modelAuto, ModelXlsxGenerate modelXlsx, ListViewModelXmlFileGenerateMethod xmlModel, string pathSaveXml) { if (modelAuto.IsValidationScheme() && modelXlsx.IsValidationXlsx()) { xmlModel.UpdateOn(); modelXlsx.UpdateOn(); Task.Run((delegate { try { var xmlConvert = new XmlConvert(); var instanceList = Activator.CreateInstance(typeof(List <>).MakeGenericType(modelAuto.Schemes.TypeObject)); var instanceMapper = Activator.CreateInstance(typeof(DataNamesMapper <>).MakeGenericType(modelAuto.Schemes.TypeObject)); LibraryAIS3Windows.XlsxToDataTable.XlsxToDataTable xlsxToDataTable = new LibraryAIS3Windows.XlsxToDataTable.XlsxToDataTable(); foreach (var modelScheme in modelXlsx.SchemesXlsx) { var dataTable = xlsxToDataTable.GetDateTableXslx(modelScheme.FullPathFile, modelScheme.SelectionSheet, 1, (uint)modelScheme.NumberMemoRow); if (dataTable.Columns.Cast <DataColumn>().Select(x => x.ColumnName).Any(col => modelAuto.Schemes.DescriptionMemo.Contains(col))) { var dataMapType = instanceMapper.GetType().GetMethod("Map")?.Invoke(instanceMapper, new object[] { dataTable }); instanceList.GetType().GetMethod("AddRange")?.Invoke(instanceList, new[] { dataMapType }); } else { modelScheme.ErrorXml = $"Отсутствуют заголовки {string.Join(",", modelAuto.Schemes.DescriptionMemo)}"; } } var instanceAutoGenerate = Activator.CreateInstance(typeof(AutoGenerateSchemes)); var property = typeof(AutoGenerateSchemes).GetProperty(modelAuto.Schemes.NameSchemes); if (property != null) { property.SetValue(instanceAutoGenerate, instanceMapper.GetType().GetMethod("ListToClass")?.Invoke(instanceMapper, new [] { instanceList }), null); } //Генерация файла xmlConvert.SerializerClassToXml($"{pathSaveXml}AutoGenerateSchemes.xml", instanceAutoGenerate, instanceAutoGenerate.GetType()); //Добавление в модель xmlModel.AddXmlFile(pathSaveXml); modelXlsx.UpdateOff(); xmlModel.UpdateOff(); } catch (Exception e) { MessageBox.Show(e.Message); } })); } }
/// <summary> /// Формирование списков xml по схеме!!! /// </summary> /// <param name="modelsnuone">Выбор модели Сериализации файла</param> /// <param name="textboxfilemodel">Модель файла</param> /// <param name="shemedocument">Модель схем</param> /// <param name="checkBoxModel">Модель заголовка</param> /// <param name="path">Путь сохранение xml</param> /// <param name="xmlmodel">ListView для отражения xml</param> public void FormirovanieXml(ModelSnuOneFormNameListProperty modelsnuone, TextBoxModelMethod textboxfilemodel, ShemeMethod shemedocument, CheckBoxModel checkBoxModel, string path, ListViewModelXmlFileGenerateMethod xmlmodel) { XmlConvert convert = new XmlConvert(); if (shemedocument.IsValidation()) { switch (shemedocument.Shema.Shemes) { case "SnuOneForm": if (textboxfilemodel.IsValidation() && modelsnuone.IsValidation()) { xmlmodel.UpdateOn(); Task.Run((delegate { try { convert.ConvertListSnuOneForm(textboxfilemodel.Path, modelsnuone.SelectList.Listletter, modelsnuone.SelectColumnLetter.ColumnName, checkBoxModel.IsCheced, string.Join(null, path, "Inn.xml")); xmlmodel.AddXmlFile(path); xmlmodel.UpdateOff(); } catch (Exception e) { MessageBox.Show(e.Message); } })); } break; case "TreatmentFpd": if (textboxfilemodel.IsValidation() && modelsnuone.IsValidation() && checkBoxModel.IsValidation()) { xmlmodel.UpdateOn(); Task.Run((delegate { try { convert.ConvertListFpdReg(textboxfilemodel.Path, modelsnuone.SelectList.Listletter, modelsnuone.SelectColumnLetter.ColumnName, checkBoxModel.SelectIntRow, string.Join(null, path, "Fpd.xml")); xmlmodel.AddXmlFile(path); xmlmodel.UpdateOff(); } catch (Exception e) { MessageBox.Show(e.Message); } })); } break; case "FullInnCount": if (textboxfilemodel.IsValidation() && modelsnuone.IsValidation() && checkBoxModel.IsValidation()) { xmlmodel.UpdateOn(); Task.Run((delegate { try { convert.ConvertInnMassList(textboxfilemodel.Path, modelsnuone.SelectList.Listletter, modelsnuone.SelectColumnLetter.ColumnName, checkBoxModel.SelectIntRow, checkBoxModel.Colelementcollection, string.Join(null, path, "InnFull.xml")); xmlmodel.AddXmlFile(path); xmlmodel.UpdateOff(); } catch (Exception e) { MessageBox.Show(e.Message); } })); } break; case "FidZorI": if (textboxfilemodel.IsValidation() && modelsnuone.IsValidation()) { xmlmodel.UpdateOn(); Task.Run((delegate { try { convert.SerializFidZorI(textboxfilemodel.Path, modelsnuone.SelectList.Listletter, modelsnuone.SelectColumnLetter.ColumnName, checkBoxModel.IsCheced, string.Join(null, path, "Fid.xml")); xmlmodel.AddXmlFile(path); xmlmodel.UpdateOff(); } catch (Exception e) { MessageBox.Show(e.Message); } })); } break; case "FidFace": if (textboxfilemodel.IsValidation() && modelsnuone.IsValidation()) { xmlmodel.UpdateOn(); Task.Run(delegate { try { convert.ConvertFidFace(textboxfilemodel.Path, modelsnuone.SelectList.Listletter, modelsnuone.SelectColumnLetter.ColumnName, checkBoxModel.IsCheced, string.Join(null, path, "FidFace.xml")); xmlmodel.AddXmlFile(path); xmlmodel.UpdateOff(); } catch (Exception e) { MessageBox.Show(e.Message); } }); } break; case "IdZaprosVisual": if (textboxfilemodel.IsValidation() && modelsnuone.IsValidation()) { xmlmodel.UpdateOn(); Task.Run(delegate { try { convert.ConvertIdVisual(textboxfilemodel.Path, modelsnuone.SelectList.Listletter, modelsnuone.SelectColumnLetter.ColumnName, checkBoxModel.IsCheced, string.Join(null, path, "IdZaprosVisual.xml")); xmlmodel.AddXmlFile(path); xmlmodel.UpdateOff(); } catch (Exception e) { MessageBox.Show(e.Message); } }); } break; } } }