Beispiel #1
0
 /// <summary>
 /// функция валидации. Проверка железа без координат
 /// </summary>
 /// <param name="taskSDR"></param>
 /// <returns></returns>
 public static bool ValidationMeas(this MeasSdrTask taskSDR)
 {
     if (taskSDR != null)
     {
         if (taskSDR.SensorId != null)
         {
             /// здесь код проверки
         }
     }
     return(true);
 }
Beispiel #2
0
        /// <summary>
        /// Функция CheckDate возвращает true если текущая дата находится до MeasTaskSD.TimeStop
        /// </summary>
        /// <param name="taskSDR"></param>
        /// <returns></returns>
        public static bool CheckDate(this MeasSdrTask taskSDR)
        {
            bool isChecked = false;

            if (taskSDR != null)
            {
                if (DateTime.Now < taskSDR.Time_stop)
                {
                    isChecked = true;
                }
            }
            return(isChecked);
        }
Beispiel #3
0
 /// <summary>
 /// Обновление статуса объекта MeasTaskSDR
 /// </summary>
 /// <param name="taskSDR"></param>
 public static void UpdateStatus(this MeasSdrTask taskSDR)
 {
     if (!CheckDate(taskSDR))
     {
         if (taskSDR.status == "N")
         {
             taskSDR.status = "E_T";
         }
         else if (taskSDR.status == "A")
         {
             taskSDR.status = "E_T";
         }
         else if (taskSDR.status == "E_L")
         {
             taskSDR.status = "E_T";
         }
     }
     else
     {
         if (CheckLoc(taskSDR))
         {
             if (taskSDR.status == "N")
             {
                 taskSDR.status = "A";
             }
             else if (taskSDR.status == "A")
             {
                 taskSDR.status = "A";
             }
             else if (taskSDR.status == "E_L")
             {
                 taskSDR.status = "A";
             }
         }
         else
         {
             if (taskSDR.status == "N")
             {
                 taskSDR.status = "E_L";
             }
             else if (taskSDR.status == "A")
             {
                 taskSDR.status = "E_L";
             }
             else if (taskSDR.status == "E_L")
             {
                 taskSDR.status = "E_L";
             }
         }
     }
 }
