Exemple #1
0
        protected List <PuskStopData> createPuskStopData(string type_data, Dictionary <string, List <PuskStopData> > DiffData)
        {
            List <PuskStopData>        result = new List <PuskStopData>();
            DiagDBEntities             diagDB = new DiagDBEntities();
            IEnumerable <PuskStopInfo> req    =
                (from pi in diagDB.PuskStopInfoes
                 where
                 pi.GG == GG && pi.TypeData.Contains(type_data) &&
                 pi.TimeOff > DateStart && pi.TimeOn < DateEnd
                 orderby pi.TimeOn
                 select pi);



            PuskStopData prevData = null;
            PuskStopData last     = null;
            bool         first    = true;

            foreach (PuskStopInfo pi in req)
            {
                if (first && pi.TimeOn > DateStart)
                {
                    try
                    {
                        PuskStopInfo rf =
                            (from p in diagDB.PuskStopInfoes
                             where
                             p.GG == GG && p.TypeData.Contains(type_data) &&
                             p.TimeOff < DateStart
                             orderby p.TimeOff descending
                             select p).First();

                        prevData            = new PuskStopData();
                        prevData.TimeOff    = rf.TimeOff;
                        prevData.ValueStart = rf.ValueStart;
                        prevData.ValueEnd   = rf.ValueEnd;
                    }
                    catch { }
                }

                first = false;
                PuskStopData dat = new PuskStopData();
                dat.Length     = pi.Length;
                dat.TimeOn     = pi.TimeOn;
                dat.TimeOff    = pi.TimeOff;
                dat.ValueEnd   = pi.ValueEnd;
                dat.ValueStart = pi.ValueStart;
                dat.TypeData   = pi.TypeData;
                dat.Comment    = "";
                dat.PrevRecord = prevData;

                prevData = dat;

                result.Add(dat);

                if (DiffData != null && !DiffData.ContainsKey(pi.TypeData))
                {
                    DiffData.Add(pi.TypeData, new List <PuskStopData>());
                }
                DiffData[pi.TypeData].Add(dat);
                last = dat;
            }



            return(result);
        }
Exemple #2
0
        public async static Task <bool> FillPuskStopData(List <PuskStopReaderRecord> reqList, DateTime dateStart, DateTime dateEnd)
        {
            try
            {
                EDSClass.Disconnect();
            }
            catch { }
            EDSClass.Connect();
            if (!EDSClass.Connected)
            {
                return(false);
            }

            /*bool ok = await RefreshLevelsMNU(reqList, dateStart, dateEnd);
             * return ok;*/

            SortedList <int, List <PuskStopData> > FullResult = await AnalizePuskStopDataFull(reqList, dateStart, dateEnd);


            for (int index = 0; index < reqList.Count; index++)
            {
                List <PuskStopData>  data      = FullResult[index];
                PuskStopReaderRecord reqRecord = reqList[index];
                int    gg       = reqRecord.gg;
                string typeData = reqRecord.DBRecord;

                if (data.Count > 0)
                {
                    DiagDBEntities diagDB = new DiagDBEntities();

                    PuskStopData first = data.First();
                    PuskStopData last  = data.Last();
                    IQueryable <PuskStopInfo> reqFirst = from pi in diagDB.PuskStopInfoes where pi.GG == gg && pi.TypeData == typeData && pi.TimeOff == first.TimeOn select pi;

                    if (reqFirst.Count() > 0)
                    {
                        PuskStopInfo firstDB = reqFirst.First();
                        firstDB.TimeOff  = first.TimeOff;
                        firstDB.Length   = (firstDB.TimeOff - firstDB.TimeOn).TotalSeconds;
                        firstDB.ValueEnd = first.ValueEnd;

                        diagDB.SaveChanges();

                        if (data.Count > 1)
                        {
                            data.RemoveAt(0);
                        }
                        else
                        {
                            continue;
                        }
                    }

                    IQueryable <PuskStopInfo> reqLast = from pi in diagDB.PuskStopInfoes where pi.GG == gg && pi.TypeData == typeData && pi.TimeOn == last.TimeOff select pi;
                    if (reqLast.Count() > 0)
                    {
                        PuskStopInfo lastDB = reqLast.First();
                        lastDB.TimeOn     = last.TimeOn;
                        lastDB.Length     = (lastDB.TimeOff - lastDB.TimeOn).TotalSeconds;
                        lastDB.ValueStart = last.ValueStart;
                        diagDB.SaveChanges();
                        if (data.Count > 0)
                        {
                            data.Remove(last);
                        }
                        else
                        {
                            continue;
                        }
                    }



                    IQueryable <PuskStopInfo>           req    = from pi in diagDB.PuskStopInfoes where pi.GG == gg && pi.TypeData == typeData && pi.TimeOn > dateStart && pi.TimeOn <= dateEnd select pi;
                    SortedList <DateTime, PuskStopInfo> dataDB = new SortedList <DateTime, PuskStopInfo>();
                    foreach (PuskStopInfo pi in req)
                    {
                        if (!dataDB.ContainsKey(pi.TimeOn))
                        {
                            dataDB.Add(pi.TimeOn, pi);
                        }
                    }

                    foreach (PuskStopData rec in data)
                    {
                        PuskStopInfo recDB = new PuskStopInfo();
                        if (dataDB.ContainsKey(rec.TimeOn))
                        {
                            recDB = dataDB[rec.TimeOn];
                        }

                        recDB.GG         = gg;
                        recDB.TypeData   = typeData;
                        recDB.TimeOn     = rec.TimeOn;
                        recDB.TimeOff    = rec.TimeOff;
                        recDB.Length     = rec.Length;
                        recDB.ValueEnd   = rec.ValueEnd;
                        recDB.ValueStart = rec.ValueStart;
                        recDB.Comment    = "";

                        if (!dataDB.ContainsKey(rec.TimeOn))
                        {
                            diagDB.PuskStopInfoes.Add(recDB);
                        }
                    }
                    diagDB.SaveChanges();
                }
            }

            return(true);
        }