示例#1
0
        protected override void GetPPBRValuesRequest(TEC t, TECComponent comp, DateTime date, AdminTS.TYPE_FIELDS mode)
        {
            string   query = string.Empty;
            int      i     = -1;
            TimeSpan ts    = HDateTime.GetUTCOffsetOfMoscowTimeZone();

            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(-ts).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);
        }
示例#2
0
        protected override int GetPPBRValuesResponse(DataTable table, DateTime date)
        {
            int iRes = 0;
            int i = -1, j = -1, //Переменаые цикла
                hour     = -1   //Переменаая цикла (номер часа)
            , indxFactor = -1   //Индекс типа значения (0 - P, 1 - Pmin, 2 - Pmax)
                                //, iMinPBRNumber = -1
            , iMaxPBRNumber = -1;

            //Номер ПБР для всех типов (P, Pmin, Pmax) значений
            int[]    arPBRNumber = new int[3];
            TimeSpan ts          = HDateTime.GetUTCOffsetOfMoscowTimeZone();

            DataRow[] hourRows;

            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(@"Datetime=#" + date.Date.AddHours(hour - ts.Hours).ToString(@"yyyy-MM-dd HH:00:00.000") + @"#");

                    //Присвоить исходные для часа значения
                    //PBRNumber = -1;
                    arPBRNumber[0]         =
                        arPBRNumber[1]     =
                            arPBRNumber[2] =
                                -1; // номер набора
                    // значения по типам (0, 1, 2)
                    m_curRDGValues[hour - 1].pbr  = -1.0F;
                    m_curRDGValues[hour - 1].pmin = -1.0F;
                    m_curRDGValues[hour - 1].pmax = -1.0F;
                    //Проверить количество строк для часа
                    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"] is DBNull))
                                    {
                                        m_curRDGValues[hour - 1].pbr = (double)hourRows[i][@"VALUE"];
                                    }
                                    else
                                    {
                                        m_curRDGValues[hour - 1].pbr = 0;
                                    }
                                    break;

                                case 1:     //'Pmin'
                                    if (!(hourRows[i][@"VALUE"] is DBNull))
                                    {
                                        m_curRDGValues[hour - 1].pmin = (double)hourRows[i][@"VALUE"];
                                    }
                                    else
                                    {
                                        m_curRDGValues[hour - 1].pmin = 0;
                                    }
                                    break;

                                case 2:     //'Pmax'
                                    if (!(hourRows[i][@"VALUE"] is DBNull))
                                    {
                                        m_curRDGValues[hour - 1].pmax = (double)hourRows[i][@"VALUE"];
                                    }
                                    else
                                    {
                                        m_curRDGValues[hour - 1].pmax = 0;
                                    }
                                    break;

                                default:
                                    break;
                                }
                            }
                            else
                            {
                                ;
                            }
                        }
                    }
                    else
                    //Если не найдено ни одной строки для часа
                    if (hour > 1)
                    {
                        //Если не 1-ый час - пролонгация
                        m_curRDGValues[hour - 1].pbr  = m_curRDGValues[hour - 2].pbr;
                        m_curRDGValues[hour - 1].pmin = m_curRDGValues[hour - 2].pmin;
                        m_curRDGValues[hour - 1].pmax = m_curRDGValues[hour - 2].pmax;

                        for (j = 0; j < 3; j++)
                        {
                            arPBRNumber[j] = Int32.Parse(m_curRDGValues[hour - 2].pbr_number.Substring(3));
                        }

                        m_curRDGValues[hour - 1].pbr_number  = m_curRDGValues[hour - 2].pbr_number;
                        m_curRDGValues[hour - 1].dtRecUpdate = m_curRDGValues[hour - 2].dtRecUpdate;
                    }
                    else
                    {
                        ;
                    }

                    //iMinPBRNumber = 25;
                    iMaxPBRNumber = -1;
                    for (j = 0; j < 3; j++)
                    {
                        if (arPBRNumber[j] > 0)
                        {
                            //???при каком индексе присваивать номер набора
                            //m_curRDGValues[hour - 1].pbr_number = @"ПБР" + PBRNumber;
                            //if (iMinPBRNumber > arPBRNumber[j])
                            if (iMaxPBRNumber < arPBRNumber[j])
                            {
                                //iMinPBRNumber = arPBRNumber[j];
                                iMaxPBRNumber = arPBRNumber[j];
                            }
                            else
                            {
                                ;
                            }

                            if (hour > 1)
                            {
                                switch (j)
                                {
                                case 0:
                                    if (m_curRDGValues[hour - 1].pbr < 0)
                                    {
                                        m_curRDGValues[hour - 1].pbr = m_curRDGValues[hour - 2].pbr;
                                    }
                                    else
                                    {
                                        ;
                                    }
                                    break;

                                case 1:
                                    if (m_curRDGValues[hour - 1].pmin < 0)
                                    {
                                        m_curRDGValues[hour - 1].pmin = m_curRDGValues[hour - 2].pmin;
                                    }
                                    else
                                    {
                                        ;
                                    }
                                    break;

                                case 2:
                                    if (m_curRDGValues[hour - 1].pmax < 0)
                                    {
                                        m_curRDGValues[hour - 1].pmax = m_curRDGValues[hour - 2].pmax;
                                    }
                                    else
                                    {
                                        ;
                                    }
                                    break;

                                default:
                                    break;
                                }
                            }
                            else
                            {
                                ;
                            }
                        }
                        else
                        {
                            ; //m_curRDGValues[hour - 1].pbr_number = GetPBRNumber (hour);
                        }
                        int hh = -1;
                        for (hh = hour; hh > 0; hh--)
                        {
                            //??? Необходима ИНДИВИДуальная проверка номера ПБР
                            // для каждогоо типа значений (P, Pmin, Pmax)
                            if (m_curRDGValues[hh - 1].pbr_number.Equals(string.Empty) == false)
                            {
                                if (arPBRNumber[j] < Int32.Parse(m_curRDGValues[hh - 1].pbr_number.Substring(3)))
                                {
                                    arPBRNumber[j] = Int32.Parse(m_curRDGValues[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:
                                        m_curRDGValues[hour - 1].pbr = m_curRDGValues[hh - 1].pbr;
                                        break;

                                    case 1:
                                        m_curRDGValues[hour - 1].pmin = m_curRDGValues[hh - 1].pmin;
                                        break;

                                    case 2:
                                        m_curRDGValues[hour - 1].pmax = m_curRDGValues[hh - 1].pmax;
                                        break;

                                    default:
                                        break;
                                    }

                                    //m_curRDGValues[hour - 1].pbr_number = m_curRDGValues[hh - 1].pbr_number;

                                    //break;
                                }
                                else
                                {
                                }
                            }
                            else
                            {
                                ;
                            }
                        }
                        // цикл-окончание hh
                    } // цикл-окончание по индексу типов значений

                    m_curRDGValues[hour - 1].pbr_number = @"ПБР" +
                                                          //iMinPBRNumber
                                                          iMaxPBRNumber
                    ;

                    m_curRDGValues[hour - 1].dtRecUpdate = DateTime.MinValue;

                    m_curRDGValues[hour - 1].recomendation    = 0;
                    m_curRDGValues[hour - 1].deviationPercent = false;
                    m_curRDGValues[hour - 1].deviation        = 0;
                }
                catch (Exception e)
                {
                    Logging.Logg().Exception(e, @"AdminMT::GetPPBRValuesResponse () - ...", Logging.INDEX_MESSAGE.NOT_SET);
                }
            } // цикл-окончание по номеру часа 'hour'

            return(iRes);
        }