Пример #1
0
 private static void WriteLogsAboutJobAndClient(JobMeta job, Client client, bool canBePrinted)
 {
     _logger.Information($"Client: {client.Email}, balance: {client.Balance}");
     _logger.Information($"Job guid: {job.Guid}");
     _logger.Information($"Balance required: {(job.Copies * job.CountOfPages) * 2m}");
     _logger.Information($"Has ability to be printed: {canBePrinted}");
 }
Пример #2
0
        private static void Subscriber(JobMeta job)
        {
            _logger.Verbose("job is here: " + job.DocumentName);
            if (CanContinueWithJob(job) == false)
            {
                return;
            }

            _jobs.Add(job.Guid);
            WriteLogs(job);
            CanchelIfNotValidJob(job);

            if (_client == null)
            {
                LaunchAuthGui().Wait();
                _client = Auth.GetClient();
            }
            //ToDo убрать то, что ниже
            _client.Balance = 0;

            var usrBalanceAllowPrinting = ClientValidator.CanContinuePrinting(_client, job);

            WriteLogsAboutJobAndClient(job, _client, usrBalanceAllowPrinting);
            if (!usrBalanceAllowPrinting)
            {
                _logger.Information("Job will be canceled");
                job._job.Cancel();
                return;
            }

            RunPrintJob(job);
            _jobs.Remove(job.Guid);
            //RemoveJobIfPaused(job, isPaused);
        }
Пример #3
0
        private static bool CanContinueWithJob(JobMeta job)
        {
            var isPaused = job._job.IsSpooling && job._job.IsPrinting == false &&
                           job._job.IsPaused == true;
            var alreadyProcessedJob = _jobs.Contains(job.Guid) == true;

            return(isPaused && alreadyProcessedJob == false);
        }
Пример #4
0
        public bool SaveJobEnv(JobMeta jobParams)
        {
            var allJobsEnv = ReadAllJobEnv();

            allJobsEnv.RemoveAll(x => x.JobId.Equals(jobParams.JobId) && x.JobName.Equals(jobParams.JobName));
            allJobsEnv.Add(jobParams);
            return(__Save(allJobsEnv));
        }
Пример #5
0
 private static void WriteLogs(JobMeta job)
 {
     _logger.Information($"***********************************************");
     _logger.Information($"File to print: {job.DocumentName}");
     _logger.Information($"Job state: {job._job.JobStatus.ToString()}");
     _logger.Information($"Amount of pages: {job.CountOfPages}");
     _logger.Information(
         $"Amount of copies: {job._job.HostingPrintQueue.CurrentJobSettings.CurrentPrintTicket.CopyCount}");
 }
Пример #6
0
        private static void CanchelIfNotValidJob(JobMeta job)
        {
            var jobIsValid = _validator.ApplyChecks(job);

            if (jobIsValid == false)
            {
                job.CancelJob();
            }
        }
Пример #7
0
        public async Task <IActionResult> Update(int id, [FromBody] JobMeta jobMeta)
        {
            var result = await _jobService.Update(CurrentUser.TenantId, id, jobMeta);

            if (result.Code <= 0)
            {
                return(BadRequest(result));
            }
            return(Ok(result));
        }
