/// <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); }
/// <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); }
/// <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); }
/// <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 { ; } }