Пример #1
0
        public HttpResponseMessage Post()
        {
            var output = GetFromRequestBody <Output>();

            output.OutputStatus = OutputStatus.OS_ON_TRANSFER.ToString();

            using (var mgr = IoC.Instance.Resolve <IBaseManager <Output> >())
            {
                if (output.GetKey() == null)
                {
                    mgr.Insert(ref output);
                }
                else
                {
                    mgr.Update(output);
                }

                if (output == null)
                {
                    throw new Exception("Couldn not insert output");
                }

                EpsJob epsjob;
                try
                {
                    epsjob = new EpsJob(output, User.Identity.Name);
                    epsjob.DoJob();
                }
                finally
                {
                    var cs = output as ICustomXmlSerializable;
                    cs.OverrideIgnore = false;

                    mgr.Update(output);
                }

                if (epsjob.Reports.Count > 0 && epsjob.Tasks.Any(t => t.ExportType != null))
                {
                    var report = epsjob.Reports.First().Value;
                    HttpResponseMessage result = Request.CreateResponse(HttpStatusCode.OK);
                    result.Content = new ByteArrayContent(report.GetExportStream(epsjob.Tasks.First(t => t.ExportType != null).ExportType));
                    result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
                    return(result);
                }
                else
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Report stream not found"));
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Данные берутся из БД.
        /// </summary>
        //[Test]
        public void StartJob()
        {
//            //Инициализируем сервис. Считываем конфигурационные файлы
//            var configManager = ConfigManagerBase.Instance<EpsConfigManager>(null);
//            configManager.SetDefaultValues();
//            configManager.OnEventErrorHandler += (exception, type, code, message, process, id, name, userName) =>
//                Trace.WriteLine(exception != null
//                    ? string.Format("Ошибка в EpsConfigManager'е. {0}", exception)
//                    : string.Format("Сообщение EpsConfigManager'а. {0}", process));
//
//            //TODO: переделать на контекст
//            //configManager.ReadConfig<EpsConfig>(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "EPS"), "EPS.config");
//            var config = configManager.GetConfig() as EpsConfig;

            var ioutputmanager = CreateManager <Output>() as IOutputManager;

            if (ioutputmanager == null)
            {
                throw new DeveloperException("Can't get IOutputManager.");
            }
            //var listEpsOutput = ioutputmanager.GetEpsOutputLst(config.AmountQueue - job.Count, config.Handler);

            //TODO: переделать на контекст
            //config.Handler = 1;
            var listEpsOutput = ioutputmanager.GetEpsOutputLst(10, 1);

            if (listEpsOutput != null)
            {
                foreach (var output in listEpsOutput.Where(p => p != null))
                {
                    //Запускаем EPS Job
                    var epsjob = new wmsMLC.EPS.wmsEPS.EpsJob(output, "User");
                    var task   = new Task(epsjob.DoJob);
                    task.Start();
                    Trace.WriteLine(string.Format("Задание с данными {0} запущено.", EpsHelper.GetKey(epsjob.GetOutput())));
                    Trace.WriteLine("======================================");
                    task.Wait();
                    using (var manager = IoC.Instance.Resolve <IBaseManager <Output> >())
                    {
                        manager.Update(output);
                    }
                }
            }
        }
Пример #3
0
        public void StartJobWithCreateData()
        {
            //добавляем данные в output
            var epsTest = new wmsMLC.Tests.Functional.EPS.EpsTest();
            var output  = epsTest.CreateOutput();
            var key     = ((IKeyHandler)output).GetKey();

            key.Should().NotBeNull("У сохраненного объекта Ключ должен быть заполнен.");

            //var mgr = IoC.Instance.Resolve<IBaseManager<Output>>();
            //mgr.Insert(ref output);

            //Инициализируем сервис. Считываем конфигурационные файлы
            //TODO: переделать на контекст
//            var configManager = ConfigManagerBase.Instance<EpsConfigManager>(new ServiceContext("StartJobWithCreateData", null));
//            configManager.SetDefaultValues();
//            configManager.OnEventErrorHandler += (exception, type, code, message, process, id, name, userName) =>
//                Trace.WriteLine(exception != null
//                    ? string.Format("Ошибка в EpsConfigManager'е. {0}", exception)
//                    : string.Format("Сообщение EpsConfigManager'а. {0}", process));
//
//
//            //TODO: переделать на контекст
//            //configManager.ReadConfig<EpsConfig>(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "EPS"), "EPS.config");
//            var config = configManager.GetConfig();

            //Запускаем EPS Job
            var epsjob = new wmsMLC.EPS.wmsEPS.EpsJob(output, "User");
            var task   = new Task(epsjob.DoJob);

            task.Start();
            Trace.WriteLine(string.Format("Задание с данными {0} запущено.", EpsHelper.GetKey(epsjob.GetOutput())));
            Trace.WriteLine("======================================");
            task.Wait();
            using (var manager = IoC.Instance.Resolve <IBaseManager <Output> >())
            {
                manager.Update(output);
            }
        }