Exemplo n.º 1
0
 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,
     });
 }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
 /// <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)
 }
Exemplo n.º 4
0
 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);
     }
 }
Exemplo n.º 5
0
 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));
     }
 }
Exemplo n.º 6
0
        /// <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);// Ошибка
            }
        }
Exemplo n.º 7
0
        /// <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);// Ошибка
            }
        }