예제 #1
0
        /// <summary>
        /// Метод добавления колонок в DataGridView
        /// </summary>
        /// <param name="date">Дата отображаемых значений</param>
        private void addTextBoxColumn(DateTime date)
        {
            int indx = ((AdminTS_LK)m_admin).indxTECComponents;

            //((AdminTS_LK)m_admin).set_CurComponent(0, m_admin.m_curDate);
            //indx = ((AdminTS_LK)m_admin).m_listTECComponentIndexDetail[this.dgwAdminTable.Columns.Count - ((int)DataGridViewAdminLK.DESC_INDEX.COUNT_COLUMN)];


            if (m_admin.GetIdTECComponent(indx) > (int)TECComponent.ID.TG)
            {
                ((DataGridViewAdminLK)this.dgwAdminTable).addTextBoxColumn(m_admin.GetNameTECComponent(indx),
                                                                           m_admin.GetIdTECComponent(indx),
                                                                           m_admin.GetIdGTPOwnerTECComponent(indx),
                                                                           date);
                DataGridViewCellEventArgs ev;

                for (int i = 0; i < 24; i++)
                {
                    if (this.dgwAdminTable.Columns.Count == ((int)DataGridViewAdminLK.DESC_INDEX.COUNT_COLUMN + 1)) //Только при добавлении 1-го столбца
                    {
                        this.dgwAdminTable.Rows[i].Cells[0].Value = date.AddHours(i + 1).ToString(@"dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture);
                    }
                    else
                    {
                        ;
                    }

                    try
                    {
                        this.dgwAdminTable.Rows[i].Cells[this.dgwAdminTable.Columns.Count - 4].Value = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].pbr.ToString("F2");
                    }
                    catch (Exception e)
                    {
                        Logging.Logg().Warning("PanelAdminLK : addTextBoxColumn - нет листа с суточными значениями(снова потерялся индекс)" + e.Message, Logging.INDEX_MESSAGE.NOT_SET);
                    }

                    ev = new DataGridViewCellEventArgs(this.dgwAdminTable.Columns.Count - 4, i);

                    ((DataGridViewAdminLK)this.dgwAdminTable).DataGridViewAdminLK_CellValueChanged(null, ev);
                }

                visibleControlRDGExcel(((AdminTS_LK)m_admin).GetIdTECOwnerTECComponent(indx));
            }
            if (m_admin.GetIdTECComponent(indx) > (int)TECComponent.ID.GTP & m_admin.GetIdTECComponent(indx) < (int)TECComponent.ID.PC)
            {
                DataGridViewCellEventArgs ev;
                for (int i = 0; i < 24; i++)
                {
                    if (this.dgwAdminTable.Columns.Count == ((int)DataGridViewAdminLK.DESC_INDEX.COUNT_COLUMN + 1)) //Только при добавлении 1-го столбца
                    {
                        this.dgwAdminTable.Rows[i].Cells[0].Value = date.AddHours(i + 1).ToString(@"dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture);
                    }
                    else
                    {
                        ;
                    }
                    try
                    {
                        this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminLK.DESC_INDEX.PLAN].Value   = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].pbr.ToString("F2");
                        this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminLK.DESC_INDEX.PLAN_T].Value = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].pmin.ToString("F2");
                        this.dgwAdminTable.Rows[i].Cells[dgwAdminTable.Columns.Count - 3].Value            = (bool)(((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].deviationPercent);
                        this.dgwAdminTable.Rows[i].Cells[dgwAdminTable.Columns.Count - 2].Value            = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].deviation.ToString("F2");
                    }
                    catch (Exception e)
                    {
                        Logging.Logg().Warning("PanelAdminLK : addTextBoxColumn - нет листа с суточными значениями(снова потерялся индекс)" + e.Message, Logging.INDEX_MESSAGE.NOT_SET);
                    }
                    ev = new DataGridViewCellEventArgs(this.dgwAdminTable.Columns.Count - 4, i);


                    ((DataGridViewAdminLK)this.dgwAdminTable).DataGridViewAdminLK_CellValueChanged(null, ev);
                }
            }
            m_admin.CopyCurToPrevRDGValues();
            ((AdminTS_LK)m_admin).m_listPrevRDGValues.Add(m_admin.m_prevRDGValues);
            ((AdminTS_LK)m_admin).m_semaIndxTECComponents.Release();
        }
예제 #2
0
                /// <summary>
                /// Метод выборки значений из Excell
                /// </summary>
                /// <param name="path">Путь к документу</param>
                /// <param name="date">Дата за которую необходимо получить значения</param>
                /// <returns>Возвращает таблицу со значениями</returns>
                private static DataTable getCSV(string path, DateTime date, out int err)
                {
                    err = -1;
                    DataTable dataTableRes   = new DataTable();
                    string    name_worksheet = string.Empty;

                    DataRow[] rows          = new DataRow[25];
                    int       col_worksheet = 0;
                    bool      start_work    = false;

                    for (int i = 0; i < m_col_name.Length; i++)
                    {
                        dataTableRes.Columns.Add(m_col_name[i]);//Добавление колонок в таблицу
                    }
                    //Открыть поток чтения файла...
                    try
                    {
                        ExcelFile excel = new ExcelFile();
                        excel.LoadXls(path);                                                                //загружаем в созданный экземпляр документ Excel
                        name_worksheet = "Расчет " + mounth[date.Month];                                    //Генерируем имя необходимого листа в зависимости от переданной даты

                        foreach (ExcelWorksheet w in excel.Worksheets)                                      //Перебор листов
                        {
                            if (w.Name.Equals(name_worksheet, StringComparison.InvariantCultureIgnoreCase)) //Если имя совпадает с сгенерируемым нами то
                            {
                                start_work = true;
                                foreach (ExcelRow r in w.Rows)                                   //перебор строк документа
                                {
                                    if (r.Cells[0].Value != null)                                //Если значение строки не пусто то
                                    {
                                        if (r.Cells[0].Value.ToString() == date.Date.ToString()) //Если дата в строке совпадает с переданной то
                                        {
                                            for (int i = 0; i < 24; i++)                         //Перебор ячеек со значениями по часам
                                            {
                                                object[] row = new object[3];
                                                row[0] = i.ToString();                               //Час

                                                if (r.Cells[i + 2].Value == null)                    //Если ячейка пуста то
                                                {
                                                    row[(int)INDEX_COLUMN.Power] = 0.ToString("F2"); //0 в формате (0.00)
                                                }
                                                else
                                                {
                                                    row[(int)INDEX_COLUMN.Power] = r.Cells[i + 2].Value.ToString().Trim();//Значение ПБР
                                                }
                                                if (w.Rows[r.Index + 1].Cells[i + 2].Value == null)
                                                {
                                                    row[(int)INDEX_COLUMN.Temperature] = string.Empty;
                                                }
                                                else
                                                {
                                                    row[(int)INDEX_COLUMN.Temperature] = w.Rows[r.Index + 1].Cells[i + 2].Value.ToString().Trim(); //Значение температуры
                                                }
                                                dataTableRes.Rows.Add(row);                                                                        //Добавляем строку в таблицу
                                            }
                                        }
                                    }

                                    if (dataTableRes.Rows.Count >= 24) //Если количестко строк стало равным ли больше 24 то прерываем перебор
                                    {
                                        //err = (int)INDEX_ERR.NOT_ERR;
                                        break;
                                    }
                                }
                            }
                            else
                            {
                                if (dataTableRes.Rows.Count == 0 && col_worksheet == excel.Worksheets.Count - 1 && start_work == true)
                                {
                                    err = (int)INDEX_ERR.NOT_DATA;
                                    break;
                                }
                                else
                                {
                                    if (dataTableRes.Rows.Count >= 24 && start_work == true)
                                    {
                                        err = (int)INDEX_ERR.NOT_ERR;
                                        break;
                                    }
                                    else
                                    {
                                        err = (int)INDEX_ERR.NOT_WORKSHEET;
                                    }
                                }
                            }
                            col_worksheet++;
                        }
                    }
                    catch (Exception e)
                    {
                        Logging.Logg().Error("PanelAdminLK : getCSV - ошибка при открытии потока" + e.Message, Logging.INDEX_MESSAGE.NOT_SET);
                    }

                    return(dataTableRes);
                }
