Exemplo n.º 1
0
        /// <summary>
        /// Обновление или добавление в таблицу модель оборудования АКСИОК
        /// </summary>
        /// <param name="equipmentModels">Модель оборудования</param>
        /// <param name="typeXml">Тип разборки xml</param>
        /// <param name="idType">Ун типа</param>
        /// <param name="idProduct">Ун продукта</param>
        public void AddAndUpdateFullLoadAksiok <T>(T equipmentModels, string typeXml, int idType = 0, int idProduct = 0)
        {
            XmlReadOrWrite xmlConvert = new XmlReadOrWrite();

            Inventory.Database.ExecuteSqlCommand(LogicaSelect.SelectUser,
                                                 new SqlParameter(LogicaSelect.SelectedParametr.Split(',')[0], SqlDbType.Xml)
            {
                Value = equipmentModels == null ? SqlXml.Null : new SqlXml(new XmlTextReader(xmlConvert.ClassToXml(equipmentModels, equipmentModels.GetType()), XmlNodeType.Document, null))
            },
                                                 new SqlParameter(LogicaSelect.SelectedParametr.Split(',')[1], SqlDbType.VarChar)
            {
                Value = typeXml
            },
                                                 new SqlParameter(LogicaSelect.SelectedParametr.Split(',')[2], SqlDbType.Int)
            {
                Value = idType
            },
                                                 new SqlParameter(LogicaSelect.SelectedParametr.Split(',')[3], SqlDbType.Int)
            {
                Value = idProduct
            });
        }
Exemplo n.º 2
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);
        }