Esempio n. 1
0
        protected virtual int GetCurrentTimeResponse(DataTable table)
        {
            if (table.Rows.Count == 1)
            {
                serverTime = ((DateTime)table.Rows[0][0]).Add(m_tsOffsetToMoscow);
            }
            else
            {
                //DaylightTime daylight = TimeZone.CurrentTimeZone.GetDaylightChanges(DateTime.Now.Year);
                //int timezone_offset = allTECComponents[indxTECComponents].tec.m_timezone_offset_msc;
                //if (TimeZone.IsDaylightSavingTime(DateTime.Now, daylight) == true)
                //    timezone_offset++;
                //else
                //    ;

                ////serverTime = TimeZone.CurrentTimeZone.ToUniversalTime(DateTime.Now).AddHours(3);
                ////serverTime = TimeZone.CurrentTimeZone.ToUniversalTime(DateTime.Now).AddHours(timezone_offset);
                //serverTime = TimeZone.CurrentTimeZone.ToUniversalTime(DateTime.Now).AddHours(allTECComponents[indxTECComponents].tec.m_timezone_offset_msc);
                serverTime = HDateTime.ToMoscowTimeZone();

                ErrorReport("Ошибка получения текущего времени сервера. Используется локальное время.");
            }

            return(0);
        }
