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)); }
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); } }
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)); } }
public WagonDbService() { this.wagdb = new WagonDBcontext(); }
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); } }
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; } }
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); } }