Пример #8
0
        /// <summary>
        ///     开启job
        /// </summary>
        /// <param name="jobParam">job执行参数</param>
        /// <param name="onceJob">是否执行计划外的任务</param>
        /// <returns></returns>
        public bool StartJob(JobMeta jobParam, bool onceJob = false)
        {
            try
            {
                var triggerKey = onceJob ? UtilsFunc.GenTriggerKey(jobParam.JobName) : GetTriggerKey();
                var trigger    = GenTrigger(triggerKey, jobParam.StartTime, jobParam.Interval, jobParam.CronExpression,
                                            onceJob);
                if (trigger == null)
                {
                    JobLogHelper.Error(
                        $"创建{jobParam.JobName}的trigger失败,参数为{onceJob},{jobParam.StartTime},{jobParam.Interval},{jobParam.CronExpression}",
                        null, nameof(StartJob));
                    return(false);
                }

                var jobkey = onceJob ? UtilsFunc.GenJobKey(jobParam.JobName) : GetJobKey();
                var job    = JobBuilder.Create <T>()
                             .WithIdentity(jobkey)
                             .Build();

                job.SetJobName(jobParam.JobName);
                job.SetJobCode(jobParam.JobCode);
                job.SetOnceJobFlag(onceJob);
                job.SetDepJobs(jobParam.DepJobs);
                job.SetJobRunParams(jobParam.RunParams);
                job.SetAutoClose(jobParam.AutoClose);
                job.SetIsDoNotice(jobParam.IsDoNotice);

                ScheduleModConfig.Instance.DefaultScheduler.ScheduleJob(job, trigger);

                var jobListener = new LT();
                if (onceJob)
                {
                    jobListener.SetName(UtilsFunc.GenListenerName(jobParam.JobName));
                }
                ScheduleModConfig.Instance.DefaultScheduler.ListenerManager.AddJobListener(jobListener,
                                                                                           KeyMatcher <JobKey> .KeyEquals(jobkey));
                ScheduleModConfig.Instance.DefaultScheduler.ListenerManager.AddTriggerListener(jobListener,
                                                                                               KeyMatcher <TriggerKey> .KeyEquals(triggerKey));
                if (jobParam.State == JobStateEnum.Pause)
                {
                    ScheduleModConfig.Instance.DefaultScheduler.PauseJob(jobkey);
                }

                return(true);
            }
            catch (Exception ex)
            {
                JobLogHelper.Error(ex.Message, ex, nameof(StartJob));
                return(false);
            }
        }
Пример #9
0
        private static void RemoveJobIfPaused(JobMeta job, bool isPaused)
        {
            if (isPaused)
            {
                _jobs.Remove(job.Guid);

                try
                {
                    job._job.Cancel();
                }
                catch (Exception ex)
                {
                    _logger.Error(ex, "Не удалось удалить задание печати");
                }
            }
        }
Пример #10
0
        private static void Subscriber(JobMeta job)
        {
            var isPaused            = job._job.IsSpooling == false && job._job.IsPaused == true;
            var alreadyProcessedJob = _jobs.Contains(job.Guid) == true;

            if (isPaused && !alreadyProcessedJob)
            {
                _jobs.Add(job.Guid); //ToDo одно задание сюда попадает множество раз. Для предотвращения кроме имени документа нужно генерировать уникальный хэш
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.WriteLine($"Process aborted: {job._job.JobStatus}");
                Console.ForegroundColor = ConsoleColor.White;
                return;
            }

            WriteLogs(job);

            var jobIsValid = _validator.ApplyChecks(job);

            if (jobIsValid == false)
            {
                job.CancelJob();
            }

            Client client       = Auth.GetClient();
            var    canBePrinted = ClientValidator.CanContinuePrinting(client, job);

            if (canBePrinted)
            {
                RunPrintJob(job._job);
            }
            else
            {
                job._job.Cancel();
            }

            WriteLogsAboutJobAndClient(job, client, canBePrinted);

            // RemoveJobIfPaused(job, isPaused);
        }
Пример #11
0
        //Todo если этот сервис отключается, то удаляем все задания печати.
        private static void RunPrintJob(JobMeta jobJob)
        {
            try
            {
                _logger.Information("Everething ok, a print was started");

                jobJob.Resume();
                _clientToBack.SendPrintedDocumentsToBackend(_client.Token,
                                                            new PrintedDocument(jobJob.DocumentName, jobJob.CountOfPages));

                _logger.Debug("Send about printed doc to backend");
            }
            catch (Exception ex)
            {
                _logger.Error(ex, "Кажется не удалось возобновить задачу.");
            }


            _logger.Debug("___");
        }
		public bool ApplyChecks(JobMeta job)
		{
			bool isValidExtension = CheckExtensions(job.DocumentName);

			return isValidExtension;
		}
Пример #13
0
 /// <summary>
 ///     序列化
 /// </summary>
 /// <param name="jobMeta"></param>
 /// <returns></returns>
 public static string JobMetaToString(JobMeta jobMeta)
 {
     return(jobMeta.ToJsonStr());
 }
 public static bool CanContinuePrinting(Client client, JobMeta job)
 => client.Balance >= job.Copies * job.CountOfPages;