/// <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); }