private void OilConditionControlDeleted(object sender, EventArgs e) { PowerUnitWorkInRegimeParamsControl control = (PowerUnitWorkInRegimeParamsControl)sender; ComponentWorkInRegimeParams cond = control.Condition; if (cond.ItemId > 0 && MessageBox.Show("Do you really want to delete detail params?", "Deleting confirmation", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { //если информация о состоянии сохранена в БД //и получен положительный ответ на ее удаление try { GlobalObjects.CasEnvironment.Manipulator.Delete(cond); } catch (Exception ex) { Program.Provider.Logger.Log("Error while removing data", ex); } flowLayoutPanelMain.Controls.Remove(control); control.Deleted -= OilConditionControlDeleted; control.RegimeChanged -= RegimeChanged; control.Dispose(); } else if (cond.ItemId <= 0) { flowLayoutPanelMain.Controls.Remove(control); control.Deleted -= OilConditionControlDeleted; control.RegimeChanged -= RegimeChanged; control.Dispose(); } }
private void NumericUpDownPersentOhIntValueChanged(object sender, EventArgs e) { if (comboBoxEngine.SelectedItem == null || comboBoxEngine.SelectedItem as BaseComponent == null || _flightRegime == null) { numericUpDownPersentOhInt.BackColor = Color.White; } else { BaseComponent bd = comboBoxEngine.SelectedItem as BaseComponent; ComponentWorkInRegimeParams workParams = bd.ComponentWorkParams.Where(wp => wp.FlightRegime == _flightRegime) .FirstOrDefault(); if (workParams != null) { if (workParams.ResorceProvider == SmartCoreType.ComponentDirective && ((double)numericUpDownPersentOhInt.Value > workParams.PersentTime)) { numericUpDownPersentOhInt.BackColor = Color.Red; } else { numericUpDownPersentOhInt.BackColor = Color.White; } } else { numericUpDownPersentOhInt.BackColor = Color.White; } } }
/// <summary> /// Проверяет введенные параметры на состветсвие параметрам работы заданной силовой установки /// </summary> private void CheckParametres() { if (comboBoxEngine.SelectedItem == null || comboBoxEngine.SelectedItem as BaseComponent == null || _flightRegime == null) { _workParams = null; Color white = Color.White; numericUpDownTimeInRegime.BackColor = white; numericUpDownPersentSN.BackColor = white; numericUpDownPersentSLO.BackColor = white; numericUpDownPersentLifeLimit.BackColor = white; numericUpDownPersentOhInt.BackColor = white; numericUpDownPersentSN.Value = 0; numericUpDownPersentSLO.Value = 0; numericUpDownPersentLifeLimit.Value = 0; numericUpDownPersentOhInt.Value = 0; textBoxTimeInRegimeSN.Text = ""; textBoxTimeInRegimeSLO.Text = ""; } else { BaseComponent bd = comboBoxEngine.SelectedItem as BaseComponent; _workParams = bd.ComponentWorkParams.Where(wp => wp.FlightRegime == _flightRegime && wp.GroundAir == _groundAir) .FirstOrDefault(); if (_workParams != null) { Color white = Color.White; Color red = Color.Red; if (((double)numericUpDownTimeInRegime.Value > _workParams.TimeInRegimeMax.TotalMinutes && _workParams.TLAMaxEnabled)) { numericUpDownTimeInRegime.BackColor = red; } else { numericUpDownTimeInRegime.BackColor = white; } //numericUpDownPersentSN.Value = 0; //numericUpDownPersentSLO.Value = 0; //textBoxTimeInRegimeSN.Text = ""; //textBoxTimeInRegimeSLO.Text = ""; } else { Color white = Color.White; numericUpDownTimeInRegime.BackColor = white; numericUpDownPersentSN.BackColor = white; numericUpDownPersentSLO.BackColor = white; numericUpDownPersentLifeLimit.BackColor = white; numericUpDownPersentOhInt.BackColor = white; //numericUpDownPersentSN.Value = 0; //numericUpDownPersentSLO.Value = 0; //textBoxTimeInRegimeSN.Text = ""; //textBoxTimeInRegimeSLO.Text = ""; } } }
/// <summary> /// Существует ли информация по уровню масла для заданного агрегата /// </summary> /// <param name="con"></param> /// <returns></returns> private bool ConditionExists(ComponentWorkInRegimeParams con) { // if (BaseComponent == null || BaseComponent.ComponentWorkParams == null) { return(false); } // return(BaseComponent.ComponentWorkParams.Any(t => t == con)); // }
/* * Реализация */ #region private void CheckParametres() private void CheckParametres() { if (comboBoxEngine.SelectedItem == null || comboBoxEngine.SelectedItem as BaseComponent == null || _flightRegime == null) { _workParams = null; Color white = Color.White; numericUpDownTimeInRegime.BackColor = white; numericUpDownThrottleLeverAngle.BackColor = white; numericUpDownFuelPress.BackColor = white; numericUpDownOilPressTorque.BackColor = white; numericUpDownOilFlow.BackColor = white; numericUpDownVibrationOverload.BackColor = white; numericUpDownVibrationOverload2.BackColor = white; numericUpDownERP.BackColor = white; numericUpDownN1.BackColor = white; numericUpDownEGT.BackColor = white; numericUpDownN2.BackColor = white; numericUpDownOilTemp.BackColor = white; numericUpDownOilPress.BackColor = white; numericUpDownFuelFlow.BackColor = white; numericUpDownFuelBurn.BackColor = white; } else { BaseComponent bd = comboBoxEngine.SelectedItem as BaseComponent; _workParams = bd.ComponentWorkParams.Where(wp => wp.FlightRegime == _flightRegime && wp.GroundAir == _groundAir) .FirstOrDefault(); if (_workParams != null) { Color white = Color.White; Color red = Color.Red; if (((double)numericUpDownTimeInRegime.Value > _workParams.TimeInRegimeMax.TotalMinutes && _workParams.TLAMaxEnabled)) { numericUpDownTimeInRegime.BackColor = red; } else { numericUpDownTimeInRegime.BackColor = white; } if (((double)numericUpDownThrottleLeverAngle.Value > _workParams.TLAMax && _workParams.TLAMaxEnabled) || ((double)numericUpDownThrottleLeverAngle.Value < _workParams.TLAMin && _workParams.TLAMinEnabled)) { numericUpDownThrottleLeverAngle.BackColor = red; } else { numericUpDownThrottleLeverAngle.BackColor = white; } if (((double)numericUpDownFuelPress.Value > _workParams.FuelPressMax && _workParams.FuelPressMaxEnabled) || ((double)numericUpDownFuelPress.Value < _workParams.FuelPressMin && _workParams.FuelPressMinEnabled)) { numericUpDownFuelPress.BackColor = red; } else { numericUpDownFuelPress.BackColor = white; } if (((double)numericUpDownOilPressTorque.Value > _workParams.OilPressTorqueMax && _workParams.OilPressTorqueMaxEnabled) || ((double)numericUpDownOilPressTorque.Value < _workParams.OilPressTorqueMin && _workParams.OilPressTorqueMinEnabled)) { numericUpDownOilPressTorque.BackColor = red; } else { numericUpDownOilPressTorque.BackColor = white; } if (((double)numericUpDownVibrationOverload.Value > _workParams.VibroOverloadMax && _workParams.VibroOverloadMaxEnabled) || ((double)numericUpDownVibrationOverload.Value < _workParams.VibroOverloadMin && _workParams.VibroOverloadMinEnabled)) { numericUpDownVibrationOverload.BackColor = red; } else { numericUpDownVibrationOverload.BackColor = white; } if (((double)numericUpDownVibrationOverload2.Value > _workParams.VibroOverload2Max && _workParams.VibroOverload2MaxEnabled) || ((double)numericUpDownVibrationOverload2.Value < _workParams.VibroOverload2Min && _workParams.VibroOverload2MinEnabled)) { numericUpDownVibrationOverload2.BackColor = red; } else { numericUpDownVibrationOverload2.BackColor = white; } if (((double)numericUpDownERP.Value > _workParams.EPRMax && _workParams.EPRMaxEnabled) || ((double)numericUpDownERP.Value < _workParams.EPRMin && _workParams.EPRMinEnabled)) { numericUpDownERP.BackColor = red; } else { numericUpDownERP.BackColor = white; } if (((double)numericUpDownN1.Value > _workParams.N1Max && _workParams.N1MaxEnabled) || ((double)numericUpDownN1.Value < _workParams.N1Min && _workParams.N1MinEnabled)) { numericUpDownN1.BackColor = red; } else { numericUpDownN1.BackColor = white; } if (((double)numericUpDownEGT.Value > _workParams.EGTMax && _workParams.EGTMaxEnabled) || ((double)numericUpDownEGT.Value < _workParams.EGTMin && _workParams.EGTMinEnabled)) { numericUpDownEGT.BackColor = red; } else { numericUpDownEGT.BackColor = white; } if (((double)numericUpDownN2.Value > _workParams.N2Max && _workParams.N2MaxEnabled) || ((double)numericUpDownN2.Value < _workParams.N2Min && _workParams.N2MinEnabled)) { numericUpDownN2.BackColor = red; } else { numericUpDownN2.BackColor = white; } if (((double)numericUpDownOilTemp.Value > _workParams.OilTemperatureMax && _workParams.OilTemperatureMaxEnabled) || ((double)numericUpDownOilTemp.Value < _workParams.OilTemperatureMin && _workParams.OilTemperatureMinEnabled)) { numericUpDownOilTemp.BackColor = red; } else { numericUpDownOilTemp.BackColor = white; } if (((double)numericUpDownOilPress.Value > _workParams.OilPressureMax && _workParams.OilPressureMaxEnabled) || ((double)numericUpDownOilPress.Value < _workParams.OilPressureMin && _workParams.OilPressureMinEnabled)) { numericUpDownOilPress.BackColor = red; } else { numericUpDownOilPress.BackColor = white; } if (((double)numericUpDownOilFlow.Value > _workParams.OilFlowMax && _workParams.OilFlowMaxEnabled) || ((double)numericUpDownOilFlow.Value < _workParams.OilFlowMin && _workParams.OilFlowMinEnabled)) { numericUpDownOilFlow.BackColor = red; } else { numericUpDownOilFlow.BackColor = white; } if (((double)numericUpDownFuelFlow.Value > _workParams.FuelFlowMax && _workParams.FuelFlowMaxEnabled) || ((double)numericUpDownFuelFlow.Value < _workParams.FuelFlowMin && _workParams.FuelFlowMinEnabled)) { numericUpDownFuelFlow.BackColor = red; } else { numericUpDownFuelFlow.BackColor = white; } if (((double)numericUpDownFuelBurn.Value > _workParams.FuelBurnMax && _workParams.FuelBurnMaxEnabled) || ((double)numericUpDownFuelBurn.Value < _workParams.FuelBurnMin && _workParams.FuelBurnMinEnabled)) { numericUpDownFuelBurn.BackColor = red; } else { numericUpDownFuelBurn.BackColor = white; } } else { Color white = Color.White; numericUpDownTimeInRegime.BackColor = white; numericUpDownThrottleLeverAngle.BackColor = white; numericUpDownFuelPress.BackColor = white; numericUpDownOilPressTorque.BackColor = white; numericUpDownVibrationOverload.BackColor = white; numericUpDownVibrationOverload2.BackColor = white; numericUpDownERP.BackColor = white; numericUpDownN1.BackColor = white; numericUpDownEGT.BackColor = white; numericUpDownN2.BackColor = white; numericUpDownOilTemp.BackColor = white; numericUpDownOilPress.BackColor = white; numericUpDownOilFlow.BackColor = white; numericUpDownFuelFlow.BackColor = white; numericUpDownFuelBurn.BackColor = white; } } }
private void SetWorkTimeGA(BaseComponent powerUnit, FlightRegime flightRegime) { if (powerUnit == null) { return; } List <PowerUnitTimeInRegimeControlItem> fcs = flowLayoutPanelMain.Controls .OfType <PowerUnitTimeInRegimeControlItem>() .Where(c => c.PowerUnit != null && c.PowerUnit.ItemId == powerUnit.ItemId && c.FlightRegime == flightRegime) .ToList(); int t = fcs.Sum(cr => cr.WorkTime); Lifelength baseDetailLifeLenghtInRegimeSinceLastOverhaul = null; Lifelength baseDetailLifeLenghtSinceLastOverhaul = null; Lifelength baseDetailOhInterval = null; Lifelength baseDetailLifeLenghtInRegimeSinceNew = GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthOnStartOfDay(powerUnit, _flightDate, flightRegime); Lifelength baseDetailLifeLenghtSinceNew = GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthOnStartOfDay(powerUnit, _flightDate); Lifelength baseDetailLifeLimit = powerUnit.LifeLimit; ComponentWorkInRegimeParams inRegimeParams = powerUnit.ComponentWorkParams.Where(p => p.FlightRegime == flightRegime).FirstOrDefault(); if (inRegimeParams != null && inRegimeParams.ResorceProvider == SmartCoreType.ComponentDirective && powerUnit.ComponentDirectives.GetItemById(inRegimeParams.ResorceProviderId) != null) { //в парамтрах работы требуется расчитать время работы в режиме с //последнего выполнения директивы ComponentDirective dd = powerUnit.ComponentDirectives.GetItemById(inRegimeParams.ResorceProviderId); if (dd.LastPerformance == null) { baseDetailOhInterval = dd.Threshold.FirstPerformanceSinceNew; //если последнего выполнения директивы нет, //то расчитывается полная работа агрегата в указанном режиме baseDetailLifeLenghtInRegimeSinceLastOverhaul = GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthOnStartOfDay(powerUnit, _flightDate, flightRegime); baseDetailLifeLenghtSinceLastOverhaul = GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthOnStartOfDay(powerUnit, _flightDate); } else { baseDetailOhInterval = dd.Threshold.RepeatInterval; //т.к. может просматриваться старый полет (н: месячной давности) //производится поиск последней записи о выполнении перед текущим полетов AbstractPerformanceRecord r = dd.PerformanceRecords.GetLastKnownRecord(_flightDate); if (r != null) { baseDetailLifeLenghtInRegimeSinceLastOverhaul = GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthForPeriod(powerUnit, r.RecordDate, _flightDate.AddHours(-1), flightRegime); baseDetailLifeLenghtSinceLastOverhaul = GlobalObjects.CasEnvironment.Calculator.GetFlightLifelengthForPeriod(powerUnit, r.RecordDate, _flightDate.AddHours(-1));//TODO:(Evgenii Babak) выяснить почему AddHours(-1) } } } if (Flight.AircraftId <= 0) { //извлечение всех полетов ВС var flights = GlobalObjects.AircraftFlightsCore.GetAircraftFlightsOnDate(Flight.AircraftId, _flightDate); //И поиск всех полетов, что были раньше текущего foreach (AircraftFlight aircraftFlight in flights) { //Если полет был раньше текущего, то его наработка добавляется //к рассчитываемым ресурсам базового агрегата if (aircraftFlight.FlightDate < _flightDate.Date.Add(_outTime.TimeOfDay)) { baseDetailLifeLenghtInRegimeSinceNew.Add(GlobalObjects.CasEnvironment.Calculator.GetFlightLifelength(aircraftFlight, powerUnit, flightRegime)); baseDetailLifeLenghtSinceNew.Add(GlobalObjects.CasEnvironment.Calculator.GetFlightLifelength(aircraftFlight, powerUnit)); if (baseDetailLifeLenghtInRegimeSinceLastOverhaul == null) { continue; } baseDetailLifeLenghtInRegimeSinceLastOverhaul.Add(GlobalObjects.CasEnvironment.Calculator.GetFlightLifelength(aircraftFlight, powerUnit, flightRegime)); if (baseDetailLifeLenghtSinceLastOverhaul == null) { continue; } baseDetailLifeLenghtSinceLastOverhaul.Add(GlobalObjects.CasEnvironment.Calculator.GetFlightLifelength(aircraftFlight, powerUnit)); } } } baseDetailLifeLenghtInRegimeSinceNew.Add(LifelengthSubResource.Minutes, t); if (baseDetailLifeLenghtInRegimeSinceLastOverhaul != null) { baseDetailLifeLenghtInRegimeSinceLastOverhaul.Add(LifelengthSubResource.Minutes, t); } double persentSN = 0, persentLifeLimit = 0, persentSLO = 0, persentOhInt = 0; int? resInRegimeSN = baseDetailLifeLenghtInRegimeSinceNew.GetSubresource(LifelengthSubResource.Minutes); int? resSN = baseDetailLifeLenghtSinceNew.GetSubresource(LifelengthSubResource.Minutes); int? resLl = baseDetailLifeLimit.GetSubresource(LifelengthSubResource.Minutes); if (resSN != null && resInRegimeSN != null && resSN > 0) { persentSN = Convert.ToDouble((double)resInRegimeSN * 100 / resSN); } if (resLl != null && resInRegimeSN != null && resLl > 0) { persentLifeLimit = Convert.ToDouble((double)resInRegimeSN * 100 / resLl); } if (baseDetailLifeLenghtInRegimeSinceLastOverhaul != null) { int?resInRegimeSLO = baseDetailLifeLenghtInRegimeSinceLastOverhaul.GetSubresource(LifelengthSubResource.Minutes); if (baseDetailLifeLenghtSinceLastOverhaul != null) { int?resSLO = baseDetailLifeLenghtSinceLastOverhaul.GetSubresource(LifelengthSubResource.Minutes); if (resSLO != null && resInRegimeSLO != null && resSLO > 0) { persentSLO = Convert.ToDouble((double)resInRegimeSLO * 100 / resSLO); } } if (baseDetailOhInterval != null) { int?resOhInt = baseDetailOhInterval.GetSubresource(LifelengthSubResource.Minutes); if (resOhInt != null && resInRegimeSLO != null && resOhInt > 0) { persentOhInt = Convert.ToDouble((double)resInRegimeSLO * 100 / resOhInt); } } } foreach (PowerUnitTimeInRegimeControlItem fc in fcs) { fc.WorkTimeGA = t; fc.WorkTimeSinceNew = baseDetailLifeLenghtInRegimeSinceNew; fc.WorkTimeSLO = baseDetailLifeLenghtInRegimeSinceLastOverhaul; fc.PersentSN = persentSN; fc.PersentLifeLimit = persentLifeLimit; fc.PersentSLO = persentSLO; fc.PersentOhInt = persentOhInt; } }