Esempio n. 1
0
        protected override /*override*/ int impRDGExcelValuesResponse()
        {
            //bool bRes = base.ImpRDGExcelValuesResponse();
            int iRes          = IsCanUseTECComponents == true ? 0 : -1;
            int rowOffsetData = 0;

            if (iRes == 0)
            {
                int i             = -1
                , iTimeZoneOffset =
                    //allTECComponents[indxTECComponents].tec.m_timezone_offset_msc
                    HDateTime.TS_NSK_OFFSET_OF_MOSCOWTIMEZONE.Hours
                , rowRDGExcelStart = 1 + iTimeZoneOffset,
                    hour           = -1;

                if (m_tableRDGExcelValuesResponse.Rows.Count > 0)
                {
                    iRes = 0;
                }
                else
                {
                    ;
                }

                if (iRes == 0)
                {
                    for (i = rowRDGExcelStart; i < m_tableRDGExcelValuesResponse.Rows.Count - rowOffsetData; i++)
                    {
                        hour = i - iTimeZoneOffset;
                        setRDGExcelValuesItem(out m_curRDGValues[hour - 1], i);
                    }

                    /*for (i = hour; i < 24 + 1; i++)
                     * {
                     *  hour = i;
                     *
                     *  m_curRDGValues.plan[hour - 1] = 0;
                     *  m_curRDGValues.recommendations[hour - 1] = 0;
                     *  m_curRDGValues.deviationPercent[hour - 1] = false;
                     *  m_curRDGValues.diviation[hour - 1] = 0;
                     * }*/
                }
                else
                {
                    ;
                }
            }
            else
            {
                throw new InvalidOperationException("AdminTS_NSS::impRDGExcelValuesResponse () - нет компонентов ТЭЦ...");
            }

            RDGStruct [] curRDGValues = new RDGStruct[m_curRDGValues.Length];

            m_curRDGValues.CopyTo(curRDGValues, 0);

            m_listCurRDGValues.Add(curRDGValues);

            return(iRes);
        }
Esempio n. 2
0
            public void From(RDGStruct src, bool bPBRNumberEmptyChecked = false)
            {
                pbr              = src.pbr;
                pmin             = src.pmin;
                pmax             = src.pmax;
                recomendation    = src.recomendation;
                deviationPercent = src.deviationPercent;
                deviation        = src.deviation;
                fc = src.fc;

                if (bPBRNumberEmptyChecked == true)
                {
                    if (src.pbr_number.Equals(string.Empty) == false)
                    {
                        pbr_number = src.pbr_number;
                    }
                    else
                    {
                        ;
                    }
                }
                else
                {
                    pbr_number = src.pbr_number;
                }
                dtRecUpdate = src.dtRecUpdate;
            }
Esempio n. 3
0
            public RDGStruct Copy(bool bPBRNumberEmptyChecked = false)
            {
                RDGStruct oRes = new RDGStruct();

                oRes.From(this, bPBRNumberEmptyChecked);

                return(oRes);
            }
Esempio n. 4
0
        protected virtual /*override*/ int ImpRDGExcelValuesResponse()
        {
            //bool bRes = base.ImpRDGExcelValuesResponse();
            int iRes          = IsCanUseTECComponents() == true ? 0 : -1;
            int rowOffsetData = 0;

            if (iRes == 0)
            {
                int i = -1,
                    iTimeZoneOffset  = allTECComponents[indxTECComponents].tec.m_timezone_offset_msc,
                    rowRDGExcelStart = 1 + iTimeZoneOffset,
                    hour             = -1;

                if (m_tableRDGExcelValuesResponse.Rows.Count > 0)
                {
                    iRes = 0;
                }
                else
                {
                    ;
                }

                if (iRes == 0)
                {
                    for (i = rowRDGExcelStart; i < m_tableRDGExcelValuesResponse.Rows.Count - rowOffsetData; i++)
                    {
                        hour = i - iTimeZoneOffset;
                        setRDGExcelValuesItem(out m_curRDGValues[hour - 1], i);
                    }

                    /*for (i = hour; i < 24 + 1; i++)
                     * {
                     *  hour = i;
                     *
                     *  m_curRDGValues.plan[hour - 1] = 0;
                     *  m_curRDGValues.recommendations[hour - 1] = 0;
                     *  m_curRDGValues.deviationPercent[hour - 1] = false;
                     *  m_curRDGValues.diviation[hour - 1] = 0;
                     * }*/
                }
                else
                {
                    ;
                }
            }
            else
            {
                ;
            }

            RDGStruct[] curRDGValues = new RDGStruct[m_curRDGValues.Length];

            m_curRDGValues.CopyTo(curRDGValues, 0);

            m_listCurRDGValues.Add(curRDGValues);

            return(iRes);
        }
