示例#1
0
        /// <summary>
        /// Получить пакет данных trSostav
        /// </summary>
        /// <param name="id_sostav"></param>
        /// <returns></returns>
        public trSostav GetSostav(int id_sostav)
        {
            // Определим класс данных состав
            MTSostav sost = mtc.Get_MTSostav(id_sostav);
            // Определим код станции по справочникам
            int?codecs_in   = refRW.GetCodeCSStations(int.Parse(sost.CompositionIndex.Substring(9, 4)) * 10);
            int?codecs_from = refRW.GetCodeCSStations(int.Parse(sost.CompositionIndex.Substring(0, 4)) * 10);
            // Определим класс данных вагоны
            List <trWagon> list_wag = new List <trWagon>();

            list_wag = GetListWagonInArrival(mtc.Get_MTListToSostav(id_sostav), codecs_in, mtc.GetMTConsignee(tMTConsignee.AMKR));
            List <MTSostav> list_mt = mtc.GetOperationMTSostavDestinct(sost.IDMTSostav);
            trSostav        sostav  = new trSostav()
            {
                id = sost.IDMTSostav,
                codecs_in_station   = codecs_in,
                codecs_from_station = codecs_from,
                //FileName = sost.FileName,
                //CompositionIndex = sost.CompositionIndex,
                DateTime_on   = list_mt.Count > 0 ? list_mt.Last().DateTime : sost.DateTime,
                DateTime_from = sost.DateTime,
                //Operation = sost.Operation,
                //Create = sost.Create,
                //Close = sost.Close,
                ParentID = sost.ParentID,
                Wagons   = list_wag != null?list_wag.ToArray() : null,
            };

            return(sostav);
        }
示例#2
0
        /// <summary>
        /// Определить наличие состава
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        public bool IsExistSostav(string file)
        {
            MTSostav sostav = rep_MT.MTSostav.Where(s => s.FileName == file).FirstOrDefault();

            if (sostav != null)
            {
                return(true);
            }
            return(false);
        }
示例#3
0
        /// <summary>
        /// Получить цепочку операций для состава
        /// </summary>
        /// <param name="list"></param>
        /// <param name="id_sostav"></param>
        protected void GetOperationMTSostav(ref List <MTSostav> list, int id_sostav)
        {
            MTSostav sostav = GetMTSostavOfParentID(id_sostav);

            if (sostav != null)
            {
                list.Add(sostav);
                GetOperationMTSostav(ref list, sostav.IDMTSostav);
            }
        }
示例#4
0
        /// <summary>
        /// Удалить состав
        /// </summary>
        /// <param name="IDMTSostav"></param>
        /// <returns></returns>
        public MTSostav DeleteMTSostav(int IDMTSostav)
        {
            MTSostav dbEntry = context_edit.MTSostav.Find(IDMTSostav);

            if (dbEntry != null)
            {
                context_edit.MTSostav.Remove(dbEntry);
                context_edit.SaveChanges();
            }
            return(dbEntry);
        }
示例#5
0
        /// <summary>
        /// Получить список операций для состава
        /// </summary>
        /// <param name="id_sostav"></param>
        /// <returns></returns>
        public List <MTSostav> GetOperationMTSostav(int id_sostav)
        {
            List <MTSostav> list   = new List <MTSostav>();
            MTSostav        sostav = Get_MTSostav(id_sostav);

            if (sostav != null)
            {
                list.Add(sostav);
                GetOperationMTSostav(ref list, id_sostav);
            }
            return(list);
        }
示例#6
0
        /// <summary>
        /// Получить список операций для состава от последней к первой
        /// </summary>
        /// <param name="list"></param>
        /// <param name="id_sostav"></param>
        protected void GetOperationMTSostavDestinct(ref List <MTSostav> list, int id_sostav)
        {
            MTSostav sostav = Get_MTSostav(id_sostav);

            if (sostav != null)
            {
                list.Add(sostav);
                if (sostav.ParentID != null)
                {
                    GetOperationMTSostavDestinct(ref list, (int)sostav.ParentID);
                }
            }
        }
示例#7
0
        /// <summary>
        /// Получить список операций для состава от последней к первой
        /// </summary>
        /// <param name="id_sostav"></param>
        /// <returns></returns>
        public List <MTSostav> GetOperationMTSostavDestinct(int id_sostav)
        {
            List <MTSostav> list   = new List <MTSostav>();
            MTSostav        sostav = Get_MTSostav(id_sostav);

            if (sostav != null)
            {
                list.Add(sostav);
                if (sostav.ParentID != null)
                {
                    GetOperationMTSostavDestinct(ref list, (int)sostav.ParentID);
                }
            }
            return(list);
        }
