Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }