/// <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 }); }
/// <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); }