public void processFile(DateTime date, int DiffHour, bool fillData) { Date = date.ToString("dd.MM.yyyy HH:00"); Hour = date.Hour + 1; GG = blockData.BlockNumber; utc = String.Format("{0}-{1}", date.AddHours(-DiffHour).ToString("HH"), date.AddHours(-DiffHour + 1).ToString("HH")); string fn = ""; List <string> data = FTPClass.ReadFile(date.AddHours(-DiffHour), blockData.BlockNumber, out fn); FileName = fn; if (fillData) { TextFile = string.Join("\r\n", data); } Data = new Dictionary <DateTime, Record>(); List <Record> dataS = new List <Record>(); double prevP = 10e6; double prevF = 10e6; cntPower = 0; cntBadPower = 0; cntFreq = 0; cntBad = 0; List <double> prevPperv = new List <double>(); List <double> prevPplan = new List <double>(); List <double> prevPzvn = new List <double>(); int cntRptFreq = 0; int cntRptPower = 0; foreach (string str in data) { Record rec = new Record(date, str, blockData.PNom, blockData.FNom, ref prevPperv, ref prevPplan, ref prevPzvn); dataS.Add(rec); if (fillData) { Data.Add(rec.Date, rec); } else { if (rec.F_gc > 49.8) { DataSDay[blockData.BlockNumber].Add(rec); } } double diffP = Math.Abs(rec.P_fakt - prevP); double diffF = Math.Abs(rec.F_gc - prevF); if (diffP > 0 && diffP <= blockData.PNom * 0.01) { cntPower++; } if (diffF > 0 && diffF <= 0.001) { cntFreq++; } if (diffP < 10e-6) { cntRptPower++; } else { if (cntRptPower >= 10) { TRepeatPower += cntRptPower; } cntRptPower = 0; } if (diffF < 10e-6) { cntRptFreq++; } else { if (cntRptFreq >= 10) { TRepeatFreq += cntRptFreq; } cntRptFreq = 0; } double df = Math.Abs(rec.F_gc - 50); double minP = blockData.PMin + 0.07 * blockData.PNom - 0.01 * blockData.PNom; double maxP = blockData.PMax - 0.07 * blockData.PNom + 0.01 * blockData.PNom; if (df < 0.02) { if (rec.P_fakt < minP) { TNoRezerv++; } if (rec.P_fakt > maxP) { TNoRezerv++; } } if (rec.BadQ > 0) { cntBad++; } if (rec.P_fakt > rec.P_max || rec.P_fakt < rec.P_min) { cntBadPower++; } prevP = rec.P_fakt; prevF = rec.F_gc; } //RHO = calcRHO(dataS); calcReact(dataS, fillData); NoAutoComment = calcNoAuto(dataS); calcKoleb(dataS, fillData); }
private async Task <bool> LoadFiles() { DateTime date = clndDate.SelectedDate.Value; FTPData = new Dictionary <string, DateTime>(); DiffHour = Int32.Parse(txtDiffHour.Text); List <RecordHour> hoursData = new List <RecordHour>(); RecordHour.DataSDay = new Dictionary <string, List <Record> >(); RecordHour prev = null; SortedList <string, EDSReportRequestRecord> EDSData = new SortedList <string, EDSReportRequestRecord>(); EDSReport report = null; if (chbNPRCHMaket.IsChecked.Value) { try { EDSClass.Disconnect(); } catch { } EDSClass.Connect(); report = new EDSReport(date.AddHours(-DiffHour + 5), date.AddHours(-DiffHour + 5 + 24), EDSReportPeriod.hour); foreach (KeyValuePair <string, BlockData> de in SettingsNPRCH.BlocksDict) { int gg = Int32.Parse(de.Key); string iess = String.Format("MC_NPRCH_GG{0}.EDS@CALC", gg); EDSReportRequestRecord rec = report.addRequestField(RecordHour.EDSPoints[iess], EDSReportFunction.val); EDSData.Add(de.Key, rec); } bool ok = await report.ReadData(); } for (int hour = 0; hour <= 23; hour++) { foreach (KeyValuePair <string, BlockData> de in SettingsNPRCH.BlocksDict) { StatusText = "Загрузка " + hour.ToString(); DateTime dt = date.AddHours(hour); bool ok = FTPClass.CheckFile(dt.AddHours(-DiffHour), de.Key); string header = String.Format("ГГ{3} {0} [{1} UTC] {2}", dt.ToString("dd.MM HH"), dt.AddHours(-DiffHour).ToString("dd.MM HH"), ok, de.Key); FTPData.Add(header, dt); if (ok) { StatusText = "Обработка " + hour.ToString(); RecordHour rh = new RecordHour(de.Value); rh.Header = header; rh.processFile(dt, DiffHour, false); if (chbNPRCHMaket.IsChecked.Value) { double val = report.ResultData[report.DateStart.AddHours(hour)][EDSData[de.Key].Id]; rh.NPRCHMaket = val > 0 ? "+" : " "; } hoursData.Add(rh); prev = rh; } } System.Threading.Thread.Sleep(10); } //hoursData.Last().NoReactComment = ""; //hoursData.Last().calcReact(RecordHour.DataSDay["10"],false); //RecDay.calcRHO(); // StatusText = RecDay.RHO.ToString(); lbHours.ItemsSource = FTPData; lbHours.DisplayMemberPath = "Key"; grdDayData.ItemsSource = hoursData; tabDay.IsSelected = true; btnLoadFiles.IsEnabled = true; return(true); }