protected override void getPPBRValuesRequest(TEC t, TECComponent comp, DateTime date /*, AdminTS.TYPE_FIELDS mode*/) { string query = "PPBR"; int i = -1; //Logging.Logg().Debug("AdminMC::GetPPBRValuesRequest (TEC, TECComponent, DateTime, AdminTS.TYPE_FIELDS) - вХод...: query=" + query, Logging.INDEX_MESSAGE.NOT_SET); query += ";"; for (i = 0; i < comp.m_listMCentreId.Count; i++) { query += comp.m_listMCentreId[i]; if ((i + 1) < comp.m_listMCentreId.Count) { query += ","; } else { ; } } //tPBR.GetComp(str, "MC"); query += ";"; query += date.ToOADate().ToString(); DbMCSources.Sources().Request(m_IdListenerCurrent, query); // Logging.Logg().Debug("AdminMC::GetPPBRValuesRequest (TEC, TECComponent, DateTime, AdminTS.TYPE_FIELDS) - вЫход...: query=" + query, Logging.INDEX_MESSAGE.D_002); }
//Из 'TEC.cs' private string getPBRDatesQuery(DateTime dt /*, AdminTS.TYPE_FIELDS mode*/, TECComponent comp) { string strRes = string.Empty; //switch (mode) //{ // case AdminTS.TYPE_FIELDS.STATIC: // strRes = @"SELECT DATE_TIME, ID FROM " + allTECComponents[indxTECComponents].tec.m_arNameTableUsedPPBRvsPBR[(int)mode] + // @" WHERE " + // @"DATE_TIME > '" + dt.ToString("yyyyMMdd HH:mm:ss") + // @"' AND DATE_TIME <= '" + dt.AddDays(1).ToString("yyyyMMdd HH:mm:ss") + // @"' ORDER BY DATE_TIME ASC"; // break; // case AdminTS.TYPE_FIELDS.DYNAMIC: strRes = @"SELECT DATE_TIME, ID FROM " + @"[" + FindTECComponent(CurrentKey).tec.m_strNameTableUsedPPBRvsPBR /*[(int)mode]*/ + @"]" + @" WHERE" + @" ID_COMPONENT = " + comp.m_id + "" + @" AND DATE_TIME > '" + dt.AddHours(-1 * //allTECComponents[indxTECComponents].tec.m_timezone_offset_msc HDateTime.TS_NSK_OFFSET_OF_MOSCOWTIMEZONE.Hours ).ToString("yyyyMMdd HH:mm:ss") + @"' AND DATE_TIME <= '" + dt.AddDays(1).ToString("yyyyMMdd HH:mm:ss") + @"' ORDER BY DATE_TIME ASC"; // break; // default: // break; //} return(strRes); }
/// <summary> /// Тиражировать(копировать одно значение в несколько переменных) значений для всех параметров выводов /// </summary> public void ReplicateCurRDGValues() { int h = -1, indx = -1; TECComponent tc = null; indx = 0; foreach (HAdmin.RDGStruct[] arRDGValues in m_listCurRDGValues) { tc = allTECComponents.Find(comp => comp.m_id == m_listKeyTECComponentDetail[indx].Id); if ((tc.IsParamVyvod == true) && ((tc.ListLowPointDev[0] as Vyvod.ParamVyvod).m_id_param == Vyvod.ID_PARAM.T_PV) //&& (tc.m_bKomUchet == true) ) { for (h = 0; h < m_curRDGValues.Length; h++) { arRDGValues[h].From(m_curRDGValues[h], true); } } else { ; } indx++; } }
//»з 'TEC.cs' private string GetPBRDatesQuery(DateTime dt, AdminTS.TYPE_FIELDS mode, TECComponent comp) { string strRes = string.Empty; switch (mode) { case AdminTS.TYPE_FIELDS.STATIC: strRes = @"SELECT DATE_TIME, ID FROM " + allTECComponents[indxTECComponents].tec.m_arNameTableUsedPPBRvsPBR[(int)mode] + @" WHERE " + @"DATE_TIME > '" + dt.ToString("yyyyMMdd HH:mm:ss") + @"' AND DATE_TIME <= '" + dt.AddDays(1).ToString("yyyyMMdd HH:mm:ss") + @"' ORDER BY DATE_TIME ASC"; break; case AdminTS.TYPE_FIELDS.DYNAMIC: strRes = @"SELECT DATE_TIME, ID FROM " + @"[" + allTECComponents[indxTECComponents].tec.m_arNameTableUsedPPBRvsPBR[(int)mode] + @"]" + @" WHERE" + @" ID_COMPONENT = " + comp.m_id + "" + @" AND DATE_TIME > '" + dt.AddHours(-1 * allTECComponents[indxTECComponents].tec.m_timezone_offset_msc).ToString("yyyyMMdd HH:mm:ss") + @"' AND DATE_TIME <= '" + dt.AddDays(1).ToString("yyyyMMdd HH:mm:ss") + @"' ORDER BY DATE_TIME ASC"; break; default: break; } return(strRes); }
//private TecViewAlarm getTecView (int id) //{ // foreach (TecViewAlarm tv in m_listTecView) // if (tv.m_tec.m_id == id) // return tv; // else // ; // throw new Exception(@"AdminAlarm::getTecView (id_tec=" + id + @") - не найден объект 'TecView' ..."); //} //private int OnEventAlarmRegistred_TecView(int id_tec, int curHour, int curMinute) //{ // int iRes = -1; // TecView tecView = getTecView (id_tec); // return iRes; //} /// <summary> /// Изменить состояние ТГ (вкл./выкл.) /// </summary> /// <param name="id_tg">Идентификатор ТГ</param> private void tgConfirm(int id_tg, StatisticCommon.TG.INDEX_TURNOnOff state) { TECComponent tc = null; if (!(state == TG.INDEX_TURNOnOff.UNKNOWN)) { foreach (TecView tv in m_listTecView) { tc = tv.FindTECComponent(id_tg); if ((!(tc == null)) && (tc.IsTG == true)) { if (!(tc.m_listTG[0].m_TurnOnOff == state)) { tc.m_listTG[0].m_TurnOnOff = state; } else { ; } } else { ; } } } else { Logging.Logg().Error(@"AdminAlarm::tgConfirm (id=" + id_tg + @") - попытка зафиксировать состояние ТГ как НЕИЗВЕСТНОЕ...", Logging.INDEX_MESSAGE.NOT_SET); } }
protected override void getPPBRValuesRequest(TEC t, TECComponent comp, DateTime date /*, AdminTS.TYPE_FIELDS mode*/) { string query = string.Empty; DateTime dtReq = date.Date.Add(-ASUTP.Core.HDateTime.TS_MSK_OFFSET_OF_UTCTIMEZONE); int i = -1; query += //@"SELECT [objName], [idFactor], [PBR_NUMBER], [Datetime]," // //+ @" SUM([Value_MBT]) as VALUE" // + @" [Value_MBT] as VALUE" //+ @" FROM [dbo].[v_ALL_PARAM_MODES_" + t.GetAddingParameter(TEC.ADDING_PARAM_KEY.PREFIX_MODES_TERMINAL).ToString() + @"]" + //@" WHERE [ID_Type_Data] = 3" + //@" AND [objName] IN (" + string.Join (@",", comp.m_listMTermId.ToArray()) + @")" + //@" AND [Datetime] > " + @"'" + dtReq.ToString(@"yyyyMMdd HH:00:00.000") + @"'" // + @" AND [Datetime] <= " + @"'" + dtReq.AddDays(1).ToString(@"yyyyMMdd HH:00:00.000") + @"'" //+ @" AND [PBR_NUMBER] > 0" ////+ @" GROUP BY [idFactor], [PBR_NUMBER], [Datetime]" //+ @" ORDER BY [Datetime], [PBR_NUMBER]" $"EXECUTE [dbo].[sp_get_term_modes_values] {t.m_id},'{string.Join (@",", comp.m_listMTermId.ToArray ())}','{dtReq.ToString (@"yyyyMMdd HH:00:00.000")}','{dtReq.AddDays (1).ToString (@"yyyyMMdd HH:00:00.000")}'" ; ASUTP.Database.DbSources.Sources().Request(m_IdListenerCurrent, query); //ASUTP.Logging.Logg().Debug($"AdminMT::GetPPBRValuesRequest (TEC={allTECComponents[indxTECComponents].tec.name_shr}, TECComponent={allTECComponents[indxTECComponents].name_shr}, DateTime={dtReq.AddDays(1).ToString(@"dd-MM-yyyy HH:00")}) - вЫход...: query=[{query}]" // , ASUTP.Logging.INDEX_MESSAGE.NOT_SET); }
//private TecViewAlarm getTecView (int id) //{ // foreach (TecViewAlarm tv in m_listTecView) // if (tv.m_tec.m_id == id) // return tv; // else // ; // throw new Exception(@"AdminAlarm::getTecView (id_tec=" + id + @") - не найден объект 'TecView' ..."); //} //private int OnEventAlarmRegistred_TecView(int id_tec, int curHour, int curMinute) //{ // int iRes = -1; // TecView tecView = getTecView (id_tec); // return iRes; //} /// <summary> /// Изменить состояние ТГ (вкл./выкл.) /// </summary> /// <param name="id_tg">Идентификатор ТГ</param> private void tgConfirm(int id_tg, StatisticCommon.TG.INDEX_TURNOnOff state) { TECComponent tc = null; if (!(state == TG.INDEX_TURNOnOff.UNKNOWN)) { foreach (TecView tv in m_listTecView) { tc = tv.FindTECComponent(id_tg); if ((!(tc == null)) && (tc.IsTG == true)) { if (!((tc.m_listLowPointDev[0] as TG).m_TurnOnOff == state)) { (tc.m_listLowPointDev[0] as TG).m_TurnOnOff = state; Logging.Logg().Action(@"AdminAlarm::tgConfirm (id=" + id_tg + @") - ТГ состояние=" + state.ToString(), Logging.INDEX_MESSAGE.NOT_SET); } else { Logging.Logg().Warning(@"AdminAlarm::tgConfirm (id=" + id_tg + @") - попытка подтвердить ТО ЖЕ состояние ТГ...", Logging.INDEX_MESSAGE.NOT_SET); } } else { ; } } } else { Logging.Logg().Error(@"AdminAlarm::tgConfirm (id=" + id_tg + @") - попытка подтвердить состояние ТГ как НЕИЗВЕСТНОЕ...", Logging.INDEX_MESSAGE.NOT_SET); } }
protected override string [] setAdminValuesQuery(TEC t, TECComponent comp, DateTime date) { string [] resQuery = base.setAdminValuesQuery(t, comp, date); int currentHour = -1 , offset = -1; date = date.Date; currentHour = 0; int indx = m_listTECComponentIndexDetail.IndexOf(GetIndexTECComponent(t.m_id, comp.m_id)) - GetCountGTP(); if (indx < m_listCurTimezoneOffsetRDGExcelValues.Count) { for (int i = currentHour; i < m_listTimezoneOffsetHaveDates[(int)StatisticCommon.CONN_SETT_TYPE.ADMIN].Count; i++) { offset = GetSeasonHourOffset(i + 1); // запись дл¤ этого часа имеетс¤, модифицируем еЄ if (m_listTimezoneOffsetHaveDates[(int)CONN_SETT_TYPE.ADMIN][i] == true) { resQuery[(int)DbTSQLInterface.QUERY_TYPE.UPDATE] += @"UPDATE " + t.s_NameTableAdminValues + " SET " + @"REC='" + m_listCurTimezoneOffsetRDGExcelValues[indx][i].recomendation.ToString("F2", CultureInfo.InvariantCulture) + @"', " + @"IS_PER=" + (m_listCurTimezoneOffsetRDGExcelValues[indx][i].deviationPercent ? "1" : "0") + @", " + "DIVIAT='" + m_listCurTimezoneOffsetRDGExcelValues[indx][i].deviation.ToString("F2", CultureInfo.InvariantCulture) + @"', " + "SEASON=" + (offset > 0 ? (SEASON_BASE + (int)HAdmin.seasonJumpE.WinterToSummer) : (SEASON_BASE + (int)HAdmin.seasonJumpE.SummerToWinter)) + @", " + "FC=" + (m_curRDGValues[i].fc ? 1 : 0) + @" WHERE" + @" DATE = '" + date.AddHours((i + 1) + (-1 * t.m_timezone_offset_msc)).ToString("yyyyMMdd HH:mm:ss") + @"'" + @" AND ID_COMPONENT = " + comp.m_id + "; "; } else { // запись отсутствует, запоминаем значени¤ resQuery[(int)DbTSQLInterface.QUERY_TYPE.INSERT] += @" ('" + date.AddHours((i + 1) + (-1 * t.m_timezone_offset_msc)).ToString("yyyyMMdd HH:mm:ss") + @"', '" + m_listCurTimezoneOffsetRDGExcelValues[indx][i].recomendation.ToString("F2", CultureInfo.InvariantCulture) + @"', " + (m_listCurTimezoneOffsetRDGExcelValues[indx][i].deviationPercent ? "1" : "0") + @", '" + m_listCurTimezoneOffsetRDGExcelValues[indx][i].deviation.ToString("F2", CultureInfo.InvariantCulture) + @"', " + (comp.m_id) + @", " + (offset > 0 ? (SEASON_BASE + (int)HAdmin.seasonJumpE.WinterToSummer) : (SEASON_BASE + (int)HAdmin.seasonJumpE.SummerToWinter)) + @", " + (m_curRDGValues[i].fc ? 1 : 0) + @"),"; } } } else { Logging.Logg().Debug("AdminTransTG::setAdminValuesQuery () - m_listCurTimezoneOffsetRDGExcelValues.Count = " + m_listCurTimezoneOffsetRDGExcelValues.Count, Logging.INDEX_MESSAGE.NOT_SET); } return(resQuery); }
//»з 'TEC.cs' private string GetAdminDatesQuery(DateTime dt, TECComponent comp) { string strRes = string.Empty; strRes = @"SELECT DATE, ID FROM " + TEC.s_NameTableAdminValues + " WHERE" + @" ID_COMPONENT = " + comp.m_id + @" AND DATE > '" + dt.AddHours(-1 * allTECComponents[indxTECComponents].tec.m_timezone_offset_msc).ToString("yyyyMMdd HH:mm:ss") + @"' AND DATE <= '" + dt.AddDays(1).ToString("yyyyMMdd HH:mm:ss") + @"' ORDER BY DATE ASC"; return(strRes); }
private void toEventGUIReg(TecView.EventRegEventArgs ev) { string msg = string.Empty; //Деактивация m_adminAlarm m_adminAlarm.Activate(false); int id_evt = -1; if (ev.m_id_tg < 0) { id_evt = ev.m_id_gtp; if (ev.m_situation == 1) { msg = @"вверх"; } else if (ev.m_situation == -1) { msg = @"вниз"; } else { msg = @"нет"; } } else { id_evt = ev.m_id_tg; if (ev.m_situation == (int)TG.INDEX_TURNOnOff.ON) //TGTurnOnOff = ON { msg = @"вкл."; } else if (ev.m_situation == (int)TG.INDEX_TURNOnOff.OFF) //TGTurnOnOff = OFF { msg = @"выкл."; } else { msg = @"нет"; } } TECComponent tc = findTECComponent(id_evt); msg = tc.tec.name_shr + @"::" + tc.name_shr + Environment.NewLine + @"Информация: " + msg; EventGUIReg(msg); }
private void admin_onEventUnitTestSetValuesRequest(TECComponent comp, DateTime date, CONN_SETT_TYPE type, string[] queries, IEnumerable <int> listIdRec) { FormChangeMode.KeyDevice key = FormChangeMode.KeyDeviceEmpty; if (comboBoxTecComponent.SelectedIndex + 1 < comboBoxTecComponent.Items.Count) { key = comboBoxTecComponent.Items.Cast <ComboBoxItem>().ToArray()[comboBoxTecComponent.SelectedIndex + 1].Tag; } else { ; } _eventUnitTestNextIndexSetValuesRequest?.Invoke(key, comp, date, type, listIdRec, queries); }
protected override void GetPPBRValuesRequest(TEC t, TECComponent comp, DateTime date /*, AdminTS.TYPE_FIELDS mode*/) { string query = string.Empty; int i = -1; query += @"SELECT [objName], [idFactor], [PBR_NUMBER], [Datetime], [Value_MBT] as VALUE FROM [dbo].[v_ALL_PARAM_MODES_BIYSK]" + @" WHERE [ID_Type_Data] = 3" + @" AND [objName] = '" + comp.m_listMTermId[0] + @"'" + @" AND [Datetime] > " + @"'" + date.Date.Add(-HDateTime.TS_NSK_OFFSET_OF_MOSCOWTIMEZONE).ToString(@"yyyyMMdd HH:00:00.000") + @"'" + @" AND [PBR_NUMBER] > 0" + @" ORDER BY [Datetime], [PBR_NUMBER]" ; DbMCSources.Sources().Request(m_IdListenerCurrent, query); //Logging.Logg().Debug("AdminMT::GetPPBRValuesRequest (TEC, TECComponent, DateTime, AdminTS.TYPE_FIELDS) - вЫход...: query=" + query, Logging.INDEX_MESSAGE.NOT_SET); }
public TECComponent GetTECComponentOfIdMC(int id_mc) { TECComponent compRes = null; int indxTECComponent = GetIndexTECComponentOfIdMC(id_mc); if (!(indxTECComponent < 0)) { compRes = m_admin.allTECComponents[indxTECComponent]; } else { ; } return(compRes); }
/// <summary> /// Добавить "напоминание" на панели о событии для ГТП (ТГ) /// </summary> /// <param name="id">идентификатор ГТП</param> /// <param name="id_tg">идентификатор ТГ</param> private void AddLabelAlarm(int id, int id_tg) { TECComponent tc = null; string text = string.Empty; int id_find = -1; if (id_tg < 0) { id_find = id; } else { id_find = id_tg; } tc = findTECComponent(id_find); text = tc.tec.name_shr + @" - " + tc.name_shr; m_panelLabelAlarm.Add(text, id, id_tg); }
protected override int StateRequest(int /*StatesMachine*/ state) { int result = 0; string msg = string.Empty; StatesMachine stateMachine = (StatesMachine)state; TECComponent comp = CurrentDevice as TECComponent; switch (stateMachine) { case StatesMachine.PPBRValues: ActionReport("Получение данных плана."); getPPBRValuesRequest(comp.tec, comp, m_curDate.Date /*, AdminTS.TYPE_FIELDS.COUNT_TYPE_FIELDS*/); break; case StatesMachine.PPBRDates: if ((serverTime.Date > m_curDate.Date) && (m_ignore_date == false)) { result = -1; break; } else { ; } ActionReport("Получение списка сохранённых часовых значений."); //GetPPBRDatesRequest(m_curDate); break; default: break; } //Logging.Logg().Debug(@"AdminMC::StateRequest () - state=" + state.ToString() + @" - вЫход...", Logging.INDEX_MESSAGE.NOT_SET); return(result); }
protected override void getPPBRValuesRequest(TEC t, TECComponent comp, DateTime date /*, AdminTS.TYPE_FIELDS mode*/) { string query = string.Empty; DateTime dtReq = date.Date.Add(-HDateTime.TS_MSK_OFFSET_OF_UTCTIMEZONE); int i = -1; query += @"SELECT [objName], [idFactor], [PBR_NUMBER], [Datetime]," //+ @" SUM([Value_MBT]) as VALUE" + @" [Value_MBT] as VALUE" + @" FROM [dbo].[v_ALL_PARAM_MODES_" + t.GetAddingParameter(TEC.ADDING_PARAM_KEY.PREFIX_MODES_TERMINAL).ToString() + @"]" + @" WHERE [ID_Type_Data] = 3" + @" AND [objName] IN (" + string.Join(@",", comp.m_listMTermId.ToArray()) + @")" + @" AND [Datetime] > " + @"'" + dtReq.ToString(@"yyyyMMdd HH:00:00.000") + @"'" + @" AND [Datetime] <= " + @"'" + dtReq.AddDays(1).ToString(@"yyyyMMdd HH:00:00.000") + @"'" + @" AND [PBR_NUMBER] > 0" //+ @" GROUP BY [idFactor], [PBR_NUMBER], [Datetime]" + @" ORDER BY [Datetime], [PBR_NUMBER]" ; DbSources.Sources().Request(m_IdListenerCurrent, query); //Logging.Logg().Debug("AdminMT::GetPPBRValuesRequest (TEC, TECComponent, DateTime, AdminTS.TYPE_FIELDS) - вЫход...: query=" + query, Logging.INDEX_MESSAGE.NOT_SET); }
/// <summary> /// Метод по завершению загрузки информации по компоненту станции /// </summary> /// <param name="comp">Объект, описывающий компонент станции</param> protected virtual void handlerDbTaskCalculate_onAddComponent(TECComponent comp) { }
//»з 'TEC.cs' private string getAdminDatesQuery(DateTime dt /*, AdminTS.TYPE_FIELDS mode*/, TECComponent comp) { string strRes = string.Empty; //switch (mode) //{ // case AdminTS.TYPE_FIELDS.STATIC: // strRes = @"SELECT DATE, ID FROM " + allTECComponents[indxTECComponents].tec.m_arNameTableAdminValues[(int)mode] + " WHERE " + // @"DATE > '" + dt.ToString("yyyyMMdd HH:mm:ss") + // @"' AND DATE <= '" + dt.AddDays(1).ToString("yyyyMMdd HH:mm:ss") + // @"' ORDER BY DATE ASC"; // break; // case AdminTS.TYPE_FIELDS.DYNAMIC: strRes = @"SELECT DATE, ID FROM " + allTECComponents[indxTECComponents].tec.m_strNameTableAdminValues /*[(int)mode]*/ + " WHERE" + @" ID_COMPONENT = " + comp.m_id + @" AND DATE > '" + dt.AddHours(-1 * allTECComponents[indxTECComponents].tec.m_timezone_offset_msc).ToString("yyyyMMdd HH:mm:ss") + @"' AND DATE <= '" + dt.AddDays(1).ToString("yyyyMMdd HH:mm:ss") + @"' ORDER BY DATE ASC"; // break; // default: // break; //} return(strRes); }
public void SummatorRDGValues() { int i = m_listKeyTECComponentDetail.IndexOf(CurrentKey) , hour = 1 , iDiv = -1; // ' = i == 0 ? 1 : 2' общий делитель для усреднения невозможно определить, т.к. зависит от условия "> 0" TECComponent tc = allTECComponents.Find(comp => comp.m_id == CurrentKey.Id); // компонент - параметр вывода 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}) не выполнено..." , tc.m_id, i, m_listCurRDGValues[i].Length) , Logging.INDEX_MESSAGE.NOT_SET); } }
/// <summary> /// Зарегистрировать событие от БД /// </summary> /// <param name="ev">Аргумент события</param> /// <returns>Результат регистрации (см. пред. обработчик для 'TecViewAlarm.AlarmTecViewEventArgs')</returns> public INDEX_ACTION Registred(AdminAlarm.AlarmDbEventArgs ev, MODE mode) { INDEX_ACTION iRes = INDEX_ACTION.NOTHING; ALARM_OBJECT alarmObj = find(ev.m_id_comp, ev.m_dtRegistred.GetValueOrDefault()); lock (this) { try { if (alarmObj == null) {//Только, если объект события сигнализации НЕ создан // создать объект события сигнализации alarmObj = new ALARM_OBJECT(ev); _dictAlarmObject.Add(new KeyValuePair <int, DateTime>(ev.m_id_comp, ev.m_dtRegistred.GetValueOrDefault()), alarmObj); alarmObj.Fixed(ev.m_dtFixed); alarmObj.Confirmed(ev.m_dtConfirm); if (mode == MODE.ADMIN) { if (alarmObj.IsNotify() == true) { alarmObj.Fixing(); iRes = INDEX_ACTION.NEW; } else { ; } } else { ; } } else { alarmObj.Fixed(ev.m_dtFixed); alarmObj.Confirmed(ev.m_dtConfirm); if (mode == MODE.SERVICE) { //if (alarmObj.CONFIRMED == true) // if (TECComponent.Mode(ev.m_id_comp) == FormChangeMode.MODE_TECCOMPONENT.TG) // iRes = INDEX_ACTION.CONFIRMED_TG; // else // ; //else if (alarmObj.IsAutoConfirming() == true) { // если объект не подтвержден длительное время iRes = INDEX_ACTION.AUTO_CONFIRMING; } else if ((alarmObj.IsAutoFixing(ALARM_OBJECT.INDEX_DATETIME_REGISTRED.LAST) == true) || ((TECComponent.Mode(ev.m_id_comp) == FormChangeMode.MODE_TECCOMPONENT.TG) && (alarmObj.IsAutoFixing(ALARM_OBJECT.INDEX_DATETIME_REGISTRED.FIRST) == true))) { // если объект не зафиксирован длительное время iRes = INDEX_ACTION.AUTO_FIXING; } else { ; } } else if (mode == MODE.ADMIN) { if (alarmObj.IsNotify() == true) { alarmObj.Fixing(); iRes = INDEX_ACTION.RETRY; } else { ; } } else { ; // при 'VIEW' ничего не делать } } } catch (Exception e) { Logging.Logg().Exception(e, @"DictAlarmObject::Registred (" + ev.GetType().Name + @") - ...", Logging.INDEX_MESSAGE.NOT_SET); } } return(iRes); }
private void admin_onEventUnitTestSetValuesRequest(TEC t, TECComponent comp, DateTime date, CONN_SETT_TYPE type, string[] queries, IEnumerable <int> listIdRec) { _eventUnitTestNextIndexSetValuesRequest?.Invoke(comboBoxTecComponent.SelectedIndex + 1 < comboBoxTecComponent.Items.Count ? comboBoxTecComponent.SelectedIndex + 1 : -1, t, comp, date, type, listIdRec, queries); }
protected override string [] setAdminValuesQuery(TECComponent comp, DateTime date) { string [] resQuery = base.setAdminValuesQuery(comp, date); RDGStruct [] values; int currentHour = -1 , offset = -1 , indx = -1; indx = m_listKeyTECComponentDetail.IndexOf(new FormChangeMode.KeyDevice() { Id = comp.m_id, Mode = comp.Mode }) - CountGTP; values = m_listCurTimezoneOffsetRDGExcelValues [indx]; date = date.Date; currentHour = 0; if (indx < m_listCurTimezoneOffsetRDGExcelValues.Count) { for (int i = currentHour; i < m_listTimezoneOffsetHaveDates[(int)StatisticCommon.CONN_SETT_TYPE.ADMIN].Count; i++) { offset = GetSeasonHourOffset(i + 1); // запись для этого часа имеется, модифицируем её if (m_listTimezoneOffsetHaveDates[(int)CONN_SETT_TYPE.ADMIN][i] == true) { //switch (m_typeFields) //{ // case AdminTS.TYPE_FIELDS.STATIC: // break; // case AdminTS.TYPE_FIELDS.DYNAMIC: resQuery[(int)ASUTP.Database.DbTSQLInterface.QUERY_TYPE.UPDATE] += @"UPDATE " + comp.tec.m_strNameTableAdminValues /*[(int)m_typeFields]*/ + " SET " + @"REC='" + values [i].recomendation.ToString("F2", CultureInfo.InvariantCulture) + @"', " + @"IS_PER=" + (values[i].deviationPercent ? "1" : "0") + @", " + "DIVIAT='" + values[i].deviation.ToString("F2", CultureInfo.InvariantCulture) + @"', " + "SEASON=" + (offset > 0 ? (SEASON_BASE + (int)HAdmin.seasonJumpE.WinterToSummer) : (SEASON_BASE + (int)HAdmin.seasonJumpE.SummerToWinter)) + @", " + "FC=" + (m_curRDGValues[i].fc ? 1 : 0) + @" WHERE" + @" DATE = '" + date.AddHours((i + 1) + (-1 * //t.m_timezone_offset_msc ASUTP.Core.HDateTime.TS_NSK_OFFSET_OF_MOSCOWTIMEZONE.Hours )).ToString("yyyyMMdd HH:mm:ss") + @"'" + @" AND ID_COMPONENT = " + comp.m_id + "; "; // break; // default: // break; //} } else { // запись отсутствует, запоминаем значения //switch (m_typeFields) //{ // case AdminTS.TYPE_FIELDS.STATIC: // break; // case AdminTS.TYPE_FIELDS.DYNAMIC: resQuery[(int)DbTSQLInterface.QUERY_TYPE.INSERT] += @" ('" + date.AddHours((i + 1) + (-1 * //t.m_timezone_offset_msc HDateTime.TS_NSK_OFFSET_OF_MOSCOWTIMEZONE.Hours )).ToString("yyyyMMdd HH:mm:ss") + @"', '" + values[i].recomendation.ToString("F2", CultureInfo.InvariantCulture) + @"', " + (values[i].deviationPercent ? "1" : "0") + @", '" + values[i].deviation.ToString("F2", CultureInfo.InvariantCulture) + @"', " + (comp.m_id) + @", " + (offset > 0 ? (SEASON_BASE + (int)HAdmin.seasonJumpE.WinterToSummer) : (SEASON_BASE + (int)HAdmin.seasonJumpE.SummerToWinter)) + @", " + (m_curRDGValues[i].fc ? 1 : 0) + @"),"; // break; // default: // break; //} } } } else { ASUTP.Logging.Logg().Debug("AdminTransTG::setAdminValuesQuery () - m_listCurTimezoneOffsetRDGExcelValues.Count = " + m_listCurTimezoneOffsetRDGExcelValues.Count , ASUTP.Logging.INDEX_MESSAGE.NOT_SET); } return(resQuery); }
protected override string [] setPPBRQuery(TECComponent comp, DateTime date) { int err = -1; // признак ошибки при определении номера ПБР RDGStruct [] values; string [] resQuery = base.setPPBRQuery(comp, date); int currentHour = -1 , indx = -1; indx = m_listKeyTECComponentDetail.IndexOf(new FormChangeMode.KeyDevice() { Id = comp.m_id, Mode = comp.Mode }) - CountGTP; values = m_listCurTimezoneOffsetRDGExcelValues [indx]; date = date.Date; currentHour = 0; if (indx < m_listCurTimezoneOffsetRDGExcelValues.Count) { for (int i = currentHour; i < m_listTimezoneOffsetHaveDates[(int)CONN_SETT_TYPE.PBR].Count; i++) { // запись для этого часа имеется, модифицируем её if (m_listTimezoneOffsetHaveDates[(int)CONN_SETT_TYPE.PBR][i]) { //switch (m_typeFields) //{ // case AdminTS.TYPE_FIELDS.STATIC: // break; // case AdminTS.TYPE_FIELDS.DYNAMIC: resQuery[(int)DbTSQLInterface.QUERY_TYPE.UPDATE] += @"UPDATE " + @"[" + comp.tec.m_strNameTableUsedPPBRvsPBR /*[(int)m_typeFields]*/ + @"]" + " SET " + @"PBR='" + values[i].pbr.ToString("F2", CultureInfo.InvariantCulture) + "'" + @", Pmin='" + values[i].pmin.ToString("F2", CultureInfo.InvariantCulture) + "'" + @", Pmax='" + values[i].pbr.ToString("F2", CultureInfo.InvariantCulture) + "'" + @" WHERE " + comp.tec.m_strNamesField [(int)TEC.INDEX_NAME_FIELD.PBR_DATETIME] + @" = '" + date.AddHours((i + 1) + (-1 * //t.m_timezone_offset_msc HDateTime.TS_NSK_OFFSET_OF_MOSCOWTIMEZONE.Hours )).ToString("yyyyMMdd HH:mm:ss") + @"'" + @" AND ID_COMPONENT = " + comp.m_id + "; "; // break; // default: // break; //} } else { // запись отсутствует, запоминаем значения //switch (m_typeFields) //{ // case AdminTS.TYPE_FIELDS.STATIC: // break; // case AdminTS.TYPE_FIELDS.DYNAMIC: resQuery[(int)ASUTP.Database.DbTSQLInterface.QUERY_TYPE.INSERT] += @" ('" + date.AddHours((i + 1) + (-1 * //t.m_timezone_offset_msc ASUTP.Core.HDateTime.TS_NSK_OFFSET_OF_MOSCOWTIMEZONE.Hours )).ToString("yyyyMMdd HH:mm:ss") + @"', '" + serverTime.ToString("yyyyMMdd HH:mm:ss") + @"', '" + GetPBRNumber((i + 0) + (-1 * //t.m_timezone_offset_msc ASUTP.Core.HDateTime.TS_NSK_OFFSET_OF_MOSCOWTIMEZONE.Hours ), out err) + @"', " + comp.m_id + @", '" + "0" + "'" + @", '" + values[i].pbr.ToString("F1", CultureInfo.InvariantCulture) + "'" + @", '" + values[i].pmin.ToString("F1", CultureInfo.InvariantCulture) + "'" + @", '" + values[i].pmax.ToString("F1", CultureInfo.InvariantCulture) + "'" + @"),"; // break; // default: // break; //} } } } else { ASUTP.Logging.Logg().Debug("AdminTransTG::setPPBRQuery () - m_listCurTimezoneOffsetRDGExcelValues.Count = " + m_listCurTimezoneOffsetRDGExcelValues.Count , ASUTP.Logging.INDEX_MESSAGE.NOT_SET); } resQuery[(int)ASUTP.Database.DbTSQLInterface.QUERY_TYPE.DELETE] = @""; ASUTP.Logging.Logg().Debug("AdminTransTG::setPPBRQuery ()", ASUTP.Logging.INDEX_MESSAGE.NOT_SET); return(resQuery); }
protected override string [] setPPBRQuery(TEC t, TECComponent comp, DateTime date) { string [] resQuery = base.setPPBRQuery(t, comp, date); int currentHour = -1; date = date.Date; currentHour = 0; int indx = m_listTECComponentIndexDetail.IndexOf(GetIndexTECComponent(t.m_id, comp.m_id)) - GetCountGTP(); if (indx < m_listCurTimezoneOffsetRDGExcelValues.Count) { for (int i = currentHour; i < m_listTimezoneOffsetHaveDates[(int)CONN_SETT_TYPE.PBR].Count; i++) { // запись дл¤ этого часа имеетс¤, модифицируем еЄ if (m_listTimezoneOffsetHaveDates[(int)CONN_SETT_TYPE.PBR][i]) { switch (m_typeFields) { case AdminTS.TYPE_FIELDS.STATIC: break; case AdminTS.TYPE_FIELDS.DYNAMIC: resQuery[(int)DbTSQLInterface.QUERY_TYPE.UPDATE] += @"UPDATE " + @"[" + t.m_arNameTableUsedPPBRvsPBR[(int)m_typeFields] + @"]" + " SET " + @"PBR='" + m_listCurTimezoneOffsetRDGExcelValues[indx][i].pbr.ToString("F2", CultureInfo.InvariantCulture) + "'" + @", Pmin='" + m_listCurTimezoneOffsetRDGExcelValues[indx][i].pmin.ToString("F2", CultureInfo.InvariantCulture) + "'" + @", Pmax='" + m_listCurTimezoneOffsetRDGExcelValues[indx][i].pbr.ToString("F2", CultureInfo.InvariantCulture) + "'" + @" WHERE " + t.m_strNamesField [(int)TEC.INDEX_NAME_FIELD.PBR_DATETIME] + @" = '" + date.AddHours((i + 1) + (-1 * t.m_timezone_offset_msc)).ToString("yyyyMMdd HH:mm:ss") + @"'" + @" AND ID_COMPONENT = " + comp.m_id + "; "; break; default: break; } } else { // запись отсутствует, запоминаем значени¤ switch (m_typeFields) { case AdminTS.TYPE_FIELDS.STATIC: break; case AdminTS.TYPE_FIELDS.DYNAMIC: resQuery[(int)DbTSQLInterface.QUERY_TYPE.INSERT] += @" ('" + date.AddHours((i + 1) + (-1 * t.m_timezone_offset_msc)).ToString("yyyyMMdd HH:mm:ss") + @"', '" + serverTime.ToString("yyyyMMdd HH:mm:ss") + @"', '" + GetPBRNumber((i + 0) + (-1 * t.m_timezone_offset_msc)) + @"', " + comp.m_id + @", '" + "0" + "'" + @", '" + m_listCurTimezoneOffsetRDGExcelValues[indx][i].pbr.ToString("F1", CultureInfo.InvariantCulture) + "'" + @", '" + m_listCurTimezoneOffsetRDGExcelValues[indx][i].pmin.ToString("F1", CultureInfo.InvariantCulture) + "'" + @", '" + m_listCurTimezoneOffsetRDGExcelValues[indx][i].pmax.ToString("F1", CultureInfo.InvariantCulture) + "'" + @"),"; break; default: break; } } } } else { Logging.Logg().Debug("AdminTransTG::setPPBRQuery () - m_listCurTimezoneOffsetRDGExcelValues.Count = " + m_listCurTimezoneOffsetRDGExcelValues.Count, Logging.INDEX_MESSAGE.NOT_SET); } resQuery[(int)DbTSQLInterface.QUERY_TYPE.DELETE] = @""; Logging.Logg().Debug("AdminTransTG::setPPBRQuery ()", Logging.INDEX_MESSAGE.NOT_SET); return(resQuery); }
private RESULT calculate(Action <TYPE, int, RESULT> delegateResultNAlg) { RESULT res = RESULT.Ok; RESULT[] resNAlg = new RESULT[_dictPAlg[TYPE.OUT_VALUES].Count]; P_ALG.KEY_P_VALUE keyGroupPValue; IEnumerable <string> nAlgs; // парметры алгоритма участвующие в расчете IEnumerable <P_ALG.KEY_P_VALUE> calculateKeys = new List <P_ALG.KEY_P_VALUE>(); float fltRes = -1F; foreach (KeyValuePair <string, P_ALG.P_PUT> pAlg in _dictPAlg[TYPE.OUT_VALUES]) { switch (pAlg.Key) { case "191": // добавить в список все параметры алгоритма расчета nAlgs = new List <string>() { @"1" }; foreach (string nAlg in nAlgs) { calculateKeys = calculateKeys.Union(In[nAlg].Keys); } var keyPValueGroupDates = calculateKeys.GroupBy(k => k.Stamp).ToDictionary(g => { return(g.Key); }); foreach (DateTime date in keyPValueGroupDates.Keys) { // зафиксировать дату в ключе группового элемента keyGroupPValue.Stamp = date; // ГТП (1,2; 3-6) foreach (P_ALG.KEY_P_VALUE keyPValue in keyPValueGroupDates[date]) { switch (keyPValue.Id) { case BL1: case BL2: keyGroupPValue.Id = GTP12; // ГТП 1,2 break; case BL3: case BL4: case BL5: case BL6: keyGroupPValue.Id = GTP36; // ГТП 3-6 break; default: throw new Exception(string.Format(@"TaskAutobookMonthValuesCalculate::calculate () - неизвестный идентификатор [ID_COMP={0}] компонента...", keyPValue.Id)); break; } validateKeyPValue(Out[pAlg.Key], keyGroupPValue); if (Out[pAlg.Key].ContainsKey(keyGroupPValue) == true) { Out[pAlg.Key][keyGroupPValue].value += In["1"][keyPValue].value; } else { throw new Exception(string.Format(@"TaskAutobookMonthValuesCalculate::calculate () - отсутствует ключ [ID={0}, DATA_DATE={1}]..." , keyGroupPValue.Id, keyGroupPValue.Stamp)); } } // станция fltRes = 0F; IEnumerable <P_ALG.KEY_P_VALUE> groupPValueKeys = Out[pAlg.Key].Keys.Where(key => { return (!(TECComponent.GetType(key.Id) == TECComponent.TYPE.TEC) && (key.Stamp == date)); }); foreach (P_ALG.KEY_P_VALUE keyPValue in groupPValueKeys) { switch (keyPValue.Id) { case 115: case 116: keyGroupPValue.Id = 5; // станция break; default: throw new Exception(string.Format(@"TaskAutobookMonthValuesCalculate::calculate () - неизвестный идентификатор [ID_COMP={0}] компонента...", keyPValue.Id)); break; } //// корректировка, если есть //if (In[@"3"].ContainsKey(keyPValue) == true) // Out[pAlg.Key][keyPValue].value += In[@"3"][keyPValue].value; //else // ; fltRes += Out[pAlg.Key][keyPValue].value; } keyGroupPValue.Id = 5; // станция validateKeyPValue(Out[pAlg.Key], keyGroupPValue); Out[pAlg.Key][keyGroupPValue].value = fltRes; } break; case "": default: throw new Exception(string.Format(@"TaskAutobookMonthValuesCalculate::calculate () - неизвестный параметр [NAlg={0}] расчета 1-го порядка...", pAlg.Key)); break; } delegateResultNAlg(_types, pAlg.Value.m_iId, RESULT.Ok); } return(res); }
protected override void GetPPBRValuesRequest(TEC t, TECComponent comp, DateTime date) { throw new NotImplementedException(); }
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); }
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 (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 { ; } } }