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 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); }