/// <summary>
        /// Вставить в таблицу БД идентификатор новой сессии
        /// </summary>
        /// <param name="id">Идентификатор сессии</param>
        /// <param name="idPeriod">Идентификатор периода расчета</param>
        /// <param name="cntBasePeriod">Количество базовых периодов расчета в интервале расчета</param>
        /// <param name="idTimezone">Идентификатор часового пояса</param>
        /// <param name="dtRange">Диапазон даты/времени для интервала расчета</param>
        /// <param name="err">Идентификатор ошибки при выполнеинии функции</param>
        private void insertIdSession(int id
                                     , ID_PERIOD idPeriod
                                     , int cntBasePeriod
                                     , ID_TIMEZONE idTimezone
                                     , DateTimeRange dtRange
                                     , out int err)
        {
            err = -1;

            string strQuery = string.Empty;

            // подготовить содержание запроса при вставке значений, идентифицирующих новую сессию
            strQuery = @"INSERT INTO " + HandlerDbTaskCalculate.s_NameDbTables[(int)INDEX_DBTABLE_NAME.SESSION] + @" ("
                       + @"[ID_CALCULATE]"
                       + @", [ID_TASK]"
                       + @", [ID_USER]"
                       + @", [ID_TIME]"
                       + @", [ID_TIMEZONE]"
                       + @", [DATETIME_BEGIN]"
                       + @", [DATETIME_END]) VALUES ("
            ;

            strQuery += id;
            strQuery += @"," + (int)ID_TASK.TEP;
            strQuery += @"," + HTepUsers.Id;
            strQuery += @"," + (int)idPeriod;
            strQuery += @"," + (int)idTimezone;
            strQuery += @",'" + dtRange.Begin.ToString(System.Globalization.CultureInfo.InvariantCulture) + @"'"; // @"yyyyMMdd HH:mm:ss"
            strQuery += @",'" + dtRange.End.ToString(System.Globalization.CultureInfo.InvariantCulture) + @"'";   // @"yyyyMMdd HH:mm:ss"

            strQuery += @")";

            //Вставить в таблицу БД строку с идентификтором новой сессии
            DbTSQLInterface.ExecNonQuery(ref _dbConnection, strQuery, null, null, out err);
        }
Exemple #2
0
 public void Initialize(long id, ID_PERIOD idPeriod, ID_TIMEZONE idTimezone, int curOffsetUTC, DateTimeRange rangeDatetime)
 {
     m_Id             = id;
     m_currIdPeriod   = idPeriod;
     m_currIdTimezone = idTimezone;
     m_curOffsetUTC   = curOffsetUTC;
     m_rangeDatetime  = rangeDatetime;
 }
Exemple #3
0
 public void FillValueTimezone(DataTable tableValues, ID_TIMEZONE idSelected)
 {
     fillComboBoxValues(tableValues.Rows.Cast <DataRow>(), INDEX_CONTROL_BASE.CBX_TIMEZONE, (int)idSelected, @"NAME_SHR", cbxTimezone_SelectedIndexChanged);
 }
