/// <summary> /// Перерисовака графика /// </summary> private void CreateChart() { int WidthDifference = pbChart.Location.X + chart.Indent + 5; int HeightDifference = pbChart.Location.Y + chart.Indent + 10; pbChart.Size = new Size(this.Size.Width - WidthDifference, this.Size.Height - HeightDifference); StateClass stateClass = CalculationDefectsController.GetCurrentStateClass(StateClassController.GetShaft(cbMachines.SelectedItem as Machine), (cbMachines.SelectedItem as Machine).Head); List <ResultDiagnostics> resultDiagnostics = new List <ResultDiagnostics>(); List <Repairs> repairs = RepairsController.GetRepairs((cbMachines.SelectedItem as Machine)); List <ResultForecast> forecasts = new List <ResultForecast>(); if (rbBearing.Checked) { resultDiagnostics = DiagnosticResultController.GetBearingResult(cbMachines.SelectedItem as Machine); } else { resultDiagnostics = DiagnosticResultController.GetShaftResult(cbMachines.SelectedItem as Machine); } if (rbStandartForecast.Checked) { forecasts = ForecastController.GetStandartForecast(resultDiagnostics, stateClass, (cbMachines.SelectedItem as Machine)); } else { forecasts = ForecastController.GetSimpleForecast(resultDiagnostics, stateClass, (cbMachines.SelectedItem as Machine)); } chart = new Chart(pbChart.ClientRectangle, resultDiagnostics, forecasts, stateClass, repairs); pbChart.Invalidate(); }
private void cbMachines_SelectedIndexChanged(object sender, EventArgs e) { LoadRepairs(RepairsController.GetRepairs(cbMachines.SelectedItem as Machine)); }
private void btnAddRepairs_Click(object sender, EventArgs e) { RepairsController.AddRepairs(dtpDateRepairs.Value, (cbMachines.SelectedItem as Machine).ID, tbCommentRepairs.Text); }
public static List <ResultForecast> GetSimpleForecast(List <ResultDiagnostics> resultdiagnostics, StateClass stateClass, Machine machine) { List <ResultDiagnostics> results = new List <ResultDiagnostics>(); results.AddRange(resultdiagnostics); List <ResultForecast> forecasts = new List <ResultForecast>(); int CountForecast = 0; ResultForecast forecast = new ResultForecast(); float Smax = 0; float Stemp = 0; ResultDiagnostics resultmax1 = new ResultDiagnostics(); ResultDiagnostics resultmax2 = new ResultDiagnostics(); float SecondStateValue; Repairs lastrepairs = RepairsController.GetLastRepairs(machine); results = results.Where(x => x.date > lastrepairs.date).OrderBy(x => x.date).ToList(); for (int i = 1; i < results.Count; i++) { Stemp = (Math.Abs(results[i].value - results[i - 1].value) / (((results[i].date.Ticks - 621355968000000000) / 10000000) - ((results[i - 1].date.Ticks - 621355968000000000) / 10000000))); if (Stemp > Smax) { Smax = Stemp; resultmax1 = results[i]; resultmax2 = results[i - 1]; } } if (results.Max(x => x.value) > stateClass.acceptably) { SecondStateValue = stateClass.limited; forecast.level = "Недопустимо"; CountForecast = 1; } else if (results.Max(x => x.value) > stateClass.nicely) { SecondStateValue = stateClass.acceptably; forecast.level = "Требует принятия мер"; CountForecast = 2; } else { SecondStateValue = stateClass.nicely; forecast.level = "Допустимо"; CountForecast = 3; } for (int i = 0; i < CountForecast; i++) { forecast = new ResultForecast(); float ValueDifference1 = Math.Abs(resultmax1.value - resultmax2.value); TimeSpan TimeDifference1 = resultmax1.date - resultmax2.date; float ValueDifference2 = Math.Abs(SecondStateValue - results.Last().value); TimeSpan TimeDifference2 = new TimeSpan(Convert.ToInt64((TimeDifference1.Ticks * ValueDifference2) / ValueDifference1)); forecast.date = results.Max(x => x.date).AddTicks(TimeDifference2.Ticks); forecast.value = SecondStateValue; forecasts.Add(forecast); results.Add(new ResultDiagnostics("", forecast.value, forecast.level, forecast.date)); if (forecast.value >= stateClass.acceptably) { SecondStateValue = stateClass.limited; forecast.level = "Недопустимо"; } else if (forecast.value >= stateClass.nicely) { SecondStateValue = stateClass.acceptably; forecast.level = "Требует принятия мер"; } } return(forecasts); }