Exemple #1
0
        /// <summary>
        /// Поставить все составы из прибытия системы КИС (перечень составов берется из таблицы учета прибытия из внутренихстанций системы КИС)
        /// </summary>
        /// <returns></returns>
        public int PutInputSostavToStation()
        {
            IQueryable <Oracle_InputSostav> list_noClose = ois.GetInputSostavNoClose();

            if (list_noClose == null | list_noClose.Count() == 0)
            {
                return(0);
            }
            foreach (Oracle_InputSostav or_is in list_noClose.ToList())
            //TODO: .ToList() добавлен чтобы небыло ошибок
            //Дело в том, что функция Where(Function()...) возвращает результат типа Linq.IQueryable(), который создает транзакцию,
            // которая в свою очередь остается открытой на все время исполнения запроса — на весь цикл перебора. А вызов метода db.SaveChanges()
            // спытается открыть новую транзакцию, при открытой предыдущей и это вызывает исключение. Чтобы «завершить» открытую транзакцию необходимо привести результат
            // к «конечному» типу, например Array или List(Of ...). Для этого необходимо изменить код:
            {
                Oracle_InputSostav kis_inp_sostav = new Oracle_InputSostav();
                kis_inp_sostav = or_is;
                //Закрыть состав
                if (kis_inp_sostav.CountWagons != null & kis_inp_sostav.CountSetWagons != null & kis_inp_sostav.CountWagons == kis_inp_sostav.CountSetWagons)
                {
                    kis_inp_sostav.Close = DateTime.Now;
                    int res_close = ois.SaveOracle_InputSostav(kis_inp_sostav);
                }

                // Поставим состав на станции АМКР системы RailCars
                int res_put = transfer_rc.PutInputSostavToStation(ref kis_inp_sostav);
                //TODO: ВЫПОЛНИТЬ КОД: Поставим состав на станции АМКР системы RailWay

                //.............................
            }

            return(0); // TODO: исправить возврат
        }
Exemple #2
0
        public void Test_KIS_RC_Transfer_PutInputSostavToStation()
        {
            Oracle_InputSostav oris = ois.GetInputSostav(113);

            KIS_RC_Transfer kisrs = new KIS_RC_Transfer();
            int             res   = kisrs.PutInputSostavToStation(ref oris);

            Console.WriteLine("Обновлено {0}", res);
        }
Exemple #3
0
        /// <summary>
        /// Получить последнюю дату
        /// </summary>
        /// <returns></returns>
        public DateTime?GetLastDateTime()
        {
            Oracle_InputSostav ois = GetInputSostav().OrderByDescending(i => i.DateTime).FirstOrDefault();

            if (ois != null)
            {
                return(ois.DateTime);
            }
            return(null);
        }
Exemple #4
0
        /// <summary>
        /// Добавить или править
        /// </summary>
        /// <param name="Oracle_InputSostav"></param>
        /// <returns></returns>
        public int SaveOracle_InputSostav(Oracle_InputSostav Oracle_InputSostav)
        {
            Oracle_InputSostav dbEntry;

            if (Oracle_InputSostav.ID == 0)
            {
                dbEntry = new Oracle_InputSostav()
                {
                    ID                = 0,
                    DateTime          = Oracle_InputSostav.DateTime,
                    DocNum            = Oracle_InputSostav.DocNum,
                    IDOrcStationFrom  = Oracle_InputSostav.IDOrcStationFrom,
                    WayNumFrom        = Oracle_InputSostav.WayNumFrom,
                    NaprFrom          = Oracle_InputSostav.NaprFrom,
                    IDOrcStationOn    = Oracle_InputSostav.IDOrcStationOn,
                    CountWagons       = Oracle_InputSostav.CountWagons,
                    CountSetWagons    = Oracle_InputSostav.CountSetWagons,
                    CountUpdareWagons = Oracle_InputSostav.CountUpdareWagons,
                    Close             = Oracle_InputSostav.Close,
                    Status            = Oracle_InputSostav.Status,
                    Message           = Oracle_InputSostav.Message
                };
                context.Oracle_InputSostav.Add(dbEntry);
            }
            else
            {
                dbEntry = context.Oracle_InputSostav.Find(Oracle_InputSostav.ID);
                if (dbEntry != null)
                {
                    dbEntry.DateTime          = Oracle_InputSostav.DateTime;
                    dbEntry.DocNum            = Oracle_InputSostav.DocNum;
                    dbEntry.IDOrcStationFrom  = Oracle_InputSostav.IDOrcStationFrom;
                    dbEntry.WayNumFrom        = Oracle_InputSostav.WayNumFrom;
                    dbEntry.NaprFrom          = Oracle_InputSostav.NaprFrom;
                    dbEntry.IDOrcStationOn    = Oracle_InputSostav.IDOrcStationOn;
                    dbEntry.CountWagons       = Oracle_InputSostav.CountWagons;
                    dbEntry.CountSetWagons    = Oracle_InputSostav.CountSetWagons;
                    dbEntry.CountUpdareWagons = Oracle_InputSostav.CountUpdareWagons;
                    dbEntry.Close             = Oracle_InputSostav.Close;
                    dbEntry.Status            = Oracle_InputSostav.Status;
                    dbEntry.Message           = Oracle_InputSostav.Message;
                }
            }
            try
            {
                context.SaveChanges();
            }
            catch (Exception e)
            {
                LogRW.LogError(e, "SaveOracle_InputSostav", eventID);
                return(-1);
            }
            return(dbEntry.ID);
        }
Exemple #5
0
        /// <summary>
        /// Проверить изменения в количестве вагонов в составе
        /// </summary>
        /// <param name="o_is"></param>
        /// <param name="doc"></param>
        protected void CheckChangeExistInputSostav(Oracle_InputSostav o_is, int doc)
        {
            int count_vag = vc.GetCountSTPR1InStVag(doc);

            // Количество вагонов изменено
            if (o_is.CountWagons > 0 & count_vag > 0 & o_is.CountWagons != count_vag)
            {
                // Изменим количество вагонов и отправим на переустановку вагонов
                o_is.CountWagons = count_vag;
                o_is.Status      = (int)statusSting.Update;
                o_is.Close       = null;
                ois.SaveOracle_InputSostav(o_is);
            }
        }
Exemple #6
0
        /// <summary>
        ///  Удалить
        /// </summary>
        /// <param name="ID"></param>
        /// <returns></returns>
        public Oracle_InputSostav DeleteOracle_InputSostav(int ID)
        {
            Oracle_InputSostav dbEntry = context.Oracle_InputSostav.Find(ID);

            if (dbEntry != null)
            {
                context.Oracle_InputSostav.Remove(dbEntry);
                try
                {
                    context.SaveChanges();
                }
                catch (Exception e)
                {
                    LogRW.LogError(e, "DeleteOracle_InputSostav", eventID);
                    return(null);
                }
            }
            return(dbEntry);
        }
Exemple #7
0
 /// <summary>
 /// Добавить сохранить
 /// </summary>
 /// <param name="Oracle_InputSostav"></param>
 /// <returns></returns>
 public int SaveOracle_InputSostav(Oracle_InputSostav Oracle_InputSostav)
 {
     return(this.rep_is.SaveOracle_InputSostav(Oracle_InputSostav));
 }