Beispiel #4
0
        /// <summary>
        /// Функция CheckLoc  возвращает true если MeasTaskSDR не имеет MeasLocParam
        /// или хотя бы один из параметров MeasLocParam находится на расстоянии от
        /// текущих координат сенсора Sensor.SensorLocation  ближе чем MeasLocParam.MaxDist
        /// </summary>
        /// <param name="taskSDR"></param>
        /// <returns></returns>
        public static bool CheckLoc(this MeasSdrTask taskSDR)
        {
            bool isChecked = false;

            if (taskSDR != null)
            {
                if (taskSDR.MeasLocParam == null)
                {
                    return(true);
                }
                if (taskSDR.MeasLocParam != null)
                {
                    if (taskSDR.MeasLocParam.Count() > 0)
                    {
                        foreach (MeasLocParam locPrm in taskSDR.MeasLocParam.ToArray())
                        {
                            Sensor Sensor_fnd = GlobalInit.SensorListSDRNS.Find(t => t.Id.Value == taskSDR.SensorId.Value);
                            if (Sensor_fnd != null)
                            {
                                if (Sensor_fnd.Locations != null)
                                {
                                    List <SensorLocation> location_curr = Sensor_fnd.Locations.ToList().FindAll(r => r.Status == "A");
                                    if (location_curr != null)
                                    {
                                        if (location_curr.Count > 0)
                                        {
                                            location_curr.Sort((a1, a2) => a1.DataFrom.GetValueOrDefault().CompareTo(a2.DataFrom.GetValueOrDefault()));
                                            SensorLocation sloc = location_curr[location_curr.Count - 1];
                                            if (sloc != null)
                                            {
                                                double Dist_curr = calculateTheDistance(sloc.Lat.GetValueOrDefault(), sloc.Lon.GetValueOrDefault(), locPrm.Lat.GetValueOrDefault(), locPrm.Lon.GetValueOrDefault());
                                                if (Dist_curr < locPrm.MaxDist)
                                                {
                                                    isChecked = true;
                                                    break;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        isChecked = true;
                    }
                }
            }
            return(isChecked);
        }
Beispiel #5
0
        // Создание MeasTaskSDRs 26.12.2017 обновление функции Максим 27.12.2017
        public static List <MeasSdrTask> CreateeasTaskSDRs(this MeasTask task, string Type = "New")
        {
            List <MeasSdrTask> ListMTSDR = new List <MeasSdrTask>();

            if (task.MeasSubTasks == null)
            {
                return(ListMTSDR);
            }
            foreach (MeasSubTask SubTask in task.MeasSubTasks)
            {
                foreach (MeasSubTaskStation SubTaskStation in SubTask.MeasSubTaskStations)
                {
                    if ((Type == "New") || ((Type == "Stop") && ((SubTaskStation.Status == "F") || (SubTaskStation.Status == "P"))) || ((Type == "Run") && ((SubTaskStation.Status == "O") || (SubTaskStation.Status == "A"))) ||
                        ((Type == "Del") && (SubTaskStation.Status == "Z")))

                    {
                        MeasSdrTask MTSDR = new MeasSdrTask();
                        MTSDR.MeasSubTaskId        = SubTask.Id;
                        MTSDR.MeasSubTaskStationId = SubTaskStation.Id;
                        MTSDR.MeasTaskId           = task.Id;
                        MTSDR.status   = SubTaskStation.Status;
                        MTSDR.SensorId = SubTaskStation.StationId;
                        if (Type == "New")
                        {
                            if (task.Id == null)
                            {
                                task.Id = new MeasTaskIdentifier();
                            }
                            if (task.MeasOther == null)
                            {
                                task.MeasOther = new MeasOther();
                            }
                            if (task.MeasDtParam == null)
                            {
                                task.MeasDtParam = new MeasDtParam();
                            }
                            MTSDR.MeasDataType  = task.MeasDtParam.TypeMeasurements;
                            MTSDR.MeasFreqParam = task.MeasFreqParam;
                            if (task.MeasLocParams != null)
                            {
                                MTSDR.MeasLocParam = task.MeasLocParams;
                            }
                            MTSDR.MeasSDRParam               = new MeasSdrParam();
                            MTSDR.MeasSDRSOParam             = new MeasSdrSOParam();
                            MTSDR.MeasSDRParam.DetectTypeSDR = task.MeasDtParam.DetectType;
                            if (task.MeasDtParam.MeasTime != null)
                            {
                                MTSDR.MeasSDRParam.MeasTime = task.MeasDtParam.MeasTime.GetValueOrDefault();
                            }
                            else
                            {
                                MTSDR.MeasSDRParam.MeasTime = 0.001;
                            }
                            MTSDR.MeasSDRParam.PreamplificationSDR = task.MeasDtParam.Preamplification;
                            if (task.MeasDtParam.RBW != null)
                            {
                                MTSDR.MeasSDRParam.RBW = task.MeasDtParam.RBW.GetValueOrDefault();
                            }
                            else
                            {
                                MTSDR.MeasSDRParam.RBW = 10;
                            }
                            if (task.MeasOther.LevelMinOccup != null)
                            {
                                MTSDR.MeasSDRSOParam.LevelMinOccup = task.MeasOther.LevelMinOccup.GetValueOrDefault();
                            }
                            else
                            {
                                MTSDR.MeasSDRSOParam.LevelMinOccup = -70;
                            }
                            MTSDR.MeasSDRParam.RfAttenuationSDR = (int)task.MeasDtParam.RfAttenuation;
                            if (task.MeasDtParam.VBW != null)
                            {
                                MTSDR.MeasSDRParam.VBW = task.MeasDtParam.VBW.GetValueOrDefault();
                            }
                            else
                            {
                                MTSDR.MeasSDRParam.VBW = 10;
                            }
                            // MTSDR.MeasSDRParam.ref_level_dbm = 70; // Для SDR пока не присваевается
                            MTSDR.MeasSDRParam.ref_level_dbm = -30;
                            if (task.MeasOther.NChenal != null)
                            {
                                MTSDR.MeasSDRSOParam.NChenal = task.MeasOther.NChenal.GetValueOrDefault();
                            }
                            else
                            {
                                MTSDR.MeasSDRSOParam.NChenal = 10;
                            }
                            MTSDR.MeasSDRSOParam.TypeSO = task.MeasOther.TypeSpectrumOccupation;
                            if (task.Prio != null)
                            {
                                MTSDR.prio = task.Prio.GetValueOrDefault();
                            }
                            else
                            {
                                MTSDR.prio = 10;
                            }
                            MTSDR.status = "N";
                            if (task.MeasOther.SwNumber != null)
                            {
                                MTSDR.SwNumber = task.MeasOther.SwNumber.GetValueOrDefault();
                            }                                                                                                      //else { MTSDR.SwNumber = 10; }
                            MTSDR.Time_start = SubTask.TimeStart;
                            MTSDR.Time_stop  = SubTask.TimeStop;
                            if (SubTask.Interval != null)
                            {
                                MTSDR.PerInterval = SubTask.Interval.GetValueOrDefault();
                            }                                                                                           //else { MTSDR.SwNumber = 10; }
                            MTSDR.TypeM = task.MeasOther.TypeSpectrumScan;
                            if (task.MeasDtParam.TypeMeasurements == MeasurementType.MonitoringStations)
                            { // 21_02_2018 в данном случае мы передаем станции  исключительно для системы мониторинга станций т.е. один таск на месяц Надо проверить.
                                if (task.StationsForMeasurements != null)
                                {
                                    MTSDR.StationsForMeasurements = task.StationsForMeasurements;
                                    // далее сформируем переменную GlobalSID
                                    for (int i = 0; i < MTSDR.StationsForMeasurements.Count(); i++)
                                    {
                                        string CodeOwener = "0";
                                        if (MTSDR.StationsForMeasurements[i].Owner.OKPO == "14333937")
                                        {
                                            CodeOwener = "1";
                                        }
                                        ;
                                        if (MTSDR.StationsForMeasurements[i].Owner.OKPO == "22859846")
                                        {
                                            CodeOwener = "6";
                                        }
                                        ;
                                        if (MTSDR.StationsForMeasurements[i].Owner.OKPO == "21673832")
                                        {
                                            CodeOwener = "3";
                                        }
                                        ;
                                        if (MTSDR.StationsForMeasurements[i].Owner.OKPO == "37815221")
                                        {
                                            CodeOwener = "7";
                                        }
                                        ;
                                        MTSDR.StationsForMeasurements[i].GlobalSID = "255 " + CodeOwener + " 00000 " + string.Format("{0:00000}", MTSDR.StationsForMeasurements[i].IdStation);
                                    }
                                }
                            }
                        }
                        ListMTSDR.Add(MTSDR);
                    }
                }
            }
            return(ListMTSDR);
        }