예제 #1
0
 public IHttpActionResult PostCurrentIncomingSupplyOfWebSAP([FromBody] SAPIncomingSupply value)
 {
     try
     {
         IDS_SAP           ids_sap    = new IDS_SAP(service.WebAPI_IDS);
         SAPIncomingSupply new_sap_is = ids_sap.GetCurrentIncomingSupplyOfWebSAP(value);
         return(Ok(new_sap_is));
     }
     catch (Exception e)
     {
         return(BadRequest(e.Message));
     }
 }
예제 #2
0
 public long PutSAPIncomingSupply(int id, [FromBody] SAPIncomingSupply value)
 {
     try
     {
         this.ef_ids.Update(value);
         int res = this.ef_ids.Save();
         return(res > 0 ? value.id : res);
     }
     catch (Exception e)
     {
         return(-1);
     }
 }
예제 #3
0
 public IHttpActionResult GetSAPIncomingSupplyOfIDArrivalCar(int id)
 {
     try
     {
         SAPIncomingSupply list = this.ef_ids
                                  .Context
                                  .Where(s => s.id_arrival_car == id)
                                  .ToList()
                                  .Select(c => c.GetSAPIncomingSupply()).FirstOrDefault();
         return(Ok(list));
     }
     catch (Exception e)
     {
         return(BadRequest(e.Message));
     }
 }
예제 #4
0
 /// <summary>
 /// Метод выполняет списочный запрсос в САП получает ответ, и возвращает скорректированую строку SAPIncomingSupply
 /// </summary>
 /// <param name="list"></param>
 /// <returns></returns>
 public List <SAPIncomingSupply> GetCurrentIncomingSupplyOfWebSAP(List <SAPIncomingSupply> list)
 {
     try
     {
         List <SAPIncomingSupply> new_list = new List <SAPIncomingSupply>();
         foreach (SAPIncomingSupply sap_is in list)
         {
             SAPIncomingSupply new_sap_is = GetCurrentIncomingSupplyOfWebSAP(sap_is);
             new_list.Add(new_sap_is);
         }
         return(new_list);
     }
     catch (Exception e)
     {
         e.ExceptionMethodLog(String.Format("GetCurrentIncomingSupplyOfWebSAP(list={0})", list), servece_owner, eventID);
         return(null);// Ошибка
     }
 }
예제 #5
0
        //public void IDSTransfer_SetStationOutgoingWagonsOfKIS()
        //{

        //    IDSTransfer ids = new IDSTransfer(service.Test);
        //    int res = ids.SetStationOutgoingWagonsOfKIS(513, @"EUROPE\test");
        //}

        ///// <summary>
        ///// Перенос состава на УЗ и закрытие WIR
        ///// </summary>
        //public void IDSTransfer_SendingOutgoingSostav()
        //{

        //    IDSTransfer ids = new IDSTransfer(service.Test);
        //    int res = ids.SendingOutgoingSostav(499, @"EUROPE\test");
        //}
        #endregion

        #region IDS_SAP
        // чтение и обновление сап
        public void IDS_SAP_GetCurrentIncomingSupplyOfWebSAP()
        {
            IDS_SAP ids = new IDS_SAP(service.Test);

            EFSAPIncomingSupply ef_sap = new EFSAPIncomingSupply(new EFDbContext());
            //SAPIncomingSupply sap = new SAPIncomingSupply()
            //{
            //    id = 0,
            //    id_arrival_car = 0,
            //    num = 54905161,
            //    num_doc_uz = "29426762",
            //    create = DateTime.Now,
            //    create_user = "******"
            //};
            SAPIncomingSupply sap = ef_sap.Context.Where(s => s.id == 141716).FirstOrDefault();
            //sap.num = 54905161;
            //sap.num_doc_uz = "29426762";
            SAPIncomingSupply res = ids.GetCurrentIncomingSupplyOfWebSAP(sap);
        }
예제 #6
0
 /// <summary>
 /// Обновить строку САП
 /// </summary>
 /// <param name="sap_is"></param>
 /// <returns></returns>
 public SAPIncomingSupply GetCurrentIncomingSupplyOfWebSAP(SAPIncomingSupply sap_is)
 {
     try
     {
         WebAPIClientSAP web_sap         = new WebAPIClientSAP(this.servece_owner);
         IncomingSupply  incoming_supply = web_sap.GetIncomingSupply(sap_is.id, sap_is.num_doc_uz.Trim(), sap_is.num.ToString().Trim());
         if (incoming_supply != null)
         {
             string data = null;
             string time = null;
             if (!String.IsNullOrWhiteSpace(incoming_supply.ERDAT))
             {
                 data = incoming_supply.ERDAT.Insert(4, "-").Insert(7, "-");
             }
             if (!String.IsNullOrWhiteSpace(incoming_supply.ETIME))
             {
                 time = incoming_supply.ETIME.Insert(2, ":").Insert(5, ":");
             }
             sap_is.VBELN     = incoming_supply.VBELN;
             sap_is.NUM_VBELN = !String.IsNullOrWhiteSpace(incoming_supply.PSNR) ? incoming_supply.PSNR : null;
             sap_is.WERKS     = incoming_supply.WERKS;
             sap_is.LGORT     = incoming_supply.LGORT;
             sap_is.LGOBE     = incoming_supply.LGOBE;
             sap_is.ERDAT     = !String.IsNullOrWhiteSpace(data) ? (DateTime?)DateTime.Parse(data, CultureInfo.CreateSpecificCulture("ru-RU")).Date : null;
             sap_is.ETIME     = !String.IsNullOrWhiteSpace(time) ? (TimeSpan?)TimeSpan.Parse(time, CultureInfo.CreateSpecificCulture("ru-RU")) : null;
             sap_is.LGORT_10  = incoming_supply.LGORT_10;
             sap_is.LGOBE_10  = incoming_supply.LGOBE_10;
             sap_is.MATNR     = incoming_supply.MATNR;
             sap_is.MAKTX     = incoming_supply.MAKTX;
             sap_is.NAME_SH   = incoming_supply.NAME_SH;
             sap_is.KOD_R_10  = incoming_supply.KOD_R_10;
         }
         sap_is.attempt = sap_is.attempt + 1;
         return(sap_is);
     }
     catch (Exception e)
     {
         e.ExceptionMethodLog(String.Format("GetCurrentIncomingSupplyOfWebSAP(sap_is={0})", sap_is), servece_owner, eventID);
         return(null);// Ошибка
     }
 }