Esempio n. 5
0
            /// <summary>
            /// Сохранение текущих значений (ПБР + рекомендации = РДГ) для последующего изменения
            /// </summary>
            public override void CopyCurToPrevRDGValues()
            {
                base.CopyCurToPrevRDGValues();

                RDGStruct[] prevRDGValues = new RDGStruct[m_prevRDGValues.Length];
                for (int h = 0; h < m_prevRDGValues.Length; h++)
                {
                    prevRDGValues[h].From(m_prevRDGValues[h]);
                }
                m_listPrevRDGValues.Add(prevRDGValues);
            }
Esempio n. 6
0
        protected override int GetAdminValuesResponse(DataTable tableAdminValuesResponse, DateTime date)
        {
            int iRes = base.GetAdminValuesResponse(tableAdminValuesResponse, date);

            RDGStruct [] curRDGValues = new RDGStruct [m_curRDGValues.Length];

            m_curRDGValues.CopyTo(curRDGValues, 0);

            for (int i = 0; i < m_curRDGValues.Length; i++)
            {
                curRDGValues [i].pbr += m_curRDGValues [i].recomendation;

                //curRDGValues [i].plan = m_curRDGValues [i].plan;

                //curRDGValues[i].recomendation = m_curRDGValues[i].recomendation;
                //curRDGValues[i].deviationPercent = m_curRDGValues[i].deviationPercent;
                //curRDGValues[i].deviation = m_curRDGValues[i].deviation;
            }

            m_listCurRDGValues.Add(curRDGValues);

            return(iRes);
        }