예제 #3
0
        /// <summary>
        /// Метод экспорта значений из DataGridView в список значений компонентов
        /// </summary>
        protected override void getDataGridViewAdmin()
        {
            double value = -1F;
            bool   valid = false;

            foreach (FormChangeMode.KeyDevice key in ((AdminTS_LK)m_admin).m_listKeyTECComponentDetail) //Перебор компонентов
            {
                if (key.Mode == FormChangeMode.MODE_TECCOMPONENT.TG)
                {
                    //Если ТГ, то
                    int indx_tg = ((AdminTS_LK)m_admin).m_listKeyTECComponentDetail.IndexOf(key),
                                              indx_gtp = getIndexGTPOwner(indx_tg);

                    if ((!(indx_tg < 0)) && (!(indx_gtp < 0)))
                    {
                        for (int i = 0; i < 24; i++)                                           //Перебор часовых значений ТГ
                        {
                            foreach (DataGridViewColumn col in dgwAdminTable.Columns)          //Перебор колонок DataGridView
                            {
                                if (m_admin.GetNameTECComponent(key, false) == col.HeaderText) //Если имя ТГ соответствует имени колонки
                                {
                                    if (dgwAdminTable.Rows[i].Cells[col.Index].Value == null)  // , то проверка на пустое поле и запись значения
                                    {
                                        ((AdminTS_LK)m_admin).m_listCurRDGValues[indx_tg][i].pbr = Convert.ToDouble(0.ToString("F2"));
                                    }
                                    else
                                    {
                                        ((AdminTS_LK)m_admin).m_listCurRDGValues[indx_tg][i].pbr = Convert.ToDouble(dgwAdminTable.Rows[i].Cells[col.Index].Value); // '+ 1' за счет DateTime
                                    }
                                }
                            }
                            ((AdminTS_LK)m_admin).m_listCurRDGValues[indx_tg][i].pbr_number = "ППБР";
                            //AdminTS.m_sOwner_PBR = 0;
                        }
                    }
                    else
                    {
                        ;
                    }
                }
                else if (key.Mode == FormChangeMode.MODE_TECCOMPONENT.GTP)
                {
                    //Если ГТП то
                    int indx_gtp = ((AdminTS_LK)m_admin).m_listKeyTECComponentDetail.IndexOf(key);

                    if (!(indx_gtp < 0))
                    {
                        for (int i = 0; i < 24; i++)//Перебор часовых значений ГТП
                        {
                            try {
                                ((AdminTS_LK)m_admin).m_listCurRDGValues[indx_gtp][i].pbr  = Convert.ToDouble(dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminLK.DESC_INDEX.PLAN_POWER].Value); // '+ 1' за счет DateTime
                                ((AdminTS_LK)m_admin).m_listCurRDGValues[indx_gtp][i].pmin = Convert.ToDouble(dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminLK.DESC_INDEX.PLAN_TEMPERATURE].Value);

                                if (!(this.dgwAdminTable.Rows[i].Cells[this.dgwAdminTable.Columns.Count - 3].Value == null))
                                {
                                    ((AdminTS_LK)m_admin).m_listCurRDGValues[indx_gtp][i].deviationPercent = bool.Parse(this.dgwAdminTable.Rows[i].Cells[this.dgwAdminTable.Columns.Count - 3].Value.ToString());
                                }
                                else
                                {
                                    ((AdminTS_LK)m_admin).m_listCurRDGValues[indx_gtp][i].deviationPercent = false;
                                }

                                valid = double.TryParse((string)this.dgwAdminTable.Rows[i].Cells[this.dgwAdminTable.Columns.Count - 2].Value, out value);
                                ((AdminTS_LK)m_admin).m_listCurRDGValues[indx_gtp][i].deviation  = value;
                                ((AdminTS_LK)m_admin).m_listCurRDGValues[indx_gtp][i].pbr_number = "ППБР";

                                //AdminTS.m_sOwner_PBR = 0;
                            } catch (Exception e) {
                                Logging.Logg().Exception(e, string.Format(@"PanelAdminLK::getDataGridViewAdmin () - ..."), Logging.INDEX_MESSAGE.NOT_SET);
                            }
                        }
                    }
                    else
                    {
                        ;
                    }
                }
            }

            //m_admin.CopyCurRDGValues();
        }