Exemple #4
0
 /// <summary>
 /// Установить новое значение для текущего периода
 /// </summary>
 /// <param name="cbxTimezone">Объект, содержащий значение выбранной пользователем зоны двты/времени</param>
 public void SetCurrentTimeZone(ID_TIMEZONE idTimazone, int offsetUTC)
 {
     m_currIdTimezone = idTimazone;
     m_curOffsetUTC   = offsetUTC;
 }
        /// <summary>
        /// Создать новую сессию для расчета
        ///  - вставить входные данные во временную таблицу
        /// </summary>
        /// <param name="idSession">Идентификатор сессии</param>
        /// <param name="idPeriod">Идентификатор периода расчета</param>
        /// <param name="cntBasePeriod">Количество базовых периодов расчета в интервале расчета</param>
        /// <param name="idTimezone">Идентификатор часового пояса</param>
        /// <param name="tablePars">Таблица характеристик входных параметров</param>
        /// <param name="tableSessionValues">Таблица значений входных параметров</param>
        /// <param name="tableDefValues">Таблица значений по умолчанию входных параметров</param>
        /// <param name="dtRange">Диапазон даты/времени для интервала расчета</param>
        /// <param name="err">Идентификатор ошибки при выполнеинии функции</param>
        /// <param name="strErr">Строка текста сообщения при наличии ошибки</param>
        public void CreateSession(int idSession
                                  , ID_PERIOD idPeriod
                                  , int cntBasePeriod
                                  , ID_TIMEZONE idTimezone
                                  , DataTable tablePars
                                  , ref DataTable [] arTableValues
                                  , DateTimeRange dtRange
                                  , out int err, out string strErr)
        {
            err    = 0;
            strErr = string.Empty;

            int    iAVG     = -1;
            string strQuery = string.Empty;

            // строки для удаления из таблицы значений "по умолчанию"
            // при наличии дубликатов строк в таблице с загруженными из источников с данными
            DataRow[] rowsSel = null;

            // удалить строки из таблицы со значениями "по умолчанию"
            foreach (DataRow rValVar in arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.SESSION].Rows)
            {
                rowsSel = arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.DEFAULT].Select(@"ID_PUT=" + rValVar[@"ID"]);
                foreach (DataRow rToRemove in rowsSel)
                {
                    arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.DEFAULT].Rows.Remove(rToRemove);
                }
            }
            // вставить строки из таблицы со значениями "по умолчанию"
            foreach (DataRow rValDef in arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.DEFAULT].Rows)
            {
                rowsSel = tablePars.Select(@"ID=" + rValDef[@"ID_PUT"]);
                if (rowsSel.Length == 1)
                {
                    iAVG = (Int16)rowsSel[0][@"AVG"];

                    arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.SESSION].Rows.Add(new object[]
                    {
                        rValDef[@"ID_PUT"]
                        //, HUsers.Id //ID_USER
                        //, -1 //ID_SOURCE
                        , idSession                                                                           //ID_SESSION
                        , (int)HandlerDbTaskCalculate.ID_QUALITY_VALUE.DEFAULT                                //QUALITY
                        , (iAVG == 0) ? cntBasePeriod * (double)rValDef[@"VALUE"] : (double)rValDef[@"VALUE"] //VALUE
                        , HDateTime.ToMoscowTimeZone()                                                        //??? GETADTE()
                    }
                                                                                                   );
                }
                else
                {
                    ; // по идентификатору найден не единственный парпметр расчета
                }
            }

            if ((arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.SESSION].Columns.Count > 0) &&
                (arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.SESSION].Rows.Count > 0))
            {
                //Вситвить строку с идентификатором новой сессии
                insertIdSession(idSession, idPeriod, cntBasePeriod, idTimezone, dtRange, out err);
                //Вставить строки в таблицу БД со входными значениями для расчета
                insertInValues(arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.SESSION], out err);
                //Вставить строки в таблицу БД со выходными значениями для расчета
                insertOutValues(idSession, out err);

                // необходимость очистки/загрузки - приведение структуры таблицы к совместимому с [inval]
                arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.SESSION].Rows.Clear();
                // получить входные для расчета значения для возможности редактирования
                strQuery = @"SELECT [ID_PUT] as [ID], [ID_SESSION], [QUALITY], [VALUE], [WR_DATETIME]"
                           + @" FROM [" + s_NameDbTables[(int)INDEX_DBTABLE_NAME.INVALUES] + @"]"
                           + @" WHERE [ID_SESSION]=" + idSession;
                arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.SESSION] = Select(strQuery, out err);
            }
            else
            {
                Logging.Logg().Error(@"HandlerDbTaskCalculate::CreateSession () - отсутствуют строки для вставки ...", Logging.INDEX_MESSAGE.NOT_SET);
            }
        }
        /// <summary>
        /// Инициализация объектов формы
        /// </summary>
        /// <param name="err">номер ошибки</param>
        /// <param name="errMsg">текст ошибки</param>
        protected override void initialize(out int err, out string errMsg)
        {
            err    = 0;
            errMsg = string.Empty;

            ID_TIMEZONE idProfileTimezone = ID_TIMEZONE.UNKNOWN;
            ID_PERIOD   idProfilePeriod   = ID_PERIOD.UNKNOWN;
            string      strItem           = string.Empty;
            Control     ctrl = null;

            //Заполнить таблицы со словарными, проектными величинами
            // PERIOD, TIMWZONE, COMP, PARAMETER, RATIO
            initialize
            //m_markTableDictPrj = new HMark
                (new ID_DBTABLE[] { /*ID_DBTABLE.PERIOD
                                     * , */ID_DBTABLE.TIME, ID_DBTABLE.TIMEZONE
                        , ID_DBTABLE.COMP_LIST
                        , IsInParameters == true ? ID_DBTABLE.IN_PARAMETER : ID_DBTABLE.UNKNOWN
                        , IsOutParameters == true ? ID_DBTABLE.OUT_PARAMETER : ID_DBTABLE.UNKNOWN
                        , ID_DBTABLE.RATIO
                }
                , out err, out errMsg
                );

            HandlerDb.FilterDbTableTimezone = TepCommon.HandlerDbTaskCalculate.DbTableTimezone.Msk;
            HandlerDb.FilterDbTableTime     = TepCommon.HandlerDbTaskCalculate.DbTableTime.Month;
            HandlerDb.FilterDbTableCompList = HandlerDbTaskCalculate.DbTableCompList.Tg;

            //активность_кнопки_сохранения
            try {
                if (Enum.IsDefined(typeof(MODE_CORRECT), m_dictProfile.GetAttribute(HTepUsers.ID_ALLOWED.ENABLED_CONTROL)) == true)
                {
                    (Controls.Find(PanelManagementVedomostBl.INDEX_CONTROL.BUTTON_SAVE.ToString(), true)[0] as Button).Enabled =
                        (MODE_CORRECT)MODE_CORRECT.Parse(typeof(MODE_CORRECT), m_dictProfile.GetAttribute(HTepUsers.ID_ALLOWED.ENABLED_CONTROL)) == MODE_CORRECT.ENABLE;
                }
                else
                {
                    (Controls.Find(PanelManagementVedomostBl.INDEX_CONTROL.BUTTON_SAVE.ToString(), true)[0] as Button).Enabled = false;
                }
            } catch (Exception e) {
                // ???
                Logging.Logg().Exception(e, string.Format(@"PanelTaskVedomostBl::initialize () - BUTTON_SAVE.Enabled..."), Logging.INDEX_MESSAGE.NOT_SET);

                err = -2;
            }

            if (err == 0)
            {
                try {
                    //???
                    m_bflgClear = !m_bflgClear;

                    //Заполнить элемент управления с часовыми поясами
                    idProfileTimezone = ID_TIMEZONE.MSK;
                    PanelManagement.FillValueTimezone(HandlerDb.m_dictTableDictPrj[ID_DBTABLE.TIMEZONE]
                                                      , idProfileTimezone);
                    //Заполнить элемент управления с периодами расчета
                    idProfilePeriod = (ID_PERIOD)int.Parse(m_dictProfile.GetAttribute(HTepUsers.ID_ALLOWED.PERIOD));
                    PanelManagement.FillValuePeriod(HandlerDb.m_dictTableDictPrj[ID_DBTABLE.TIME]
                                                    , idProfilePeriod);

                    PanelManagement.AllowUserTimezoneChanged = false;
                    PanelManagement.AllowUserPeriodChanged   = false;
                } catch (Exception e) {
                    Logging.Logg().Exception(e, @"PanelTaskVedomostBl::initialize () - ...", Logging.INDEX_MESSAGE.NOT_SET);
                }
            }
            else
            {
                Logging.Logg().Error(MethodBase.GetCurrentMethod(), @"...", Logging.INDEX_MESSAGE.NOT_SET);
            }
        }
 /// <summary>
 /// Установить новое значение для текущего периода
 /// </summary>
 /// <param name="cbxTimezone">Объект, содержащий значение выбранной пользователем зоны двты/времени</param>
 protected void setCurrentTimeZone(ComboBox cbxTimezone)
 {
     _currIdTimezone = (ID_TIMEZONE)m_arListIds[(int)INDEX_ID.TIMEZONE][cbxTimezone.SelectedIndex];
     _curOffsetUTC   = (int)m_arTableDictPrjs[(int)INDEX_TABLE_DICTPRJ.TIMEZONE].Select(@"ID=" + (int)_currIdTimezone)[0][@"OFFSET_UTC"];
 }