public static ArrivalCars GetArrivalCars(this ArrivalCars c) { return(new ArrivalCars() { id = c.id, id_sostav = c.id_sostav, position = c.position, num = c.num, country_code = c.country_code, wight = c.wight, cargo_code = c.cargo_code, cargo = c.cargo, station_code = c.station_code, station = c.station, consignee = c.consignee, operation = c.operation, composition_index = c.composition_index, date_operation = c.date_operation, train = c.train, num_doc_arrived = c.num_doc_arrived, arrived = c.arrived, parent_id = c.parent_id, user_name = c.user_name, }); }
/// <summary> /// Правка разметки по прибытию /// </summary> /// <param name="id_arrival_cars"></param> /// <param name="id_condition"></param> /// <param name="id_type"></param> /// <param name="date_rem_vag"></param> /// <param name="user"></param> /// <returns></returns> public OperationResultWagon OperationUpdateWagonMarking(int id_arrival_cars, int id_condition, int?id_type, DateTime?date_rem_vag, string user) { OperationResultWagon result = new OperationResultWagon(); try { EFDbContext context = new EFDbContext(); // Получим строку вагона в прибытии ArrivalCars arr_cars = context.ArrivalCars.Where(c => c.id == id_arrival_cars).FirstOrDefault(); if (arr_cars != null) { result.SetResultOperation(OperationUpdateWagonMarking(ref context, arr_cars, id_condition, id_type, date_rem_vag, user), arr_cars.num); // Если нет ошибок тогда обновим базу if (result.error == 0) { result.SetResult(context.SaveChanges()); } else { result.SetResult((int)errors_base.cancel_save_changes); // Ошибка изменение было отменено } } else { result.SetResult((int)errors_base.not_arrival_cars_db); // Ошибка, нет записи вагона по прибытию } } catch (Exception e) { e.ExceptionMethodLog(String.Format("OperationUpdateWagonMarking(id_arrival_cars={0}, id_condition ={1}, id_type={2}, date_rem_vag ={3}, user={4})", id_arrival_cars, id_condition, id_type, date_rem_vag, user), servece_owner, this.eventID); result.SetResult((int)errors_base.global);// Ошибка нет списка id } return(result); }
/// <summary> /// Поставить вагон в систему ИДС /// </summary> public void IDS_WIR_IncomingWagon() { IDS_WIR ids = new IDS_WIR(service.Test); EFDbContext context = new EFDbContext(); EFArrivalCars ef_car = new EFArrivalCars(new EFDbContext()); ArrivalCars wagon = ef_car.Context.Where(c => c.id == 1120017).FirstOrDefault(); int result = ids.IncomingWagon(ref context, 6, 109, new DateTime(2021, 08, 30, 15, 50, 00), 113, wagon, @"EUROPE\ealevchenko"); int res_sava = context.SaveChanges(); //Ошибка выполнения метода IncomingWagon(context=EFIDS.Concrete.EFDbContext, id_station=6, id_way=109, date_start=30.08.2021 15:50:00, position=113, wagon=System.Data.Entity.DynamicProxies.ArrivalCars_274B60BC2D59FA04CEDD4289498D58C1EE9453D9D01127990A0A0D4D3044D283, user=EUROPE\svnovikova) }
public long PutArrivalCars(long id, [FromBody] ArrivalCars value) { try { this.ef_ids.Update(value); int res = this.ef_ids.Save(); return(res > 0 ? value.id : res); } catch (Exception e) { return(-1); } }
public IHttpActionResult GetArrivalCars(long id) { try { ArrivalCars cars = this.ef_ids .Context .Where(s => s.id == id) .ToList() //.Select(c => c.GetArrivalCars()).FirstOrDefault(); .Select(c => c.GetArrivalCars_ArrivalSostav()).FirstOrDefault(); return(Ok(cars)); } catch (Exception e) { return(BadRequest(e.Message)); } }
/// <summary> /// Обновить информацию по всем входящим поставкам по указаному вагону /// </summary> /// <param name="context"></param> /// <param name="list_cargo"></param> /// <param name="num"></param> /// <param name="gr_sap_is"></param> /// <param name="user"></param> /// <returns></returns> public ResultUpdateID UpdateIncomingSupply(ref EFDbContext context, List <int> list_cargo, int num, List <SAPIncomingSupply> gr_sap_is, string user) { ResultUpdateID result = new ResultUpdateID(0); try { if (context == null) { context = new EFDbContext(); } // Проверим и скорректируем пользователя if (String.IsNullOrWhiteSpace(user)) { user = System.Environment.UserDomainName + @"\" + System.Environment.UserName; } EFSAPIncomingSupply ef_sap = new EFSAPIncomingSupply(context); EFArrivalCars ef_ac = new EFArrivalCars(context); EFArrival_UZ_Vagon ef_uz_vag = new EFArrival_UZ_Vagon(context); // Определим количество вх. поставок по указаному вагону int count_is = gr_sap_is.Count(); // Пройдемся по всем записям вх пост. отсортированых по возрастанию (последняя актуальная) foreach (SAPIncomingSupply sap in gr_sap_is.OrderBy(w => w.id).ToList()) { // Это последняя запись (или единственная) if (count_is == 1) { // Это Актуальная запиь ArrivalCars car = ef_ac.Context.Where(c => c.id == sap.id_arrival_car).FirstOrDefault(); if (car != null) { Arrival_UZ_Vagon uz_vag = ef_uz_vag.Context.Where(c => c.id == car.id_arrival_uz_vagon).FirstOrDefault(); if (uz_vag != null) { // Определить вагон на территории АМКР WagonInternalRoutes last_wir = context.GetLastWagon(num); if (last_wir != null && last_wir.close == null) { // Вагон на территории АМКР // Проверим на груз int id_cargo = list_cargo.ToList().Find(x => x == uz_vag.id_cargo); if (id_cargo == 0) { // Обновить SAPIncomingSupply sap_up = GetUpdateIncomingSupplyOfWebSAP(sap, user); // Обновим запись ef_sap.Update(sap_up); result.SetUpdateResult(1, sap_up.id); // Ок } else { // Закрыть этот вагон, по грузу sap.note = "Строка закрыта по данному грузу не формируется входящая поставка"; sap.close = DateTime.Now; sap.close_user = user; // Обновим запись ef_sap.Update(sap); //result.AddClose(); result.SetCloseResult(1, sap.id); // Ок } } else { // Закрыть это вагон вагон за территорией АМКР sap.note = "Строка закрыта, вагона нет на территории АМКР"; sap.close = DateTime.Now; sap.close_user = user; // Обновим запись ef_sap.Update(sap); //result.AddClose(); result.SetCloseResult(1, sap.id); // Ок } } else { DateTime limit_data = DateTime.Now.AddDays(-1 * this.day_approach_limit); // Проверка на время ожидания с подходов. if (sap.create >= limit_data) { // Вагон на подходах и лимит времени не прошол // Обновить SAPIncomingSupply sap_up = GetUpdateIncomingSupplyOfWebSAP(sap, user); // Обновим запись sap.note = "Вагон на подходах"; ef_sap.Update(sap_up); result.SetUpdateResult(1, sap_up.id); // Ок } else { // Вагон не принят, закрыть sap.note = "Строка закрыта, вагон не принят на АМКР"; sap.close = DateTime.Now; sap.close_user = user; // Обновим запись ef_sap.Update(sap); //result.AddClose(); result.SetCloseResult(1, sap.id); // Ок } } } else { result.SetResult((int)errors_base.not_arrival_cars_db); // Ошибка и выход } } else { // Закроем запись это старая sap.note = "Строка закрыта, запись не актуальная"; sap.close = DateTime.Now; sap.close_user = user; // Обновим запись ef_sap.Update(sap); //result.AddClose(); result.SetCloseResult(1, sap.id); // Ок } count_is--; } // Обновим в базе if (result.error == 0 && result.result == 0) { // Если без ошибок, тогда записываем результат применения result.SetResult(context.SaveChanges()); } return(result); } catch (Exception e) { e.ExceptionMethodLog(String.Format("UpdateIncomingSupply(context = {0}, list_cargo = {1}, num = {2}, gr_sap_is = {3}, user = {4})", context, list_cargo, num, gr_sap_is, user), servece_owner, eventID); result.SetResult((int)errors_base.global); return(result);// Ошибка } }
/// <summary> /// Правка разметки по прибытию /// </summary> /// <param name="context"></param> /// <param name="arr_cars"></param> /// <param name="id_condition"></param> /// <param name="id_type"></param> /// <param name="date_rem_vag"></param> /// <param name="user"></param> /// <returns></returns> public int OperationUpdateWagonMarking(ref EFDbContext context, ArrivalCars arr_cars, int id_condition, int?id_type, DateTime?date_rem_vag, string user) { try { // Проверка контекста if (context == null) { context = new EFDbContext(); } // Проверим и скорректируем пользователя if (String.IsNullOrWhiteSpace(user)) { user = System.Environment.UserDomainName + @"\" + System.Environment.UserName; } // Определим наличие вагона в прибытии if (arr_cars == null) { return((int)errors_base.not_arrival_cars_db); // Ошибка, нет записи вагона по прибытию } // if (arr_cars.id_arrival_uz_vagon == null) { return((int)errors_base.not_arrival_uz_vagon); //Ошибка, нет сылки на документ прибывшего вагона } // Получим контекст список документов на принятые вагоны EFArrival_UZ_Vagon ef_arr_uz_vag = new EFArrival_UZ_Vagon(context); // Получим запись документа принятого вагона Arrival_UZ_Vagon arr_uz_vag = ef_arr_uz_vag.Context.Where(v => v.id == arr_cars.id_arrival_uz_vagon).FirstOrDefault(); if (arr_uz_vag == null) { return((int)errors_base.not_arrival_uz_vagon); //Ошибка, нет записи документа прибывшего вагона } // Получим контекст справочник вагонов EFDirectory_Wagons ef_dir_wag = new EFDirectory_Wagons(context); // Получим запись вагона из справочника Directory_Wagons wagon = ef_dir_wag.Context.Where(w => w.num == arr_uz_vag.num).FirstOrDefault(); if (wagon == null) { return((int)errors_base.not_dir_wagon_of_db); // Указаного вагона нет в базе } // Получим контекст Внутренего перемещения EFWagonInternalRoutes ef_wir = new EFWagonInternalRoutes(context); WagonInternalRoutes wir = ef_wir.Context.Where(r => r.id_arrival_car == arr_cars.id).FirstOrDefault(); if (wir == null) { return((int)errors_base.not_wir_db); // Ошибка, нет записи внутренего перемещения вагона } // Найдем первую запись WagonInternalOperation first_wio = wir.WagonInternalOperation.Where(o => o.parent_id == null).OrderBy(o => o.id).FirstOrDefault(); if (first_wio == null) { return((int)errors_base.not_wio_db); // Ошибка, нет записи операций внутренего перемещения вагона } int id_condition_first = first_wio.id_condition; // Определим все записи List <WagonInternalOperation> list_wio = wir.WagonInternalOperation.OrderBy(o => o.id).ToList(); // Обновим годность по внутренему перемещению foreach (WagonInternalOperation wio in list_wio) { if (wio.id_condition == id_condition_first) { wio.id_condition = id_condition; } else { break; // Дрогая годность выйти изцикла } } ef_wir.Update(wir); // Запись документа есть правим тип и годность по прибытию arr_uz_vag.id_condition = id_condition; arr_uz_vag.id_type = id_type; ef_arr_uz_vag.Update(arr_uz_vag); // Запись справочника есть, правим дату ремонта wagon.date_rem_vag = date_rem_vag; ef_dir_wag.Update(wagon); return(1); } catch (Exception e) { e.ExceptionMethodLog(String.Format("OperationUpdateWagonMarking(context={0}, arr_cars={1}, id_condition ={2}, id_type={3}, date_rem_vag ={4}, user={5})", context, arr_cars, id_condition, id_type, date_rem_vag, user), servece_owner, this.eventID); return((int)errors_base.global);// Ошибка } }