예제 #4
0
        /// <summary>
        /// Метод добавления колонок в DataGridView + заполнение значениями ячеек
        /// </summary>
        /// <param name="date">Дата отображаемых значений</param>
        /// <param name="bNewValues">Признак наличия новых значений (false - обновление оформления представления при изменении цветовой схемы)</param>
        /// <param name="bSyncReq">Признак необходимости синхронизации по окончании выполнения метода</param>
        private void addTextBoxColumn(DateTime date, bool bNewValues, bool bSyncReq)
        {
            FormChangeMode.KeyDevice key = ((AdminTS_LK)m_admin).CurrentKey;
            int indx = ((AdminTS_LK)m_admin).GetCurrentIndexTECComponent();

            if (key.Id > (int)TECComponent.ID.TG)
            {
                // новый столбец
                ((DataGridViewAdminLK)this.dgwAdminTable).AddTextBoxColumn(m_admin.GetNameTECComponent(key, false),
                                                                           key.Id,
                                                                           m_admin.GetIdOwnerTECComponent(key.Mode == FormChangeMode.MODE_TECCOMPONENT.GTP ? FormChangeMode.MODE_TECCOMPONENT.TEC : FormChangeMode.MODE_TECCOMPONENT.GTP, key).Id,
                                                                           date);

                for (int i = 0; i < 24; i++)
                {
                    //Дата/время
                    if (this.dgwAdminTable.Columns.Count == ((int)DataGridViewAdminLK.DESC_INDEX.COUNT_COLUMN + 1)) //Только при добавлении 1-го столбца
                    {
                        this.dgwAdminTable.Rows[i].Cells[0].Value = date.AddHours(i + 1).ToString(@"dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture);
                    }
                    else
                    {
                        ;
                    }
                    //// цвет 0-го столбца изменяем всегда, на случай изменения цветовой гаммы приложения
                    //this.dgwAdminTable.Rows [i].Cells [0].Style.BackColor = dgwBackColor;

                    try
                    {
                        this.dgwAdminTable.Rows[i].Cells[this.dgwAdminTable.Columns.Count - 4].Value = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].pbr.ToString("F2");
                        //this.dgwAdminTable.Rows [i].Cells [this.dgwAdminTable.Columns.Count - 4].Style.BackColor = dgwBackColor;
                    }
                    catch (Exception e)
                    {
                        Logging.Logg().Warning(string.Format("PanelAdminLK : addTextBoxColumn () - нет листа с суточными значениями(снова потерян индекс): {0}", e.Message)
                                               , Logging.INDEX_MESSAGE.NOT_SET);
                    }

                    ((DataGridViewAdminLK)this.dgwAdminTable).DataGridViewAdminLK_CellValueChanged(null
                                                                                                   , new DataGridViewCellEventArgs(this.dgwAdminTable.Columns.Count - 4, i));
                }
            }
            else
            {
                ;
            }

            if ((Admin.GetIdTECComponent(indx) > (int)TECComponent.ID.GTP) &&
                (Admin.GetIdTECComponent(indx) < (int)TECComponent.ID.PC))
            {
                for (int i = 0; i < 24; i++)
                {
                    //Дата/время
                    if (this.dgwAdminTable.Columns.Count == ((int)DataGridViewAdminLK.DESC_INDEX.COUNT_COLUMN + 1))   //Только при добавлении 1-го столбца
                    {
                        this.dgwAdminTable.Rows [i].Cells [0].Value = date.AddHours(i + 1).ToString(@"dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture);
                    }
                    else
                    {
                        ;
                    }
                    //// цвет 0-го столбца изменяем на случай изменения цветовой гаммы приложения
                    //this.dgwAdminTable.Rows [i].Cells [0].Style.BackColor = dgwBackColor;

                    try
                    {
                        this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminLK.DESC_INDEX.PLAN_POWER].Value = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].pbr.ToString("F2");
                        //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminLK.DESC_INDEX.PLAN_POWER].Style.BackColor = dgwBackColor;
                        this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminLK.DESC_INDEX.PLAN_TEMPERATURE].Value = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].pmin.ToString("F2");
                        //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminLK.DESC_INDEX.PLAN_TEMPERATURE].Style.BackColor = dgwBackColor;
                        this.dgwAdminTable.Rows[i].Cells[dgwAdminTable.Columns.Count - 3].Value = (bool)(((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].deviationPercent);
                        //this.dgwAdminTable.Rows [i].Cells [dgwAdminTable.Columns.Count - 3].Style.BackColor = dgwBackColor;
                        this.dgwAdminTable.Rows[i].Cells[dgwAdminTable.Columns.Count - 2].Value = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].deviation.ToString("F2");
                        //this.dgwAdminTable.Rows [i].Cells [dgwAdminTable.Columns.Count - 2].Style.BackColor = dgwBackColor;
                    }
                    catch (Exception e)
                    {
                        Logging.Logg().Warning(string.Format("PanelAdminLK : addTextBoxColumn - нет листа с суточными значениями(снова потерян индекс): {0}", e.Message)
                                               , Logging.INDEX_MESSAGE.NOT_SET);
                    }

                    ((DataGridViewAdminLK)this.dgwAdminTable).DataGridViewAdminLK_CellValueChanged(null
                                                                                                   , new DataGridViewCellEventArgs(this.dgwAdminTable.Columns.Count - 4, i));
                }
            }

            if (bNewValues == true)
            {
                m_admin.CopyCurToPrevRDGValues();
                ((AdminTS_LK)m_admin).m_listPrevRDGValues.Add(m_admin.m_prevRDGValues);
            }
            else
            {
                ;
            }

            if (bSyncReq == true)
            {
                ((AdminTS_LK)m_admin).m_semaIndxTECComponents.Release();
            }
            else
            {
                ;
            }
        }
예제 #5
0
        /// <summary>
        /// Заполнить представление значениями
        ///  , при необходимости переносит выполнение в собственный поток
        ///  для регулирования доступа к элементам управления
        /// </summary>
        /// <param name="date">Дата отображаемых значений</param>
        /// <param name="bNewValues">Признак наличия новых значений, иначе требуется изменить оформление представления</param>
        public override void SetDataGridViewAdmin(DateTime date, bool bNewValues)
        {
            int hour = -1
            , offset = -1;
            string strFmtDatetime = string.Empty;
            double PBR_0          = 0F;

            HAdmin.RDGStruct[] arSumCurRDGValues = null;
            IAsyncResult       iar;

            (m_admin as AdminTS_Vyvod).SummatorRDGValues();

            if ((m_admin as AdminTS_TG).CompletedGetRDGValues == true)
            {
                //??? не очень изящное решение
                if (IsHandleCreated == true)
                {
                    if (InvokeRequired == true)
                    {
                        //m_evtAdminTableRowCount.Reset ();
                        iar = this.BeginInvoke(new DelegateBoolFunc(normalizedTableHourRows), InvokeRequired);
                        //m_evtAdminTableRowCount.WaitOne (System.Threading.Timeout.Infinite);
                        WaitHandle.WaitAny(new WaitHandle [] { iar.AsyncWaitHandle }, System.Threading.Timeout.Infinite);
                        this.EndInvoke(iar);
                    }
                    else
                    {
                        normalizedTableHourRows(InvokeRequired);
                    }
                }
                else
                {
                    Logging.Logg().Error(@"PanelAdminVyvod::setDataGridViewAdmin () - ... BeginInvoke (normalizedTableHourRows) - ...", Logging.INDEX_MESSAGE.D_001);
                }

                // получить значения из объекта для обращения к данным
                PBR_0 =
                    (this.dgwAdminTable as DataGridViewAdminVyvod).m_PBR_0 =
                        (m_admin as AdminTS_Vyvod).m_SumRDGValues_PBR_0;
                arSumCurRDGValues = new HAdmin.RDGStruct[(m_admin as AdminTS_Vyvod).m_arSumRDGValues.Length];
                (m_admin as AdminTS_Vyvod).m_arSumRDGValues.CopyTo(arSumCurRDGValues, 0);

                this.dgwAdminTable.DefaultCellStyle.BackColor = this.dgwAdminTable.BackColor;

                for (hour = 0; hour < arSumCurRDGValues.Length; hour++)
                {
                    strFmtDatetime = m_admin.GetFmtDatetime(hour);
                    offset         = m_admin.GetSeasonHourOffset(hour + 1);

                    this.dgwAdminTable.Rows[hour].Cells[(int)DataGridViewAdminVyvod.DESC_INDEX.DATE_HOUR].Value = date.AddHours(hour + 1 - offset).ToString(strFmtDatetime);
                    //this.dgwAdminTable.Rows [hour].Cells [(int)DataGridViewAdminVyvod.DESC_INDEX.DATE_HOUR].Style.BackColor = this.dgwAdminTable.BackColor;

                    this.dgwAdminTable.Rows[hour].Cells[(int)DataGridViewAdminVyvod.DESC_INDEX.PLAN].Value       = arSumCurRDGValues[hour].pmin.ToString("F2");
                    this.dgwAdminTable.Rows[hour].Cells[(int)DataGridViewAdminVyvod.DESC_INDEX.PLAN].ToolTipText = arSumCurRDGValues[hour].pbr_number;
                    //this.dgwAdminTable.Rows [hour].Cells [(int)DataGridViewAdminVyvod.DESC_INDEX.PLAN].Style.BackColor = this.dgwAdminTable.BackColor;

                    // UDGt вычисляется в 'DataGridViewAdminVyvod::onCellValueChanged'

                    (this.dgwAdminTable.Rows[hour].Cells[(int)DataGridViewAdminVyvod.DESC_INDEX.RECOMENDATION] as DataGridViewComboBoxCell).Value = (object)(((int)arSumCurRDGValues[hour].recomendation).ToString());
                    this.dgwAdminTable.Rows[hour].Cells[(int)DataGridViewAdminVyvod.DESC_INDEX.RECOMENDATION].ToolTipText = arSumCurRDGValues[hour].dtRecUpdate.ToString();
                    //this.dgwAdminTable.Rows [hour].Cells [(int)DataGridViewAdminVyvod.DESC_INDEX.RECOMENDATION].Style.BackColor = this.dgwAdminTable.BackColor;
                    this.dgwAdminTable.Rows[hour].Cells[(int)DataGridViewAdminVyvod.DESC_INDEX.DEVIATION_TYPE].Value = arSumCurRDGValues[hour].deviationPercent.ToString();
                    //this.dgwAdminTable.Rows [hour].Cells [(int)DataGridViewAdminVyvod.DESC_INDEX.DEVIATION_TYPE].Style.BackColor = this.dgwAdminTable.BackColor;
                    this.dgwAdminTable.Rows[hour].Cells[(int)DataGridViewAdminVyvod.DESC_INDEX.DEVIATION].Value = arSumCurRDGValues[hour].deviation.ToString("F2");
                    //this.dgwAdminTable.Rows [hour].Cells [(int)DataGridViewAdminVyvod.DESC_INDEX.DEVIATION].Style.BackColor = this.dgwAdminTable.BackColor;

                    //if (bNewValues == false) {
                    //// самостоятельно изменяем цвет фона, т.к. в этих столбцах ячейки "обновляются" при проверке/изменении значений
                    //    this.dgwAdminTable.Rows [hour].Cells [(int)DataGridViewAdminVyvod.DESC_INDEX.UDGt].Style.BackColor = this.dgwAdminTable.BackColor;
                    //} else
                    //    ;
                }
            }
            else
            {
                ; // рано отображать, не все компоненнты(параметры) опрошены
            }
            if (bNewValues == true)
            {
                m_admin.CopyCurToPrevRDGValues();
            }
            else
            {
                ;
            }
        }
