Пример #1
0
        /// <summary>
        /// Выполнить сервис "Обновить все текущие входяшие поставки"
        /// </summary>
        /// <param name="list_cargo"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public int UpdateListIncomingSupply(List <int> list_cargo, string user)
        {
            try
            {
                DateTime          start = DateTime.Now;
                ResultUpdateWagon res   = new ResultUpdateWagon(0);
                // Проверим и скорректируем пользователя
                if (String.IsNullOrWhiteSpace(user))
                {
                    user = System.Environment.UserDomainName + @"\" + System.Environment.UserName;
                }

                EFDbContext context = new EFDbContext();

                // Обновим вагоны
                res = UpdateListIncomingSupply(ref context, list_cargo, user);
                // Если операция успешна, перенумеруем позиции на пути с которого ушли вагоны
                if (res.error == 0)
                {
                    res.SetResult(context.SaveChanges());
                }
                string mess = String.Format("Операция обновления информации входящей поставки на вагоны. Код выполнения = {0}. Результат обновления [определено {1} вагонов, обновлено {2}, пропущено {3}, закрыто строк {4}, ошибок обновления {5}].",
                                            res.result, res.count, res.update, res.skip, res.close, res.error);
                mess.WarningLog(servece_owner, eventID);
                mess.EventLog(res.result < 0 ? EventStatus.Error : EventStatus.Ok, servece_owner, eventID);
                DateTime stop = DateTime.Now;
                servece_owner.ServicesToLog(eventID, String.Format("Операция обновления входящей поставки"), start, stop, res.result);
                return(res.result);
            }
            catch (Exception e)
            {
                e.ExceptionMethodLog(String.Format("UpdateListIncomingSupply(list_cargo = {0}, user = {1})", list_cargo, user), servece_owner, eventID);
                return(-1);// Возвращаем id=-1 , Ошибка
            }
        }
Пример #2
0
        /// <summary>
        /// Сгруппировать входящие поставки по номерам вагонов и обновить информацию по всем входящим поставкам по кждому вагону
        /// </summary>
        /// <param name="context"></param>
        /// <param name="list_cargo"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public ResultUpdateWagon UpdateListIncomingSupply(ref EFDbContext context, List <int> list_cargo, string user)
        {
            ResultUpdateWagon result = new ResultUpdateWagon(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);

                List <IGrouping <int, SAPIncomingSupply> > group_sap_is = ef_sap
                                                                          .Context
                                                                          .Where(s => s.close == null)
                                                                          .ToList()
                                                                          .GroupBy(g => g.num)
                                                                          .ToList();

                // Определим количество
                result.count = group_sap_is.Count();
                int count_wag = result.count;
                foreach (IGrouping <int, SAPIncomingSupply> gr_sap_is in group_sap_is.ToList())
                {
                    // Номер вагона
                    int num = gr_sap_is.Key;
                    //Console.WriteLine("Обрабатываю вагон №{0}, Кол. вх. пост. = {1}, уже ошибок = {2}.", num, gr_sap_is.Count(), result.error);
                    ResultUpdateID res_wag = UpdateIncomingSupply(ref context, list_cargo, num, gr_sap_is.OrderBy(w => w.id).ToList(), user);
                    result.SetUpdateResult(res_wag.result, num);
                    result.close += res_wag.close;
                    result.skip  += res_wag.skip;
                    string mess = String.Format("Обработал вагон №{0}, Код выполнения={1}. Осталось обработать={2}", num, res_wag.result, count_wag--);
                    if (res_wag.result >= 0)
                    {
                        mess.InformationLog(servece_owner, eventID);
                    }
                    else
                    {
                        mess.ErrorLog(servece_owner, eventID);
                    }

                    //Console.WriteLine("Обработал вагон №{0}, Код выполнения = {1}. Осталось обработать = {2}", num, res_wag.result, count_wag--);
                }
                return(result);
            }
            catch (Exception e)
            {
                e.ExceptionMethodLog(String.Format("UpdateListIncomingSupply(context = {0}, list_cargo = {1}, user = {2})", context, list_cargo, user), servece_owner, eventID);
                result.SetResult((int)errors_base.global);
                return(result);// Ошибка
            }
        }
Пример #3
0
        /// <summary>
        /// Обновим САП Входящие поставки
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public int UpdateSAPOutgoingSupply(string user)
        {
            try
            {
                DateTime          start = DateTime.Now;
                ResultUpdateWagon res   = new ResultUpdateWagon(0);
                // Проверим и скорректируем пользователя
                if (String.IsNullOrWhiteSpace(user))
                {
                    user = System.Environment.UserDomainName + @"\" + System.Environment.UserName;
                }

                EFDbContext context = new EFDbContext();

                EFOut_Supply ef_out_sypp = new EFOut_Supply(context);


                string sql = "select * from [IDS].[get_view_wagons_of_balance]() where id_operator is null or id_operator NOT IN (SELECT [id_operator]  FROM [KRR-PA-CNT-Railway].[IDS].[Directory_OperatorsWagonsGroup] where [group] in ('amkr_vz'))";
                List <wagons_sap_os> list_all_wagons = context.Database.SqlQuery <wagons_sap_os>(sql).ToList();
                int count = list_all_wagons.Count();
                res.count = count;
                foreach (wagons_sap_os wagons in list_all_wagons)
                {
                    // Дата прибытия вагона
                    DateTime?dt = ((DateTime)wagons.arrival_date_adoption).Date;
                    // Выберем подходящую исходящую поставку
                    Out_Supply cur_out_sypp = ef_out_sypp.Context.Where(s => s.TRAID == wagons.num.ToString() && s.ERDAT >= dt).OrderBy(c => c.ERDAT).FirstOrDefault();
                    int        res_upd      = 0;
                    if (cur_out_sypp != null)
                    {
                        res_upd = UpdateWIR_SAPOutgoingSupply(ref context, wagons.wir_id, cur_out_sypp, user);
                        if (res_upd > 0)
                        {
                            if (res_upd == 1)
                            {
                                res.SetInsertResult(res_upd, wagons.num);
                            }
                            else
                            {
                                res.SetUpdateResult(res_upd, wagons.num);
                            }
                        }
                        else
                        {
                            res.SetSkipResult(res_upd, wagons.num);
                        }
                    }
                    else
                    {
                        res.SetSkipResult(res_upd, wagons.num);
                    }
                    Console.WriteLine("Вагон {0}, Код обновления ИП {1} осталось вагонов {2}", wagons.num, res_upd, --count);
                }
                // Если операция успешна, сохраним результат
                if (res.error == 0)
                {
                    res.SetResult(context.SaveChanges());
                }
                string mess = String.Format("Операция обновления информации исходящей поставки на вагоны. Код выполнения = {0}. Результат обновления [на АМКР определено {1} вагонов, добавлено ИП:{2}, обновлено ИП:{3}, пропущено ИП:{4}, закрыто ИП:{5}, ошибок обновления ИП:{6}].",
                                            res.result, res.count, res.add, res.update, res.skip, res.close, res.error);
                mess.WarningLog(servece_owner, eventID);
                mess.EventLog(res.result < 0 ? EventStatus.Error : EventStatus.Ok, servece_owner, eventID);
                DateTime stop = DateTime.Now;
                servece_owner.ServicesToLog(eventID, String.Format("Операция обновления исходящей поставки поставки"), start, stop, res.result);
                return(res.result);
            }
            catch (Exception e)
            {
                e.ExceptionMethodLog(String.Format("UpdateSAPOutgoingSupply(user = {0})", user), servece_owner, eventID);
                return(-1);// Возвращаем id=-1 , Ошибка
            }
        }