Esempio n. 1
0
            /// <summary>
            /// ??? Формирование таблицы данных с отображения
            /// </summary>
            /// <param name="tableSourceOrg">таблица с оригинальными данными</param>
            /// <param name="idSession">номер сессии пользователя</param>
            /// <param name="typeValues">тип данных</param>
            /// <returns>таблица с новыми данными с вьюхи</returns>
            public DataTable GetValue(DataTable tableSourceOrg, int idSession, HandlerDbTaskCalculate.ID_VIEW_VALUES typeValues)
            {
                //int i = 0
                //    , idAlg = -1
                //     , vsRatioValue = -1
                //     , quality = -1;
                //double valueToRes = 0;
                //DateTime dtVal;

                DataTable tableSourceEdit = new DataTable();

                //tableSourceEdit.Columns.AddRange(new DataColumn[] {
                //    new DataColumn (@"ID_PUT", typeof (int))
                //    , new DataColumn (@"ID_SESSION", typeof (long))
                //    , new DataColumn (@"QUALITY", typeof (int))
                //    , new DataColumn (@"VALUE", typeof (float))
                //    , new DataColumn (@"WR_DATETIME", typeof (DateTime))
                //    , new DataColumn (@"EXTENDED_DEFINITION", typeof (float))
                //});

                //foreach (DataGridViewColumn col in Columns)
                //{
                //    if (col.m_iIdComp > 0)
                //        foreach (DataGridViewRow row in Rows)
                //            if (row.Index < (row.DataGridView.RowCount - 1))
                //            // без крайней строки
                //                if ((!(row.Cells[col.Index].Value == null))
                //                    && (string.IsNullOrEmpty(row.Cells[col.Index].Value.ToString()) == false)) {
                //                    idAlg = (int)row.Cells[INDEX_SERVICE_COLUMN.ALG.ToString()].Value;
                //                    valueToRes = Convert.ToDouble(row.Cells[col.Index].Value.ToString().Replace('.', ','));
                //                    vsRatioValue = m_dictRatio[m_dictNAlgProperties[idAlg].m_vsRatio].m_value;

                //                    valueToRes *= Math.Pow(10F, 1 * vsRatioValue);
                //                    dtVal = (DateTime)row.Tag;

                //                    quality = diffRowsInTables(tableSourceOrg, valueToRes, i, idAlg, typeValues);

                //                    tableSourceEdit.Rows.Add(new object[]
                //                    {
                //                        col.m_iIdComp
                //                        , idSession
                //                        , quality
                //                        , valueToRes
                //                        //??? зачем учитывать смещение
                //                        , dtVal.AddMinutes(-180/*m_currentOffSet*/).ToString("F", tableSourceEdit.Locale)
                //                        , i
                //                    });
                //                    i++;
                //                } else
                //                // ячейка пустая
                //                    ;
                //            else
                //            // крайняя строка
                //                ;
                //}

                //try
                //{
                //    tableSourceEdit = sortingTable(tableSourceEdit, "WR_DATETIME, ID_PUT");
                //}
                //catch (Exception)
                //{
                //    throw;
                //}

                return(tableSourceEdit);
            }
Esempio n. 2
0
            /// <summary>
            /// Проверка на изменение значений в двух таблицах
            /// </summary>
            /// <param name="origin">оригинальная таблица</param>
            /// <param name="editValue">значение</param>
            /// <param name="i">номер строки</param>
            /// <param name="idAlg">номер алгоритма</param>
            /// <param name="typeValues">тип данных</param>
            /// <returns>показатель изменения</returns>
            private int diffRowsInTables(DataTable origin, double editValue, int i, int idAlg, HandlerDbTaskCalculate.ID_VIEW_VALUES typeValues)
            {
                int    quality = 1;
                double originValues;

                origin = sortingTable(origin, "ID_PUT, WR_DATETIME");

                if (origin.Rows.Count - 1 < i)
                {
                    originValues = 0;
                }
                else
                {
                    originValues =
                        AsParseToF(origin.Rows[i]["VALUE"].ToString());
                }

                switch (typeValues)
                {
                case HandlerDbTaskCalculate.ID_VIEW_VALUES.ARCHIVE:
                    if (originValues.ToString(m_dictNAlgProperties[idAlg].FormatRound, CultureInfo.InvariantCulture).Equals(editValue.ToString()) == false)
                    {
                        quality = 2;
                    }
                    else
                    {
                        //???
                        ;
                    }
                    break;

                case HandlerDbTaskCalculate.ID_VIEW_VALUES.SOURCE_LOAD:
                    quality = 1;
                    break;

                case HandlerDbTaskCalculate.ID_VIEW_VALUES.DEFAULT:
                    break;

                default:
                    break;
                }

                return(quality);
            }
