示例#1
0
        /// <summary>
        /// Перенос информации о составах защедших на АМКР по системе КИС (с проверкой на изменение натуральных листов)
        /// </summary>
        /// <returns></returns>
        public int CopyArrivalSostavToRailway(int day_control_add_natur)
        {
            int errors  = 0;
            int normals = 0;
            // список новых составов в системе КИС
            List <PromSostav> list_newsostav = new List <PromSostav>();
            // список уже перенесенных в RailWay составов в системе КИС (с учетом периода контроля dayControllingAddNatur)
            List <PromSostav> list_oldsostav = new List <PromSostav>();
            // список уже перенесенных в RailWay составов (с учетом периода контроля dayControllingAddNatur)
            List <Oracle_ArrivalSostav> list_arrivalsostav = new List <Oracle_ArrivalSostav>();

            try
            {
                // Считаем дату последненго состава
                DateTime?lastDT = oas.GetLastDateTime();
                if (lastDT != null)
                {
                    // Данные есть получим новые
                    list_newsostav     = pc.GetInputPromSostav(((DateTime)lastDT).AddSeconds(1), DateTime.Now, false).ToList();
                    list_oldsostav     = pc.GetInputPromSostav(((DateTime)lastDT).AddDays(day_control_add_natur * -1), ((DateTime)lastDT).AddSeconds(1), false).ToList();
                    list_arrivalsostav = oas.Get_ArrivalSostav(((DateTime)lastDT).AddDays(day_control_add_natur * -1), ((DateTime)lastDT).AddSeconds(1)).ToList();
                }
                else
                {
                    // Таблица пуста получим первый раз
                    list_newsostav = pc.GetInputPromSostav(DateTime.Now.AddDays(day_control_add_natur * -1), DateTime.Now, false).ToList();
                }
                // Переносим информацию по новым составам
                if (list_newsostav.Count() > 0)
                {
                    foreach (PromSostav ps in list_newsostav)
                    {
                        int res = SaveArrivalSostav(ps, statusSting.Normal);
                        if (res > 0)
                        {
                            normals++;
                        }
                        if (res < 1)
                        {
                            errors++;
                        }
                    }
                    LogRW.LogWarning(String.Format("Определено для переноса новых составов из базы данных КИС в таблицу учета прибытия составов на АМКР: {0}, перенесено {1}, ошибок переноса {2}", list_newsostav.Count(), normals, errors), this.eventID);
                }
                // Обновим информацию по составам которые были перенесены
                if (list_oldsostav.Count() > 0 & list_arrivalsostav.Count() > 0)
                {
                    List <PromSostav> list_ps = new List <PromSostav>();
                    list_ps = list_oldsostav;
                    List <Oracle_ArrivalSostav> list_as = new List <Oracle_ArrivalSostav>();
                    list_as = list_arrivalsostav.Where(a => a.Status != (int)statusSting.Delete).ToList();
                    DelExistArrivalSostav(ref list_ps, ref list_as);
                    int ins = InsertArrivalSostav(list_ps);
                    int del = DeleteArrivalSostav(list_as);
                    LogRW.LogWarning(String.Format("Определено для добавления {0}, добавлено {1}. Определено для удаления {2}, удалено {3}  в таблице учета прибытия составов из УЗ",
                                                   list_ps.Count(), ins, list_as.Count(), del), this.eventID);
                    normals += ins;
                }
            }
            catch (Exception e)
            {
                LogRW.LogError(String.Format("[KISTransfer.CopyArrivalSostavToRailway]: Ошибка, источник: {0}, № {1}, описание:  {2}", e.Source, e.HResult, e.Message), this.eventID);
                return(-1);
            }
            return(normals);
        }