示例#8
0
        /// <summary>
        /// Добавить или править состав
        /// </summary>
        /// <param name="mtsostav"></param>
        /// <returns></returns>
        public int SaveMTSostav(MTSostav mtsostav)
        {
            MTSostav dbEntry;

            if (mtsostav.IDMTSostav == 0)
            {
                dbEntry = new MTSostav()
                {
                    FileName         = mtsostav.FileName,
                    CompositionIndex = mtsostav.CompositionIndex,
                    DateTime         = mtsostav.DateTime,
                    Operation        = mtsostav.Operation,
                    Create           = mtsostav.Create,
                    Close            = mtsostav.Close,
                    ParentID         = mtsostav.ParentID
                };
                context_edit.MTSostav.Add(dbEntry);
            }
            else
            {
                dbEntry = context_edit.MTSostav.Find(mtsostav.IDMTSostav);
                if (dbEntry != null)
                {
                    dbEntry.FileName         = mtsostav.FileName;
                    dbEntry.CompositionIndex = mtsostav.CompositionIndex;
                    dbEntry.DateTime         = mtsostav.DateTime;
                    dbEntry.Operation        = mtsostav.Operation;
                    dbEntry.Create           = mtsostav.Create;
                    dbEntry.Close            = mtsostav.Close;
                    dbEntry.ParentID         = mtsostav.ParentID;
                }
            }
            try
            {
                context_edit.SaveChanges();
            }
            catch (Exception e)
            {
                return(-1);
            }
            return(dbEntry.IDMTSostav);
        }
示例#9
0
        /// <summary>
        /// Перенести xml-файлы из указанной папки в таблицы MT
        /// </summary>
        /// <param name="fromPath"></param>
        /// <param name="delete_file"></param>
        /// <returns></returns>
        public int Transfer(string fromPath, bool delete_file)
        {
            if (!Directory.Exists(fromPath))
            {
                LogRW.LogError(String.Format("[MT.Transfer] :Указанного пути {0} с xml-файлами не существует.", fromPath), this.eventID);
                return(0);
            }
            int countCopy   = 0;
            int countExist  = 0;
            int countError  = 0;
            int countDelete = 0;

            string[] files = Directory.GetFiles(fromPath, "*.xml");
            if (files == null | files.Count() == 0)
            {
                return(0);
            }
            LogRW.LogInformation(String.Format("Определенно {0} xml-файлов для копирования", files.Count()), this.eventID);
            List <FileSostav> list_sostav = GetFileSostav(files);
            var listFileSostavs           = from c in list_sostav.OrderBy(c => c.Date).ThenBy(c => c.Index).ThenBy(c => c.Operation)
                                            select new { c.Index, c.Date, c.Operation, c.File };

            // Пройдемся по списку
            foreach (var fs in listFileSostavs)
            {
                try
                {
                    // защита от записи повторов
                    FileInfo fi         = new FileInfo(fs.File);
                    MTSostav exs_sostav = mtc.Get_MTSostavToFile(fi.Name);
                    if (exs_sostav == null)
                    {
                        int?ParentIDSostav;
                        // получить не закрытый состав
                        //MTSostav no_close_sostav = mtc.Get_NoCloseMTSostav(fs.Index, fs.Date);
                        MTSostav no_close_sostav = mtc.Get_NoCloseMTSostav(fs.Index, fs.Date, this.dayMonitoringTrains); // Включил режим ограничения по времени dayMonitoringTrains
                        ParentIDSostav = null;
                        if (no_close_sostav != null)
                        {
                            //// TODO: !УБРАЛ дополнительная проверка совпадение по поездам и включил режим ограничения по времени dayMonitoringTrains(разные поезда двигают один состав) дополнительная проверка совпадение по поездам
                            //int? TrainNumber = mtc.GetTrainNumberToSostav(no_close_sostav.IDMTSostav);
                            //int TrainNumber_xml = GetTrainNumberToXml(fs.File);
                            //if (TrainNumber == TrainNumber_xml)
                            {
                                ParentIDSostav = no_close_sostav.IDMTSostav;
                                // Закрыть состав
                                no_close_sostav.Close = DateTime.Now;
                                mtc.SaveMTSostav(no_close_sostav);
                            }
                        }
                        MTSostav new_sostav = new MTSostav()
                        {
                            FileName         = fi.Name,
                            CompositionIndex = fs.Index,
                            DateTime         = fs.Date,
                            Operation        = fs.Operation,
                            Create           = DateTime.Now,
                            Close            = null,
                            ParentID         = ParentIDSostav
                        };

                        int new_id = mtc.SaveMTSostav(new_sostav);
                        if (delete_file & SaveWagons(new_id, fs.File, ref countCopy, ref countError))
                        {
                            File.Delete(fs.File);
                            countDelete++;
                        }
                    }
                    else
                    {
                        if (!mtc.IsMTListToMTSostsv(exs_sostav.IDMTSostav))
                        {
                            if (delete_file & SaveWagons(exs_sostav.IDMTSostav, fs.File, ref countCopy, ref countError))
                            {
                                File.Delete(fs.File);
                                countDelete++;
                            }
                        }
                        else
                        {
                            // Файл перенесен ранеее, удалим его если это требуется
                            if (delete_file)
                            {
                                string file = fs.File;
                                File.Delete(file);
                                countDelete++;
                            }
                        }
                        countExist++;
                    }
                }
                catch (Exception e)
                {
                    LogRW.LogError(String.Format("[MT.Transfer] :Ошибка переноса xml-файла в БД Railway, файл {0}. Подробно: (Источник:{1}, Код:{2}, Описание:{3})", fs.File, e.Source, e.HResult, e.Message), this.eventID);
                    countError++;
                }
            }
            LogRW.LogInformation(String.Format("Перенос xml-файлов в БД RailWay завершен, определено для переноса {0} xml-файлов, перенесено {1}, были перенесены ранее {2}, ошибки при переносе {3}, удаленно {4}.", files.Count(), countCopy, countExist, countError, countDelete), this.eventID);
            return(files.Count());
        }
