public SortedList <DateTime, PumpDataRecord> ReadDataPump(PumpTypeEnum type, int powerStart, int powerStop) { SqlConnection con = ReportOutputFile.getConnection(); string query = String.Format("Select * from pumpTable where dateStart>='{0}' and dateEnd<='{1}' and isUst=1 and pAvg>={2} and pAvg<={3} and PumpType='{4}' order by dateStart", StartDate.ToString(DateFormat), EndDate.ToString(DateFormat), powerStart, powerStop, type.ToString()); SqlCommand com = con.CreateCommand(); com.CommandText = query; SortedList <DateTime, PumpDataRecord> Data = new SortedList <DateTime, PumpDataRecord>(); SqlDataReader reader = com.ExecuteReader(); while (reader.Read()) { PumpDataRecord rec = new PumpDataRecord(); rec.DateStart = reader.GetDateTime(reader.GetOrdinal("DateStart")); rec.DateEnd = reader.GetDateTime(reader.GetOrdinal("DateEnd")); rec.IsUst = reader.GetBoolean(reader.GetOrdinal("IsUst")); rec.PumpNum = reader.GetInt32(reader.GetOrdinal("PumpNum")); rec.RunTime = reader.GetDouble(reader.GetOrdinal("RunTime")); rec.LevelStart = reader.GetDouble(reader.GetOrdinal("LevelStart")); rec.LevelStop = reader.GetDouble(reader.GetOrdinal("LevelStop")); rec.PAvg = reader.GetDouble(reader.GetOrdinal("PAvg")); rec.PMin = reader.GetDouble(reader.GetOrdinal("PMin")); rec.PMax = reader.GetDouble(reader.GetOrdinal("PMax")); string tp = reader.GetString(reader.GetOrdinal("PumpType")); rec.PumpType = (PumpTypeEnum)Enum.Parse(typeof(PumpTypeEnum), tp); Data.Add(rec.DateStart, rec); } return(Data); }
public void createPumpPuskChart(ChartZedControl chart, PumpTypeEnum type, SortedList <DateTime, SvodDataRecord> Data, SortedList <DateTime, double> DataRun, bool time) { int ind = 0; chart.init(); List <int> powers = new List <int>(); if (Data.Count > 0) { SortedList <DateTime, double> data = new SortedList <DateTime, double>(); System.Drawing.Color color = ChartZedSerie.NextColor(); foreach (KeyValuePair <DateTime, SvodDataRecord> de in Data) { double val = 0; switch (type) { case PumpTypeEnum.Drenage: val = time ? de.Value.DN1Time + de.Value.DN2Time : de.Value.DN1Pusk + de.Value.DN2Pusk; break; case PumpTypeEnum.Leakage: val = time ? de.Value.LN1Time + de.Value.LN2Time : de.Value.LN1Pusk + de.Value.LN2Pusk; break; case PumpTypeEnum.MNU: val = time ? de.Value.MNU1Time + de.Value.MNU2Time + de.Value.MNU3Time : de.Value.MNU1Pusk + de.Value.MNU2Pusk + de.Value.MNU3Pusk; break; } data.Add(de.Key, val); } chart.AddSerie(String.Format("{0}", time ? "Работа (ceк)" : "Пусков"), data, color, true, true, 0); } if (DataRun.Count > 0) { System.Drawing.Color color = ChartZedSerie.NextColor(); chart.AddSerie(String.Format("Работа ГГ"), DataRun, color, true, true); } }
public bool ReadData() { Data = new SortedList <DateTime, SvodDataRecord>(); PumpTypeEnum type = PumpTypeEnum.Drenage; ReportOutputFile outFile = new ReportOutputFile(FileName); try { outFile.ReadData(); } catch (Exception e) { Logger.Info("Ошибка инициализации файла " + FileName); Logger.Info(e.ToString()); return(false); } for (int i = 2; i < outFile.Data.Count; i++) { try { Dictionary <int, string> fileRec = outFile.Data[i]; SvodDataRecord rec = new SvodDataRecord(); rec.DateStart = ReportOutputFile.getDate(fileRec[0]); rec.DateEnd = ReportOutputFile.getDate(fileRec[1]); rec.PMin = ReportOutputFile.getDouble(fileRec[2]); rec.PMax = ReportOutputFile.getDouble(fileRec[3]); rec.PAvg = ReportOutputFile.getDouble(fileRec[4]); rec.LN1Time = ReportOutputFile.getDouble(fileRec[5]); rec.LN2Time = ReportOutputFile.getDouble(fileRec[6]); rec.DN1Time = ReportOutputFile.getDouble(fileRec[7]); rec.DN2Time = ReportOutputFile.getDouble(fileRec[8]); rec.MNU1Time = ReportOutputFile.getDouble(fileRec[9]); rec.MNU2Time = ReportOutputFile.getDouble(fileRec[10]); rec.MNU3Time = ReportOutputFile.getDouble(fileRec[11]); rec.LN1Pusk = (int)ReportOutputFile.getDouble(fileRec[12]); rec.LN2Pusk = (int)ReportOutputFile.getDouble(fileRec[13]); rec.DN1Pusk = (int)ReportOutputFile.getDouble(fileRec[14]); rec.DN2Pusk = (int)ReportOutputFile.getDouble(fileRec[15]); rec.MNU1Pusk = (int)ReportOutputFile.getDouble(fileRec[16]); rec.MNU2Pusk = (int)ReportOutputFile.getDouble(fileRec[17]); rec.MNU3Pusk = (int)ReportOutputFile.getDouble(fileRec[18]); rec.GPHot = ReportOutputFile.getDouble(fileRec[19]); rec.GPCold = ReportOutputFile.getDouble(fileRec[20]); rec.GPLevel = ReportOutputFile.getDouble(fileRec[21]); rec.PPHot = ReportOutputFile.getDouble(fileRec[22]); rec.PPCold = ReportOutputFile.getDouble(fileRec[23]); rec.PPLevel = ReportOutputFile.getDouble(fileRec[24]); double GPLevelMin = ReportOutputFile.getDouble(fileRec[25]); double PPLevelMin = ReportOutputFile.getDouble(fileRec[26]); double GPLevelMax = ReportOutputFile.getDouble(fileRec[27]); double PPLevelMax = ReportOutputFile.getDouble(fileRec[28]); double gpHotMin = ReportOutputFile.getDouble(fileRec[29]); double gpColdMin = ReportOutputFile.getDouble(fileRec[30]); double gpHotMax = ReportOutputFile.getDouble(fileRec[31]); double gpColdMax = ReportOutputFile.getDouble(fileRec[32]); double ppHotMin = ReportOutputFile.getDouble(fileRec[33]); double ppColdMin = ReportOutputFile.getDouble(fileRec[34]); double ppHotMax = ReportOutputFile.getDouble(fileRec[35]); double ppColdMax = ReportOutputFile.getDouble(fileRec[36]); double gpOhlAvg = ReportOutputFile.getDouble(fileRec[37]); double gpOhlMin = ReportOutputFile.getDouble(fileRec[38]); double gpOhlMax = ReportOutputFile.getDouble(fileRec[39]); double ppOhlAvg1 = ReportOutputFile.getDouble(fileRec[40]); double ppOhlMin1 = ReportOutputFile.getDouble(fileRec[41]); double ppOhlMax1 = ReportOutputFile.getDouble(fileRec[42]); double ppOhlAvg2 = ReportOutputFile.getDouble(fileRec[43]); double ppOhlMin2 = ReportOutputFile.getDouble(fileRec[44]); double ppOhlMax2 = ReportOutputFile.getDouble(fileRec[45]); rec.GPOhlRashod = gpOhlAvg; rec.PPOhlRashod = ppOhlAvg1 + ppOhlAvg2; rec.IsUst = IsUst(rec.PMin, rec.PMax, rec.PAvg, 2); rec.IsUstGP = IsUst(GPLevelMin, GPLevelMax, rec.GPLevel, 3); rec.IsUstGP = rec.IsUstGP && IsUst(gpHotMin, gpHotMax, rec.GPHot, 3); rec.IsUstGP = rec.IsUstGP && IsUst(gpColdMin, gpColdMax, rec.GPCold, 3); rec.IsUstPP = IsUst(PPLevelMin, PPLevelMax, rec.PPLevel, 3); rec.IsUstPP = rec.IsUstPP && IsUst(ppHotMin, ppHotMax, rec.PPHot, 3); rec.IsUstPP = rec.IsUstPP && IsUst(ppColdMin, ppColdMax, rec.PPCold, 3); rec.IsUstGPOhl = IsUst(gpOhlMin, gpOhlMax, gpOhlAvg, 5); rec.IsUstPPOhl = IsUst(ppOhlMin1, ppOhlMax1, ppOhlAvg1, 5) && IsUst(ppOhlMin2, ppOhlMax2, ppOhlAvg2, 5); while (Data.ContainsKey(rec.DateStart)) { rec.DateStart = rec.DateStart.AddMilliseconds(1); } Data.Add(rec.DateStart, rec); } catch (Exception e) { Logger.Info("ошибка при разборе строки"); Logger.Info(e.ToString()); return(false); } } return(true); }
public PumpState(PumpTypeEnum type, int no, PumpStateEnum state) { this.PumpTypeEnum = type; this.PumpNO = no; this.PumpStateEnum = state; }
public bool ReadData() { Data = new SortedList <DateTime, PumpDataRecord>(); PumpTypeEnum type = PumpTypeEnum.Drenage; int pumpNumber = 0; ReportOutputFile outFile = new ReportOutputFile(FileName); try { outFile.ReadData(); FileInfo fi = new FileInfo(FileName); if (fi.Name.Contains("DN_")) { type = PumpTypeEnum.Drenage; } else if (fi.Name.Contains("MNU_")) { type = PumpTypeEnum.MNU; } else if (fi.Name.Contains("LN_")) { type = PumpTypeEnum.Leakage; } else { Logger.Info("Не определен тип насоса в файле " + FileName); return(false); } switch (type) { case PumpTypeEnum.Drenage: pumpNumber = (int)ReportOutputFile.getDouble(outFile.Data[0][3]); break; case PumpTypeEnum.Leakage: pumpNumber = (int)ReportOutputFile.getDouble(outFile.Data[0][3]); break; case PumpTypeEnum.MNU: pumpNumber = (int)ReportOutputFile.getDouble(outFile.Data[0][4]); break; } if (pumpNumber < 0) { Logger.Info("pumpNumber=" + pumpNumber); } }catch (Exception e) { Logger.Info("Ошибка инициализации файла " + FileName); Logger.Info(e.ToString()); return(false); } for (int i = 2; i < outFile.Data.Count; i++) { try { Dictionary <int, string> fileRec = outFile.Data[i]; PumpDataRecord rec = new PumpDataRecord(); rec.DateStart = ReportOutputFile.getDate(fileRec[0]); rec.DateEnd = ReportOutputFile.getDate(fileRec[1]); rec.PAvg = ReportOutputFile.getDouble(fileRec[2]); rec.PMin = ReportOutputFile.getDouble(fileRec[3]); rec.PMax = ReportOutputFile.getDouble(fileRec[4]); rec.RunTime = ReportOutputFile.getDouble(fileRec[5]); rec.LevelStart = ReportOutputFile.getDouble(fileRec[6]); rec.LevelStop = ReportOutputFile.getDouble(fileRec[7]); rec.PumpType = type; rec.PumpNum = pumpNumber; double diff = rec.PAvg / 100 * 2; rec.IsUst = Math.Abs(rec.PAvg - rec.PMax) <= diff; rec.IsUst = rec.IsUst && Math.Abs(rec.PAvg - rec.PMin) <= diff; while (Data.ContainsKey(rec.DateStart)) { rec.DateStart = rec.DateStart.AddMilliseconds(1); } Data.Add(rec.DateStart, rec); }catch (Exception e) { Logger.Info("ошибка при разборе строки"); Logger.Info(e.ToString()); return(false); } } return(true); }
public void createPumpRunChart(ChartZedControl chart, PumpTypeEnum type, bool split, int splitPower) { int ind = 0; PumpDiagnostics report = new PumpDiagnostics(clndFrom.SelectedDate.Value, clndTo.SelectedDate.Value); SortedList <DateTime, PumpDataRecord> Data = new SortedList <DateTime, PumpDataRecord>(); chart.init(); List <int> powers = new List <int>(); if (split) { powers.Add(-1); int power = 35; while (power <= 115) { powers.Add(power); power += splitPower; } } else { splitPower = 200; powers.Add(-1); } SortedList <DateTime, double> dataLStart = new SortedList <DateTime, double>(); SortedList <DateTime, double> dataLStop = new SortedList <DateTime, double>(); foreach (int p in powers) { string header = ""; if (!split) { Data = report.ReadDataPump(type, -1, 200); header = "Время работы насосов"; } else { if (p == -1) { Data = report.ReadDataPump(type, -1, 0); header = "Простой"; } else { Data = report.ReadDataPump(type, p, p + splitPower); header = String.Format("Работа при P {0}-{1}", p, p + splitPower); } } if (Data.Count > 1) { System.Drawing.Color color = ChartZedSerie.NextColor(); SortedList <DateTime, double> data = new SortedList <DateTime, double>(); foreach (KeyValuePair <DateTime, PumpDataRecord> de in Data) { data.Add(de.Key, de.Value.RunTime); dataLStart.Add(de.Key, de.Value.LevelStart); dataLStop.Add(de.Key, de.Value.LevelStop); } chart.AddSerie(header, data, color, false, true); SortedList <DateTime, double> appr = report.Approx(data); ChartZedSerie ser = chart.AddSerie(header, appr, color, true, false, -1, false); } } chart.AddSerie("LStart", dataLStart, ChartZedSerie.NextColor(), true, false, 0); chart.AddSerie("LStop", dataLStop, ChartZedSerie.NextColor(), true, false, 0); }