Esempio n. 2
0
        private void btnImportCSV_AdminValuesDefault_Click(object sender, EventArgs e)
        {
            int days = (m_admin.m_curDate.Date - HDateTime.ToMoscowTimeZone(DateTime.Now).Date).Days;

            if (days < 0)
            {
                string strMsg = string.Format(@"Выбрана дата ретроспективных данных: {0}.", m_admin.m_curDate.Date.ToString(@"dd.MM.yyyy"));
                MessageBox.Show(this, strMsg, @"Внимание", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            else
            {
                OpenFileDialog files = new OpenFileDialog();
                files.Multiselect = false;
                //files.InitialDirectory = Environment.GetFolderPath (Environment.SpecialFolder.Desktop);
                files.InitialDirectory = AdminTS_KomDisp.Folder_CSV;
                files.DefaultExt       = @"csv";
                files.Filter           = @"Рекомендации-по-умолчанию (AdminValuesDefault)|AdminValuesDefault*.csv";
                files.Title            = "Выберите файл с рекомендациями по умолчанию...";

                int iRes = -1;
                if (files.ShowDialog(FormMain.formParameters) == DialogResult.OK)
                {
                    if (days > 0)
                    {
                        iRes = 0;
                    }
                    else
                    {
                        if (days == 0)
                        {
                            string strMsg = string.Format(@"Рекомендации по умолчанию будут загружены на текущие сутки: {0}.{1}Продолжить?", m_admin.m_curDate.Date.ToString(@"dd.MM.yyyy"), Environment.NewLine);
                            if (MessageBox.Show(this, strMsg, @"Подтверждение", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                            {
                                iRes = 0;
                            }
                            else
                            {
                                ; //По-прежнему ошибка...
                            }
                        }
                        else
                        {
                            ;
                        }
                    }

                    if (iRes == 0)
                    {
                        ((AdminTS_KomDisp)m_admin).ImpCSVValues(mcldrDate.SelectionStart, files.FileName);
                    }
                    else
                    {
                        ;
                    }
                }
                else
                {
                }
            }
        }
Esempio n. 3
0
        protected int getPBRNumber(int hour = -1)
        {
            int iRes = -1
            , iHour  = hour;

            if (iHour < 0)
            {
                if (m_ignore_date == true)
                {
                    iHour = HDateTime.ToMoscowTimeZone(DateTime.Now).Hour;
                }
                else
                {
                    iHour = serverTime.Hour;
                }
            }
            else
            {
                ;
            }

            if ((iHour % 2) > 0)
            {
                iRes = iHour;
            }
            else
            {
                iRes = iHour + 1;
            }

            return(iRes);
        }
Esempio n. 4
0
        protected int getPBRNumber(int hour = -1)
        {
            int iRes = -1
            , iHour  = hour;

            if (iHour < 0)
            {
                if (m_ignore_date == true)
                {
                    iHour = HDateTime.ToMoscowTimeZone().Hour;
                }
                else
                {
                    iHour = serverTime.Hour;
                }
            }
            else
            {
                ;
            }

            //// для интервала обновления ПБР = 2 ч
            //if ((iHour % 2) > 0)
            //    iRes = iHour;
            //else
            iRes = iHour + 1;

            return(iRes);
        }
Esempio n. 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="tableOrigin"></param>
        /// <param name="tableRes"></param>
        /// <param name="err"></param>
        private void saveResult(DataTable tableOrigin, DataTable tableRes, out int err)
        {
            err = -1;

            DataTable tableEdit = new DataTable();

            DataRow[] rowSel = null;

            tableEdit = tableOrigin.Clone();

            foreach (DataRow r in tableOrigin.Rows)
            {
                rowSel = tableRes.Select(@"ID=" + r[@"ID_PUT"]);

                if (rowSel.Length == 1)
                {
                    tableEdit.Rows.Add(new object[] {
                        //r[@"ID"],
                        r[@"ID_SESSION"]
                        , r[@"ID_PUT"]
                        , rowSel[0][@"QUALITY"]
                        , rowSel[0][@"VALUE"]
                        , HDateTime.ToMoscowTimeZone().ToString(CultureInfo.InvariantCulture)
                    });
                }
                else
                {
                    ; //??? ошибка
                }
            }

            RecUpdateInsertDelete(s_NameDbTables[(int)INDEX_DBTABLE_NAME.OUTVALUES], @"ID_PUT", tableOrigin, tableEdit, out err);
        }
Esempio n. 6
0
        private bool fMaketEquipment(DataTable table, string[] listGuids, DateTime date)
        {
            bool bRes = false;

            Modes.BusinessLogic.IGenObject igo;
            IList <Modes.BusinessLogic.IMaketEquipment> listEquip;

            table.Columns.Add("ID", typeof(int));
            table.Columns.Add("ID_INNER", typeof(int));
            table.Columns.Add("WR_DATE_TIME", typeof(DateTime));

            listEquip = _mcApi.GetMaket53500Equipment(Array.ConvertAll <string, Guid> (listGuids, Guid.Parse));

            listEquip.ToList().ForEach(equip => {
                string mesDebug = string.Empty;

                mesDebug = $@"DbMCInterface::GetData () - equip=[{equip.Mrid}], children.Count={equip.GenTree.Count}";

                equip.GenTree.ToList().ForEach(item => {
                    mesDebug = $"{mesDebug}{Environment.NewLine}, item.IdIner ={item.IdInner}, item.GenObjType.Id={item.GenObjType.Id}, item.Name={item.Name}, item.children.Count={item.Children.Count}...";

                    item.Children.ToList().ForEach(child => {
                        mesDebug = $"{mesDebug}{Environment.NewLine}, children.IdIner ={child.IdInner}, child.GenObjType.Id={child.GenObjType.Id}, child.Name={child.Name}, child.children.Count={child.Children.Count}...";
                    });

                    igo = null;
                    //igo = findIGO (item.IdInner);
                    //if (Equals (igo, null) == false)
                    //    if (item.GenObjType.Id == ID_GEN_OBJECT_TYPE.RGE)
                    //        m_listIGO.Add (item);
                    //    else
                    //        ;
                    //else
                    //    ;

                    if (Equals(igo, null) == false)
                    {
                        table.Rows.Add(new object [] { igo.Id, igo.IdInner, HDateTime.ToMoscowTimeZone() });
                    }
                    else
                    {
                        ;
                    }
                }); // equip.GenTree.ToList ().ForEach

                Logging.Logg().Debug(mesDebug, Logging.INDEX_MESSAGE.NOT_SET);
            });

            //TODO:
            bRes = true;

            return(bRes);
        }
Esempio n. 7
0
            /// <summary>
            /// Обязательный метод для поддержки конструктора - не изменяйте
            /// содержимое данного метода при помощи редактора кода.
            /// </summary>
            private void InitializeComponent()
            {
                components = new System.ComponentModel.Container();

                this.m_dtprDate      = new DateTimePicker();
                this.m_dtprDate.Dock = DockStyle.Fill;
                //this.m_dtprDate.ValueChanged += new EventHandler(((PanelLastMinutes)Parent).OnDateTimeValueChanged);
                m_dtprDate.Value              = HDateTime.ToMoscowTimeZone(DateTime.Now);
                this.m_dtprDate.ValueChanged += new EventHandler(OnDateTimeValueChanged);

                this.m_btnUpdate        = new Button();
                this.m_btnUpdate.Dock   = DockStyle.Fill;
                this.m_btnUpdate.Text   = @"Обнов.";
                this.m_btnUpdate.Click += new EventHandler(OnDateTimeValueChanged);
            }
Esempio n. 8
0
        private void addMessage(int id_msg, string msg, bool bSep, bool bDatetime, bool bLock)
        {
            if (m_listQueueMessage == null)
            {
                m_listQueueMessage = new List <MESSAGE> ();
            }
            else
            {
                ;
            }
            lock (m_objQueueMessage) {
                if (m_listQueueMessage.Count > MAXCOUNT_LISTQUEUEMESSAGE)
                {
                    m_listQueueMessage.RemoveAt(0);
                }
                else
                {
                    ;
                }

                m_listQueueMessage.Add(new MESSAGE((int)id_msg, HDateTime.ToMoscowTimeZone(DateTime.Now), msg, bSep, bDatetime, bLock));
            }
        }
Esempio n. 9
0
            /// <summary>
            /// Выполнить операцию размещения значений в книге MS Excel
            ///  , и в автоматическом режиме сохранить ее
            /// </summary>
            private void run(object obj)
            {
                List <FileInfo> listFileInfoDest;
                EventResultArgs arg;
                string          pattern   = string.Empty;
                int             iTemplate = 0 // признак продолжения выполнения операции - наличие шаблона
                , err = 0;                    // по умолчанию ошибок нет

                try {
#if HCLASSLIBRARY_MSEXCELIO
                    if (IsReOpen == true)
                    {
                        ReCreate();
                    }
                    else
                    {
                        ;
                    }
#else
#endif
                    // получить шаблон поиска документа
                    pattern = string.Format("*{0}*.{1}", ConstantExportPBRValues.MaskDocument, ConstantExportPBRValues.MaskExtension);

                    Logging.Logg().Action(string.Format("AdminTS_KomDisp.MSExcelIOExportPBRValues::Run () - поиск документа: каталог=<{0}>, шаблон=<{1}>...", Folder_CSV, pattern)
                                          , Logging.INDEX_MESSAGE.NOT_SET);

                    listFileInfoDest = new List <FileInfo> (Directory.GetFiles(Folder_CSV, pattern, SearchOption.TopDirectoryOnly).ToList()
                                                            .ConvertAll <FileInfo> (name => new FileInfo(string.Format(@"{0}", name))));

                    if (listFileInfoDest.Count > 1)
                    {
                        // выполнить сортировку, затем открыть "самый новый" файл
                        listFileInfoDest.Sort((fileInfo1, fileInfo2) => {
                            return((int)(fileInfo1.LastWriteTime - fileInfo2.LastWriteTime).TotalSeconds < 0 ? 1
                                : (int)(fileInfo1.LastWriteTime - fileInfo2.LastWriteTime).TotalSeconds > 0 ? -1
                                    : 0);
                        });
                    }
                    else if (listFileInfoDest.Count > 0)
                    {
                        // файл единственный(вероятно, шаблон) - открыть
                        iTemplate = 1;
                    }
                    else
                    {
                        // файл отсутствует - открыть шаблон
                        iTemplate = -1;
                    }

                    if (!(iTemplate < 0))
                    {
#if HCLASSLIBRARY_MSEXCELIO
                        if (IsOpen(Path.GetFileName(listFileInfoDest [0].FullName), out err) == true)
                        {
                            Logging.Logg().Error(string.Format("AdminTS_KomDisp.MSExcelIOExportPBRValues::Run () - книга с наименованием={0}\\{1} открыта..."
                                                               , Folder_CSV, TemplateDocument)
                                                 , Logging.INDEX_MESSAGE.NOT_SET);

                            if (Mode == MODE_EXPORT_PBRVALUES.AUTO)
                            {
                                Visible = !CloseExcelDoc(Path.GetFileName(listFileInfoDest [0].FullName));
                            }
                            else if (Mode == MODE_EXPORT_PBRVALUES.MANUAL)
                            {
                                Visible = true;
                            }
                            else
                            {
                                ;
                            }
#else
#endif
#if HCLASSLIBRARY_MSEXCELIO
                        }
                        else
                        {
                            if (Visible == true)
                            {
                                Visible = false;
                            }
                            else
                            {
                                ;
                            }
                        }

                        if (Visible == false)
#else
#endif
                        { if (openDocument(listFileInfoDest [0].FullName) == 0)
                          {
                              Logging.Logg().Debug(string.Format("AdminTS_KomDisp.MSExcelIOExportPBRValues::Run () - открыли документ {0}...", listFileInfoDest [0].FullName)
                                                   , Logging.INDEX_MESSAGE.NOT_SET);

                              #region Заполнить лист книги MS Excel значениями
                              selectWorksheet(1);

                              if (writeValue(ConstantExportPBRValues.NumberColumn_Date, ConstantExportPBRValues.NumberRow_Date, HDateTime.ToMoscowTimeZone().ToString(ConstantExportPBRValues.Format_Date)) == false)
                              {
                                  Logging.Logg().Error(string.Format("AdminTS_KomDisp.MSExcelIOExportPBRValues::Run () - не удалось сохранить дату/время обновления...")
                                                       , Logging.INDEX_MESSAGE.NOT_SET);
                              }
                              else
                              {
                                  Logging.Logg().Action(string.Format("AdminTS_KomDisp.MSExcelIOExportPBRValues::Run () - сохранили дату/время обновления [столб.={0}, стр.={1}, знач.={2}]..."
                                                                      , ConstantExportPBRValues.NumberColumn_Date, ConstantExportPBRValues.NumberRow_Date, HDateTime.ToMoscowTimeZone().ToString(ConstantExportPBRValues.Format_Date))
                                                        , Logging.INDEX_MESSAGE.NOT_SET);
                              }

                              foreach (KeyValuePair <int, IVALUES> pair in _dictValues)
                              {
                                  for (int iHour = 0; iHour < pair.Value.m_data.Length; iHour++)
                                  {
                                      if (writeValue(pair.Value.m_indxColumn, ConstantExportPBRValues.NumberRow_0 + iHour, pair.Value.m_data [iHour].pbr) == false)
                                      {
                                          Logging.Logg().Error(string.Format("AdminTS_KomDisp.MSExcelIOExportPBRValues::Run () - [компонент_ID={0}, час={1}] не удалось сохранить значение {2}"
                                                                             , pair.Key, iHour + 1, pair.Value.m_data [iHour].pbr)
                                                               , Logging.INDEX_MESSAGE.NOT_SET);
                                      }
                                      else
                                      {
                                          ;
                                      }
                                  }
                              }
                              #endregion

                              _previousNameDocument = NameDocument;
                              save(_previousNameDocument);

                              Logging.Logg().Action(string.Format("AdminTS_KomDisp.MSExcelIOExportPBRValues::Run () - сохранили документ {0} с наименованием {1}...", listFileInfoDest [0].FullName, _previousNameDocument)
                                                    , Logging.INDEX_MESSAGE.NOT_SET);

                              try {
                                  listFileInfoDest.ForEach(fi => {
                                        if ((_previousNameDocument.Equals(fi.FullName) == false) &&
                                            (TemplateDocument.Equals(fi.FullName) == false))
                                        {
                                            fi.Delete();
                                        }
                                        else
                                        {
                                            ;
                                        }
                                    });
                              } catch (Exception e) {
                                  Logging.Logg().Error(string.Format("AdminTS_KomDisp.MSExcelIOExportPBRValues::Run () - ошибка удаления '{0}', причина={1}..."
                                                                     , listFileInfoDest [0].FullName, e.Message)
                                                       , Logging.INDEX_MESSAGE.NOT_SET);
                              }

                              if (Mode == MODE_EXPORT_PBRVALUES.AUTO)
                              {
#if HCLASSLIBRARY_MSEXCELIO
                                  CloseExcelDoc();
#else
#endif
                                  arg = new EventResultArgs()
                                  {
                                      Result = RESULT.OK
                                  };
                              }
                              else
                              {
                                  arg = new EventResultArgs()
                                  {
                                      Result = RESULT.VISIBLE
                                  };
                              }
                          }
                          else
                          {
                              Logging.Logg().Error(string.Format("AdminTS_KomDisp.MSExcelIOExportPBRValues::Run () - не удалось открыть книгу MS Excel с наименованием={0}..."
                                                                 , listFileInfoDest [0].FullName)
                                                   , Logging.INDEX_MESSAGE.NOT_SET);

                              arg = new EventResultArgs()
                              {
                                  Result = RESULT.ERROR_OPEN
                              };
                          } }
#if HCLASSLIBRARY_MSEXCELIO
                        else
                        {
                            // Видимость 'true' - ожидать действий пользователя
                            arg = new EventResultArgs()
                            {
                                Result = RESULT.ERROR_RETRY
                            }
                        };
#else
#endif
                    }
                    else
                    {
                        Logging.Logg().Error(string.Format("AdminTS_KomDisp.MSExcelIOExportPBRValues::Run () - отсутствует шаблон с наименованием={0}\\{1}..."
                                                           , Folder_CSV, TemplateDocument)
                                             , Logging.INDEX_MESSAGE.NOT_SET);

                        arg = new EventResultArgs()
                        {
                            Result = RESULT.ERROR_TEMPLATE
                        };
                    }
                } catch (Exception e) {
                    Logging.Logg().Exception(e, string.Format("AdminTS_KomDisp.MSExcelIOExportPBRValues::Run () - ..."), Logging.INDEX_MESSAGE.NOT_SET);

                    arg = new EventResultArgs()
                    {
                        Result = RESULT.ERROR_APP
                    };
                }

                // остановить таймер ожидания завершения длительной операции
                stop_TimerWait();

                clearContext();

                _mnlResetEventBusy.Reset();

                // при внештатном завершении потока - продолжить логгирование и работу приложения в целом
                try { Logging.Logg().Debug(string.Format("AdminTS_KomDisp.MSExcelIOExportPBRValues::Run() - завершение потока..."), Logging.INDEX_MESSAGE.NOT_SET); } catch  { }

                Result(this, _prevArg = arg);
            }
Esempio n. 10
0
        public override void Fill(TecView.valuesTEC[] values, params object [] pars)
        {
            double            sumFact = 0, sumUDGe = 0, sumDiviation = 0;
            Hd2PercentControl d2PercentControl = new Hd2PercentControl();
            int lastHour                = (int)pars[0]; //m_tecView.lastHour;
            int receivedHour            = (int)pars[1]; //m_tecView.lastReceivedHour;
            int itemscount              = (int)pars[2]; //m_tecView.m_valuesHours.Length;
            int warn                    = -1,
                cntWarn                 = -1;
            string strWarn              = string.Empty;
            bool   bPmin                = (int)pars[3] == 5
            , bCurrHour                 = (bool)pars[4]      //m_tecView.currHour
            , bIsTypeConnSettAISKUEHour = (bool)pars[5];     //m_tecView.m_arTypeSourceData[(int)HDateTime.INTERVAL.HOURS] == CONN_SETT_TYPE.DATA_AISKUE
            DateTime serverTime         = (DateTime)pars[6]; //m_tecView.serverTime

            DataGridViewCellStyle curCellStyle;

            cntWarn = 0;
            for (int i = 0; i < itemscount; i++)
            {
                d2PercentControl.Calculate(values[i], bPmin, out warn);

                if ((!(warn == 0)) &&
                    (values[i + 0].valuesLastMinutesTM > 1))
                {
                    cntWarn++;
                }
                else
                {
                    cntWarn = 0;
                }

                if (!(cntWarn == 0))
                {
                    if (cntWarn > 3)
                    {
                        curCellStyle = s_dgvCellStyleError;
                    }
                    else
                    {
                        curCellStyle = s_dgvCellStyleWarning;
                    }
                }
                else
                {
                    curCellStyle = s_dgvCellStyleCommon;
                }
                Rows[i + 0].Cells[(int)DataGridViewStandardHours.INDEX_COLUMNS.LAST_MINUTES].Style = curCellStyle;

                if (values[i + 0].valuesLastMinutesTM > 1)
                {
                    if (cntWarn > 0)
                    {
                        strWarn = cntWarn + @":";
                    }
                    else
                    {
                        strWarn = string.Empty;
                    }

                    Rows[i + 0].Cells[(int)DataGridViewStandardHours.INDEX_COLUMNS.LAST_MINUTES].Value = strWarn + values[i + 0].valuesLastMinutesTM.ToString("F2");
                }
                else
                {
                    Rows[i + 0].Cells[(int)DataGridViewStandardHours.INDEX_COLUMNS.LAST_MINUTES].Value = 0.ToString("F2");
                }

                bool bDevVal = false;
                if (bCurrHour == true)
                {
                    if ((i < (receivedHour + 1)) && ((!(values[i].valuesUDGe == 0)) && (values[i].valuesFact > 0)))
                    {
                        if ((bIsTypeConnSettAISKUEHour == true) ||
                            (i < receivedHour))
                        {
                            bDevVal = true;
                        }
                        else
                        {
                            ;
                        }
                    }
                    else
                    {
                    }
                }
                else
                if (serverTime.Date.Equals(HDateTime.ToMoscowTimeZone(DateTime.Now.Date)) == true)
                {
                    if ((i < (receivedHour + 1)) && (!(values[i].valuesUDGe == 0)) && (values[i].valuesFact > 0))
                    {
                        bDevVal = true;
                    }
                    else
                    {
                    }
                }
                else
                if ((!(values[i].valuesUDGe == 0)) && (values[i].valuesFact > 0))
                {
                    bDevVal = true;
                }
                else
                {
                }

                Rows[i].Cells[(int)DataGridViewStandardHours.INDEX_COLUMNS.FACT].Value = values[i].valuesFact.ToString("F2");
                if (bDevVal == true)
                {
                    sumFact += values[i].valuesFact;
                }
                else
                {
                    ;
                }

                Rows[i].Cells[(int)DataGridViewStandardHours.INDEX_COLUMNS.PBR].Value  = values[i].valuesPBR.ToString("F2");
                Rows[i].Cells[(int)DataGridViewStandardHours.INDEX_COLUMNS.PBRe].Value = values[i].valuesPBRe.ToString("F2");
                Rows[i].Cells[(int)DataGridViewStandardHours.INDEX_COLUMNS.UDGe].Value = values[i].valuesUDGe.ToString("F2");
                sumUDGe += values[i].valuesUDGe;

                if (bDevVal == true)
                {
                    Rows[i].Cells[(int)DataGridViewStandardHours.INDEX_COLUMNS.DEVIATION].Value = ((double)(values[i].valuesFact - values[i].valuesUDGe)).ToString("F2");
                    if ((Math.Round(Math.Abs(values[i].valuesFact - values[i].valuesUDGe), 2) > Math.Round(values[i].valuesDiviation, 2)) &&
                        (!(values[i].valuesDiviation == 0)))
                    {
                        Rows[i].Cells[(int)DataGridViewStandardHours.INDEX_COLUMNS.DEVIATION].Style = s_dgvCellStyleError;
                    }
                    else
                    {
                        Rows[i].Cells[(int)DataGridViewStandardHours.INDEX_COLUMNS.DEVIATION].Style = s_dgvCellStyleCommon;
                    }
                    sumDiviation += Math.Abs(values[i].valuesFact - values[i].valuesUDGe);
                }
                else
                {
                    Rows[i].Cells[(int)DataGridViewStandardHours.INDEX_COLUMNS.DEVIATION].Value = 0.ToString("F2");
                    Rows[i].Cells[(int)DataGridViewStandardHours.INDEX_COLUMNS.DEVIATION].Style = s_dgvCellStyleCommon;
                }
            }
            Rows[itemscount].Cells[(int)DataGridViewStandardHours.INDEX_COLUMNS.FACT].Value      = sumFact.ToString("F2");
            Rows[itemscount].Cells[(int)DataGridViewStandardHours.INDEX_COLUMNS.UDGe].Value      = sumUDGe.ToString("F2");
            Rows[itemscount].Cells[(int)DataGridViewStandardHours.INDEX_COLUMNS.DEVIATION].Value = sumDiviation.ToString("F2");

            setFirstDisplayedScrollingRowIndex(lastHour, !bIsTypeConnSettAISKUEHour);
        }
Esempio n. 11
0
        /// <summary>
        /// Создать новую сессию для расчета
        ///  - вставить входные данные во временную таблицу
        /// </summary>
        /// <param name="cntBasePeriod">Количество базовых периодов расчета в интервале расчета</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 virtual void CreateSession(
            int cntBasePeriod
            , 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_PUT"]);
                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
                        , _Session.m_Id                                                                       //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(cntBasePeriod, out err);
                //Вставить строки в таблицу БД со входными значениями для расчета
                insertInValues(arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.SESSION], out err);
                //Вставить строки в таблицу БД со выходными значениями для расчета
                insertOutValues(out err);

                // необходимость очистки/загрузки - приведение структуры таблицы к совместимому с [inval]
                arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.SESSION].Rows.Clear();
                // получить входные для расчета значения для возможности редактирования
                strQuery = @"SELECT [ID_PUT], [ID_SESSION], [QUALITY], [VALUE], [WR_DATETIME]" // as [ID]
                           + @" FROM [" + s_NameDbTables[(int)INDEX_DBTABLE_NAME.INVALUES] + @"]"
                           + @" WHERE [ID_SESSION]=" + _Session.m_Id;
                arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.SESSION] = Select(strQuery, out err);
            }
            else
            {
                Logging.Logg().Error(@"HandlerDbTaskCalculate::CreateSession () - отсутствуют строки для вставки ...", Logging.INDEX_MESSAGE.NOT_SET);
            }
        }
