protected override /*override*/ int impRDGExcelValuesResponse() { //bool bRes = base.ImpRDGExcelValuesResponse(); int iRes = IsCanUseTECComponents == true ? 0 : -1; int rowOffsetData = 0; if (iRes == 0) { int i = -1 , iTimeZoneOffset = //allTECComponents[indxTECComponents].tec.m_timezone_offset_msc HDateTime.TS_NSK_OFFSET_OF_MOSCOWTIMEZONE.Hours , rowRDGExcelStart = 1 + iTimeZoneOffset, hour = -1; if (m_tableRDGExcelValuesResponse.Rows.Count > 0) { iRes = 0; } else { ; } if (iRes == 0) { for (i = rowRDGExcelStart; i < m_tableRDGExcelValuesResponse.Rows.Count - rowOffsetData; i++) { hour = i - iTimeZoneOffset; setRDGExcelValuesItem(out m_curRDGValues[hour - 1], i); } /*for (i = hour; i < 24 + 1; i++) * { * hour = i; * * m_curRDGValues.plan[hour - 1] = 0; * m_curRDGValues.recommendations[hour - 1] = 0; * m_curRDGValues.deviationPercent[hour - 1] = false; * m_curRDGValues.diviation[hour - 1] = 0; * }*/ } else { ; } } else { throw new InvalidOperationException("AdminTS_NSS::impRDGExcelValuesResponse () - нет компонентов ТЭЦ..."); } RDGStruct [] curRDGValues = new RDGStruct[m_curRDGValues.Length]; m_curRDGValues.CopyTo(curRDGValues, 0); m_listCurRDGValues.Add(curRDGValues); return(iRes); }
public void From(RDGStruct src, bool bPBRNumberEmptyChecked = false) { pbr = src.pbr; pmin = src.pmin; pmax = src.pmax; recomendation = src.recomendation; deviationPercent = src.deviationPercent; deviation = src.deviation; fc = src.fc; if (bPBRNumberEmptyChecked == true) { if (src.pbr_number.Equals(string.Empty) == false) { pbr_number = src.pbr_number; } else { ; } } else { pbr_number = src.pbr_number; } dtRecUpdate = src.dtRecUpdate; }
public RDGStruct Copy(bool bPBRNumberEmptyChecked = false) { RDGStruct oRes = new RDGStruct(); oRes.From(this, bPBRNumberEmptyChecked); return(oRes); }
protected virtual /*override*/ int ImpRDGExcelValuesResponse() { //bool bRes = base.ImpRDGExcelValuesResponse(); int iRes = IsCanUseTECComponents() == true ? 0 : -1; int rowOffsetData = 0; if (iRes == 0) { int i = -1, iTimeZoneOffset = allTECComponents[indxTECComponents].tec.m_timezone_offset_msc, rowRDGExcelStart = 1 + iTimeZoneOffset, hour = -1; if (m_tableRDGExcelValuesResponse.Rows.Count > 0) { iRes = 0; } else { ; } if (iRes == 0) { for (i = rowRDGExcelStart; i < m_tableRDGExcelValuesResponse.Rows.Count - rowOffsetData; i++) { hour = i - iTimeZoneOffset; setRDGExcelValuesItem(out m_curRDGValues[hour - 1], i); } /*for (i = hour; i < 24 + 1; i++) * { * hour = i; * * m_curRDGValues.plan[hour - 1] = 0; * m_curRDGValues.recommendations[hour - 1] = 0; * m_curRDGValues.deviationPercent[hour - 1] = false; * m_curRDGValues.diviation[hour - 1] = 0; * }*/ } else { ; } } else { ; } RDGStruct[] curRDGValues = new RDGStruct[m_curRDGValues.Length]; m_curRDGValues.CopyTo(curRDGValues, 0); m_listCurRDGValues.Add(curRDGValues); return(iRes); }
/// <summary> /// Сохранение текущих значений (ПБР + рекомендации = РДГ) для последующего изменения /// </summary> public override void CopyCurToPrevRDGValues() { base.CopyCurToPrevRDGValues(); RDGStruct[] prevRDGValues = new RDGStruct[m_prevRDGValues.Length]; for (int h = 0; h < m_prevRDGValues.Length; h++) { prevRDGValues[h].From(m_prevRDGValues[h]); } m_listPrevRDGValues.Add(prevRDGValues); }
protected override int GetAdminValuesResponse(DataTable tableAdminValuesResponse, DateTime date) { int iRes = base.GetAdminValuesResponse(tableAdminValuesResponse, date); RDGStruct [] curRDGValues = new RDGStruct [m_curRDGValues.Length]; m_curRDGValues.CopyTo(curRDGValues, 0); for (int i = 0; i < m_curRDGValues.Length; i++) { curRDGValues [i].pbr += m_curRDGValues [i].recomendation; //curRDGValues [i].plan = m_curRDGValues [i].plan; //curRDGValues[i].recomendation = m_curRDGValues[i].recomendation; //curRDGValues[i].deviationPercent = m_curRDGValues[i].deviationPercent; //curRDGValues[i].deviation = m_curRDGValues[i].deviation; } m_listCurRDGValues.Add(curRDGValues); return(iRes); }
private Errors saveCSVValues(int indx, object pbr_number) { Errors errRes = Errors.NoSet; RDGStruct[] curRDGValues = new RDGStruct[m_curRDGValues.Length]; int hour = -1; double val = -1F; string name_future = string.Empty; CONN_SETT_TYPE typeValues = CONN_SETT_TYPE.COUNT_CONN_SETT_TYPE; if (pbr_number is string) { typeValues = CONN_SETT_TYPE.PBR; } else if (pbr_number is CONN_SETT_TYPE) { typeValues = (CONN_SETT_TYPE)pbr_number; //ADMIN } else { ; } if ((typeValues == CONN_SETT_TYPE.PBR) || (typeValues == CONN_SETT_TYPE.ADMIN)) { List <DataRow> rowsTECComponent = null; //Получить значения для сохранения name_future = allTECComponents[indx].name_future; rowsTECComponent = new List <DataRow>(m_tableValuesResponse.Select(@"GTP_ID='" + name_future + @"'")); //Вариант №2 - тестовый //foreach (DataRow r in m_tableValuesResponse.Rows) // if (name_future.Equals(r["GTP_ID"]) == true) // rowsTECComponent.Add(r); // else // ; //Проверить наличие записей для ГТП if (rowsTECComponent.Count > 0) { // добавление недостающих строк путем копирования крайней if (rowsTECComponent.Count < 24) { // фрагмент кода выполняется при загрузке //while (rowsTECComponent.Count < 24) { // rowsTECComponent.Add(rowsTECComponent[rowsTECComponent.Count - 1]); // if (m_tableValuesResponse.Columns.Contains(@"SESSION_INTERVAL") == true) // rowsTECComponent[rowsTECComponent.Count - 1][@"SESSION_INTERVAL"] = rowsTECComponent.Count - 1; // else // ; //} } else { Logging.Logg().Error(string.Format(@"AdminTS_KomDisp::saveCSVValues () - для ГТП(ИД={0}) количество записей={1} ..." , name_future, rowsTECComponent.Count) , Logging.INDEX_MESSAGE.NOT_SET); } foreach (DataRow r in rowsTECComponent) { hour = int.Parse(r[@"SESSION_INTERVAL"].ToString()); try { switch (typeValues) { case CONN_SETT_TYPE.PBR: HMath.doubleParse(r[@"TotalBR"].ToString(), out curRDGValues[hour].pbr); HMath.doubleParse(r[@"PminBR"].ToString(), out curRDGValues[hour].pmin); HMath.doubleParse(r[@"PmaxBR"].ToString(), out curRDGValues[hour].pmax); curRDGValues[hour].pbr_number = pbr_number as string; ////Отладка //Console.WriteLine(@"GTP_ID=" + allTECComponents[indx].name_future + @"(" + hour + @") TotalBR=" + curRDGValues[hour].pbr + @"; PBRNumber=" + curRDGValues[hour].pbr_number); break; case CONN_SETT_TYPE.ADMIN: HMath.doubleParse(r[@"REC"].ToString(), out curRDGValues[hour].recomendation); curRDGValues[hour].deviationPercent = Int16.Parse(r[@"IS_PER"].ToString()) == 1; HMath.doubleParse(r[@"DIVIAT"].ToString(), out curRDGValues[hour].deviation); curRDGValues[hour].fc = Int16.Parse(r[@"FC"].ToString()) == 1; break; default: break; } } catch (Exception e) { Logging.Logg().Exception(e , @"AdminTS_KomDisp::saveCSVValues () - GTP_ID=" + allTECComponents[indx].name_future + @"(" + hour + @")" , Logging.INDEX_MESSAGE.NOT_SET); errRes = Errors.ParseError; } if (errRes == Errors.ParseError) { break; } else { ; } } if (errRes == Errors.NoSet) { //Очистить тек./массив с данными ClearValues(); //Копировать полученные значения в "текущий массив" curRDGValues.CopyTo(m_curRDGValues, 0); indxTECComponents = indx; errRes = SaveChanges() //Errors.NoSet //Errors.NoError ; } else { ; //errRes = Errors.ParseError; } } else { errRes = Errors.ParseError; } if (errRes == Errors.ParseError) { //Пропустить запись ГТП, разрешить переход к следующей //Псевдо-закончена обработка всех событий completeHandleStates(INDEX_WAITHANDLE_REASON.SUCCESS); } else { ; } } else { ; } return(errRes); }
protected override int getPPBRValuesResponse(DataTable table, DateTime date) { int iRes = 0; int i = -1, j = -1, c = -1 //Переменаые цикла , MTermId = -1 //Идентификатор компонента ТЭЦ в системе Модес-Терминал , hour = -1 //Переменаая цикла (номер часа) , indxFactor = -1 //Индекс типа значения (0 - P, 1 - Pmin, 2 - Pmax) //, iMinPBRNumber = -1 , iMaxPBRNumber = -1; //Номер ПБР для всех типов (P, Pmin, Pmax) значений int[] arPBRNumber = new int[3]; DataRow[] hourRows; RDGStruct[,] arRDGValues = null; TECComponent comp = allTECComponents[indxTECComponents]; arRDGValues = new RDGStruct[comp.m_listMTermId.Count, m_curRDGValues.Length]; if (CheckNameFieldsOfTable(table, new string [] { "objName", "idFactor", "Datetime", "Value_MBT" }) == true) { for (c = 0; c < comp.m_listMTermId.Count; c++) { MTermId = comp.m_listMTermId [c]; for (hour = 1; hour < 25; hour++) { try { //Выбрать строки только для часа 'hour' //hourRows = table.Select(@"Datetime='" + date.Date.AddHours(hour + 1 - ts.Hours).ToString(@"yyyyMMdd HH:00:00.000") + @"'"); //hourRows = table.Select(@"Datetime='" + date.Date.AddHours(hour + 1 - ts.Hours) + @"'"); //hourRows = table.Select(@"Datetime=#" + date.Date.AddHours(hour + 1 - ts.Hours).ToString(@"yyyyMMdd HH:00:00.000") + @"#"); hourRows = table.Select(string.Format(@"objName={0} AND Datetime=#{1}#", MTermId, date.Date.AddHours(hour - ASUTP.Core.HDateTime.TS_MSK_OFFSET_OF_UTCTIMEZONE.Hours).ToString(@"yyyy-MM-dd HH:00:00.000"))); //Присвоить исходные для часа значения //PBRNumber = -1; arPBRNumber [0] = arPBRNumber [1] = arPBRNumber [2] = -1; // номер набора // значения по типам (0, 1, 2) arRDGValues [c, hour - 1].pbr = -1.0F; arRDGValues [c, hour - 1].pmin = -1.0F; arRDGValues [c, hour - 1].pmax = -1.0F; //ПБР-номер не известен arRDGValues [c, hour - 1].pbr_number = string.Empty; //Проверить количество строк для часа if (hourRows.Length > 0) { //ТОлько при наличии строк для часа 'hour' for (i = 0; i < hourRows.Length; i++) { //Установить тип значения в строке для часа indxFactor = Int32.Parse(hourRows [i] [@"idFactor"].ToString()); //Сравнить номер набора строки с ранее обработанным номером набора (в предыдущих строках) if (!(arPBRNumber [indxFactor] > Int32.Parse(hourRows [i] [@"PBR_NUMBER"].ToString()))) //Толькоо, если номер набора в текущей строке больше //??? номер ПБР назначается для всех 3-х типов значений (P, Pmin, Pmax) // , но номер ПБР индивидуален для КАЖДого из них { arPBRNumber [indxFactor] = Int32.Parse(hourRows [i] [@"PBR_NUMBER"].ToString()); ////Вывод на консоль отладочной информации //for (j = 0; j < hourRows [i].Table.Columns.Count; j ++) { // Console.Write(@"[" + hourRows[i].Table.Columns[j].ColumnName + @"] = " + hourRows[i][hourRows[i].Table.Columns[j].ColumnName] + @"; "); //} //Console.WriteLine(@""); //Присвоить значения в ~ от типа switch (indxFactor) { case 0: //'P' if (!(hourRows [i] [@"Value_MBT"] is DBNull)) { arRDGValues [c, hour - 1].pbr = (double)hourRows [i] [@"Value_MBT"]; } else { arRDGValues [c, hour - 1].pbr = 0; } break; case 1: //'Pmin' if (!(hourRows [i] [@"Value_MBT"] is DBNull)) { arRDGValues [c, hour - 1].pmin = (double)hourRows [i] [@"Value_MBT"]; } else { arRDGValues [c, hour - 1].pmin = 0; } break; case 2: //'Pmax' if (!(hourRows [i] [@"Value_MBT"] is DBNull)) { arRDGValues [c, hour - 1].pmax = (double)hourRows [i] [@"Value_MBT"]; } else { arRDGValues [c, hour - 1].pmax = 0; } break; default: break; } } else { ; } } } else //Если не найдено ни одной строки для часа if (hour > 1) { //Если не 1-ый час - пролонгация arRDGValues [c, hour - 1].pbr = arRDGValues [c, hour - 2].pbr; arRDGValues [c, hour - 1].pmin = arRDGValues [c, hour - 2].pmin; arRDGValues [c, hour - 1].pmax = arRDGValues [c, hour - 2].pmax; for (j = 0; j < 3; j++) { arPBRNumber [j] = Int32.Parse(arRDGValues [c, hour - 2].pbr_number.Substring(3)); } arRDGValues [c, hour - 1].pbr_number = arRDGValues [c, hour - 2].pbr_number; arRDGValues [c, hour - 1].dtRecUpdate = arRDGValues [c, hour - 2].dtRecUpdate; } else { ; } //iMinPBRNumber = 25; iMaxPBRNumber = -1; for (j = 0; j < 3; j++) { if (arPBRNumber [j] > 0) { //???при каком индексе присваивать номер набора //arRDGValues[c, hour - 1].pbr_number = HAdmin.PBR_PREFIX + PBRNumber; //if (iMinPBRNumber > arPBRNumber[j]) if (iMaxPBRNumber < arPBRNumber [j]) { //iMinPBRNumber = arPBRNumber[j]; iMaxPBRNumber = arPBRNumber [j]; } else { ; } if (hour > 1) { switch (j) { case 0: if (arRDGValues [c, hour - 1].pbr < 0) { arRDGValues [c, hour - 1].pbr = arRDGValues [c, hour - 2].pbr; } else { ; } break; case 1: if (arRDGValues [c, hour - 1].pmin < 0) { arRDGValues [c, hour - 1].pmin = arRDGValues [c, hour - 2].pmin; } else { ; } break; case 2: if (arRDGValues [c, hour - 1].pmax < 0) { arRDGValues [c, hour - 1].pmax = arRDGValues [c, hour - 2].pmax; } else { ; } break; default: break; } } else { ; } } else { ; //arRDGValues[c, hour - 1].pbr_number = GetPBRNumber (hour); } int hh = -1; for (hh = hour; hh > 0; hh--) { //??? Необходима ИНДИВИДуальная проверка номера ПБР // для каждогоо типа значений (P, Pmin, Pmax) if (arRDGValues [c, hh - 1].pbr_number.Equals(string.Empty) == false) { if (arPBRNumber [j] < Int32.Parse(arRDGValues [c, hh - 1].pbr_number.Substring(3))) { arPBRNumber [j] = Int32.Parse(arRDGValues [c, hh - 1].pbr_number.Substring(3)); //if (iMinPBRNumber > arPBRNumber[j]) if (iMaxPBRNumber < arPBRNumber [j]) { //iMinPBRNumber = arPBRNumber[j]; iMaxPBRNumber = arPBRNumber [j]; } else { ; } switch (j) { case 0: arRDGValues [c, hour - 1].pbr = arRDGValues [c, hh - 1].pbr; break; case 1: arRDGValues [c, hour - 1].pmin = arRDGValues [c, hh - 1].pmin; break; case 2: arRDGValues [c, hour - 1].pmax = arRDGValues [c, hh - 1].pmax; break; default: break; } //arRDGValues[c, hour - 1].pbr_number = arRDGValues[c, hh - 1].pbr_number; //break; } else { ; } } else { ; } } // цикл-окончание hh } // цикл-окончание по индексу типов значений arRDGValues [c, hour - 1].pbr_number = $"{HAdmin.PBR_PREFIX}{iMaxPBRNumber}"; arRDGValues [c, hour - 1].dtRecUpdate = DateTime.MinValue; arRDGValues [c, hour - 1].fc = false; arRDGValues [c, hour - 1].recomendation = 0; arRDGValues [c, hour - 1].deviationPercent = false; arRDGValues [c, hour - 1].deviation = 0; } catch (Exception e) { ASUTP.Logging.Logg().Exception(e, @"AdminMT::GetPPBRValuesResponse () - ...", ASUTP.Logging.INDEX_MESSAGE.NOT_SET); } } // цикл-окончание по номеру часа 'hour' } // цикл-окончание по идентификатору составного элемента (только ГТП3-6 НТЭЦ-5) } else { ASUTP.Logging.Logg().Error($"таблица не содержит необходимый набор полей", ASUTP.Logging.INDEX_MESSAGE.NOT_SET); } for (hour = 1; hour < 25; hour++) { m_curRDGValues[hour - 1].pbr = -1F; m_curRDGValues[hour - 1].pmin = -1F; m_curRDGValues[hour - 1].pmax = -1F; m_curRDGValues[hour - 1].pbr_number = string.Empty; for (c = 0; c < comp.m_listMTermId.Count; c++) { MTermId = comp.m_listMTermId[c]; if (!(arRDGValues[c, hour - 1].pbr < 0)) { // значение есть, необходимо суммировать, установить в "0" if (m_curRDGValues[hour - 1].pbr < 0) { m_curRDGValues[hour - 1].pbr = 0F; } else { ; } // суммируем m_curRDGValues[hour - 1].pbr += arRDGValues[c, hour - 1].pbr; } else { ; } if (!(arRDGValues[c, hour - 1].pmin < 0)) { // значение есть, необходимо суммировать, установить в "0" if (m_curRDGValues[hour - 1].pmin < 0) { m_curRDGValues[hour - 1].pmin = 0F; } else { ; } // суммируем m_curRDGValues[hour - 1].pmin += arRDGValues[c, hour - 1].pmin; } else { ; } if (!(arRDGValues[c, hour - 1].pmax < 0)) { // значение есть, необходимо суммировать, установить в "0" if (m_curRDGValues[hour - 1].pmax < 0) { m_curRDGValues[hour - 1].pmax = 0F; } else { ; } // суммируем m_curRDGValues[hour - 1].pmax += arRDGValues[c, hour - 1].pmax; } else { ; } } // цикл-окончание по идентификатору составного элемента (только ГТП3-6 НТЭЦ-5) //??? m_curRDGValues[hour - 1].pbr_number = arRDGValues[0, hour - 1].pbr_number; //??? m_curRDGValues[hour - 1].dtRecUpdate = DateTime.MinValue; m_curRDGValues[hour - 1].fc = false; m_curRDGValues[hour - 1].recomendation = 0; m_curRDGValues[hour - 1].deviationPercent = false; m_curRDGValues[hour - 1].deviation = 0; } // цикл-окончание по номеру часа 'hour' return(iRes); }
private Errors saveCSVValues(int indx, object pbr_number) { Errors errRes = Errors.NoSet; RDGStruct[] curRDGValues = new RDGStruct[m_curRDGValues.Length]; int hour = -1; double val = -1F; CONN_SETT_TYPE typeValues = CONN_SETT_TYPE.COUNT_CONN_SETT_TYPE; if (pbr_number is string) { typeValues = CONN_SETT_TYPE.PBR; } else if (pbr_number is CONN_SETT_TYPE) { typeValues = (CONN_SETT_TYPE)pbr_number; //ADMIN } else { ; } if ((typeValues == CONN_SETT_TYPE.PBR) || (typeValues == CONN_SETT_TYPE.ADMIN)) { //Получить значения для сохранения DataRow [] rowsTECComponent = m_tableValuesResponse.Select(@"GTP_ID='" + allTECComponents[indx].name_future + @"'"); //Проверить наличие записей для ГТП if (rowsTECComponent.Length > 0) { foreach (DataRow r in rowsTECComponent) { hour = int.Parse(r[@"SESSION_INTERVAL"].ToString()); try { switch (typeValues) { case CONN_SETT_TYPE.PBR: HMath.doubleParse(r[@"TotalBR"].ToString(), out curRDGValues[hour].pbr); HMath.doubleParse(r[@"PminBR"].ToString(), out curRDGValues[hour].pmin); HMath.doubleParse(r[@"PmaxBR"].ToString(), out curRDGValues[hour].pmax); curRDGValues[hour].pbr_number = pbr_number as string; ////Отладка //Console.WriteLine(@"GTP_ID=" + allTECComponents[indx].name_future + @"(" + hour + @") TotalBR=" + curRDGValues[hour].pbr + @"; PBRNumber=" + curRDGValues[hour].pbr_number); break; case CONN_SETT_TYPE.ADMIN: HMath.doubleParse(r[@"REC"].ToString(), out curRDGValues[hour].recomendation); curRDGValues[hour].deviationPercent = Int16.Parse(r[@"IS_PER"].ToString()) == 1; HMath.doubleParse(r[@"DIVIAT"].ToString(), out curRDGValues[hour].deviation); curRDGValues[hour].fc = Int16.Parse(r[@"FC"].ToString()) == 1; break; default: break; } } catch (Exception e) { Logging.Logg().Exception(e, Logging.INDEX_MESSAGE.NOT_SET , @"AdminTS_KomDisp::saveCSVValues () - GTP_ID=" + allTECComponents[indx].name_future + @"(" + hour + @")"); errRes = Errors.ParseError; } if (errRes == Errors.ParseError) { break; } else { ; } } if (errRes == Errors.NoSet) { //Очистить тек./массив с данными ClearValues(); //Копировать полученные значения в "текущий массив" curRDGValues.CopyTo(m_curRDGValues, 0); indxTECComponents = indx; errRes = SaveChanges() //Errors.NoSet //Errors.NoError ; } else { ; //errRes = Errors.ParseError; } } else { errRes = Errors.ParseError; } if (errRes == Errors.ParseError) { //Пропустить запись ГТП, разрешить переход к следующей //Псевдо-закончена обработка всех событий completeHandleStates(INDEX_WAITHANDLE_REASON.SUCCESS); } else { ; } } else { ; } return(errRes); }
private Errors saveCSVValues(int indx, object pbr_number) { Errors errRes = Errors.NoSet; RDGStruct[] curRDGValues = new RDGStruct[m_curRDGValues.Length]; int hour = -1; double val = -1F; string name_future = string.Empty; List <DataRow> rowsTECComponent = null; CONN_SETT_TYPE typeValues = CONN_SETT_TYPE.COUNT_CONN_SETT_TYPE; if (pbr_number is string) { typeValues = CONN_SETT_TYPE.PBR; } else if (pbr_number is CONN_SETT_TYPE) { typeValues = (CONN_SETT_TYPE)pbr_number; //ADMIN } else { ; } // проверить был ли определен тип сохраняемых значений // и имеет ли таблица соответствующую типу значений структуру (присутствуют ли в таблице необходимые поля) if (((typeValues == CONN_SETT_TYPE.PBR) || (typeValues == CONN_SETT_TYPE.ADMIN)) && (CheckNameFieldsOfTable(m_tableValuesResponse , typeValues == CONN_SETT_TYPE.PBR ? new string [] { @"GTP_ID", @"SESSION_INTERVAL", @"REC", @"IS_PER", @"DIVIAT", @"FC" } : typeValues == CONN_SETT_TYPE.ADMIN ? new string [] { @"GTP_ID", @"SESSION_INTERVAL", @"REC", @"IS_PER", @"DIVIAT", @"FC" } : new string [] { @"GTP_ID", @"SESSION_INTERVAL" }) == true)) { //Получить значения для сохранени name_future = allTECComponents[indx].name_future; rowsTECComponent = new List <DataRow>(m_tableValuesResponse.Select(@"GTP_ID='" + name_future + @"'")); //Вариант №2 - тестовый //foreach (DataRow r in m_tableValuesResponse.Rows) // if (name_future.Equals(r["GTP_ID"]) == true) // rowsTECComponent.Add(r); // else // ; //Проверить наличие записей для ГТП if (rowsTECComponent.Count > 0) { //!!! должно быть 24 записи (обеспечивается дополнением при загрузке) if (rowsTECComponent.Count < 24) { Logging.Logg().Error(string.Format(@"AdminTS_KomDisp::saveCSVValues () - для ГТП(ИД={0}) количество записей={1} ..." , name_future, rowsTECComponent.Count) , Logging.INDEX_MESSAGE.NOT_SET); } else { ; } foreach (DataRow r in rowsTECComponent) { hour = int.Parse(r[@"SESSION_INTERVAL"].ToString()); try { switch (typeValues) { case CONN_SETT_TYPE.PBR: HMath.doubleParse(r[@"TotalBR"].ToString(), out curRDGValues[hour].pbr); HMath.doubleParse(r[@"PminBR"].ToString(), out curRDGValues[hour].pmin); HMath.doubleParse(r[@"PmaxBR"].ToString(), out curRDGValues[hour].pmax); curRDGValues[hour].pbr_number = pbr_number as string; ////Отладка //Console.WriteLine(@"GTP_ID=" + allTECComponents[indx].name_future + @"(" + hour + @") TotalBR=" + curRDGValues[hour].pbr + @"; PBRNumber=" + curRDGValues[hour].pbr_number); break; case CONN_SETT_TYPE.ADMIN: HMath.doubleParse(r[@"REC"].ToString(), out curRDGValues[hour].recomendation); curRDGValues[hour].deviationPercent = Int16.Parse(r[@"IS_PER"].ToString()) == 1; HMath.doubleParse(r[@"DIVIAT"].ToString(), out curRDGValues[hour].deviation); curRDGValues[hour].fc = Int16.Parse(r[@"FC"].ToString()) == 1; break; default: break; } } catch (Exception e) { Logging.Logg().Exception(e , @"AdminTS_KomDisp::saveCSVValues () - GTP_ID=" + allTECComponents[indx].name_future + @"(" + hour + @")" , Logging.INDEX_MESSAGE.NOT_SET); errRes = Errors.ParseError; } if (errRes == Errors.ParseError) { break; } else { ; } } if (errRes == Errors.NoSet) { //Очистить тек./массив с данными ClearValues(); //Копировать полученные значения в "текущий массив" curRDGValues.CopyTo(m_curRDGValues, 0); indxTECComponents = indx; errRes = SaveChanges() //Errors.NoSet //Errors.NoError ; } else { ; //errRes = Errors.ParseError; } } else { errRes = Errors.ParseError; } if (errRes == Errors.ParseError) { //Пропустить запись ГТП, разрешить переход к следующей //Псевдо-закончена обработка всех событий completeHandleStates(INDEX_WAITHANDLE_REASON.SUCCESS); } else { ; } } else { ; } return(errRes); }