示例#1
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 , Ошибка
            }
        }
示例#2
0
        /// <summary>
        /// Обновим входящую поставку в WIR
        /// </summary>
        /// <param name="context"></param>
        /// <param name="id_wir"></param>
        /// <param name="out_sypp"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public int UpdateWIR_SAPOutgoingSupply(ref EFDbContext context, long id_wir, Out_Supply out_sypp, string user)
        {
            try
            {
                if (context == null)
                {
                    context = new EFIDS.Concrete.EFDbContext();
                }
                ;
                // Проверим и скорректируем пользователя
                if (String.IsNullOrWhiteSpace(user))
                {
                    user = System.Environment.UserDomainName + @"\" + System.Environment.UserName;
                }
                EFWagonInternalRoutes ef_wir    = new EFWagonInternalRoutes(context);
                EFSAPOutgoingSupply   ef_sap_os = new EFSAPOutgoingSupply(context);

                // Получим wir
                WagonInternalRoutes wir = ef_wir.Context.Where(w => w.id == id_wir).FirstOrDefault();
                if (wir == null)
                {
                    return((int)errors_base.not_wir_db);             // В базе данных нет записи по WagonInternalRoutes (Внутреннее перемещение вагонов)
                }
                // Проверим sap исходящая поставка указана
                if (wir.id_sap_outbound_supply != null)
                {
                    SAPOutgoingSupply sap_os = ef_sap_os.Context.Where(s => s.id == wir.id_sap_outbound_supply).FirstOrDefault();
                    if (sap_os == null)
                    {
                        return((int)errors_base.not_sap_os_db);                // В базе данных нет записи по SAPOutgoingSupply (SAP Исходящая поставка)
                    }
                    // Проверим id соответсвуют (SAPOutgoingSupply и Out_Supply)
                    if (sap_os.id_out_supply == out_sypp.id)
                    {
                        // Соответсвует обновим
                        sap_os.id_outgoing_car = wir.id_outgoing_car;
                        sap_os.num             = wir.num;
                        sap_os.VBELN           = out_sypp.VBELN;
                        sap_os.ERDAT           = out_sypp.ERDAT;
                        sap_os.ZBEZEI          = out_sypp.ZBEZEI;
                        sap_os.STAWN           = out_sypp.STAWN;
                        sap_os.NAME1_AG        = out_sypp.NAME1_AG;
                        sap_os.KUNNR_AG        = out_sypp.KUNNR_AG;
                        sap_os.ZRWNAME         = out_sypp.ZRWNAME;
                        sap_os.ZENDSTAT        = out_sypp.ZENDSTAT;
                        sap_os.ZCRSTNAME       = out_sypp.ZCRSTNAME;
                        sap_os.ZCROSSSTAT      = out_sypp.ZCROSSSTAT;
                        sap_os.ZZVES_NETTO     = out_sypp.ZZVES_NETTO;
                        sap_os.ABTNR           = out_sypp.ABTNR;
                        sap_os.VTEXT           = out_sypp.VTEXT;
                        sap_os.ZZDOLG          = out_sypp.ZZDOLG;
                        sap_os.ZZFIO           = out_sypp.ZZFIO;
                        sap_os.ZZPLATEL        = out_sypp.ZZPLATEL;
                        sap_os.ZZNAME_PLATEL   = out_sypp.ZZNAME_PLATEL;
                        //sap_os.note = out_sypp.note,
                        sap_os.change      = DateTime.Now;
                        sap_os.change_user = user;
                        ef_sap_os.Update(sap_os);
                        return(2); // Обновлена
                    }
                    else
                    {
                        ef_sap_os.Delete(sap_os.id);
                        // не соответсвует, удалим (и создадим новый)
                    }
                }
                // Содадим и добавим новую исходящую поставку
                SAPOutgoingSupply sap_os_new = new SAPOutgoingSupply()
                {
                    id              = 0,
                    id_out_supply   = 0,
                    id_outgoing_car = wir.id_outgoing_car,
                    num             = wir.num,
                    VBELN           = out_sypp.VBELN.Trim(),
                    ERDAT           = out_sypp.ERDAT,
                    ZBEZEI          = out_sypp.ZBEZEI.Trim(),
                    STAWN           = out_sypp.STAWN.Trim(),
                    NAME1_AG        = out_sypp.NAME1_AG.Trim(),
                    KUNNR_AG        = out_sypp.KUNNR_AG.Trim(),
                    ZRWNAME         = out_sypp.ZRWNAME.Trim(),
                    ZENDSTAT        = out_sypp.ZENDSTAT.Trim(),
                    ZCRSTNAME       = out_sypp.ZCRSTNAME.Trim(),
                    ZCROSSSTAT      = out_sypp.ZCROSSSTAT.Trim(),
                    ZZVES_NETTO     = out_sypp.ZZVES_NETTO,
                    ABTNR           = out_sypp.ABTNR.Trim(),
                    VTEXT           = out_sypp.VTEXT.Trim(),
                    ZZDOLG          = out_sypp.ZZDOLG.Trim(),
                    ZZFIO           = out_sypp.ZZFIO.Trim(),
                    ZZPLATEL        = out_sypp.ZZPLATEL.Trim(),
                    ZZNAME_PLATEL   = out_sypp.ZZNAME_PLATEL.Trim(),
                    note            = null,
                    create          = DateTime.Now,
                    create_user     = user,
                };
                sap_os_new.Out_Supply = out_sypp;
                ef_sap_os.Add(sap_os_new);
                wir.SAPOutgoingSupply = sap_os_new;
                ef_wir.Update(wir);
                return(1); // Добавлена новая
            }
            catch (Exception e)
            {
                e.ExceptionMethodLog(String.Format("UpdateWIR_SAPOutgoingSupply(context = {0}, id_wir = {1}, cur_out_sypp = {2}, user = {3})", context, id_wir, out_sypp, user), servece_owner, eventID);
                return((int)errors_base.global);
            }
        }