예제 #6
0
            public void SummatorRDGValues()
            {
                int i  = m_listTECComponentIndexDetail.IndexOf(indxTECComponents)
                , hour = 1
                , iDiv = -1;                                                          // ' = i == 0 ? 1 : 2' общий делитель для усреднения невозможно определить, т.к. зависит от условия "> 0"

                TECComponent tc = allTECComponents[m_listTECComponentIndexDetail[i]]; // компонент - параметр вывода

                if ((i < m_listCurRDGValues.Count) &&
                    (m_listCurRDGValues[i].Length > 0))
                {
                    if (m_arSumRDGValues == null)
                    {
                        m_arSumRDGValues = new HAdmin.RDGStruct[m_listCurRDGValues[i].Length];
                    }
                    else
                    if (!(m_arSumRDGValues.Length == m_listCurRDGValues[i].Length))
                    {
                        throw new Exception(string.Format(@"AdminTS_Vyvod::GetSumRDGValues () - не совпадают размеры массивов (часы в сутках) с полученными данными ПБР для компонента ID={0}...", tc.m_id));
                    }
                    else
                    {
                        ;
                    }

                    if (m_curRDGValues_PBR_0 > 0)
                    {
                        m_SumRDGValues_PBR_0 += m_curRDGValues_PBR_0;
                        m_SumRDGValues_PBR_0 /= i == 0 ? 1 : 2; // делитель для усреднения
                    }
                    else
                    {
                        ;
                    }

                    for (hour = 0; hour < m_listCurRDGValues[i].Length; hour++)
                    {
                        //arSumCurRDGValues[hour].pbr_number = arCurRDGValues[hour].pbr_number;
                        //if (arCurRDGValues[hour].pbr > 0) arSumCurRDGValues[hour].pbr += arCurRDGValues[hour].pbr; else ;
                        // для всех элементов д.б. одинаковые!
                        if (m_listCurRDGValues[i][hour].pmin > 0)
                        {
                            m_arSumRDGValues[hour].pmin += m_listCurRDGValues[i][hour].pmin;
                            m_arSumRDGValues[hour].pmin /= i == 0 ? 1 : 2; // делитель для усреднения
                        }
                        else
                        {
                            ;
                        }
                        //if (arCurRDGValues[hour].pmax > 0) arSumCurRDGValues[hour].pmax += arCurRDGValues[hour].pmax; else ;
                        // рекомендации для всех элементов д.б. одинаковые!
                        if (!(m_listCurRDGValues[i][hour].recomendation == 0F))
                        {
                            m_arSumRDGValues[hour].recomendation += m_listCurRDGValues[i][hour].recomendation;
                            m_arSumRDGValues[hour].recomendation /= i == 0 ? 1 : 2; // делитель для усреднения
                        }
                        else
                        {
                            ;
                        }
                        // типы отклонений  для всех элементов д.б. одинаковые!
                        if (!(m_listCurRDGValues[i][hour].deviationPercent == m_arSumRDGValues[hour].deviationPercent))
                        {
                            m_arSumRDGValues[hour].deviationPercent = m_listCurRDGValues[i][hour].deviationPercent;
                        }
                        else
                        {
                            ;
                        }
                        // величины отклонения для всех элементов д.б. одинаковые!
                        if (m_listCurRDGValues[i][hour].deviation > 0)
                        {
                            m_arSumRDGValues[hour].deviation += m_listCurRDGValues[i][hour].deviation;
                            m_arSumRDGValues[hour].deviation /= i == 0 ? 1 : 2; // делитель для усреднения
                        }
                        else
                        {
                            ;
                        }
                    }
                }
                else
                {
                    Logging.Logg().Error(string.Format(@"PanelAdminVyvod.AdminTS_Vyvod::SummatorRDGValues (комп.ID={0}, комп.индекс={1}, комп.индекс_детальный={2}) - суммирование (кол-во часов={3}) не выполнено..."
                                                       , tc.m_id, indxTECComponents, i, m_listCurRDGValues[i].Length)
                                         , Logging.INDEX_MESSAGE.NOT_SET);
                }
            }