Esempio n. 12
0
 private string getInsertQuery(int id, string text)
 {
     //??? 3 крайних параметра не имеют смысла при журналировании в БД
     return(getInsertQuery(new MESSAGE((int)id, HDateTime.ToMoscowTimeZone(DateTime.Now), text, false, false, false)));
 }
Esempio n. 13
0
        /// <summary>
        ///  Добавить значения для экспорта
        /// </summary>
        /// <param name="compValues">Значения (админ. + ПБР) для одного из компонентов ТЭЦ</param>
        /// <param name="date">Дата, за которую получены значения</param>
        /// <returns>Очередной индекс для запроса значений из БД</returns>
        public int AddValueToExportRDGValues(RDGStruct[] compValues, DateTime date)
        {
            int      iRes = -1;
            DateTime datetimeExportPBR
            , datetimeMsc;

            if (_msExcelIOExportPBRValues.Mode == MODE_EXPORT_PBRVALUES.AUTO)
            {
                datetimeMsc       = HDateTime.ToMoscowTimeZone();
                datetimeExportPBR = datetimeMsc.Hour < 23 ? datetimeMsc.Date : datetimeMsc.Date.AddDays(1);
            }
            else
            {
                // оставить полученную в аргументе (указанную в календаре на вкладке)
                datetimeExportPBR = date.Date;
            }

            if ((datetimeExportPBR - DateTime.MinValue.Date).Days > 0)
            {
                if ((_lisTECComponentIndex.Count > 0) &&
                    (!(indxTECComponents < 0)) &&
                    (!(_lisTECComponentIndex[0] < 0)))
                {
                    if (indxTECComponents - _lisTECComponentIndex[0] == 0)
                    {
                        Logging.Logg().Debug(string.Format("AdminTS_KomDisp::AddValueToExportRDGValues () - получены значения для [ID={0}, Index={1}, за дату={2}, кол-во={3}] компонента..."
                                                           , allTECComponents[_lisTECComponentIndex[0]].m_id, _lisTECComponentIndex[0], _lisTECComponentIndex[0], datetimeExportPBR, compValues.Length)
                                             , Logging.INDEX_MESSAGE.NOT_SET);

                        if ((_msExcelIOExportPBRValues.AddTECComponent(allTECComponents[indxTECComponents]) == 0) &&
                            (_msExcelIOExportPBRValues.SetDate(datetimeExportPBR) == true))
                        {
                            _lisTECComponentIndex.Remove(indxTECComponents); // дубликатов быть не должно (см. добавление элементов)

                            //Console.WriteLine(@"AdminTS_KomDisp::AddValueToExportRDGValues () - обработка элемента=[{0}], остатолось элементов={1}", indxTECComponents, _lisTECComponentIndex.Count);

                            // добавить значения по составному ключу: [DateTime, Index]
                            _msExcelIOExportPBRValues.AddPBRValues(allTECComponents[indxTECComponents].m_id, compValues);

                            // проверить повторно после удаления элемента
                            if (_lisTECComponentIndex.Count > 0)
                            {
                                // очередной индекс компонента для запрооса
                                iRes = _lisTECComponentIndex[0];
                            }
                            else
                            {
                                // все значения по всем компонентам получены/добавлены
                                Logging.Logg().Debug(string.Format("AdminTS_KomDisp::AddValueToExportRDGValues () - получены все значения для всех компонентов...")
                                                     , Logging.INDEX_MESSAGE.NOT_SET);

                                _msExcelIOExportPBRValues.Run();
                            }
                        }
                        else
                        {
                            Logging.Logg().Error(string.Format("AdminTS_KomDisp::AddValueToExportRDGValues () - компонент с индексом [{0}] не может быть добавлен (пред. опреация экспрта не завершена)...")
                                                 , Logging.INDEX_MESSAGE.NOT_SET);
                        }
                    }
                    else
                    {
                        // текущий индекс и 0-ой элемент массива индексов жолжны совпадать
                        ;
                    }
                }
                else
                {
                    //??? ошибка, т.к. выполнен запрос и получены значения, а индекс компонента не известен
                    Logging.Logg().Error(string.Format("AdminTS_KomDisp::AddValueToExportRDGValues () - получены значения для неизвестного компонента...")
                                         , Logging.INDEX_MESSAGE.NOT_SET);
                }
            }
            else
            {
                // дата для полученных значений неизвестна
                ;
            }

            return(iRes);
        }