예제 #7
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);// Ошибка
            }
        }
예제 #8
0
        /// <summary>
        /// Обновить информацию о входящей поставке
        /// </summary>
        /// <param name="sap_is"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public SAPIncomingSupply GetUpdateIncomingSupplyOfWebSAP(SAPIncomingSupply sap_is, string user)
        {
            try
            {
                // Проверим и скорректируем пользователя
                if (String.IsNullOrWhiteSpace(user))
                {
                    user = System.Environment.UserDomainName + @"\" + System.Environment.UserName;
                }
                WebAPIClientSAP web_sap         = new WebAPIClientSAP(this.servece_owner);
                string          num_doc_uz      = sap_is.num_doc_uz.Trim();
                IncomingSupply  incoming_supply = web_sap.GetIncomingSupply(sap_is.id, num_doc_uz, sap_is.num.ToString().Trim());

                // Проверка на документ с нулем впереди
                if (incoming_supply == null && sap_is.num_doc_uz != null && sap_is.num_doc_uz.Length <= 6)
                {
                    // Добавим 0 и поищем еще
                    num_doc_uz      = "0" + sap_is.num_doc_uz.Trim();
                    incoming_supply = web_sap.GetIncomingSupply(sap_is.id, num_doc_uz, sap_is.num.ToString().Trim());
                    if (incoming_supply == null)
                    {
                        // Добавим 00 и поищем еще
                        num_doc_uz      = "00" + sap_is.num_doc_uz.Trim();
                        incoming_supply = web_sap.GetIncomingSupply(sap_is.id, num_doc_uz, sap_is.num.ToString().Trim());
                    }
                }

                if (incoming_supply != null)
                {
                    string data = null;
                    string time = null;
                    sap_is.num_doc_uz = num_doc_uz;
                    if (!String.IsNullOrWhiteSpace(incoming_supply.ERDAT))
                    {
                        data = incoming_supply.ERDAT.Insert(4, "-").Insert(7, "-");
                    }
                    if (!String.IsNullOrWhiteSpace(incoming_supply.ETIME))
                    {
                        time = incoming_supply.ETIME.Insert(2, ":").Insert(5, ":");
                    }
                    sap_is.VBELN       = incoming_supply.VBELN;
                    sap_is.NUM_VBELN   = !String.IsNullOrWhiteSpace(incoming_supply.PSNR) ? incoming_supply.PSNR : null;
                    sap_is.WERKS       = incoming_supply.WERKS;
                    sap_is.LGORT       = incoming_supply.LGORT;
                    sap_is.LGOBE       = incoming_supply.LGOBE;
                    sap_is.ERDAT       = !String.IsNullOrWhiteSpace(data) ? (DateTime?)DateTime.Parse(data, CultureInfo.CreateSpecificCulture("ru-RU")).Date : null;
                    sap_is.ETIME       = !String.IsNullOrWhiteSpace(time) ? (TimeSpan?)TimeSpan.Parse(time, CultureInfo.CreateSpecificCulture("ru-RU")) : null;
                    sap_is.LGORT_10    = incoming_supply.LGORT_10;
                    sap_is.LGOBE_10    = incoming_supply.LGOBE_10;
                    sap_is.MATNR       = incoming_supply.MATNR;
                    sap_is.MAKTX       = incoming_supply.MAKTX;
                    sap_is.NAME_SH     = incoming_supply.NAME_SH;
                    sap_is.KOD_R_10    = incoming_supply.KOD_R_10;
                    sap_is.change      = DateTime.Now;
                    sap_is.change_user = user;
                }
                sap_is.attempt = sap_is.attempt + 1;
                return(sap_is);
            }
            catch (Exception e)
            {
                e.ExceptionMethodLog(String.Format("GetUpdateIncomingSupplyOfWebSAP(sap_is={0}, user={1})", sap_is, user), servece_owner, eventID);
                return(null);// Ошибка
            }
        }