예제 #7
0
        /// <summary>
        /// Отобразить значения в представлении
        /// </summary>
        /// <param name="date">Дата, за которую получены значения для отображения</param>
        /// <param name="bNewValues">Признак наличия новых значений, иначе требуется изменить оформление представления</param>
        public override void setDataGridViewAdmin(DateTime date, bool bNewValues)
        {
            int offset            = -1
            , nextIndx            = -1;
            string strFmtDatetime = string.Empty;

            switch (modeGetRDGValues)
            {
            case MODE_GET_RDG_VALUES.DISPLAY:
                //??? не очень изящное решение
                if (IsHandleCreated == true)
                {
                    if (InvokeRequired == true)
                    {
                        m_evtAdminTableRowCount.Reset();
                        // кол-во строк может быть изменено(нормализовано) только в том потоке,в котором было выполнено создание элемента управления
                        this.BeginInvoke(new DelegateBoolFunc(normalizedTableHourRows), InvokeRequired);
                        //??? ожидать, пока не завершится выполнение предыдущего потока
                        m_evtAdminTableRowCount.WaitOne(System.Threading.Timeout.Infinite);
                    }
                    else
                    {
                        normalizedTableHourRows(InvokeRequired);
                    }
                }
                else
                {
                    Logging.Logg().Error(@"PanelAdminKomDisp::setDataGridViewAdmin () - ... BeginInvoke (normalizedTableHourRows) - ...", Logging.INDEX_MESSAGE.D_001);
                }

                ((DataGridViewAdminKomDisp)this.dgwAdminTable).m_PBR_0 = m_admin.m_curRDGValues_PBR_0;

                //??? отобразить значения - почему не внутри класса-объекта представления
                for (int i = 0; i < m_admin.m_curRDGValues.Length; i++)
                {
                    strFmtDatetime = m_admin.GetFmtDatetime(i);
                    offset         = m_admin.GetSeasonHourOffset(i + 1);

                    this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DATE_HOUR].Value             = date.AddHours(i + 1 - offset).ToString(strFmtDatetime);
                    this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DATE_HOUR].Style.BackColor = this.dgwAdminTable.BackColor;

                    this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.PLAN].Value             = m_admin.m_curRDGValues[i].pbr.ToString("F2");
                    this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.PLAN].ToolTipText       = m_admin.m_curRDGValues[i].pbr_number;
                    this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.PLAN].Style.BackColor = this.dgwAdminTable.BackColor;
                    if (i > 0)
                    {
                        this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.UDGe].Value = (((m_admin.m_curRDGValues[i].pbr + m_admin.m_curRDGValues[i - 1].pbr) / 2) + m_admin.m_curRDGValues[i].recomendation).ToString("F2");
                    }
                    else
                    {
                        this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.UDGe].Value = (((m_admin.m_curRDGValues[i].pbr + m_admin.m_curRDGValues_PBR_0) / 2) + m_admin.m_curRDGValues[i].recomendation).ToString("F2");
                    }
                    this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.UDGe].Style.BackColor          = this.dgwAdminTable.BackColor;
                    this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.RECOMENDATION].Value             = m_admin.m_curRDGValues[i].recomendation.ToString("F2");
                    this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.RECOMENDATION].ToolTipText       = m_admin.m_curRDGValues[i].dtRecUpdate.ToString();
                    this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.RECOMENDATION].Style.BackColor = this.dgwAdminTable.BackColor;
                    this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.FOREIGN_CMD].Value                = m_admin.m_curRDGValues[i].fc.ToString();
                    this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.FOREIGN_CMD].Style.BackColor    = this.dgwAdminTable.BackColor;
                    this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION_TYPE].Value             = m_admin.m_curRDGValues[i].deviationPercent.ToString();
                    this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION_TYPE].Style.BackColor = this.dgwAdminTable.BackColor;
                    this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION].Value             = m_admin.m_curRDGValues[i].deviation.ToString("F2");
                    this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION].Style.BackColor = this.dgwAdminTable.BackColor;
                }

                if (bNewValues == true)
                {
                    m_admin.CopyCurToPrevRDGValues();
                }
                else
                {
                    ;
                }
                break;

            case MODE_GET_RDG_VALUES.EXPORT:
                nextIndx = Admin.AddValueToExportRDGValues(m_admin.m_curRDGValues, date);

                if (nextIndx < 0)
                {
                    Invoke(new Action(btnRefresh.PerformClick));
                }
                else
                {
                    Admin.GetRDGValues(nextIndx, date);
                }
                break;

            default:
                break;
            }
        }
