예제 #1
0
        /// <summary>
        /// Пометить запись в ITS как отправленную, либо не отправленную (ошибка).
        /// </summary>
        /// <param name="aCastSchedule">Запись.</param>
        /// <param name="aState">Состояние отправки.</param>
        private void MarkCastScheduleAsSended(CastSchedule aCastSchedule, ScheduleState aState)
        {
            try {
                oracleConnection.LockConnection();
                Logger.Debug(string.Format("Изменение состояния записи на '{0}'", aState));

                updateCastState.Connection = oracleConnection.GetOracleConnection();
                updateCastState.Parameters["State"].Value = (int) aState;
                updateCastState.Parameters["Id"].Value = aCastSchedule.Id;

                updateCastState.ExecuteNonQuery();
                oracleConnection.UpdateLastOperationTime();

                Logger.Debug("Изменение состояния успешно");
            }
            catch (Exception ex) {
                oracleConnection.ProcessError(ex);
            }
            finally {
                oracleConnection.ReleaseConnection();
            }
        }
예제 #2
0
        /// <summary>
        /// Сохраняет запись в Wagstaff.
        /// </summary>
        /// <param name="aCastSchedule">Запись.</param>
        /// <returns>True - если запись успешно сохранена, False - иначе.</returns>
        private bool TrySaveToWagstaff(CastSchedule aCastSchedule)
        {
            try {
                sqlConnection.LockConnection();
                Logger.Debug("Попытка передачи данных в Wagstaff");
                insertNewCast.Connection = sqlConnection.GetSqlConnection();
                insertNewCast.Parameters["CastId"].Value = aCastSchedule.CastNumber;
                insertNewCast.Parameters["RecipeId"].Value = aCastSchedule.RecipeName;
                insertNewCast.Parameters["RecipeRev"].Value = aCastSchedule.RecipeRevision;
                insertNewCast.Parameters["Priority"].Value = aCastSchedule.Priority;
                insertNewCast.Parameters["Archived"].Value = 0;
                insertNewCast.Parameters["Node"].Value = "WAGTS1";
                insertNewCast.Parameters["DateCreated"].Value = DateTime.Now;

                insertNewCast.ExecuteNonQuery();
                sqlConnection.UpdateLastOperationTime();

                Logger.Debug("Данные переданы успешно");

                return true;
            }
            catch (Exception ex) {
                sqlConnection.ProcessError(ex);
                return false;
            }
            finally {
                sqlConnection.ReleaseConnection();
            }
        }
예제 #3
0
        /// <summary>
        /// Проверить новые записи и, если они есть, переслать в Wagstaff.
        /// Метод запускается таймером.
        /// </summary>
        /// <param name="sender">Sender.</param>
        /// <param name="e">E.</param>
        private void CheckNewCastSchedule(object sender = null, ElapsedEventArgs e = null)
        {
            var casts = new List<CastSchedule>();
            var results = new List<ScheduleState>();
            try {
                oracleConnection.LockConnection();
                Logger.Debug("Проверка новых плавок...");

                selectCheckNewCast.Connection = oracleConnection.GetOracleConnection();
                selectCheckNewCast.Parameters["State"].Value = (int) ScheduleState.NOT_PROCESSED;
                // делаем выборку записей из ITS
                using (var reader = selectCheckNewCast.ExecuteReader()) {
                    oracleConnection.UpdateLastOperationTime();
                    while (reader.Read()) {
                        var castSchedule = new CastSchedule {
                            Id = reader.GetInt32(0),
                            RecipeName = reader.GetString(1),
                            RecipeRevision = reader.GetInt32(2),
                            CastNumber = reader.GetString(3),
                            ScheduleState = reader.GetInt32(4),
                            Priority = reader.GetInt32(5)
                        };

                        Logger.Debug("Получены новые плавки");

                        var isSaved = TrySaveToWagstaff(castSchedule);
                        casts.Add(castSchedule);
                        results.Add(isSaved ? ScheduleState.WAS_SAVED : ScheduleState.WAS_ERROR);
                    }
                }
            }
            catch (Exception ex) {
                oracleConnection.ProcessError(ex);
            }
            finally {
                oracleConnection.ReleaseConnection();
            }

            for (var i = 0; i < casts.Count; ++i) {
                MarkCastScheduleAsSended(casts[i], results[i]);
            }
        }