Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        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), "Формирование завершено");
            }
        }