예제 #8
0
        private void btnImportCSV_PBRValues_Click(object sender, EventArgs e)
        {
            int err = -1; // признак ошибки при определении номера ПБР

            //Вариант №1 (каталог)
            //FolderBrowserDialog folders = new FolderBrowserDialog();
            //folders.ShowNewFolderButton = false;
            //folders.RootFolder = Environment.SpecialFolder.Desktop;
            //folders.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); //@"D:\Temp";

            //if (folders.ShowDialog(FormMain.formParameters) == DialogResult.OK)
            //    ((AdminTS_KomDisp)m_admin).ImpPPBRCSVValues(mcldrDate.SelectionStart, folders.SelectedPath + @"\");
            //else
            //    ;

            //Вариант №2 (файл)
            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           = @"csv файлы (*.csv)|*.csv";
            files.Title            = "Выберите файл с ПБР...";

            if (files.ShowDialog(FormMain.formParameters) == DialogResult.OK)
            {
                Logging.Logg().Action(string.Format(@"PanelAdminKomDisp::btnImportCSV_PBRValues_Click () - выбран CSV-макет {0}...", files.FileName), Logging.INDEX_MESSAGE.NOT_SET);

                int iRes       = 0
                , curPBRNumber = m_admin.GetPBRNumber(out err);      //Текущий номер ПБР
                //Дата ПБР, номер ПБР из наименования файла
                object[] prop = AdminTS_KomDisp.GetPropertiesOfNameFilePPBRCSVValues(files.FileName);

                //if (!((DateTime)prop[0] == DateTime.Now.Date))
                if (!(((DateTime)prop[0]).CompareTo(m_admin.m_curDate.Date) == 0))
                {
                    iRes = -1;
                }
                else
                //Сравнить с текущим номером ПБР
                // , номер ПБР по умолчанию не рассматривается (err == 0)
                if ((!((int)prop[1] > curPBRNumber)) &&
                    (err == 0))
                {
                    iRes = -2;
                }
                else
                {
                    ;     //iRes = 0
                }
                //Проверка на ошибки
                if (!(iRes == 0))
                {
                    string strMsg = string.Empty;
                    //Ошибка по дате
                    if (iRes == -1)
                    {
                        strMsg = string.Format(@"Дата загружаемого [{0:dd.MM.yyyy}] набора ПБР не соответствует установл./дате [{1:dd.MM.yyyy}]"
                                               , ((DateTime)prop[0]), m_admin.m_curDate.Date);
                        MessageBox.Show(this, strMsg, @"Информация", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        //Ошибка по номеру ПБР
                        if (iRes == -2)
                        {
                            strMsg = string.Format(@"Номер загружаемого набора [{0}] ПБР не выше, чем текущий [{1}].{2}Продолжить?", (int)prop[1], curPBRNumber, Environment.NewLine);
                            if (MessageBox.Show(this, strMsg, @"Подтверждение", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
                            {
                                iRes = 0;
                            }
                            else
                            {
                                ;
                            }
                        }
                        else
                        {
                            ;
                        }
                    }
                }
                else
                {
                    ;
                }

                //Еще одна проверка на ошибки (т.к. была возможность ее подтвердить)
                if (iRes == 0)
                {
                    ((AdminTS_KomDisp)m_admin).ImpCSVValues(mcldrDate.SelectionStart, files.FileName);
                }
                else
                {
                    Logging.Logg().Action(string.Format(@"PanelAdminKomDisp::btnImportCSV_PBRValues_Click () - отмена импорта значений CSV-макета, ошибка={0}...", iRes), Logging.INDEX_MESSAGE.NOT_SET);
                }
            }
            else
            {
                Logging.Logg().Action(string.Format(@"PanelAdminKomDisp::btnImportCSV_PBRValues_Click () - отмена выбора CSV-макета..."), Logging.INDEX_MESSAGE.NOT_SET);
            }
        }
예제 #9
0
        /// <summary>
        /// Отобразить значения в представлении
        /// </summary>
        /// <param name="date">Дата, за которую получены значения для отображения</param>
        /// <param name="bResult">Признак наличия новых значений, иначе требуется изменить оформление представления</param>
        public override void SetDataGridViewAdmin(DateTime date, bool bResult)
        {
            int offset = -1
            , nextIndx = -1;
            string       strFmtDatetime = string.Empty;
            IAsyncResult iar;

            Action exportPBRValuesEnded = delegate() {
                ModeGetRDGValues = AdminTS.MODE_GET_RDG_VALUES.DISPLAY;
                btnRefresh.PerformClick();
            };

            if ((ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY)
            {
                if (bResult == true)
                {
                    //??? не очень изящное решение
                    if (IsHandleCreated == true)
                    {
                        if (InvokeRequired == true)
                        {
                            //m_evtAdminTableRowCount.Reset ();
                            // кол-во строк может быть изменено(нормализовано) только в том потоке,в котором было выполнено создание элемента управления
                            iar = this.BeginInvoke(new DelegateBoolFunc(normalizedTableHourRows), InvokeRequired);
                            //??? ожидать, пока не завершится выполнение предыдущего потока
                            //m_evtAdminTableRowCount.WaitOne (System.Threading.Timeout.Infinite);
                            WaitHandle.WaitAny(new WaitHandle [] { iar.AsyncWaitHandle }, System.Threading.Timeout.Infinite);
                            this.EndInvoke(iar);
                        }
                        else
                        {
                            normalizedTableHourRows(InvokeRequired);
                        }
                    }
                    else
                    {
                        normalizedTableHourRows(false);

                        if (!((ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST))
                        {
                            Logging.Logg().Error(@"PanelAdminKomDisp::setDataGridViewAdmin () - ... BeginInvoke (normalizedTableHourRows) - ...", Logging.INDEX_MESSAGE.D_001);
                        }
                        else
                        {
                            ;
                        }
                    }

                    ((DataGridViewAdminKomDisp)this.dgwAdminTable).m_PBR_0 = m_admin.m_curRDGValues_PBR_0;

                    //??? отобразить значения - почему не внутри класса-объекта представления
                    for (int i = 0; i < m_admin.m_curRDGValues.Length; i++)
                    {
                        strFmtDatetime = m_admin.GetFmtDatetime(i);
                        offset         = m_admin.GetSeasonHourOffset(i + 1);

                        this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DATE_HOUR].Value = date.AddHours(i + 1 - offset).ToString(strFmtDatetime);
                        //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DATE_HOUR].Style.BackColor = this.dgwAdminTable.BackColor;

                        this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.PLAN].Value       = m_admin.m_curRDGValues [i].pbr.ToString("F2");
                        this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.PLAN].ToolTipText = m_admin.m_curRDGValues [i].pbr_number;
                        //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.PLAN].Style.BackColor = this.dgwAdminTable.BackColor;
                        if (i > 0)
                        {
                            this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.UDGe].Value = (((m_admin.m_curRDGValues [i].pbr + m_admin.m_curRDGValues [i - 1].pbr) / 2) + m_admin.m_curRDGValues [i].recomendation).ToString("F2");
                        }
                        else
                        {
                            this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.UDGe].Value = (((m_admin.m_curRDGValues [i].pbr + m_admin.m_curRDGValues_PBR_0) / 2) + m_admin.m_curRDGValues [i].recomendation).ToString("F2");
                        }
                        //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.UDGe].Style.BackColor = this.dgwAdminTable.BackColor;
                        this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.RECOMENDATION].Value       = m_admin.m_curRDGValues [i].recomendation.ToString("F2");
                        this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.RECOMENDATION].ToolTipText = m_admin.m_curRDGValues [i].dtRecUpdate.ToString();
                        //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.RECOMENDATION].Style.BackColor = this.dgwAdminTable.BackColor;
                        this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.FOREIGN_CMD].Value = m_admin.m_curRDGValues [i].fc.ToString();
                        //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.FOREIGN_CMD].Style.BackColor = this.dgwAdminTable.BackColor;
                        this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION_TYPE].Value = m_admin.m_curRDGValues [i].deviationPercent.ToString();
                        //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION_TYPE].Style.BackColor = this.dgwAdminTable.BackColor;
                        this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION].Value = m_admin.m_curRDGValues [i].deviation.ToString("F2");
                        //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminKomDisp.COLUMN_INDEX.DEVIATION].Style.BackColor = this.dgwAdminTable.BackColor;
                    }

                    m_admin.CopyCurToPrevRDGValues();
                }
                else
                {
                    ;
                }
            }
            else if ((ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT)
            {
                nextIndx = bResult == true
                    ? Admin.AddValueToExportRDGValues(m_admin.m_curRDGValues, date)
                        : -1;

                if (!(nextIndx > 0))
                {
                    if (InvokeRequired == true)
                    {
                        Invoke((MethodInvoker) delegate() {
                            exportPBRValuesEnded();
                        });
                    }
                    else
                    {
                        exportPBRValuesEnded();
                    }
                }
                else
                {
                    Admin.GetRDGValues(nextIndx, date);
                }
            }
            // сообщить в модульный тест о завершении очередной итерации
            EventUnitTestSetDataGridViewAdminCompleted?.Invoke();
        }
예제 #10
0
        static void Main()
        {
            int iRes = 0;

            //Если назначить неизвестный тип логирования - 1-е сообщения б. утеряны
            Logging.SetMode();

            ////Если в строке Assembly заменить номер Построения на "*", номер Ревизия на "очистить"
            //Version version = Assembly.GetExecutingAssembly().GetName().Version;
            //DateTime buildDate = new DateTime(2000, 1, 1).AddDays(version.Build).AddSeconds(version.Revision * 2);

            string strHeaderError = string.Empty;
            bool   bRun           = false;

            s_mtxApp = new Mutex(true, Logging.AppName, out bRun);
            if (bRun == true)
            {
                try { ProgramBase.Start(); }
                catch (Exception e) {
                    //MessageBox.Show(null, @"Возможно, повторный запуск приложения" + @".\nили обратитесь к оператору тех./поддержки по тел. 4444 или по тел. 289-03-37.", "Ошибка инициализации!", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    MessageBox.Show(null, e.Message + "\nили обратитесь к оператору тех./поддержки по тел. 4444 или по тел. 289-03-37.", "Ошибка инициализации!", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    iRes = -1;
                }

                FormMain formMain = null;

                if (iRes == 0)
                {
                    try { formMain = new FormMain(); }
                    catch (Exception e)
                    {
                        strHeaderError = "Ошибка запуска приложения";
                        MessageBox.Show((IWin32Window)null, e.Message + Environment.NewLine + ProgramBase.MessageAppAbort, strHeaderError);
                        Logging.Logg().Exception(e, strHeaderError, Logging.INDEX_MESSAGE.NOT_SET);
                    }

                    if (!(formMain == null))
                    {
                        try { Application.Run(formMain); }
                        catch (Exception e)
                        {
                            strHeaderError = "Ошибка выполнения приложения";
                            MessageBox.Show((IWin32Window)null, e.Message + Environment.NewLine + ProgramBase.MessageAppAbort, strHeaderError);
                            Logging.Logg().Exception(e, strHeaderError, Logging.INDEX_MESSAGE.NOT_SET);
                        }
                    }
                    else
                    {
                        ;
                    }

                    ProgramBase.Exit();
                }
                else
                {
                    ;
                }
            }
            else
            {
                strHeaderError = @"Ошибка";
                MessageBox.Show((IWin32Window)null, @"Запуск дублирующего экземпляра приложения" + Environment.NewLine + ProgramBase.MessageAppAbort, strHeaderError);
            }
        }
