/// <summary> /// Создать XML файлы из данных, считанных из БД /// </summary> /// <param name="rep_year">Отчетный год</param> /// <param name="org">Организация</param> /// <param name="list_id">Список идентификаторов пакетов</param> /// <param name="connectionStr">Строка подключения</param> /// <param name="mapXml">Карта - выходной параметр</param> /// <param name="szv3Xml">Сводная ведомость - выходной параметр</param> /// <param name="szv2XmlArray">Описи - выходной параметр</param> /// <param name="szv1XmlArray">Документы СЗВ1 - выходной параметр</param> /// <returns></returns> public static int MakeXml(int repYear, Org org, IEnumerable <long> listId, string connectionStr, out XmlDocument mapXml, out XmlDocument szv3Xml, out IEnumerable <XmlDocument> szv2XmlArray, out IEnumerable <IEnumerable <XmlDocument> > szv1XmlArray) { int res = 0; XmlDocument szv3 = Szv3Xml.GetXml(org.idVal, repYear, connectionStr); LinkedList <XmlDocument> szv2Array = new LinkedList <XmlDocument>(); LinkedList <IEnumerable <XmlDocument> > szv1Array = new LinkedList <IEnumerable <XmlDocument> >(); foreach (long listID in listId) { XmlDocument szv2 = Szv2Xml.GetXml(listID, connectionStr); long[] docsID = Docs.GetDocsID(listID, connectionStr); IEnumerable <XmlDocument> szv1 = Szv1Xml.GetXml(docsID, org, connectionStr); if (szv1 != null && szv2 != null) { szv2Array.AddLast(szv2); szv1Array.AddLast(szv1); } else { res = -1; } } mapXml = MapXml.GetXml(szv2Array, szv1Array); szv3Xml = szv3; szv2XmlArray = szv2Array; szv1XmlArray = szv1Array; // return(res); }
private void worker_DoWork(object sender, DoWorkEventArgs e) { mapXml = null; szv3Xml = null; szv2Array = null; szv1Array = null; Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); if (Convert.ToInt32(e.Argument) == 1) { long[] markedLists = MarkedLists(); Storage.MakeXml(_repYear, _organization, markedLists, _connection, out mapXml, out szv3Xml, out szv2Array, out szv1Array); } else if (Convert.ToInt32(e.Argument) == 2) { bool isCorrect; DirectoryInfo dir = Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), Settings.Default.TempFolder)); using (StreamWriter writer = new StreamWriter(Path.Combine(dir.FullName, "Ошибки XML.txt"), false)) { writer.AutoFlush = true; OrgPropXml orgProperties = GetOrgProperties(); isCorrect = Storage.ImportXml(xmlPathTextBox.Text, orgProperties, out szv3Xml, out szv2Array, out szv1Array, writer); } if (!isCorrect) { MainForm.ShowErrorMessage( "Импорт xml файлов прошел некорректно.\nФормирование электронного контейнера невозможно!"); Process.Start(Path.Combine(dir.FullName, "Ошибки XML.txt")); return; } mapXml = MapXml.GetXml(szv2Array, szv1Array); } if (mapXml != null && szv3Xml != null && szv2Array != null && szv1Array != null) { MakeContainer(mapXml, szv3Xml, szv2Array, szv1Array); stopWatch.Stop(); TimeSpan ts = stopWatch.Elapsed; string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10); MainForm.ShowInfoMessage( string.Format( "Файл с электронными данными успешно сформирован и готов к предоставлению в Фонд.\nДлительность операции: {0} ", elapsedTime), "Формирование завершено"); } }