public ActionResult Mine_raspozn(int raspoznID, int?page, string wagonNumberFilter = "")
        {
            var wagdb      = new WagonDBcontext();
            var locationID = wagdb.recogn.Where(w => w.id == raspoznID).FirstOrDefault()?.name ?? "abay";

            if (locationID.Contains("_"))
            {
                locationID = locationID.Substring(0, locationID.Length - 3);
            }

            int pageSize   = 24;
            int pageNumber = (page ?? 1);
            var model      = new Mine_raspozn(locationID);

            model.RaspoznTable = Builder.GetRaspoznModel(raspoznID, pageSize, (pageNumber - 1) * pageSize);
            if (!string.IsNullOrEmpty(wagonNumberFilter))
            {
                model.RaspoznTable.RaspoznList = model.RaspoznTable.RaspoznList.Where(w => w.WagonNumber.Contains(wagonNumberFilter)).ToList();
            }
            ;

            model.PagedRaspoznTable   = model.RaspoznTable.RaspoznList.ToPagedList(pageNumber, pageSize);
            model.RaspoznID           = raspoznID;
            model.LastTrainDateTime   = model.RaspoznTable.RaspoznList.FirstOrDefault()?.Date;
            model.WagonsPassed        = model.RaspoznTable.RaspoznList.Count();
            model.LastTrainWagonCount = model.RaspoznTable.RaspoznList.GroupBy(g => g.IdSostav).FirstOrDefault()?.Count() ?? 0;
            model.MineName            = GetLocationNameOnCurrentLanguate(locationID);
            model.WagonNumberFilter   = wagonNumberFilter;
            var badVagonCount = model.RaspoznTable.RaspoznList.Where(l => l.WagonNumber.ToLower().Contains('х') || l.WagonNumber.ToLower().Contains('x')).Count();

            model.RecognPercent = model.WagonsPassed > 0 ? 100 - (((double)badVagonCount / model.WagonsPassed) * 100) : 100;

            return(View(model));
        }
Esempio n. 2
0
        public static bool SyncWagonNums()
        {
            var recogns = new List <Recogn>();
            var nums    = new List <WagonNumsCache>();

            try
            {
                using (CtsDbContext centralDB = new CtsDbContext())
                {
                    recogns.AddRange(centralDB.Recogn.ToList());
                }

                using (var wagDB = new WagonDBcontext())
                {
                    foreach (var r in recogns)
                    {
                        nums.AddRange(wagDB.vagon_nums.Where(x => x.recognid == r.ID).OrderByDescending(x => x.date_time).Take(50)
                                      .Select(x => new WagonNumsCache
                        {
                            ID              = x.id,
                            Date_time       = x.date_time,
                            RecognID        = x.recognid,
                            Id_sostav       = x.id_sostav,
                            Number          = x.number,
                            Number_operator = x.number_operator,
                            Id_operator     = x.id_operator,
                            Camera          = x.camera,
                        }).ToList());
                    }
                }

                if (nums.Any())
                {
                    using (CtsDbContext centralDB = new CtsDbContext())
                    {
                        using (var transaction = centralDB.Database.BeginTransaction())
                        {
                            centralDB.WagonNumsCache.RemoveRange(centralDB.WagonNumsCache);
                            centralDB.WagonNumsCache.AddRange(nums);
                            centralDB.SaveChanges();
                            transaction.Commit();
                        }
                    }
                }

                _logger.Trace("Successfully Synchronized WagonNums");
                return(true);
            }
            catch (Exception ex)
            {
                _logger.Error("Unsuccess with SyncWagonNums");
                _logger.Error(ex.Message.ToString());

                return(false);
            }
        }