Esempio n. 14
0
        /// <summary>
        /// Установить значения таблиц для редактирования
        /// </summary>
        /// <param name="dbConn">Ссылка на объектт соединения с БД</param>
        /// <param name="err">Идентификатор ошибки при выполнеинии функции</param>
        /// <param name="strErr">Строка текста сообщения при галичии ошибки</param>
        protected override void setValues(ref DbConnection dbConn, out int err, out string strErr)
        {
            err    = 0;
            strErr = string.Empty;

            int cnt      = CountBasePeriod //(int)(m_panelManagement.m_dtRange.End - m_panelManagement.m_dtRange.Begin).TotalHours - 0
            , iAVG       = -1;
            string query = string.Empty;

            // строки для удаления из таблицы значений "по умолчанию"
            // при наличии дубликатов строк в таблице с загруженными из источников с данными
            DataRow[] rowsSel = null;
            //Запрос для получения автоматически собираемых данных
            query = getQueryValuesVar();
            //Заполнить таблицу автоматически собираемыми данными
            m_arTableOrigin[(int)INDEX_TABLE_VALUES.VARIABLE] = DbTSQLInterface.Select(ref dbConn, query, null, null, out err);
            //Проверить признак выполнения запроса
            if (err == 0)
            {
                //Запрос для получения данных вводимых вручную
                query = getQueryValuesDef();
                //Заполнить таблицу данными вводимых вручную (значения по умолчанию)
                m_arTableOrigin[(int)INDEX_TABLE_VALUES.DEFAULT] = DbTSQLInterface.Select(ref dbConn, query, null, null, out err);
                //Проверить признак выполнения запроса
                if (err == 0)
                {
                    // удалить строки из таблицы со значениями "по умолчанию"
                    foreach (DataRow rValVar in m_arTableOrigin[(int)INDEX_TABLE_VALUES.VARIABLE].Rows)
                    {
                        rowsSel = m_arTableOrigin[(int)INDEX_TABLE_VALUES.DEFAULT].Select(@"ID_INPUT=" + rValVar[@"ID"]);
                        foreach (DataRow rToRemove in rowsSel)
                        {
                            m_arTableOrigin[(int)INDEX_TABLE_VALUES.DEFAULT].Rows.Remove(rToRemove);
                        }
                    }
                    // вставить строки из таблицы со значениями "по умолчанию"
                    foreach (DataRow rValDef in m_arTableOrigin[(int)INDEX_TABLE_VALUES.DEFAULT].Rows)
                    {
                        rowsSel = m_arTableDictPrjs[(int)INDEX_TABLE_DICTPRJ.PARAMETER].Select(@"ID=" + rValDef[@"ID_INPUT"]);
                        if (rowsSel.Length == 1)
                        {
                            iAVG = (Int16)rowsSel[0][@"AVG"];

                            m_arTableOrigin[(int)INDEX_TABLE_VALUES.VARIABLE].Rows.Add(new object[]
                            {
                                rValDef[@"ID_INPUT"]
                                , HUsers.Id                                                                 //ID_USER
                                , -1                                                                        //ID_SOURCE
                                , _IdSession                                                                //ID_SESSION
                                , (int)ID_QUALITY_VALUE.DEFAULT                                             //QUALITY
                                , (iAVG == 0) ? cnt * (double)rValDef[@"VALUE"] : (double)rValDef[@"VALUE"] //VALUE
                                , HDateTime.ToMoscowTimeZone()                                              //??? GETADTE()
                            }
                                                                                       );
                        }
                        else
                        {
                            ; // по идентификатору найден не единственный парпметр расчета
                        }
                    }
                    // создать копии для возможности сохранения изменений
                    m_arTableEdit[(int)INDEX_TABLE_VALUES.VARIABLE] = m_arTableOrigin[(int)INDEX_TABLE_VALUES.VARIABLE].Copy();
                    m_arTableEdit[(int)INDEX_TABLE_VALUES.DEFAULT]  = m_arTableOrigin[(int)INDEX_TABLE_VALUES.DEFAULT].Copy();
                }
                else
                {
                    strErr = @"ошибка получения данных по умолчанию с " + m_panelManagement.m_dtRange.Begin.ToString()
                             + @" по " + m_panelManagement.m_dtRange.End.ToString();
                }
            }
            else
            {
                strErr = @"ошибка получения автоматически собираемых данных с " + m_panelManagement.m_dtRange.Begin.ToString()
                         + @" по " + m_panelManagement.m_dtRange.End.ToString();
            }
        }