Esempio n. 3
0
            /// <summary>
            ///Корректировка знач.
            /// </summary>
            /// <param name="pow"></param>
            /// <param name="rowValue">значение</param>
            /// <param name="namecol">имя столбца</param>
            /// <param name="bflg">признак корректировки</param>
            /// <param name="row">тек.строка</param>
            /// <param name="typeValues">тип загружаеммых данных(архивные/текущие)</param>
            /// <returns></returns>
            private double correctingValues(/*double pow
                                             * , */object rowValue
                                            , string namecol
                                            , ref bool bflg
                                            , DataGridViewRow row
                                            , HandlerDbTaskCalculate.ID_VIEW_VALUES typeValues)
            {
                double valRes = 0
                , signValues  = 1;

                switch (typeValues)
                {
                case HandlerDbTaskCalculate.ID_VIEW_VALUES.ARCHIVE:
                    signValues = -1;
                    break;

                case HandlerDbTaskCalculate.ID_VIEW_VALUES.SOURCE_LOAD:
                    break;

                case HandlerDbTaskCalculate.ID_VIEW_VALUES.DEFAULT:
                    break;

                default:
                    break;
                }

                switch (namecol)
                {
                case "GTP12":
                    if (double.TryParse(row.Cells["CorGTP12"].Value.ToString(), out valRes))
                    {
                        //valRes *= pow;
                        valRes += (double)rowValue * signValues;
                        bflg    = true;
                    }
                    else
                    {
                        valRes = (double)rowValue;
                    }

                    break;

                case "GTP36":
                    if (double.TryParse(row.Cells["CorGTP36"].Value.ToString(), out valRes))
                    {
                        //valRes *= pow;
                        valRes += (double)rowValue * signValues;
                        bflg    = true;
                    }
                    else
                    {
                        valRes = (double)rowValue;
                    }

                    break;

                case "TEC":
                    if (bflg)
                    {
                        valRes = double.Parse(row.Cells["GTP12"].Value.ToString())     /** pow*/
                                 + double.Parse(row.Cells["GTP36"].Value.ToString()) /** pow*/;
                        bflg = false;
                    }
                    else
                    {
                        valRes = (double)rowValue;
                    }
                    break;

                default:
                    break;
                }
                return(valRes);
            }