Esempio n. 3
0
 public IQueryable <WagonTransfer> GetDataFromWagonDB(DateTime fromDate, DateTime toDate, string locationID)
 {
     using (var wagdb = new WagonDBcontext())
     {
         var vagons = wagdb.ves_vagon.Where(v => v.scales.objects.name == locationID).
                      Where(t => t.date_time_brutto >= fromDate && t.date_time_brutto <= toDate).
                      Select(s => new WagonTransfer()
         {
             ID                = s.id.ToString(),
             Brutto            = s.ves_brutto / 1000,
             SublotName        = s.vagon_num,
             LotName           = s.nakladn,
             Tare              = s.ves_tara / 1000,
             TransferTimeStamp = s.date_time_brutto,
             ToDest            = s.poluch.display_name,
             FromDestID        = s.otpravl.name,
             IsValid           = true,
         }
                             );
         return(vagons.OrderByDescending(t => t.TransferTimeStamp));
     }
 }
Esempio n. 4
0
 public WagonDbService()
 {
     this.wagdb = new WagonDBcontext();
 }
Esempio n. 5
0
        public static bool SyncVesWagon()
        {
            string stringForLoggerAccepted = "";
            string stringForLoggerRejected = "";
            string stringForLoggerWrong    = "";
            //int lastID;
            List <WagonScale> wagonScales;
            List <Item>       items;

            Int32.TryParse(ConfigurationManager.AppSettings["WagonDBSyncDepth_Days"], out int syncDepth);
            var dueDate = syncDepth == 0 ? default(DateTime) : DateTime.Now.AddDays(syncDepth * -1);

            try
            {
                using (CtsDbContext centralDB = new CtsDbContext())
                {
                    //var ltr = centralDB.WagonTransfers.Where(x => !x.ID.StartsWith("W")).OrderByDescending(t => t.TransferTimeStamp).Take(1000).Select(m => m.ID).ToArray();
                    //lastID = (ltr.Length != 0) ? ltr.Select(x => int.Parse(x)).OrderByDescending(m => m).FirstOrDefault() : 0;
                    wagonScales = centralDB.WagonScales.Include(m => m.Location).ToList();
                    items       = centralDB.Items.Include(m => m.Location).ToList();
                }

                var transfers = new List <ves_vagon>();
                using (var wagDB = new WagonDBcontext())
                {
                    //transfers = wagDB.ves_vagon.Where(x => x.id > lastID).Include(m => m.scales).Include(h => h.napravlenie)
                    //														.Include(n => n.otpravl).Include(k => k.poluch).ToList();

                    transfers = wagDB.ves_vagon.Where(x => x.id_operator != null)
                                .Where(x => x.id_operator != 0)
                                .Where(x => x.sync != 1)
                                .Where(x => x.date_time_brutto >= dueDate)
                                .Include(m => m.scales)
                                .Include(h => h.napravlenie)
                                .Include(n => n.otpravl).Include(k => k.poluch).ToList();
                }

                if (transfers.Count > 0)
                {
                    var acceptedTransfers = new List <WagonTransfer>();

                    using (var centralDB = new CtsDbContext())
                    {
                        using (var transaction = centralDB.Database.BeginTransaction())
                        {
                            foreach (var trans in transfers)
                            {
                                try
                                {
                                    var scale = GetCTSWagonScale(trans.scales.name, wagonScales);
                                    var item  = items.Where(x => x.Name == trans.gruz).FirstOrDefault();

                                    var transfer = new WagonTransfer()
                                    {
                                        ID = trans.id.ToString(),
                                        TransferTimeStamp = trans.date_time_brutto,
                                        LasEditDateTime   = DateTime.Now,
                                        OperatorName      = "DBSync",
                                        LotName           = trans.id_sostav.ToString() ?? "",
                                        SublotName        = trans.vagon_num ?? "",
                                        OrderNumber       = trans.nakladn ?? "",
                                        FromDestID        = trans.otpravl.name ?? "",
                                        ToDest            = trans.poluch.display_name ?? "",
                                        Tare         = (float)trans.ves_tara / 1000,
                                        Brutto       = (float)trans.ves_brutto / 1000,
                                        Netto        = (float)trans.ves_netto / 1000,
                                        NettoByOrder = (float)trans.ves_netto_docs / 1000,
                                        EquipID      = (scale != null) ? scale.ID : 1,
                                        ItemID       = (item != null) ? item.ID : 1,
                                        Direction    = trans.napravlenie.display_name ?? "",
                                        IsValid      = true,
                                        Status       = 0,
                                    };

                                    var vc       = new ValidationContext(transfer, null, null);
                                    var vResults = new List <ValidationResult>();
                                    var isValid  = Validator.TryValidateObject(transfer, vc, vResults, true);
                                    if (isValid && (transfer.SublotName != ""))
                                    {
                                        acceptedTransfers.Add(transfer);
                                        centralDB.WagonTransfers.AddOrUpdate(transfer);
                                        stringForLoggerAccepted = String.Concat(stringForLoggerAccepted, trans.id, ";");
                                    }
                                    else
                                    {
                                        stringForLoggerRejected = String.Concat(stringForLoggerRejected, trans.id, ";");
                                    }
                                }
                                catch (Exception)
                                {
                                    stringForLoggerWrong = String.Concat(stringForLoggerWrong, trans.id, ";");
                                }
                            }

                            centralDB.SaveChanges();
                            transaction.Commit();
                        }
                    }

                    using (var wagDB = new WagonDBcontext())
                    {
                        foreach (var t in acceptedTransfers)
                        {
                            var originalTransfer = wagDB.ves_vagon.Find(Int32.Parse(t.ID));
                            if (originalTransfer != null)
                            {
                                originalTransfer.sync = 1;
                                wagDB.Entry(originalTransfer).State = EntityState.Modified;
                            }
                        }

                        using (var transaction = wagDB.Database.BeginTransaction())
                        {
                            wagDB.SaveChanges();
                            transaction.Commit();
                        }
                    }
                }

                _logger.Trace(string.Format("Successfully Synchronized VesWagon: {0}", stringForLoggerAccepted));
                _logger.Trace(string.Format("Successfully Synchronized VesWagon, not accepted transfers: {0}", stringForLoggerRejected));
                _logger.Trace(string.Format("Successfully Synchronized VesWagon, transfers with wrong properties: {0}", stringForLoggerWrong));

                return(true);
            }
            catch (Exception ex)
            {
                _logger.Error("Unsuccess with SyncVesWagon");
                _logger.Error(ex.Message.ToString());

                return(false);
            }
        }