Esempio n. 7
0
        private Errors saveCSVValues(int indx, object pbr_number)
        {
            Errors errRes = Errors.NoSet;

            RDGStruct[] curRDGValues = new RDGStruct[m_curRDGValues.Length];
            int         hour         = -1;
            double      val          = -1F;
            string      name_future  = string.Empty;

            CONN_SETT_TYPE typeValues = CONN_SETT_TYPE.COUNT_CONN_SETT_TYPE;

            if (pbr_number is string)
            {
                typeValues = CONN_SETT_TYPE.PBR;
            }
            else
            if (pbr_number is CONN_SETT_TYPE)
            {
                typeValues = (CONN_SETT_TYPE)pbr_number;     //ADMIN
            }
            else
            {
                ;
            }

            if ((typeValues == CONN_SETT_TYPE.PBR) ||
                (typeValues == CONN_SETT_TYPE.ADMIN))
            {
                List <DataRow> rowsTECComponent = null;
                //Получить значения для сохранения
                name_future      = allTECComponents[indx].name_future;
                rowsTECComponent = new List <DataRow>(m_tableValuesResponse.Select(@"GTP_ID='" + name_future + @"'"));
                //Вариант №2 - тестовый
                //foreach (DataRow r in m_tableValuesResponse.Rows)
                //    if (name_future.Equals(r["GTP_ID"]) == true)
                //        rowsTECComponent.Add(r);
                //    else
                //        ;
                //Проверить наличие записей для ГТП
                if (rowsTECComponent.Count > 0)
                {
                    // добавление недостающих строк путем копирования крайней
                    if (rowsTECComponent.Count < 24)
                    {
                        // фрагмент кода выполняется при загрузке
                        //while (rowsTECComponent.Count < 24) {
                        //    rowsTECComponent.Add(rowsTECComponent[rowsTECComponent.Count - 1]);

                        //    if (m_tableValuesResponse.Columns.Contains(@"SESSION_INTERVAL") == true)
                        //        rowsTECComponent[rowsTECComponent.Count - 1][@"SESSION_INTERVAL"] = rowsTECComponent.Count - 1;
                        //    else
                        //        ;
                        //}
                    }
                    else
                    {
                        Logging.Logg().Error(string.Format(@"AdminTS_KomDisp::saveCSVValues () - для ГТП(ИД={0}) количество записей={1} ..."
                                                           , name_future, rowsTECComponent.Count)
                                             , Logging.INDEX_MESSAGE.NOT_SET);
                    }

                    foreach (DataRow r in rowsTECComponent)
                    {
                        hour = int.Parse(r[@"SESSION_INTERVAL"].ToString());

                        try {
                            switch (typeValues)
                            {
                            case CONN_SETT_TYPE.PBR:
                                HMath.doubleParse(r[@"TotalBR"].ToString(), out curRDGValues[hour].pbr);
                                HMath.doubleParse(r[@"PminBR"].ToString(), out curRDGValues[hour].pmin);
                                HMath.doubleParse(r[@"PmaxBR"].ToString(), out curRDGValues[hour].pmax);

                                curRDGValues[hour].pbr_number = pbr_number as string;

                                ////Отладка
                                //Console.WriteLine(@"GTP_ID=" + allTECComponents[indx].name_future + @"(" + hour + @") TotalBR=" + curRDGValues[hour].pbr + @"; PBRNumber=" + curRDGValues[hour].pbr_number);
                                break;

                            case CONN_SETT_TYPE.ADMIN:
                                HMath.doubleParse(r[@"REC"].ToString(), out curRDGValues[hour].recomendation);
                                curRDGValues[hour].deviationPercent = Int16.Parse(r[@"IS_PER"].ToString()) == 1;
                                HMath.doubleParse(r[@"DIVIAT"].ToString(), out curRDGValues[hour].deviation);
                                curRDGValues[hour].fc = Int16.Parse(r[@"FC"].ToString()) == 1;
                                break;

                            default:
                                break;
                            }
                        }
                        catch (Exception e) {
                            Logging.Logg().Exception(e
                                                     , @"AdminTS_KomDisp::saveCSVValues () - GTP_ID=" + allTECComponents[indx].name_future + @"(" + hour + @")"
                                                     , Logging.INDEX_MESSAGE.NOT_SET);

                            errRes = Errors.ParseError;
                        }

                        if (errRes == Errors.ParseError)
                        {
                            break;
                        }
                        else
                        {
                            ;
                        }
                    }

                    if (errRes == Errors.NoSet)
                    {
                        //Очистить тек./массив с данными
                        ClearValues();

                        //Копировать полученные значения в "текущий массив"
                        curRDGValues.CopyTo(m_curRDGValues, 0);

                        indxTECComponents = indx;

                        errRes =
                            SaveChanges()
                            //Errors.NoSet
                            //Errors.NoError
                        ;
                    }
                    else
                    {
                        ; //errRes = Errors.ParseError;
                    }
                }
                else
                {
                    errRes = Errors.ParseError;
                }

                if (errRes == Errors.ParseError)
                {
                    //Пропустить запись ГТП, разрешить переход к следующей
                    //Псевдо-закончена обработка всех событий
                    completeHandleStates(INDEX_WAITHANDLE_REASON.SUCCESS);
                }
                else
                {
                    ;
                }
            }
            else
            {
                ;
            }

            return(errRes);
        }
Esempio n. 8
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);
        }