예제 #11
0
        /// <summary>
        /// Обработчик события - нажатие кнопки "Экспорт"
        /// </summary>
        private void panelManagement_OnEvtExportDo()
        {
            KEY_CONTROLS  key_ctrl = KEY_CONTROLS.UNKNOWN;
            HDataGridView dgv;
            string        pathRemoteTemplate = string.Empty
            ,pathUserTemplate         = string.Empty
            ,nameFolderRemoteTemplate = NAMEFOLDER_TEMPLATE_SOTIASSO_DAY
            ,nameFolderUserTemplate   = string.Empty
            ,nameFileTemplate         = NAMEFILE_TEMPLATE_SOTIASSO_DAY;
            ExcelFile excel;

            System.Data.DataTable tableExportDo;
            int iColumn = STARTCOLUMN_TEMPLATE_SOTIASSO_DAY
            ,iStartRow  = STARTROW_TEMPLATE_SOTIASSO_DAY
            ,i_agregate = I_AGREGATE;

            //Excel Application Object
            Microsoft.Office.Interop.Excel.Application oExcelApp;
            Microsoft.Office.Interop.Excel.Workbook    oExcelWorkbook;

            try {
                // определить путь к шаблону отчета
                pathRemoteTemplate = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,Path.Combine(nameFolderRemoteTemplate,nameFileTemplate));
                // определить каталог для размещения итогового отчета
                nameFolderUserTemplate = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),@"Statistic");
                // определить полный путь для размещения итогового отчета
                pathUserTemplate = Path.Combine(nameFolderUserTemplate
                                                ,nameFileTemplate.Replace(@"TEC",(string)(findControl(KEY_CONTROLS.CBX_TEC_LIST.ToString()) as ComboBox).SelectedItem)
                                                .Replace(@"DATE",m_panelManagement.CurDateTime.Date.ToString(@"yyyyMMdd")));
                // создать при необходимости каталог на ПК пользователя
                if (Directory.Exists(nameFolderUserTemplate) == false)
                {
                    Directory.CreateDirectory(nameFolderUserTemplate);
                }
                else
                {
                    ;
                }
                // проверить: выполняется ли уже MS Excel
                oExcelApp = null;
                try {
                    oExcelApp = (Microsoft.Office.Interop.Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
                } catch {
                } finally {
                    if (object.Equals(oExcelApp,null) == true)
                    {
                        // если не выполняется - создать объект MS Excel
                        oExcelApp = new Microsoft.Office.Interop.Excel.Application();
                    }
                    else
                    {
                        ;
                    }
                }
                // проверить: существует ли уже файл с отчетом
                if (File.Exists(pathUserTemplate) == true)
                {
                    try {
                        // удалить файл, т.к. на его место запишем новый
                        File.Delete(pathUserTemplate);
                    } catch {
                        // нет доступа к файлу, возможно, он уже открыт в MS Excel - найти открытую книгу с известным наименованием
                        oExcelWorkbook = oExcelApp.Workbooks.Cast <Microsoft.Office.Interop.Excel.Workbook>().FirstOrDefault(book => { return(book.FullName.Equals(pathUserTemplate) == true); });
                        if (object.Equals(oExcelWorkbook,null) == false)
                        {
                            // закрыть - если была найдена
                            oExcelWorkbook.Close(false);
                        }
                        else
                        {
                            ;
                        }
                        // книгу "освободили" - можно удалить
                        try {
                            // но только в том случае, если книга была занята действительно MS Excel
                            File.Delete(pathUserTemplate);
                        } catch {
                            // иначе - выход (книгу блокирует другая программа)
                            return;
                        }
                    }
                }
                else
                {
                    ;
                }
                // копируем шаблон на ПК пользователя
                File.Copy(pathRemoteTemplate,pathUserTemplate);
                // объект для работы с ячейками книги MS Excel
                excel = new GemBox.Spreadsheet.ExcelFile();
                excel.LoadXls(pathUserTemplate);

                //excel.Worksheets[0].Rows[0].Cells[0].Value = i_agregate;
                // устанавливаем дату
                excel.Worksheets[0].Rows[0].Cells[1].Value = m_panelManagement.CurDateTime.Date.ToShortDateString();
                excel.Worksheets[0].Rows[0].Cells[2].Value = m_panelManagement.CurDateTime.Date.AddDays(1).ToShortDateString();

                foreach (CONN_SETT_TYPE conn_sett_type in _types)
                {
                    key_ctrl = conn_sett_type == CONN_SETT_TYPE.DATA_AISKUE ? KEY_CONTROLS.DGV_AIISKUE_VALUE
                        : conn_sett_type == CONN_SETT_TYPE.DATA_SOTIASSO ? KEY_CONTROLS.DGV_SOTIASSO_VALUE
                            : KEY_CONTROLS.UNKNOWN;

                    if (!(key_ctrl == KEY_CONTROLS.UNKNOWN))
                    {
                        dgv = findControl(key_ctrl.ToString()) as HDataGridView;

                        try {
                            tableExportDo = dgv.GetValues();
                            if (tableExportDo.Columns.Count > 0)
                            {
                                excel.Worksheets[0].InsertDataTable(tableExportDo,iStartRow - 1,iColumn,true);

                                iColumn += tableExportDo.Columns.Count;
                            }
                            else
                            {
                                // нет столбцов - нет строк - нет значений для вставки
                                ;
                            }
                        } catch (Exception e) {
                            Logging.Logg().Exception(e,string.Format(@"PanelSOTIASSODay::panelManagement_OnEvtExportDo () - conn_sett_type={0}, заполнение значениями...",conn_sett_type),Logging.INDEX_MESSAGE.NOT_SET);
                        }
                    }
                    else
                    {
                        Logging.Logg().Error(string.Format(@"PanelSOTIASSODay::panelManagement_OnEvtExportDo () - не удалось найти элемент графического интерфейса для {0}",conn_sett_type)
                                             ,Logging.INDEX_MESSAGE.NOT_SET);
                    }
                }

                excel.SaveXls(pathUserTemplate);

                //System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(@"excel.exe", string.Format("\"{0}\"", pathUserTemplate)));

                oExcelApp.Workbooks.Open(pathUserTemplate);
                oExcelApp.Visible = true;
            } catch (Exception e) {
                Logging.Logg().Exception(e,string.Format(@"PanelSOTIASSODay::panelManagement_OnEvtExportDo () - подготовка шаблона..."),Logging.INDEX_MESSAGE.NOT_SET);
            }
        }