Esempio n. 6
0
        private void GetAsyncWagon(DateTime from_ts, DateTime to_ts)
        {
            try
            {
                List <WagonScale> wagonScales;
                List <Item>       items;

                using (CtsDbContext centralDB = new CtsDbContext())
                {
                    wagonScales = centralDB.WagonScales.Include(m => m.Location).ToList();
                    items       = centralDB.Items.Include(m => m.Location).ToList();
                }

                var transfer = new List <ves_vagon>();
                var accept   = new List <WagonTransfer>();

                using (var vesWagon = new WagonDBcontext())
                {
                    transfer = vesWagon.ves_vagon/*.Where(x => x.id_operator != null)*/
                               .Where(x => x.id_operator != 0)
                               .Where(x => x.sync != 1)
                               .Where(x => x.date_time_brutto >= from_ts)
                               .Where(x => x.date_time_brutto <= to_ts)
                               .Include(m => m.scales).DefaultIfEmpty()
                               .Include(h => h.napravlenie).DefaultIfEmpty()
                               .Include(n => n.otpravl).DefaultIfEmpty()
                               .Include(k => k.poluch).DefaultIfEmpty()
                               .ToList();
                }

                if (transfer.Count > 0)
                {
                    using (var centralDB = new CtsDbContext())
                    {
                        for (ves_vagon_records = transfer.Count;
                             ves_vagon_records > 0;
                             ves_vagon_records--)
                        {
                            ves_vagon trans = transfer[transfer.Count - ves_vagon_records];

                            if (trans != null)
                            {
                                var scale = GetCTSWagonScale(trans.scales.name, wagonScales);
                                var item  = items.Where(x => x.Name == trans.gruz).FirstOrDefault();

                                var transfers = new WagonTransfer()
                                {
                                    ID = trans.id.ToString(),
                                    TransferTimeStamp = trans.date_time_brutto,
                                    LasEditDateTime   = DateTime.Now,
                                    OperatorName      = "DBSync",
                                    LotName           = trans.id_sostav.ToString() == "" ? "???" : trans.id_sostav.ToString(),
                                    SublotName        = trans.vagon_num,
                                    OrderNumber       = trans.nakladn,
                                    Tare         = (float)trans.ves_tara / 1000,
                                    Brutto       = (float)trans.ves_brutto / 1000,
                                    Netto        = (float)trans.ves_netto / 1000,
                                    NettoByOrder = (float)trans.ves_netto_docs / 1000,
                                    EquipID      = (scale != null) ? scale.ID : 1,
                                    ItemID       = (item != null) ? item.ID : 1,
                                    Direction    = trans.napravlenie.display_name ?? "",
                                    IsValid      = true,
                                    Status       = 0
                                };

                                //if (trans.otpravl != null)
                                //{
                                //    transfers.FromDestID = (trans.otpravl.name == "0") ? "???" : trans.otpravl.name;
                                //}

                                //if (trans.poluch != null)
                                //{
                                //    transfers.ToDest = (trans.poluch.display_name == "0") ? "???" : trans.poluch.display_name;
                                //}

                                centralDB.WagonTransfers.AddOrUpdate(transfers);
                                centralDB.SaveChanges();

                                using (var wagDB = new WagonDBcontext())
                                {
                                    var originalTransfer = wagDB.ves_vagon.Find(Int32.Parse(transfers.ID));
                                    if (originalTransfer != null)
                                    {
                                        originalTransfer.sync = 1;
                                        wagDB.Entry(originalTransfer).State = EntityState.Modified;
                                    }
                                    wagDB.SaveChanges();
                                }
                            }
                        }
                    }
                }
            }
            catch (DbEntityValidationException ex)
            {
                foreach (var eve in ex.EntityValidationErrors)
                {
                    Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                      eve.Entry.Entity.GetType().Name, eve.Entry.State);
                    foreach (var ve in eve.ValidationErrors)
                    {
                        Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                          ve.PropertyName, ve.ErrorMessage);
                    }
                }
                throw;
            }
        }