示例#10
0
 private int ArrivalToRailWay(int id_sostav)
 {
     try
     {
         KIS_RC_Transfer  rc_transfer = new KIS_RC_Transfer(); // Перенос в системе RailCars
         KIS_RW_Transfer  rw_transfer = new KIS_RW_Transfer(); // Перенос в системе RailWay
         MTContent        mtc         = new MTContent();
         ReferenceRailway refRW       = new ReferenceRailway();
         SAP_Transfer     saptr       = new SAP_Transfer();
         // Определим класс данных состав
         MTSostav sost = mtc.Get_MTSostav(id_sostav);
         // Определим код станции по справочникам
         int?codecs_in   = refRW.GetCodeCSStations(int.Parse(sost.CompositionIndex.Substring(9, 4)) * 10);
         int?codecs_from = refRW.GetCodeCSStations(int.Parse(sost.CompositionIndex.Substring(0, 4)) * 10);
         // Определим класс данных вагоны
         List <trWagon> list_wag = new List <trWagon>();
         list_wag = GetListWagonInArrival(mtc.Get_MTListToSostav(id_sostav), codecs_in, mtc.GetMTConsignee(tMTConsignee.AMKR));
         trSostav sostav = new trSostav()
         {
             id = sost.IDMTSostav,
             codecs_in_station   = codecs_in,
             codecs_from_station = codecs_from,
             //FileName = sost.FileName,
             //CompositionIndex = sost.CompositionIndex,
             DateTime_from = sost.DateTime,
             //Operation = sost.Operation,
             //Create = sost.Create,
             //Close = sost.Close,
             ParentID = sost.ParentID,
             Wagons   = list_wag != null?list_wag.ToArray() : null,
         };
         // Поставим вагоны в систему RailCars
         int res_arc;
         try
         {
             //res_arc = rc_transfer.PutInArrival(sostav);
             res_arc = saptr.PutInSapIncomingSupply(sostav);
             if (res_arc < 0)
             {
                 //LogRW.LogError(String.Format("[MT.ArrivalToRailWay] :Ошибка переноса состава в прибытие системы RailCars, состав: {0}, код ошибки: {1}.", sostav.id, res_arc), this.eventID);
             }
         }
         catch (Exception e)
         {
             //LogRW.LogError(String.Format("[MT.ArrivalToRailWay] :Ошибка переноса состава в прибытие системы RailCars, состав: {0}. Подробно: (источник: {1}, № {2}, описание:  {3})", sostav.id, e.Source, e.HResult, e.Message), this.eventID);
             res_arc = -1;
         }
         // Поставим вагоны в систему RailWay
         // TODO: Выполнить код постановки вагонов в систему RailWay (прибытие из КР)
         // ..................
     }
     catch (AggregateException agex)
     {
         agex.Handle(ex =>
         {
             //LogRW.LogError(String.Format("[MT.ArrivalToRailWay]: Общая ошибка переноса состава в прибытие системы RailWay (источник: {0}, № {1}, описание:  {2})", ex.Source, ex.HResult, ex.Message), this.eventID);
             return(true);
         });
         return(-1);
     }
     return(0);//TODO: исправить возврат
 }
