Пример #1
0
        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);
        }
Пример #2
0
        //Из '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);
        }
Пример #3
0
            /// <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++;
                }
            }
Пример #4
0
        //»з '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);
        }
Пример #5
0
        //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);
            }
        }
Пример #6
0
        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);
        }
Пример #7
0
        //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);
            }
        }
Пример #8
0
        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);
        }
Пример #9
0
        //»з '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);
        }
Пример #10
0
        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);
        }
Пример #11
0
        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);
        }
Пример #12
0
        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);
        }
Пример #13
0
        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);
        }
Пример #14
0
        /// <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);
        }
Пример #15
0
        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);
        }
Пример #16
0
        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);
        }
Пример #17
0
 /// <summary>
 /// Метод по завершению загрузки информации по компоненту станции
 /// </summary>
 /// <param name="comp">Объект, описывающий компонент станции</param>
 protected virtual void handlerDbTaskCalculate_onAddComponent(TECComponent comp)
 {
 }
Пример #18
0
        //»з '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);
        }
Пример #19
0
            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);
                }
            }
Пример #20
0
        /// <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);
        }
Пример #21
0
 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);
 }
Пример #22
0
        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);
        }
Пример #23
0
        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);
        }
Пример #24
0
        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);
        }
Пример #25
0
            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);
            }
Пример #26
0
 protected override void GetPPBRValuesRequest(TEC t, TECComponent comp, DateTime date)
 {
     throw new NotImplementedException();
 }
Пример #27
0
        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);
        }
Пример #28
0
            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
                    {
                        ;
                    }
                }
            }