Esempio n. 7
0
        private bool SyncWagonRecognition()
        {
            var recogns = new List <Recogn>();
            var nums    = new List <WagonNumsCache>();

            try
            {
                using (CtsDbContext centralDB = new CtsDbContext())
                {
                    try
                    {
                        recogns.AddRange(centralDB.Recogn.ToList()); //распознование
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }

                string timeDate = null;

                using (var wagDB = new WagonDBcontext())
                {
                    for (recognition_records = recogns.Count;
                         recognition_records > 0;
                         recognition_records--)
                    {
                        Recogn r = recogns[recogns.Count - recognition_records];

                        nums.AddRange(wagDB.vagon_nums.Where(x => x.recognid == r.ID).OrderByDescending(x => x.date_time).Take(50)
                                      .Select(x => new WagonNumsCache
                        {
                            ID              = x.id,
                            Date_time       = x.date_time,
                            RecognID        = x.recognid == null ? 123123123 : x.recognid,
                            Id_sostav       = x.id_sostav == null ? 123123123 : x.id_sostav,
                            Number          = x.number.Equals(null) ? "???" : x.number,
                            Number_operator = x.number_operator == null ? "???" : x.number_operator,
                            Id_operator     = x.id_operator == null ? 123123123 : x.id_operator,
                            Camera          = x.camera == null ? "???" : x.camera,
                        }).ToList());

                        timeDate = nums.Select(x => x.Date_time).ToString();
                    }
                }

                if (nums.Any())
                {
                    using (CtsDbContext centralDB = new CtsDbContext())
                    {
                        //using (var transaction = centralDB.Database.BeginTransaction())
                        //{
                        centralDB.WagonNumsCache.RemoveRange(centralDB.WagonNumsCache);
                        centralDB.WagonNumsCache.AddRange(nums);
                        centralDB.SaveChanges();
                        //    transaction.Commit();
                        //}
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }