Exemplo n.º 1
0
        public ActionResult SaveChanges(WagonTransfer model)
        {
            if (ModelState.IsValid)
            {
                WagonTransfer transfer = _cdb.WagonTransfers.Find(model.ID);
                transfer.IsValid           = true;
                transfer.Status            = 3;
                transfer.LasEditDateTime   = DateTime.Now;
                transfer.OperatorName      = User.Identity.Name;
                _cdb.Entry(transfer).State = EntityState.Modified;
                _cdb.SaveChanges();

                model.LasEditDateTime = DateTime.Now;
                model.IsValid         = false;
                model.Status          = 2;
                model.OperatorName    = User.Identity.Name;
                model.InheritedFrom   = model.ID;
                model.ID = "W" + model.EquipID + (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
                _cdb.WagonTransfers.Add(model);
                _cdb.SaveChanges();

                return(RedirectToAction("Index"));
            }
            GetDestinationsItemsAndScalesToVeiwBag();

            @ViewBag.Title = "Редактирование данных вагонных весов";
            return(View("Edit", model));
        }
Exemplo n.º 2
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);
            }
        }
Exemplo n.º 3
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;
            }
        }
Exemplo n.º 4
0
        public static void wagonTransfersEmul(int qntFrom, int qntTo,
                                              int bruttoFrom, int bruttoTo, int tareFrom, int tareTo)
        {
            try
            {
                WagonTransfer transfer = new WagonTransfer();
                var           bbb      = ldb.Locations.ToList();
                transfer.FromDestID = ldb.Locations.ToList()[rnd.Next(1, ldb.Locations.Count())].ID;

                //transfer.ToDestID = ldb.Locations.ToList()[rnd.Next(1, ldb.Locations.Count())].ID;

                //while (transfer.FromDestID == transfer.ToDestID)
                //{
                //  transfer.ToDestID = ldb.Locations.ToList()[rnd.Next(1, ldb.Locations.Count())].ID;
                //}

                if (transfer.FromDestID == "kuz")
                {
                    transfer.EquipID = 2;
                    transfer.ItemID  = 2;
                }
                else
                {
                    transfer.EquipID = 1;
                    transfer.ItemID  = 1;
                }

                transfer.ID = "W" + transfer.EquipID + (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
                transfer.TransferTimeStamp = DateTime.Now;
                transfer.LasEditDateTime   = DateTime.Now;
                transfer.LotName           = transfer.FromDestID + "_" + DateTime.Now.ToString("yyMMddHHmmss");
                transfer.IsValid           = true;
                transfer.OperatorName      = "emulator";

                int wagonQnt = rnd.Next(qntFrom, qntTo);
                for (int i = 0; i < wagonQnt; i++)
                {
                    WagonTransfer transfer1 = new WagonTransfer()
                    {
                        ID         = transfer.ID.Substring(0, 2) + (Int32.Parse(transfer.ID.Substring(2)) + i).ToString(),
                        Brutto     = rnd.Next(bruttoFrom, bruttoTo),
                        Tare       = rnd.Next(tareFrom, tareTo),
                        FromDestID = transfer.FromDestID,
                        //ToDestID = transfer.ToDestID,
                        IsValid           = transfer.IsValid,
                        LotName           = transfer.LotName,
                        OperatorName      = transfer.OperatorName,
                        LasEditDateTime   = transfer.LasEditDateTime,
                        TransferTimeStamp = transfer.TransferTimeStamp,
                        SublotName        = rnd.Next(100000, 999999).ToString(),
                        EquipID           = transfer.EquipID,
                        ItemID            = transfer.ItemID
                    };

                    ldb.WagonTransfers.Add(transfer1);

                    // Путь .\\Log
                    string pathToLog = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Log");
                    if (!Directory.Exists(pathToLog))
                    {
                        Directory.CreateDirectory(pathToLog); // Создаем директорию, если нужно
                    }
                    string filename = Path.Combine(pathToLog, string.Format("{0}_{1:dd.MM.yyy}.log",
                                                                            AppDomain.CurrentDomain.FriendlyName, DateTime.Now));
                    string fullText = string.Format("[{0:dd.MM.yyy HH:mm:ss.fff}] [{1}] [{2}]\r\n",
                                                    DateTime.Now, wagonQnt, transfer1.ID);

                    File.AppendAllText(filename, fullText, Encoding.GetEncoding("Windows-1251"));
                }

                ldb.SaveChanges();
            }
            catch (Exception ex)
            {
            }
        }