/// <summary> /// 添加调度任务 /// </summary> /// <param name="jobName">任务名称</param> /// <param name="jobGroup">任务分组</param> /// <returns></returns> public async Task <bool> AddJobAsync(CreateUpdateJobInfoDto infoDto) { try { if (infoDto != null) { if (infoDto.StarTime == null) { infoDto.StarTime = DateTime.Now; } DateTimeOffset starRunTime = DateBuilder.NextGivenSecondDate(infoDto.StarTime, 1); if (infoDto.EndTime == null) { infoDto.EndTime = DateTime.MaxValue.AddDays(-1); } DateTimeOffset endRunTime = DateBuilder.NextGivenSecondDate(infoDto.EndTime, 1); scheduler = await GetSchedulerAsync(); JobKey jobKey = new JobKey(infoDto.JobName, infoDto.JobGroup); if (await scheduler.CheckExists(jobKey)) { await scheduler.PauseJob(jobKey); await scheduler.DeleteJob(jobKey); } IJobDetail job = JobBuilder.Create <LogTestJob>() .WithIdentity(jobKey) .Build(); ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create() .StartAt(starRunTime) .EndAt(endRunTime) .WithIdentity(infoDto.JobName, infoDto.JobGroup) .WithCronSchedule(infoDto.CronExpress) .Build(); await scheduler.ScheduleJob(job, trigger); await scheduler.Start(); return(true); } return(false);//JobInfo为空 } catch (Exception ex) { _logger.LogException(ex); return(false);//出现异常 } }
/// <summary> /// 将 BookAppService.GetAsync 方法返回的 BookDto /// 映射成 CreateUpdateBookDto 并赋值给Book属性. /// </summary> /// <returns></returns> public async Task OnGetAsync() { var jobInfoDto = await _jobInfoAppService.GetAsync(Id); JobInfo = ObjectMapper.Map <JobInfoDto, CreateUpdateJobInfoDto>(jobInfoDto); }
/// <summary> /// 添加调度任务 /// </summary> /// <param name="jobName">任务名称</param> /// <param name="jobGroup">任务分组</param> /// <returns></returns> public async Task <ScheduleResult> AddJobAsync(CreateUpdateJobInfoDto infoDto) { ScheduleResult result = new ScheduleResult(); try { if (infoDto == null) { result.Code = -3; result.Message = $"参数{typeof(CreateUpdateJobInfoDto)}不能为空"; return(result);//出现异常 } if (infoDto.StarTime == null) { infoDto.StarTime = DateTime.Now; } DateTimeOffset starRunTime = DateBuilder.NextGivenSecondDate(infoDto.StarTime, 1); if (infoDto.EndTime == null) { infoDto.EndTime = DateTime.MaxValue.AddDays(-1); } DateTimeOffset endRunTime = DateBuilder.NextGivenSecondDate(infoDto.EndTime, 1); scheduler = await GetSchedulerAsync(); JobKey jobKey = new JobKey(infoDto.JobName, infoDto.JobGroup); if (await scheduler.CheckExists(jobKey)) { await scheduler.PauseJob(jobKey); await scheduler.DeleteJob(jobKey); } //var jobType =Type.GetType("Czar.AbpDemo.Schedule.LogTestJob,Czar.AbpDemo.Web"); var jobType = Type.GetType(infoDto.JobNamespace + "." + infoDto.JobClassName + "," + infoDto.JobAssemblyName); if (jobType == null) { result.Code = -1; result.Message = "系统找不到对应的任务,请重新设置"; return(result);//出现异常 } IJobDetail job = JobBuilder.Create(jobType) .WithIdentity(jobKey) .Build(); ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create() .StartAt(starRunTime) .EndAt(endRunTime) .UsingJobData("ServerName", infoDto.JobName) .WithIdentity(infoDto.JobName, infoDto.JobGroup) .WithCronSchedule(infoDto.CronExpress) .Build(); await scheduler.ScheduleJob(job, trigger); if (!scheduler.IsStarted) { await scheduler.Start(); } return(result); } catch (Exception ex) { _logger.LogException(ex); result.Code = -4; result.Message = ex.ToString(); return(result);//出现异常 } }