示例#11
0
        public void Read_Sostav()
        {
            // Arrange - create the mock repository
            mock_mt.Setup(m => m.MTSostav).Returns(new MTSostav[] {
                new MTSostav()
                {
                    IDMTSostav       = 1,
                    FileName         = "regl_8701-058-4670_2016082212254.xml",
                    CompositionIndex = "8701-058-4670",
                    DateTime         = DateTime.Parse("2016-08-22 12:25:00.000"),
                    Operation        = 1,
                    Create           = DateTime.Parse("2016-09-07 15:07:45.000"),
                    Close            = DateTime.Parse("2016-09-07 15:07:45.697"),
                    ParentID         = null
                },
                new MTSostav()
                {
                    IDMTSostav       = 2,
                    FileName         = "regl_8701-058-4670_2016082212353.xml",
                    CompositionIndex = "8701-058-4670",
                    DateTime         = DateTime.Parse("2016-08-22 12:35:00.000"),
                    Operation        = 2,
                    Create           = DateTime.Parse("2016-09-07 15:07:45.000"),
                    Close            = null,
                    ParentID         = 1
                },
                new MTSostav()
                {
                    IDMTSostav       = 3,
                    FileName         = "regl_4670-731-4672_2016082214000.xml",
                    CompositionIndex = "4670-731-4672",
                    DateTime         = DateTime.Parse("2016-08-22 14:00:00.000"),
                    Operation        = 1,
                    Create           = DateTime.Parse("2016-09-07 15:07:46.000"),
                    Close            = null,
                    ParentID         = null
                },
            }.AsQueryable());

            // Arrange - create the controller
            MTContent target = new MTContent(mock_mt.Object);

            // Act
            // Проверка
            MTSostav        mts      = target.Get_MTSostav(1);
            MTSostav        mts_null = target.Get_MTSostav(0);
            List <MTSostav> list_ci  = target.Get_MTSostav("8701-058-4670").ToList();
            List <MTSostav> list_all = target.Get_MTSostav().ToList();

            bool sostav_exist     = target.IsExistSostav("regl_8701-058-4670_2016082212353.xml");
            bool sostav_not_exist = target.IsExistSostav("1regl_8701-058-4670_2016082212353.xml");

            MTSostav mts_notClose      = target.Get_NoCloseMTSostav("8701-058-4670", DateTime.Parse("2016-08-23 12:35:00.000"));
            MTSostav mts_notClose_null = target.Get_NoCloseMTSostav("8701-058-4670", DateTime.Parse("2016-08-21 12:35:00.000"));

            // Assert
            //
            Assert.AreEqual("regl_8701-058-4670_2016082212254.xml", mts.FileName);
            Assert.AreEqual("8701-058-4670", mts.CompositionIndex);
            Assert.AreEqual("2016-08-22 12:25:00.000", mts.DateTime.ToString("yyyy-MM-dd HH:mm:ss.000"));
            Assert.AreEqual(1, mts.Operation);
            Assert.AreEqual("2016-09-07 15:07:45.000", mts.Create.ToString("yyyy-MM-dd HH:mm:ss.000"));
            Assert.AreEqual("2016-09-07 15:07:45.697", ((DateTime)mts.Close).ToString("yyyy-MM-dd HH:mm:ss.697"));
            Assert.AreEqual(null, mts.ParentID);
            Assert.AreEqual(null, mts_null);

            Assert.AreEqual(2, list_ci.Count());
            Assert.AreEqual(1, list_ci[0].IDMTSostav);
            Assert.AreEqual(2, list_ci[1].IDMTSostav);
            Assert.AreEqual(3, list_all.Count());
            Assert.AreEqual(true, sostav_exist);
            Assert.AreEqual(false, sostav_not_exist);

            Assert.AreEqual(2, mts_notClose.IDMTSostav);
            Assert.AreEqual(null, mts_notClose_null);
        }
示例#12
0
 /// <summary>
 /// Добавить или править состав
 /// </summary>
 /// <param name="mtsostav"></param>
 /// <returns></returns>
 public int SaveMTSostav(MTSostav mtsostav)
 {
     return(rep_MT.SaveMTSostav(mtsostav));
 }