Esempio n. 1
0
        public async override Task Run()
        {
            await base.Run();

            try
            {
                IsContinue();
                DateTime dateTime = _paramDescriptors.ConvertDate(RunDateTime);
                Log.Info($"Задача {TaskId} : Загрузка валют за дату {dateTime.ToShortDateString()}");
                var xmlDocument = await _cbrDownloader.DownloadForeignExchange(dateTime);

                Log.Info($"Задача {TaskId} : Загрузка валют завершена");

                IsContinue();
                var saverJson = TaskAction.GetSaverJson(TaskId);
                if (saverJson is not null)
                {
                    Log.Info($"Задача {TaskId} : Сохранение значений");
                    _xmlSaver.Deserialize(saverJson).Save(xmlDocument);
                    Log.Info($"Задача {TaskId} : Значения сохранены");

                    var connection = _xmlSaver.Deserialize(saverJson).Connection;

                    var task       = TaskAction.GetKarmaDownloadJob().FirstOrDefault(z => z.TaskId == TaskId);
                    var template   = TaskAction.GetCalculationJson(task.TaskTemplateId);
                    var saveTask   = new SaveForeignExchange(null, null, null, null, null);
                    var parameters = saveTask.GetParamDescriptors();

                    parameters.SetDat(SaveForeignExchange.RunDateTime, dateTime);
                    parameters.SetStr(SaveForeignExchange.File, connection);
                    var json = parameters.SerializeJson();

                    Log.Info($"Создаем задачу {saveTask.TaskTypes.ToDbAttribute()} с параметрами {json}");
                    var newTaskId = TaskAction.CreateTaskAction(TaskStatuses.Creating,
                                                                TaskTypes.DownloadCurrenciesCbrf.ToDbAttribute(),
                                                                template.TaskTemplateFolderId,
                                                                json,
                                                                TaskTypes.SaveForeignExchange);

                    TaskAction.InsertPipelineTasks(TaskId, newTaskId);
                    Log.Info($"Создали зависимость между {TaskId}->{newTaskId}");
                }
                Log.Info($"Задача {TaskId} : Задачи завершена");
                Finished();
            }
            catch (OperationCanceledException)
            {
                Log.Info($"Задача отменена {TaskId}");
            }
            catch (Exception ex)
            {
                Log.Error(ex);
            }
            finally
            {
                IsAliveTokenSource.Cancel();
            }
        }
Esempio n. 2
0
        public override async Task Run()
        {
            await base.Run();

            try
            {
                Log.Info($"Задача {TaskId} : Задача загрузки ruonia из ЦБ начата");
                IsContinue();
                DateTime dateTime = _paramDescriptors.ConvertDate(RunDateTime);
                Log.Info($"Задача {TaskId} : загрузка ruonia за дату {dateTime.ToShortDateString()}");
                var xmlDocument = await _cbrDownloader.DownloadRuonia(dateTime);

                Log.Info($"Задача {TaskId} : загрузка ruonia завершена");

                IsContinue();
                var saverJson = TaskAction.GetSaverJson(TaskId);
                if (saverJson is not null)
                {
                    Log.Info($"Задача {TaskId} : сохранение значений");
                    _xmlSaver.Deserialize(saverJson).Save(xmlDocument);
                    Log.Info($"Задача {TaskId} : значения сохранены");
                }
                Log.Info($"Задача {TaskId} : Задача загрузки ruonia из ЦБ закончена");
            }
            catch (OperationCanceledException)
            {
                Log.Info($"Задача отменена {TaskId}");
            }
            catch (Exception ex)
            {
                Log.Info($"Задача завершилась с ошибкой {TaskId}");
                Log.Error(ex);
            }
            finally
            {
                IsAliveTokenSource.Cancel();
            }
        }
        public override async Task Run()
        {
            await base.Run();

            try
            {
                Log.Info($"Задача {TaskId} : Задача финансовых инструментов начата");
                IsContinue();
                var typeInstrument = _paramDescriptors.ConvertStr(InstrumentType);
                var date           = _paramDescriptors.ConvertDate(RunDateTime);
                if (typeInstrument == "shares")
                {
                    Log.Info($"Задача {TaskId} : загрузка акций");
                    var shares = await DownloadShares(date);

                    Log.Info($"Задача {TaskId} : загрузка акций завершена");

                    var saverJson = TaskAction.GetSaverJson(TaskId);
                    if (saverJson is not null)
                    {
                        Log.Info($"Задача {TaskId} : сохранение акций");
                        var connection = _xmlSaver.Deserialize(saverJson).Connection;
                        connection = connection.Replace(".xml", ".csv");
                        _csvSaver.Save(shares, connection);
                        Log.Info($"Задача {TaskId} : закончена сохранение акций");
                    }
                }

                if (typeInstrument == "bonds")
                {
                    Log.Info($"Задача {TaskId} : загрузка облигаций");
                    var bonds = await DownloadBonds(date);

                    Log.Info($"Задача {TaskId} : загрузка облигаций завершена");

                    var saverJson = TaskAction.GetSaverJson(TaskId);
                    if (saverJson is not null)
                    {
                        Log.Info($"Задача {TaskId} : сохранение облигаций");
                        var connection = _xmlSaver.Deserialize(saverJson).Connection;
                        connection = connection.Replace(".xml", ".csv");
                        _csvSaver.Save(bonds, connection);
                        Log.Info($"Задача {TaskId} : закончена сохранение облигаций");
                    }
                }


                Log.Info($"Задача {TaskId} : Задача финансовых инструментов закончена");
            }
            catch (OperationCanceledException)
            {
                Log.Info($"Задача отменена {TaskId}");
            }
            catch (Exception ex)
            {
                Log.Info($"Задача завершилась с ошибкой {TaskId}");
                Log.Error(ex);
            }
            finally
            {
                IsAliveTokenSource.Cancel();
            }
        }