예제 #1
0
        /// <summary>
        /// Формирование заявок пляшем от АИС 3
        /// </summary>
        /// <param name="userRule">Спаршенные данные АИС 3</param>
        /// <returns></returns>
        public async Task <ModelPathReport> GenerateTemplateRule(UserRules userRule)
        {
            var report = new ModelPathReport();

            try
            {
                return(await Task.Factory.StartNew(() =>
                {
                    var sql = new SelectSql();
                    var templateword = new TemplateUserRule();
                    var ruletemplate = new RuleTemplate()
                    {
                        SenderUsers = new SenderUsers()
                    };
                    var modelselect = sql.SendersUsers(ref ruletemplate);
                    sql.UserRuleModel(ref ruletemplate, userRule, modelselect);
                    templateword.CreateDocum(_parametrService.ReportMassTemplate, ruletemplate, null);
                    report.Note = "Заявки запущены и сохраняются в папку";
                    report.Url = _parametrService.ReportMassTemplate;
                    return report;
                }));
            }
            catch (Exception e)
            {
                Loggers.Log4NetLogger.Error(e);
                report.Note = e.Message;
                return(report);
            }
        }
예제 #2
0
        /// <summary>
        /// Сервис подготовки документов ошибок о миграции
        /// </summary>
        /// <param name="json">Json отчет</param>
        /// <returns></returns>
        public async Task <ModelPathReport> MigrationReports(MigrationParse json)
        {
            var report = new ModelPathReport();

            try
            {
                return(await Task.Factory.StartNew(() =>
                {
                    var docmigration = new DocumentMigration();
                    docmigration.MigrationDoc(_parametrService.ConectWork, _parametrService.ReportMassTemplate, json);
                    report.Note = "Документы для печати запущены и сохраняются в папку ";
                    report.Url = _parametrService.ReportMassTemplate;
                    return report;
                }));
            }
            catch (Exception e)
            {
                Loggers.Log4NetLogger.Error(e);
                report.Note = e.Message;
                return(report);
            }
        }
예제 #3
0
        /// <summary>
        /// Модель загрузки Шаблонов в БД по шаблону
        /// </summary>
        /// <typeparam name="T">Шаблон class to xml</typeparam>
        /// <param name="modelTemplate">Шаблон</param>
        /// <param name="idProcedureLoad">УН процедуры загрузки</param>
        /// <param name="idProcessBlock">УН процедуры процесса</param>
        /// <returns></returns>
        public ModelPathReport LoadModelToDataBase <T>(T modelTemplate, int idProcedureLoad, int idProcessBlock)
        {
            var report = new ModelPathReport();

            try
            {
                var isProcessTrue = Inventory.EventProcesses.FirstOrDefault(complete => complete.Id == idProcessBlock);
                if (isProcessTrue == null)
                {
                    throw new InvalidOperationException($"Фатальная ошибка отсутствует процесс Id - {idProcessBlock} в системе!");
                }
                if (isProcessTrue.IsComplete == true)
                {
                    var addObjectDb = new AddObjectDb.AddObjectDb();
                    var task        = Task.Run(() =>
                    {
                        ModelSelect model = new ModelSelect {
                            LogicaSelect = SqlSelectModel(idProcedureLoad)
                        };
                        XmlReadOrWrite xml = new XmlReadOrWrite();
                        addObjectDb.IsProcessComplete(idProcessBlock, false);
                        using (var transaction = Inventory.Database.BeginTransaction())
                        {
                            try
                            {
                                Inventory.Database.CommandTimeout = 18000;
                                Inventory.Database.ExecuteSqlCommand(model.LogicaSelect.SelectUser,
                                                                     new SqlParameter(model.LogicaSelect.SelectedParametr.Split(',')[0], SqlDbType.Xml)
                                {
                                    Value = new SqlXml(new XmlTextReader(xml.ClassToXml(modelTemplate, modelTemplate.GetType()), XmlNodeType.Document, null))
                                });
                                transaction.Commit();
                                Inventory.Dispose();
                            }
                            catch (Exception e)
                            {
                                transaction.Rollback();
                                Inventory.Dispose();
                                Loggers.Log4NetLogger.Error(e);
                            }
                        }
                    });
                    task.ConfigureAwait(true).GetAwaiter().OnCompleted((() =>
                    {
                        addObjectDb.IsProcessComplete(idProcessBlock, true);
                        addObjectDb.Dispose();
                    }));
                    report.Note = $"{isProcessTrue.NameProcess} запущен!";
                }
                else
                {
                    report.Note = $"{isProcessTrue.NameProcess} уже запущен ожидайте окончание процесса!";
                }
            }
            catch (Exception e)
            {
                report.Note = e.Message;
                Loggers.Log4NetLogger.Error(e);
            }
            return(report);
        }