Esempio n. 9
0
        private Errors saveCSVValues(int indx, object pbr_number)
        {
            Errors errRes = Errors.NoSet;

            RDGStruct[] curRDGValues = new RDGStruct[m_curRDGValues.Length];
            int         hour         = -1;
            double      val          = -1F;

            CONN_SETT_TYPE typeValues = CONN_SETT_TYPE.COUNT_CONN_SETT_TYPE;

            if (pbr_number is string)
            {
                typeValues = CONN_SETT_TYPE.PBR;
            }
            else
            if (pbr_number is CONN_SETT_TYPE)
            {
                typeValues = (CONN_SETT_TYPE)pbr_number;     //ADMIN
            }
            else
            {
                ;
            }

            if ((typeValues == CONN_SETT_TYPE.PBR) ||
                (typeValues == CONN_SETT_TYPE.ADMIN))
            {
                //Получить значения для сохранения
                DataRow [] rowsTECComponent = m_tableValuesResponse.Select(@"GTP_ID='" + allTECComponents[indx].name_future + @"'");
                //Проверить наличие записей для ГТП
                if (rowsTECComponent.Length > 0)
                {
                    foreach (DataRow r in rowsTECComponent)
                    {
                        hour = int.Parse(r[@"SESSION_INTERVAL"].ToString());

                        try
                        {
                            switch (typeValues)
                            {
                            case CONN_SETT_TYPE.PBR:
                                HMath.doubleParse(r[@"TotalBR"].ToString(), out curRDGValues[hour].pbr);
                                HMath.doubleParse(r[@"PminBR"].ToString(), out curRDGValues[hour].pmin);
                                HMath.doubleParse(r[@"PmaxBR"].ToString(), out curRDGValues[hour].pmax);

                                curRDGValues[hour].pbr_number = pbr_number as string;

                                ////Отладка
                                //Console.WriteLine(@"GTP_ID=" + allTECComponents[indx].name_future + @"(" + hour + @") TotalBR=" + curRDGValues[hour].pbr + @"; PBRNumber=" + curRDGValues[hour].pbr_number);
                                break;

                            case CONN_SETT_TYPE.ADMIN:
                                HMath.doubleParse(r[@"REC"].ToString(), out curRDGValues[hour].recomendation);
                                curRDGValues[hour].deviationPercent = Int16.Parse(r[@"IS_PER"].ToString()) == 1;
                                HMath.doubleParse(r[@"DIVIAT"].ToString(), out curRDGValues[hour].deviation);
                                curRDGValues[hour].fc = Int16.Parse(r[@"FC"].ToString()) == 1;
                                break;

                            default:
                                break;
                            }
                        }
                        catch (Exception e) {
                            Logging.Logg().Exception(e, Logging.INDEX_MESSAGE.NOT_SET
                                                     , @"AdminTS_KomDisp::saveCSVValues () - GTP_ID=" + allTECComponents[indx].name_future + @"(" + hour + @")");

                            errRes = Errors.ParseError;
                        }

                        if (errRes == Errors.ParseError)
                        {
                            break;
                        }
                        else
                        {
                            ;
                        }
                    }

                    if (errRes == Errors.NoSet)
                    {
                        //Очистить тек./массив с данными
                        ClearValues();

                        //Копировать полученные значения в "текущий массив"
                        curRDGValues.CopyTo(m_curRDGValues, 0);

                        indxTECComponents = indx;

                        errRes =
                            SaveChanges()
                            //Errors.NoSet
                            //Errors.NoError
                        ;
                    }
                    else
                    {
                        ; //errRes = Errors.ParseError;
                    }
                }
                else
                {
                    errRes = Errors.ParseError;
                }

                if (errRes == Errors.ParseError)
                {
                    //Пропустить запись ГТП, разрешить переход к следующей
                    //Псевдо-закончена обработка всех событий
                    completeHandleStates(INDEX_WAITHANDLE_REASON.SUCCESS);
                }
                else
                {
                    ;
                }
            }
            else
            {
                ;
            }

            return(errRes);
        }