예제 #12
0
        private void mcldrDate_DateSelected(object sender, DateRangeEventArgs e)
        {
            DialogResult result;
            Errors       resultSaving;
            string       prev_datetime = m_admin.m_prevDate.ToString();

            bool bRequery = false;

            getDataGridViewAdmin();

            if (m_admin.WasChanged())
            {
                result = MessageBox.Show(this, "Данные были изменены но не сохранялись.\nЕсли Вы хотите сохранить изменения, нажмите \"да\".\nЕсли Вы не хотите сохранять изменения, нажмите \"нет\".\nДля отмены действия нажмите \"отмена\".", "Внимание", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation);
            }
            else
            {
                result = DialogResult.No;
            }

            switch (result)
            {
            case DialogResult.Yes:
                resultSaving = m_admin.SaveChanges();
                if (resultSaving == Errors.NoError)
                {
                    bRequery = true;
                }
                else
                {
                    if (resultSaving == Errors.InvalidValue)
                    {
                        MessageBox.Show(this, "Изменение ретроспективы недопустимо!", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    }
                    else
                    {
                        MessageBox.Show(this, "Не удалось сохранить изменения, возможно отсутствует связь с базой данных.", "Ошибка сохранения", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    mcldrDate.SetDate(m_admin.m_prevDate);
                }
                break;

            case DialogResult.No:
                bRequery = true;
                break;

            case DialogResult.Cancel:
                mcldrDate.SetDate(m_admin.m_prevDate);
                break;
            }

            if (bRequery == true)
            {
                ClearTables();

                initTableHourRows();

                m_admin.GetRDGValues(/*(int)m_admin.m_typeFields,*/ m_listTECComponentIndex[comboBoxTecComponent.SelectedIndex], mcldrDate.SelectionStart);
                Logging.Logg().Action("PanelAdminKomDisp:DateSelected - Изменение даты:[" + prev_datetime + "]=>[" + m_admin.m_curDate.ToString() + "]", Logging.INDEX_MESSAGE.NOT_SET);
            }
            else
            {
                ;
            }
        }
예제 #13
0
        public FormTECComponent(ConnectionSettings connSett)
        {
            int err = 0;

            //m_connectionSetttings = connSett;

            InitializeComponent();

            m_list_UIControl = new List <System.Windows.Forms.Control> ();
            m_list_UIControl.Add(dataGridViewTEC);          //INDEX_UICONTROL.TEC
            m_list_UIControl.Add(dataGridViewTECComponent); //INDEX_UICONTROL.TEC_COMPONENT
            m_list_UIControl.Add(dataGridViewTG);           //INDEX_UICONTROL.TG

            this.ColumnTextBoxTECName.Width = m_list_UIControl[(int)INDEX_UICONTROL.DATAGRIDVIEW_TEC].Width - (2 * (23 + 1));
            //Пока добавлять/удалять ТЭЦ нельзя
            this.ColumnTextBoxTECName.Width = m_list_UIControl[(int)INDEX_UICONTROL.DATAGRIDVIEW_TEC].Width - (1 * (23 + 1) + 2);
            this.ColumnButtonTECDel.Visible = false;

            this.ColumnTECComponentName.Width = m_list_UIControl[(int)INDEX_UICONTROL.DATAGRIDVIEW_TEC_COMPONENT].Width - (1 * (23 + 1) + 2);
            this.ColumnTGName.Width           = m_list_UIControl[(int)INDEX_UICONTROL.DATAGRIDVIEW_TG].Width - (1 * (23 + 1) + 2);

            m_list_UIControl.Add(textBoxTECAdd);
            m_list_UIControl.Add(buttonTECAdd);

            m_list_UIControl.Add(textBoxTECComponentAdd);
            m_list_UIControl.Add(buttonTECComponentAdd);

            m_list_UIControl.Add(comboBoxTGAdd);
            m_list_UIControl.Add(buttonTGAdd);

            m_lockObj = new Object();

            lock (m_lockObj)
            {
            }

            //Пока добавлять/удалять ТЭЦ нельзя
            m_list_UIControl [(int)INDEX_UICONTROL.TEXTBOX_TEC_ADD].Enabled = false;
            m_list_UIControl[(int)INDEX_UICONTROL.BUTTON_TEC_ADD].Enabled   = false;

            // + 1 для ТГ
            m_list_data_original = new DataTable[(int)(FormChangeMode.MODE_TECCOMPONENT.UNKNOWN)];
            m_list_data          = new DataTable[(int)(FormChangeMode.MODE_TECCOMPONENT.UNKNOWN)];

            m_idListener = DbSources.Sources().Register(connSett, false, @"Изменение состава ТЭЦ(ГТП, ЩУ)");
            DbConnection conn = DbSources.Sources().GetConnection(m_idListener, out err);

            int i = -1;

            //for (i = (int)(FormChangeMode.MODE_TECCOMPONENT.TEC); i < (int)(FormChangeMode.MODE_TECCOMPONENT.UNKNOWN + 1); i++)
            for (i = (int)(FormChangeMode.MODE_TECCOMPONENT.TEC); i < (int)(FormChangeMode.MODE_TECCOMPONENT.UNKNOWN); i++)
            {
                if (m_list_data_original[i] == null)
                {
                    m_list_data_original[i] = DbTSQLInterface.Select(ref conn, "SELECT * FROM " + FormChangeMode.getPrefixMode(i) + "_LIST", null, null, out err);
                }
                else
                {
                    ;
                }

                m_list_data[i] = m_list_data_original[i].Copy();

                Logging.Logg().Debug(@"FormTECComponent::FormTECComponent () - m_list_data[" + ((FormChangeMode.MODE_TECCOMPONENT)i).ToString() + @"].Columns.Count = " + m_list_data[i].Columns.Count, Logging.INDEX_MESSAGE.NOT_SET);
            }

            m_list_dataRow = new List <DataRow[]> (); //[(int)(INDEX_UICONTROL.DATAGRIDVIEW_TG - INDEX_UICONTROL.DATAGRIDVIEW_TEC + 1)];
            for (i = (int)(INDEX_UICONTROL.DATAGRIDVIEW_TEC - INDEX_UICONTROL.DATAGRIDVIEW_TEC); i < (int)(INDEX_UICONTROL.DATAGRIDVIEW_TG - INDEX_UICONTROL.DATAGRIDVIEW_TEC + 1); i++)
            {
                m_list_dataRow.Add(null);
            }

            fillDataGridView(INDEX_UICONTROL.DATAGRIDVIEW_TEC);

            for (i = (int)FormChangeMode.MODE_TECCOMPONENT.TEC; i < (int)FormChangeMode.MODE_TECCOMPONENT.TG; i++)
            {
                comboBoxMode.Items.Add(FormChangeMode.getNameMode((short)i));
            }
            comboBoxMode.SelectedIndex = 0;

            //StartThreadUIControl();
            timerUIControl.Start();
        }