Esempio n. 4
0
            /// <summary>
            /// заполнение датагрида
            /// </summary>
            /// <param name="tablesOrigin">таблица значений</param>
            /// <param name="tablePlanMonth">план на месяц</param>
            /// <param name="viewValues">тип данных</param>
            public void ShowValues(DataTable[] tablesOrigin
                                   , DataTable tablePlanMonth
                                   , HandlerDbTaskCalculate.ID_VIEW_VALUES viewValues)
            {
                int idAlg = -1
                , idComp  = -1;

                DataRow[] arRowValues = null;
                Array     namePut     = Enum.GetValues(typeof(INDEX_COLUMN));
                bool      bflg        = false;
                double    dblVal      = -1F;

                //
                ClearValues();
                //заполнение ячеек с плановыми значениями
                if (tablePlanMonth.Rows.Count > 0)
                {
                    //showPlanValues(tablePlanMonth.Rows[0]["VALUE"].ToString()
                    //    , Convert.ToDateTime(tablePlanMonth.Rows[0]["WR_DATETIME"].ToString()))
                    ;
                }
                else
                {
                    ;
                }
                //заполнение столбцов с корр. знач.
                foreach (DataGridViewRow row in Rows)
                {
                    foreach (DataGridViewColumn col in Columns)
                    {
                        idAlg  = ((HandlerDbTaskCalculate.PUT_PARAMETER)col.Tag).m_idNAlg;
                        idComp = ((HandlerDbTaskCalculate.PUT_PARAMETER)col.Tag).IdComponent;

                        // сформировать скорректированные значения для отображения
                        arRowValues = formingValue(tablesOrigin[(int)HandlerDbTaskCalculate.ID_VIEW_VALUES.DEFAULT]
                                                   , (DateTime)row.Tag
                                                   ////??? зачем это смещение
                                                   //, 180 /*m_currentOffSet*/
                                                   , idComp);

                        if (!(arRowValues == null))
                        {
                            // заполнить ячейки с корректированными значениями
                            for (int t = 0; t < arRowValues.Count(); t++)
                            {
                                dblVal = GetValueCellAsRatio(idAlg, -1, Convert.ToDouble(arRowValues[t]["VALUE"]));

                                row.Cells[col.Index].Value = dblVal.ToString(m_dictNAlgProperties[idAlg].FormatRound, CultureInfo.InvariantCulture);
                            }
                        }
                        else
                        {
                            ;
                        }

                        //if (HandlerDbTaskCalculate.ID_VIEW_VALUES.SOURCE_LOAD == viewValues)
                        //    corOffset = 1;
                        //else
                        //    ;

                        arRowValues = formingValue(tablesOrigin[(int)viewValues]
                                                   , (DateTime)row.Tag
                                                   ////??? зачем это смещение
                                                   //, (180 /*m_currentOffSet*/ * corOffset)
                                                   , idComp);

                        if ((!(arRowValues == null)) &&
                            (arRowValues.Count() > 0))
                        {
                            // заполнение столбцов ГТП, ТЭЦ
                            for (int p = 0; p < arRowValues.Count(); p++)
                            {
                                if (((DateTime)row.Tag).Equals(Convert.ToDateTime(arRowValues[p]["WR_DATETIME"])) == true)
                                {
                                    //vsRatioValue = m_dictRatio[m_dictNAlgProperties[idAlg].m_vsRatio].m_value;

                                    dblVal = correctingValues(/*Math.Pow(10F, -1 * vsRatioValue)
                                                               * , */arRowValues[p]["VALUE"]
                                                              , col.Name
                                                              , ref bflg
                                                              , row
                                                              , viewValues);

                                    //dblVal *= Math.Pow(10F, -1 * vsRatioValue);
                                    dblVal = GetValueCellAsRatio(idAlg, -1, dblVal);

                                    row.Cells[col.Index].Value = dblVal.ToString(m_dictNAlgProperties[idAlg].FormatRound, CultureInfo.InvariantCulture);
                                }
                                else
                                {
                                    ;
                                }
                            }
                        }
                        else
                        {
                            ;
                        }
                    }

                    editCells(row);
                }
            }
            /// <summary>
            /// Проверка на изменение значений в двух таблицах
            /// </summary>
            /// <param name="origin">оригинальная таблица</param>
            /// <param name="editValue">значение</param>
            /// <param name="i">номер строки</param>
            /// <param name="idAlg">номер алгоритма</param>
            /// <param name="typeValues">тип данных</param>
            /// <returns>показатель изменения</returns>
            private int diffRowsInTables(DataTable origin, double editValue, int i, string formatRound, HandlerDbTaskCalculate.ID_VIEW_VALUES typeValues)
            {
                int    quality = 1;
                double originValues;

                //??? зачем сортировка
                origin = sortDataTable(origin, "ID_PUT, WR_DATETIME");

                if (origin.Rows.Count - 1 < i)
                {
                    originValues = 0;
                }
                else
                {
                    originValues =
                        //HPanelTepCommon.AsParseToF(
                        HMath.doubleParse(
                            origin.Rows[i]["VALUE"].ToString()
                            );
                }

                switch (typeValues)
                {
                case HandlerDbTaskCalculate.ID_VIEW_VALUES.ARCHIVE:
                    //??? почему сравниваются строки
                    if (originValues.ToString(formatRound, CultureInfo.InvariantCulture).Equals(editValue.ToString().Trim()) == false)
                    {
                        quality = 2;
                    }
                    break;

                case HandlerDbTaskCalculate.ID_VIEW_VALUES.SOURCE_LOAD:
                    quality = 1;
                    break;

                case HandlerDbTaskCalculate.ID_VIEW_VALUES.DEFAULT:
                    break;

                default:
                    break;
                }

                return(quality);
            }
            /// <summary>
            /// Формирование таблицы данных с отображения
            /// </summary>
            /// <param name="tableSourceOrigin">таблица с оригинальными данными</param>
            /// <param name="idSession">номер сессии пользователя</param>
            /// <param name="typeValues">тип данных</param>
            /// <returns>таблица с новыми данными с вьюхи</returns>
            public DataTable FillTableToSave(DataTable tableSourceOrigin, int idSession, HandlerDbTaskCalculate.ID_VIEW_VALUES typeValues)
            {
                int i     = 0,
                    idAlg = -1
                , hoursOffSet
                , vsRatioValue             = -1
                , quality                  = 0,
                    indexPut               = 0;
                double          valueToRes = 0;
                DateTime        dtVal;
                NALG_PROPERTY   nalg_prop;
                COLUMN_PROPERTY col_prop;

                DataTable tableSourceEdit = new DataTable();

                tableSourceEdit.Columns.AddRange(
                    new DataColumn[] {
                    new DataColumn(@"ID_PUT", typeof(int))
                    , new DataColumn(@"ID_SESSION", typeof(long))
                    , new DataColumn(@"QUALITY", typeof(int))
                    , new DataColumn(@"VALUE", typeof(float))
                    , new DataColumn(@"WR_DATETIME", typeof(DateTime))
                    , new DataColumn(@"EXTENDED_DEFINITION", typeof(float))
                }
                    );

                if (s_flagBl)
                {
                    hoursOffSet = 1 * (-(TimeZoneInfo.Local.BaseUtcOffset.Hours + 1) + 24);
                }
                else
                {
                    hoursOffSet = (s_currentOffSet / 60);
                }

                foreach (DataGridViewColumn col in Columns)
                {
                    col_prop  = (COLUMN_PROPERTY)col.Tag;
                    nalg_prop = m_dictNAlgProperties[col_prop.m_putParameter.m_idNAlg];

                    if (col_prop.m_putParameter.m_idNAlg > 0)
                    {
                        foreach (DataGridViewRow row in Rows)
                        {
                            if (row.Index != row.DataGridView.RowCount - 1)
                            {
                                if (string.IsNullOrEmpty(row.Cells[col.Index].Value.ToString()) == false)
                                {
                                    idAlg        = col_prop.m_putParameter.m_idNAlg;
                                    valueToRes   = HPanelTepCommon.AsParseToF(row.Cells[col.Index].Value.ToString());
                                    vsRatioValue = nalg_prop.m_vsRatio;
                                    valueToRes  *= Math.Pow(10F, vsRatioValue);
                                    dtVal        = (DateTime)row.Tag;
                                    //??? в этом методе сортируется табл. по 2-ум полям
                                    //!!! срочно исключить, т.к. внутри 2-ух циклов
                                    quality = diffRowsInTables(tableSourceOrigin, valueToRes, i, nalg_prop.FormatRound, typeValues);

                                    tableSourceEdit.Rows.Add(new object[] {
                                        col_prop.m_putParameter.IdComponent
                                        , idSession
                                        , quality
                                        , valueToRes
                                        , dtVal.AddMinutes(-s_currentOffSet).ToString("F", tableSourceEdit.Locale)
                                        , i
                                    });

                                    i++;
                                }
                                else
                                {
                                    // в ячейке не валидное значение, не может быть определено
                                    ;
                                }
                            }
                            else
                            {
                                // крайняя строка (ИТОГО за период)
                                ;
                            }
                        } // цикл по строкам (датам) в представлении

                        indexPut++;
                    }
                    else
                    {
                        // идентификатор параметра в алгоритме расчета не валидный
                        ;
                    }
                } // цикл по столбцам (параметрам в алгоритме расчета, связанным с компонентом) в представлении

                tableSourceEdit = sortDataTable(tableSourceEdit, "WR_DATETIME");

                return(tableSourceEdit);
            }
            /// <summary>
            /// Отобразить данные в представлении
            /// </summary>
            /// <param name="tableOrigin">таблица с данными</param>
            /// <param name="typeValues">тип загружаемых данных</param>
            public void ShowValues(DataTable tableOrigin, HandlerDbTaskCalculate.ID_VIEW_VALUES typeValues)
            {
                DataTable tableOriginCopy = new DataTable();
                int       cntDay          = -1
                , hoursOffSet
                , iCol = 0;

                DataRow[]       editRow = null;
                NALG_PROPERTY   nalg_prop;
                COLUMN_PROPERTY col_prop;

                tableOriginCopy = tableOrigin.Copy();
                ClearValues();

                if ((int)HandlerDbTaskCalculate.ID_VIEW_VALUES.SOURCE_LOAD == (int)typeValues)
                {
                    if (s_flagBl)
                    {
                        hoursOffSet = -1 * (-(TimeZoneInfo.Local.BaseUtcOffset.Hours + 1) + 24);
                    }
                    else
                    {
                        hoursOffSet = (s_currentOffSet / 60);
                    }
                }
                else
                {
                    hoursOffSet = s_currentOffSet / 60;
                }

                if (tableOriginCopy.Rows.Count > 0)
                {
                    foreach (DataGridViewColumn col in Columns)
                    {
                        col_prop  = (COLUMN_PROPERTY)col.Tag;
                        nalg_prop = m_dictNAlgProperties[col_prop.m_putParameter.m_idNAlg];

                        try {
                            editRow = tableOriginCopy.Select(string.Format(tableOriginCopy.Locale, "ID_PUT = " + col_prop.m_putParameter.m_Id));
                        } catch (Exception e) {
                            Logging.Logg().Exception(e, string.Format(@"DataGridViewVedomostBl::ShowValues () - ошибка выборки данных ID_PUT={0}...", col_prop.m_putParameter.m_Id), Logging.INDEX_MESSAGE.NOT_SET);
                        }

                        for (int i = 0; i < editRow.Count(); i++)
                        {
                            //??? почему сравниваются строки, а не значения
                            if (Convert.ToDateTime(editRow[i][@"WR_DATETIME"]).AddHours(hoursOffSet).ToShortDateString() ==
                                Rows[i].Cells["Date"].Value.ToString())
                            {
                                Rows[i].Cells[iCol].Value =
                                    ((double)editRow[i][@"VALUE"]).ToString(nalg_prop.FormatRound, CultureInfo.InvariantCulture);
                            }
                            else
                            {
                                ;
                            }
                        }

                        try {
                            if (nalg_prop.m_sAverage == 0)
                            {
                                Rows[RowCount - 1].Cells[iCol].Value =
                                    summaColumnValues(col.Index, out cntDay).ToString(nalg_prop.FormatRound, CultureInfo.InvariantCulture);
                            }
                            else
                            {
                                Rows[RowCount - 1].Cells[iCol].Value =
                                    averageColumnValues(col.Index, out cntDay).ToString(nalg_prop.FormatRound, CultureInfo.InvariantCulture);
                            }
                        } catch (Exception e) {
                            Logging.Logg().Exception(e
                                                     , string.Format("???DataGridViewVedomostBl::ShowValues () - усредненние данных по столбцу name={0}", col_prop.m_textTopHeader)
                                                     , Logging.INDEX_MESSAGE.NOT_SET);
                        }

                        iCol++;
                    } // цикл по столбцам представления
                }
                else
                {
                    ;
                }
            }