/// <summary> /// функция валидации. Проверка железа без координат /// </summary> /// <param name="taskSDR"></param> /// <returns></returns> public static bool ValidationMeas(this MeasSdrTask taskSDR) { if (taskSDR != null) { if (taskSDR.SensorId != null) { /// здесь код проверки } } return(true); }
/// <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); }
/// <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"; } } } }
/// <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); }
// Создание 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); }