Esempio n. 10
0
        private Errors saveCSVValues(int indx, object pbr_number)
        {
            Errors errRes = Errors.NoSet;

            RDGStruct[]    curRDGValues     = new RDGStruct[m_curRDGValues.Length];
            int            hour             = -1;
            double         val              = -1F;
            string         name_future      = string.Empty;
            List <DataRow> rowsTECComponent = null;

            CONN_SETT_TYPE typeValues = CONN_SETT_TYPE.COUNT_CONN_SETT_TYPE;

            if (pbr_number is string)
            {
                typeValues = CONN_SETT_TYPE.PBR;
            }
            else
            if (pbr_number is CONN_SETT_TYPE)
            {
                typeValues = (CONN_SETT_TYPE)pbr_number;     //ADMIN
            }
            else
            {
                ;
            }
            // проверить был ли определен тип сохраняемых значений
            //  и имеет ли таблица соответствующую типу значений структуру (присутствуют ли в таблице необходимые поля)
            if (((typeValues == CONN_SETT_TYPE.PBR) ||
                 (typeValues == CONN_SETT_TYPE.ADMIN)) &&
                (CheckNameFieldsOfTable(m_tableValuesResponse
                                        , typeValues == CONN_SETT_TYPE.PBR ? new string [] { @"GTP_ID", @"SESSION_INTERVAL", @"REC", @"IS_PER", @"DIVIAT", @"FC" }
                        : typeValues == CONN_SETT_TYPE.ADMIN ? new string [] { @"GTP_ID", @"SESSION_INTERVAL", @"REC", @"IS_PER", @"DIVIAT", @"FC" }
                            : new string [] { @"GTP_ID", @"SESSION_INTERVAL" }) == true))
            {
                //Получить значения для сохранени
                name_future      = allTECComponents[indx].name_future;
                rowsTECComponent = new List <DataRow>(m_tableValuesResponse.Select(@"GTP_ID='" + name_future + @"'"));
                //Вариант №2 - тестовый
                //foreach (DataRow r in m_tableValuesResponse.Rows)
                //    if (name_future.Equals(r["GTP_ID"]) == true)
                //        rowsTECComponent.Add(r);
                //    else
                //        ;
                //Проверить наличие записей для ГТП
                if (rowsTECComponent.Count > 0)
                {
                    //!!! должно быть 24 записи (обеспечивается дополнением при загрузке)
                    if (rowsTECComponent.Count < 24)
                    {
                        Logging.Logg().Error(string.Format(@"AdminTS_KomDisp::saveCSVValues () - для ГТП(ИД={0}) количество записей={1} ..."
                                                           , name_future, rowsTECComponent.Count)
                                             , Logging.INDEX_MESSAGE.NOT_SET);
                    }
                    else
                    {
                        ;
                    }

                    foreach (DataRow r in rowsTECComponent)
                    {
                        hour = int.Parse(r[@"SESSION_INTERVAL"].ToString());

                        try {
                            switch (typeValues)
                            {
                            case CONN_SETT_TYPE.PBR:
                                HMath.doubleParse(r[@"TotalBR"].ToString(), out curRDGValues[hour].pbr);
                                HMath.doubleParse(r[@"PminBR"].ToString(), out curRDGValues[hour].pmin);
                                HMath.doubleParse(r[@"PmaxBR"].ToString(), out curRDGValues[hour].pmax);

                                curRDGValues[hour].pbr_number = pbr_number as string;

                                ////Отладка
                                //Console.WriteLine(@"GTP_ID=" + allTECComponents[indx].name_future + @"(" + hour + @") TotalBR=" + curRDGValues[hour].pbr + @"; PBRNumber=" + curRDGValues[hour].pbr_number);
                                break;

                            case CONN_SETT_TYPE.ADMIN:
                                HMath.doubleParse(r[@"REC"].ToString(), out curRDGValues[hour].recomendation);
                                curRDGValues[hour].deviationPercent = Int16.Parse(r[@"IS_PER"].ToString()) == 1;
                                HMath.doubleParse(r[@"DIVIAT"].ToString(), out curRDGValues[hour].deviation);
                                curRDGValues[hour].fc = Int16.Parse(r[@"FC"].ToString()) == 1;
                                break;

                            default:
                                break;
                            }
                        }
                        catch (Exception e) {
                            Logging.Logg().Exception(e
                                                     , @"AdminTS_KomDisp::saveCSVValues () - GTP_ID=" + allTECComponents[indx].name_future + @"(" + hour + @")"
                                                     , Logging.INDEX_MESSAGE.NOT_SET);

                            errRes = Errors.ParseError;
                        }

                        if (errRes == Errors.ParseError)
                        {
                            break;
                        }
                        else
                        {
                            ;
                        }
                    }

                    if (errRes == Errors.NoSet)
                    {
                        //Очистить тек./массив с данными
                        ClearValues();

                        //Копировать полученные значения в "текущий массив"
                        curRDGValues.CopyTo(m_curRDGValues, 0);

                        indxTECComponents = indx;

                        errRes =
                            SaveChanges()
                            //Errors.NoSet
                            //Errors.NoError
                        ;
                    }
                    else
                    {
                        ; //errRes = Errors.ParseError;
                    }
                }
                else
                {
                    errRes = Errors.ParseError;
                }

                if (errRes == Errors.ParseError)
                {
                    //Пропустить запись ГТП, разрешить переход к следующей
                    //Псевдо-закончена обработка всех событий
                    completeHandleStates(INDEX_WAITHANDLE_REASON.SUCCESS);
                }
                else
                {
                    ;
                }
            }
            else
            {
                ;
            }

            return(errRes);
        }