public FormParametersTG_DB(ConnectionSettings connSett, List <TEC> list_tec) { m_connSett = connSett; m_idListenerConfigDB = -1; //Поиск Бийской ТЭЦ int indx_tec = -1; foreach (TEC t in list_tec) { if (t.Type == TEC.TEC_TYPE.BIYSK) { indx_tec = list_tec.IndexOf(t); } else { } } if (indx_tec < 0) { throw new Exception(@"FormParametersTG_DB::конструктор () - Бийская ТЭЦ в списке не найдена..."); } else { m_tec = list_tec [indx_tec]; } loadParam(true); }
protected override void getPPBRValuesRequest(TEC t, IDevice comp, DateTime date /*, AdminTS.TYPE_FIELDS mode*/) { string query = DbMCInterface.Operation.PPBR.ToString(); 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.ListMCentreId.Count; i++) { query += comp.ListMCentreId[i]; if ((i + 1) < comp.ListMCentreId.Count) { query += ","; } else { ; } } query += ";"; query += date.ToOADate().ToString(); DbMCSources.Sources().Request(m_IdListenerCurrent, query); Logging.Logg().Debug($"AdminMC::getPPBRValuesRequest (TEC={t.name_shr}, IDevice={comp.name_shr}, Stamp=[{date.ToString()}]) - вЫход...: query=" + query, Logging.INDEX_MESSAGE.D_002); }
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); }
/// <summary> /// Конструктор - дополнительный /// </summary> public TECComponent(TEC tec, DataRow rComp) : this(tec) { name_shr = rComp["NAME_SHR"].ToString(); //rComp["NAME_GNOVOS"] if (DbTSQLInterface.IsNameField(rComp, "NAME_FUTURE") == true) { this.name_future = rComp["NAME_FUTURE"].ToString(); } else { ; } m_id = Convert.ToInt32(rComp["ID"]); m_listMCentreId = getMCentreId(rComp); m_listMTermId = getMTermId(rComp); if ((DbTSQLInterface.IsNameField(rComp, "INDX_COL_RDG_EXCEL") == true) && (!(rComp["INDX_COL_RDG_EXCEL"] is System.DBNull))) { m_indx_col_rdg_excel = Convert.ToInt32(rComp["INDX_COL_RDG_EXCEL"]); } else { ; } if ((DbTSQLInterface.IsNameField(rComp, "KoeffAlarmPcur") == true) && (!(rComp["KoeffAlarmPcur"] is System.DBNull))) { m_dcKoeffAlarmPcur = Convert.ToInt32(rComp["KoeffAlarmPcur"]); } else { ; } }
/// <summary> /// Список компонентов (ТЭЦ, ГТП, ЩУ, ТГ) в ~ от индекса компонента /// </summary> /// <param name="idListener">Идентификатор установленного соединения с БД концигурации</param> /// <param name="mode">Индекс компонента - значение из перечисления 'FormChangeMode.MODE_TECCOMPONENT' ('0' или > '0' означает TEC(GTP, PC, TG), '-1' означает VYVOD)</param> /// <param name="bIgnoreTECInUse">Признак использования поля [TEC_LIST].[InUse]</param> /// <param name="arTECLimit">Массив-диапазон допустимых идентификаторов ТЭЦ</param> /// <param name="bUseData">Признак возможности обращения к данным компонентов собираемого списка</param> public List <TEC> InitTEC(FormChangeMode.MODE_TECCOMPONENT mode, bool bIgnoreTECInUse, int [] arTECLimit, bool bUseData) //indx = {GTP или PC} { //Logging.Logg().Debug("InitTEC::InitTEC (4 параметра) - вход..."); ListTEC tecRes = new ListTEC(); int err = 01; // подключиться к бд, инициализировать глобальные переменные, выбрать режим работы DataTable list_tec = null // = DbTSQLInterface.Select(connSett, "SELECT * FROM TEC_LIST"), , list_TECComponents = null , all_PARAM_DETAIL = null; TEC newTECItem; //Использование статической функции list_tec = GetListTEC(bIgnoreTECInUse, arTECLimit, out err); //??? что значит < 0, mode.Unknown < 0!!! if ((!(mode == FormChangeMode.MODE_TECCOMPONENT.VYVOD)) && (!(mode == FormChangeMode.MODE_TECCOMPONENT.Unknown))) { all_PARAM_DETAIL = getALL_PARAM_TG(0, out err); // самый новый набор } else { all_PARAM_DETAIL = getALL_ParamVyvod(-1, out err); // для всех ТЭЦ } if (err == 0) { for (int indx_tec = 0; indx_tec < list_tec.Rows.Count; indx_tec++) { //Logging.Logg().Debug("InitTEC::InitTEC (4 параметра) - Создание объекта ТЭЦ: " + i); //Создание объекта ТЭЦ newTECItem = new TEC(list_tec.Rows[indx_tec], bUseData); tecRes.Add(newTECItem); EventTECListUpdate += newTECItem.PerformUpdate; initTECConnectionSettings(newTECItem, list_tec.Rows[indx_tec]); // получить список компонентов, с учетом типа компонентов по 'indx' list_TECComponents = GetListTECComponent(FormChangeMode.getPrefixMode(mode), Convert.ToInt32(list_tec.Rows[indx_tec]["ID"]), out err); if (err == 0) { //??? что значит < 0, mode.Unknown < 0!!! initTECComponents(newTECItem, mode, list_TECComponents, all_PARAM_DETAIL); } else { ; //Ошибка ??? } } } else { ; //Ошибка получения списка ТЭЦ } //Logging.Logg().Debug("InitTEC::InitTEC (4 параметра) - вЫход..."); return(tecRes); }
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); }
/// <summary> /// Конструктор - дополнительный /// </summary> private TECComponent(TEC tec) { this.tec = tec; m_listLowPointDev = new List <TECComponentBase>(); m_listMCentreId = m_listMTermId = null; }
/// <summary> /// Конструктор - основной (без параметров) /// </summary> public TECComponent(TEC tec) { this.tec = tec; m_listTG = new List <TG>(); m_listMCentreId = m_listMTermId = null; }
protected override void setUIControlSourceState() { // tec получить у любого, в т.ч. "0"-го элемента TEC tec = ((AdminTS)m_arAdmin [(Int16)CONN_SETT_TYPE.DEST]).FindTECComponent(((AdminTS_NSS)m_arAdmin [(Int16)CONN_SETT_TYPE.DEST]).m_listKeyTECComponentDetail [0]).tec; m_arUIControls [(Int16)CONN_SETT_TYPE.SOURCE, (Int16)INDX_UICONTROLS.SERVER_IP].Text = tec.GetAddingParameter(TEC.ADDING_PARAM_KEY.PATH_RDG_EXCEL).ToString(); enabledButtonSourceExport(m_arUIControls[(Int16)CONN_SETT_TYPE.SOURCE, (Int16)INDX_UICONTROLS.SERVER_IP].Text.Length > 0 ? true : false); }
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); }
/// <summary> /// Gets a hash code for this EquipStatsDouble. /// </summary> public override int GetHashCode() { unchecked { int hash = VIT.GetHashCode(); hash = 31 * hash + STR.GetHashCode(); hash = 31 * hash + DEX.GetHashCode(); hash = 31 * hash + TEC.GetHashCode(); hash = 31 * hash + MAG.GetHashCode(); return(31 * hash + FTH.GetHashCode()); } }
public TECComponent(TEC tec, TG tg) : this(tec) { name_shr = tg.name_shr; m_id = tg.m_id; name_future = tg.name_future; m_indx_col_export_pbr_excel = tg.m_indx_col_export_pbr_excel; m_indx_col_rdg_excel = tg.m_indx_col_rdg_excel; m_dcKoeffAlarmPcur = tg.m_dcKoeffAlarmPcur; }
public TECComponent(TEC tec, Vyvod.ParamVyvod pv) : this(tec) { name_shr = pv.name_shr; m_id = pv.m_id; name_future = pv.name_future; m_indx_col_export_pbr_excel = pv.m_indx_col_export_pbr_excel; m_indx_col_rdg_excel = pv.m_indx_col_rdg_excel; m_dcKoeffAlarmPcur = pv.m_dcKoeffAlarmPcur; }
public static void OnTECUpdate(object obj, EventArgs ev) { TEC tec = obj as TEC; int iListenerId = (ev as TECListUpdateEventArgs).m_iListenerId , err = -1; DataTable tableRes; DataRow [] selRows; DbConnection connConfigDB = DbSources.Sources().GetConnection(iListenerId, out err); tableRes = getListTEC(ref connConfigDB, true, out err); //??? обновление параметров ТЭЦ (например: m_IdSOTIASSOLinkSourceTM) //tec.Update (tableRes); tableRes = getListTECComponent(ref connConfigDB, @"GTP", tec.m_id, out err); // обновление параметров ГТП if (tableRes.Columns.IndexOf("KoeffAlarmPcur") > 0) { // поиск ГТП foreach (TECComponent tc in tec.list_TECComponents) { if (tc.IsGTP == true) { selRows = tableRes.Select(@"ID=" + tc.m_id); // проверить наличие значения if ((selRows.Length == 1) && (!(selRows[0]["KoeffAlarmPcur"] is System.DBNull))) { // обновить значение коэффициента tc.m_dcKoeffAlarmPcur = Convert.ToInt32(selRows[0]["KoeffAlarmPcur"]); } else { ; } } else { ; } } } else { ; } }
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); }
/// <summary> /// Конструктор - дополнительный /// </summary> public TECComponent(TEC tec, DataRow rComp) : this(tec) { name_shr = rComp["NAME_SHR"].ToString(); //rComp["NAME_GNOVOS"] if (DbTSQLInterface.IsNameField(rComp, "NAME_FUTURE") == true) { this.name_future = rComp["NAME_FUTURE"].ToString(); } else { ; } m_id = Convert.ToInt32(rComp["ID"]); m_listMCentreId = getMCentreId(rComp); m_listMTermId = getMTermId(rComp); m_indx_col_export_pbr_excel = ((DbTSQLInterface.IsNameField(rComp, "INDX_COL_EXPORT_PBR_EXCEL") == true) && (!(rComp["INDX_COL_EXPORT_PBR_EXCEL"] is System.DBNull))) ? Convert.ToInt32(rComp["INDX_COL_EXPORT_PBR_EXCEL"]) : -1; // значение по умолчанию "-1" - не установлено if ((DbTSQLInterface.IsNameField(rComp, "INDX_COL_RDG_EXCEL") == true) && (!(rComp["INDX_COL_RDG_EXCEL"] is System.DBNull))) { m_indx_col_rdg_excel = Convert.ToInt32(rComp["INDX_COL_RDG_EXCEL"]); } else { ; } if ((DbTSQLInterface.IsNameField(rComp, "KoeffAlarmPcur") == true) && (!(rComp["KoeffAlarmPcur"] is System.DBNull))) { m_dcKoeffAlarmPcur = Convert.ToInt32(rComp["KoeffAlarmPcur"]); } else { ; } if ((DbTSQLInterface.IsNameField(rComp, @"KOM_UCHET") == true) && (!(rComp[@"KOM_UCHET"] is System.DBNull))) { m_bKomUchet = Convert.ToByte(rComp[@"KOM_UCHET"]) == 1 ? true : false; } else { m_bKomUchet = true; } }
/// <summary> /// Когструктор - основной (с аргументом) /// </summary> /// <param name="tec">Исходный(базовый) объект ТЭЦ</param> public TEC_LOCAL(TEC tec) : this() { this.m_Id = tec.m_id; this.m_strNameShr = tec.name_shr; List <int> list_column = new List <int>(); this.m_arMSExcelNumColumns = tec.GetAddingParameter(TEC.ADDING_PARAM_KEY.COLUMN_TSN_EXCEL).ToString().Split(new char[] { ',' },StringSplitOptions.RemoveEmptyEntries) .Select((string s) => { return(string.IsNullOrEmpty(s) == false ? Convert.ToInt32(s) : -1); } ).ToArray(); for (int j = 0; j < this.m_arListSgnls.Count(); j++) { this.m_arListSgnls[j] = new List <SIGNAL>(); } }
private void initTECComponents(TEC tec, FormChangeMode.MODE_TECCOMPONENT mode, DataTable list_TECComponents, DataTable all_PARAM_Detail) { int id_comp = -1 , indx_comp = -1; TECComponent newTECComp; for (indx_comp = 0; indx_comp < list_TECComponents.Rows.Count; indx_comp++) { newTECComp = new TECComponent(tec, list_TECComponents.Rows [indx_comp]); id_comp = newTECComp.m_id; tec.AddTECComponent(newTECComp); if (!(mode < 0)) // инициализация "обычных" компонентов ТЭЦ { tec.InitTG(id_comp, all_PARAM_Detail.Select($@"ID_{FormChangeMode.getPrefixMode (mode)}={id_comp}")); } else { tec.InitParamVyvod(newTECComp, all_PARAM_Detail.Select($"ID_{FormChangeMode.getPrefixMode (mode)}={id_comp}")); } } }
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="connSett">Параметры соединения с БД концигурации</param> ///// <param name="bIgnoreTECInUse">Признак использования поля [TEC_LIST].[InUse]</param> ///// <param name="arTECLimit">Массив-диапазон допустимых идентификаторов ТЭЦ</param> ///// <param name="bUseData">Признак возможности обращения к данным компонентов собираемого списка</param> //public List<TEC> InitTEC (ConnectionSettings connSett, bool bIgnoreTECInUse, int [] arTECLimit, bool bUseData) //{ // SetConnectionSettings (connSett); // return InitTEC (bIgnoreTECInUse, arTECLimit, bUseData); //} /// <summary> /// Список ВСЕХ компонентов (ТЭЦ, ГТП, ЩУ, ТГ) /// </summary> /// <param name="bIgnoreTECInUse">Признак использования поля [TEC_LIST].[InUse]</param> /// <param name="arTECLimit">Массив-диапазон допустимых идентификаторов ТЭЦ</param> /// <param name="bUseData">Признак возможности обращения к данным компонентов собираемого списка</param> public List <TEC> InitTEC(bool bIgnoreTECInUse, int [] arTECLimit, bool bUseData) { //Logging.Logg().Debug("InitTEC::InitTEC (3 параметра) - вход..."); ListTEC tecRes; #if MODE_STATIC_CONNECTION_LEAVING ModeStaticConnectionLeave = ModeStaticConnectionLeaving.Yes; #endif int err = -1; TEC newTECItem = null; tecRes = new ListTEC(); //if (Equals(_tec, null) == true) // _tec = new ListTEC (); //else { // return CopyTEC; //} string strLog = string.Empty; // подключиться к бд, инициализировать глобальные переменные, выбрать режим работы DataTable list_tec = null // = DbTSQLInterface.Select(connSett, "SELECT * FROM TEC_LIST"), , list_TECComponents = null , all_PARAM_DETAIL = null; // ТГ не аналог "вывода". "Вывод" аналог ГТП(ЩУ), Параметр "вывода" аналог ТГ. try { //Получить список ТЭЦ, используя статическую функцию list_tec = GetListTEC(bIgnoreTECInUse, arTECLimit, out err); if (err == 0) { for (int indx_tec = 0; indx_tec < list_tec.Rows.Count; indx_tec++) { //Logging.Logg().Debug("InitTEC::InitTEC (3 параметра) - list_tec.Rows[i][\"ID\"] = " + list_tec.Rows[i]["ID"]); if ((HStatisticUsers.allTEC == 0) || (HStatisticUsers.allTEC == Convert.ToInt32(list_tec.Rows[indx_tec]["ID"]) /*|| (HStatisticUsers.RoleIsDisp == true)*/) ) { //Logging.Logg().Debug("InitTEC::InitTEC (3 параметра) - tec.Count = " + tec.Count); //if ((HAdmin.DEBUG_ID_TEC == -1) || (HAdmin.DEBUG_ID_TEC == Convert.ToInt32 (list_tec.Rows[i]["ID"]))) { //Создание объекта ТЭЦ newTECItem = new TEC(list_tec.Rows[indx_tec], bUseData); tecRes.Add(newTECItem); //indx_tec = tec.Count - 1; EventTECListUpdate += newTECItem /*tec[indx_tec]*/.PerformUpdate; initTECConnectionSettings(newTECItem, list_tec.Rows[indx_tec]); // получить перечень ТГ со всеми значениями всех свойств all_PARAM_DETAIL = getALL_PARAM_TG(0, out err); if (err == 0) { #region Добавить компоненты ТЭЦ (ГТП, ЩУ) for (FormChangeMode.MODE_TECCOMPONENT c = FormChangeMode.MODE_TECCOMPONENT.GTP; !(c > FormChangeMode.MODE_TECCOMPONENT.PC); c++) { list_TECComponents = GetListTECComponent(FormChangeMode.getPrefixMode(c), newTECItem.m_id, out err); //Logging.Logg().Debug("InitTEC::InitTEC (3 параметра) - list_TECComponents.Count = " + list_TECComponents.Rows.Count); if (err == 0) { try { initTECComponents(newTECItem, c, list_TECComponents, all_PARAM_DETAIL); } catch (Exception e) { Logging.Logg().Exception(e, "InitTEC::InitTEC (3 параметра) - ...for (int j = 0; j < list_TECComponents.Rows.Count; j++)...", Logging.INDEX_MESSAGE.NOT_SET); } } else { ; //Ошибка при получении списка компонентов } } #endregion } else { ; // ошибка при получении параметров ТГ } // получить перечень параметров выводов со всеми значениями всех свойств all_PARAM_DETAIL = getALL_ParamVyvod(-1, out err); if (err == 0) {// ВАЖНО! первоначально добавляются компоненты нижнего уровня list_TECComponents = GetListTECComponent(FormChangeMode.getPrefixMode(FormChangeMode.MODE_TECCOMPONENT.VYVOD), newTECItem.m_id, out err); if (err == 0) { initTECComponents(newTECItem, FormChangeMode.MODE_TECCOMPONENT.VYVOD, list_TECComponents, all_PARAM_DETAIL); } else { ; // ошибка получения перечня выводов } } else { ; // ошибка получения параметров выводов } //Logging.Logg().Debug("InitTEC::InitTEC (3 параметра) - list_TG = Ok"); } else { ; } } // for i } else { ; //Ошибка получения списка ТЭЦ } } catch (Exception e) { Logging.Logg().Exception(e, "Ошибка получения параметров для всех ТГ", Logging.INDEX_MESSAGE.NOT_SET); } #if MODE_STATIC_CONNECTION_LEAVING ModeStaticConnectionLeave = ModeStaticConnectionLeaving.No; #endif //Logging.Logg().Debug("InitTEC::InitTEC (3 параметра) - вЫход..."); return(tecRes); }
/// <summary> /// Конструктор - основной (без параметров) /// </summary> public Vyvod(TEC tec) { this.tec = tec; m_listParam = new List <ParamVyvod>(); }
protected abstract void getPPBRValuesRequest(TEC t, TECComponent comp, DateTime date /*, AdminTS.TYPE_FIELDS mode*/);
public static void OnTECUpdate(object obj, EventArgs ev) { TEC tec = obj as TEC; int iListenerId = (ev as TECListUpdateEventArgs).m_iListenerId , err = -1; DataTable tableRes; DataRow [] selRows; DbConnection connConfigDB; try { connConfigDB = DbSources.Sources().GetConnection(iListenerId, out err); if (err == 0) { //tableRes = getListTEC(ref connConfigDB, true, new int[] { 0, (int)TECComponent.ID.GTP }, out err); ////??? обновление параметров ТЭЦ (например: m_IdSOTIASSOLinkSourceTM) //tec.Update (tableRes); tableRes = getListTECComponent(ref connConfigDB, @"GTP", tec.m_id, out err); // обновление параметров ГТП if (err == 0) { if (tableRes.Columns.IndexOf("KoeffAlarmPcur") > 0) { // поиск ГТП foreach (TECComponent tc in tec.list_TECComponents) { if (tc.IsGTP == true) { selRows = tableRes.Select(@"ID=" + tc.m_id); // проверить наличие значения if ((selRows.Length == 1) && (!(selRows[0]["KoeffAlarmPcur"] is System.DBNull))) { // обновить значение коэффициента tc.m_dcKoeffAlarmPcur = Convert.ToInt32(selRows[0]["KoeffAlarmPcur"]); } else { ; } } else { ; } } } else { ; } } else { ; } } else { ; } } catch (Exception e) { Logging.Logg().Exception(e, string.Format(@"InitTEC_200::OnTECUpdate (ID={0}, NAME={1}) - ...", (obj as TEC).m_id, (obj as TEC).name_shr), Logging.INDEX_MESSAGE.NOT_SET); } }
protected abstract void GetPPBRValuesRequest(TEC t, TECComponent comp, DateTime date);
/// <summary> /// Инициализация параметров для соединения с БД всех источников данных, используемых для сбора отображения /// </summary> /// <param name="indx_tec">Индекс ТЭЦ в списке текущего объекта</param> /// <param name="rTec">Строка таблицы [TEC_LIST], содержащая необходимые значения параметров</param> private void initTECConnectionSettings(TEC tec, DataRow rTec) { int err = -1 , idConnSett = -1; string strLog = string.Empty; DataTable tableConnSett = null; foreach (KeyValuePair <CONN_SETT_TYPE, string> pair in TEC.s_dictIdConfigDataSources) { if ((rTec[pair.Value] is DBNull) == false) { idConnSett = Convert.ToInt32(rTec[pair.Value]); tableConnSett = DbTSQLConfigDatabase.DbConfig().GetDataTableConnSettingsOfIdSource(idConnSett, -1, out err); if (err == 0) { err = tec.connSettings(tableConnSett, (int)pair.Key); switch (err) { case 1: strLog = string.Format(@"идентификтор <{0}> источника данных для типа с индексом <{1}> не совпадает с базовым" , idConnSett , pair.Key); break; case -1: strLog = string.Format(@"найден более, чем один источник с идентификатором {0} для типа с индексом {1}" , idConnSett , pair.Key); break; case -2: strLog = string.Format(@"не найден ни один источник для типа с индексом {0}" , pair.Key); break; default: break; } if (err > 0) { Logging.Logg().Warning(@"DbTSQLConfigureDatabase::initTECConnectionSettings () - " + strLog + @"...", Logging.INDEX_MESSAGE.NOT_SET); } else if (strLog.Equals(string.Empty) == false) { Logging.Logg().Error(@"DbTSQLConfigureDatabase::initTECConnectionSettings () - " + strLog + @"...", Logging.INDEX_MESSAGE.NOT_SET); } else { ; } } else { Logging.Logg().Warning(string.Format(@"DbTSQLConfigureDatabase::initTECConnectionSettings () - " + @"не зарегистрирован источник с идентификатором {0} для ТЭЦ.ID={1}, либо для него не установлен пароль" + @"...", pair.Key, tec.m_id) , Logging.INDEX_MESSAGE.NOT_SET); } } else { Logging.Logg().Warning(string.Format(@"DbTSQLConfigureDatabase::initTECConnectionSettings () - " + @"не установлен идентификатор источника данных {0} для ТЭЦ.ID={1}" + @"...", pair.Key, tec.m_id) , Logging.INDEX_MESSAGE.NOT_SET); } } }
/// <summary> /// Конструктор - основной (c параметрами) /// </summary> /// <param name="tec">Объект-ТЭЦ - родительский по отношению к создаваемому объекту</param> /// <param name="r">Строка со значениями свойств создаваемого объекта-ВЫВОДа</param> public Vyvod(TEC tec, DataRow[] rows_param) : base(tec, rows_param[0]) { }
public Vyvod(TEC tec, DataRow row_param) : this(tec, new DataRow[] { row_param }) { }
public void OnTECUpdate(object obj, EventArgs ev) { TEC tec = obj as TEC; int iListenerId = (ev as TECListUpdateEventArgs).m_iListenerId , err = -1; string strMesError = string.Empty; DataTable tableRes; DataRow [] selRows; DbConnection connConfigDB; try { connConfigDB = DbSources.Sources().GetConnection(iListenerId, out err); if (err == 0) { //tableRes = getListTEC(ref connConfigDB, true, new int[] { 0, (int)TECComponent.ID.GTP }, out err); ////??? обновление параметров ТЭЦ (например: m_IdSOTIASSOLinkSourceTM) //tec.Update (tableRes); tableRes = GetListTECComponent(ref connConfigDB, @"GTP", tec.m_id, out err); // обновление параметров ГТП if (err == 0) { err = tableRes.Columns.IndexOf("KoeffAlarmPcur") > 0 ? 0 : -2; // ранее возвращалось значение "-1" if (err == 0) { // поиск ГТП foreach (TECComponent tc in tec.list_TECComponents) { if (tc.IsGTP == true) { selRows = tableRes.Select(@"ID=" + tc.m_id); // проверить наличие значения if ((selRows.Length == 1) && (!(selRows [0] ["KoeffAlarmPcur"] is System.DBNull))) { // обновить значение коэффициента tc.m_dcKoeffAlarmPcur = Convert.ToInt32(selRows [0] ["KoeffAlarmPcur"]); } else { ; } } else { ; } } } else { strMesError = "результ. табл. не содержит поле [KoeffAlarmPcur]"; } } else { //strMesError = "не удалось получить таблицу - список компонентов ТЭЦ" throw new InvalidOperationException(string.Format(@"DbTSQLConfigureDatabase::OnTECUpdate (ID={0}, NAME={1}) - {2} ..." , (obj as TEC).m_id, (obj as TEC).name_shr, @"не удалось получить таблицу - список компонентов ТЭЦ")) ; } } else { strMesError = "не удалось получить объект соединения с БД конфигурации"; } } catch (Exception e) { Logging.Logg().Exception(e, string.Format(@"DbTSQLConfigureDatabase::OnTECUpdate (ID={0}, NAME={1}) - ...", (obj as TEC).m_id, (obj as TEC).name_shr), Logging.INDEX_MESSAGE.NOT_SET); } if (err < 0) { Logging.Logg().Error(string.Format(@"DbTSQLConfigureDatabase::OnTECUpdate (ID={0}, NAME={1}) - {2} ..." , (obj as TEC).m_id, (obj as TEC).name_shr, strMesError), Logging.INDEX_MESSAGE.NOT_SET); } else { ; } }
/// <summary> /// Список ВСЕХ компонентов (ТЭЦ, ГТП, ЩУ, ТГ) /// </summary> /// <param name="idListener">Идентификатор установленного соединения с БД концигурации</param> /// <param name="bIgnoreTECInUse">Признак использования поля [TEC_LIST].[InUse]</param> /// <param name="arTECLimit">Массив-диапазон допустимых идентификаторов ТЭЦ</param> /// <param name="bUseData">Признак возможности обращения к данным компонентов собираемого списка</param> public InitTEC_200(int idListener, bool bIgnoreTECInUse, int [] arTECLimit, bool bUseData) { //Logging.Logg().Debug("InitTEC::InitTEC (3 параметра) - вход..."); int err = -1; TEC newTECItem = null; tec = new ListTEC(); //m_user = new Users(idListener); //Logging.Logg().Debug("InitTEC::InitTEC (3 параметра) - получение объекта MySqlConnection..."); m_connConfigDB = DbSources.Sources().GetConnection(idListener, out err); int indx = -1 //, indx_tec = -1 ; string strLog = string.Empty; // подключиться к бд, инициализировать глобальные переменные, выбрать режим работы DataTable list_tec = null // = DbTSQLInterface.Select(connSett, "SELECT * FROM TEC_LIST"), , list_TECComponents = null , list_lowPointDev = null , all_PARAM_DETAIL = null; // ТГ не аналог "вывода". "Вывод" аналог ГТП(ЩУ), Параметр "вывода" аналог ТГ. if (err == 0) { //Получить список ТЭЦ, используя статическую функцию list_tec = getListTEC(ref m_connConfigDB, bIgnoreTECInUse, arTECLimit, out err); if (err == 0) { for (int i = 0; i < list_tec.Rows.Count; i++) { //Logging.Logg().Debug("InitTEC::InitTEC (3 параметра) - list_tec.Rows[i][\"ID\"] = " + list_tec.Rows[i]["ID"]); if ((HStatisticUsers.allTEC == 0) || (HStatisticUsers.allTEC == Convert.ToInt32(list_tec.Rows[i]["ID"])) /*|| (HStatisticUsers.RoleIsDisp == true)*/) { //Logging.Logg().Debug("InitTEC::InitTEC (3 параметра) - tec.Count = " + tec.Count); //if ((HAdmin.DEBUG_ID_TEC == -1) || (HAdmin.DEBUG_ID_TEC == Convert.ToInt32 (list_tec.Rows[i]["ID"]))) { //Создание объекта ТЭЦ newTECItem = new TEC(list_tec.Rows[i], bUseData); tec.Add(newTECItem); //indx_tec = tec.Count - 1; EventTECListUpdate += newTECItem /*tec[indx_tec]*/.PerformUpdate; indx = -1; initTECConnectionSettings(i, list_tec.Rows[i]); // получить перечень ТГ со всеми значениями всех свойств all_PARAM_DETAIL = getALL_PARAM_TG(0, out err); if (err == 0) { #region Добавить ТГ для ТЭЦ list_lowPointDev = getListTG(newTECItem.m_id, out err); if (err == 0) { for (int k = 0; k < list_lowPointDev.Rows.Count; k++) { newTECItem /*tec[indx_tec]*/.list_TECComponents.Add(new TECComponent(newTECItem /*tec[indx_tec]*/, list_lowPointDev.Rows[k])); indx = newTECItem /*tec[indx_tec]*/.list_TECComponents.Count - 1; newTECItem /*tec[indx_tec]*/.list_TECComponents[indx].m_listLowPointDev.Add(new TG(list_lowPointDev.Rows[k], all_PARAM_DETAIL.Select(@"ID_TG=" + newTECItem /*tec[indx_tec]*/.list_TECComponents[indx].m_id)[0])); } } else { ; //Ошибка получения списка ТГ } #endregion #region Добавить компоненты ТЭЦ (ГТП, ЩУ) for (int c = (int)FormChangeMode.MODE_TECCOMPONENT.GTP; !(c > (int)FormChangeMode.MODE_TECCOMPONENT.PC); c++) { list_TECComponents = getListTECComponent(FormChangeMode.getPrefixMode(c), newTECItem.m_id, out err); //Logging.Logg().Debug("InitTEC::InitTEC (3 параметра) - list_TECComponents.Count = " + list_TECComponents.Rows.Count); if (err == 0) { try { for (int j = 0; j < list_TECComponents.Rows.Count; j++) { //Logging.Logg().Debug("InitTEC::InitTEC (3 параметра) - ...tec[indx_tec].list_TECComponents.Add(new TECComponent..."); newTECItem /*tec[indx_tec]*/.list_TECComponents.Add(new TECComponent(newTECItem /*tec[indx_tec]*/, list_TECComponents.Rows[j])); indx = newTECItem /*tec[indx_tec]*/.list_TECComponents.Count - 1; newTECItem /*tec[indx_tec]*/.InitTG(indx , all_PARAM_DETAIL.Select(@"ID_" + FormChangeMode.getPrefixMode(c) + @"=" + newTECItem /*tec[indx_tec]*/.list_TECComponents[indx].m_id)); } } catch (Exception e) { Logging.Logg().Exception(e, "InitTEC::InitTEC (3 параметра) - ...for (int j = 0; j < list_TECComponents.Rows.Count; j++)...", Logging.INDEX_MESSAGE.NOT_SET); } } else { ; //Ошибка при получении списка компонентов } } #endregion } else { ; // ошибка при получении параметров ТГ } // получить перечень параметров выводов со всеми значениями всех свойств all_PARAM_DETAIL = getALL_ParamVyvod(-1, out err); if (err == 0) {// ВАЖНО! первоначально добавляются компоненты нижнего уровня #region Добавить параметры ВЫВОДов для ТЭЦ list_lowPointDev = getALL_ParamVyvod(newTECItem.m_id, out err); if (err == 0) { for (int k = 0; k < list_lowPointDev.Rows.Count; k++) { newTECItem /*tec[indx_tec]*/.list_TECComponents.Add(new TECComponent(newTECItem /*tec[indx_tec]*/, list_lowPointDev.Rows[k])); indx = newTECItem /*tec[indx_tec]*/.list_TECComponents.Count - 1; newTECItem /*tec[indx_tec]*/.list_TECComponents[indx].m_listLowPointDev.Add(new Vyvod.ParamVyvod(all_PARAM_DETAIL.Select(@"ID=" + newTECItem /*tec[indx_tec]*/.list_TECComponents[indx].m_id)[0])); } } else { ; //Ошибка получения списка параметров ВЫВОДов } #endregion #region Добавить компоненты ТЭЦ (ВЫВОДы) list_TECComponents = getListTECComponent(FormChangeMode.getPrefixMode(-1), newTECItem.m_id, out err); if (err == 0) { foreach (DataRow r in list_TECComponents.Rows) { newTECItem /*tec[indx_tec]*/.list_TECComponents.Add(new TECComponent(newTECItem /*tec[indx_tec]*/, r)); indx = newTECItem /*tec[indx_tec]*/.list_TECComponents.Count - 1; //??? newTECItem /*tec[indx_tec]*/.InitParamVyvod(-1, all_PARAM_DETAIL.Select(@"ID_" + FormChangeMode.getPrefixMode(-1) + @"=" + newTECItem /*tec[indx_tec]*/.list_TECComponents[indx].m_id)); } } else { ; // ошибка получения перечня выводов } #endregion } else { ; // ошибка получения параметров выводов } //Logging.Logg().Debug("InitTEC::InitTEC (3 параметра) - list_TG = Ok"); } else { ; } } // for i } else { ; //Ошибка получения списка ТЭЦ } } else { ; //Ошибка получения всех параметров для всех ТГ } //DbTSQLInterface.CloseConnection(m_connConfigDB, out err); //Logging.Logg().Debug("InitTEC::InitTEC (3 параметра) - вЫход..."); }
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); }