diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/TaskService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/TaskService.cs index 3a78b0df..eed3d13b 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/TaskService.cs +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/TaskService.cs @@ -25,7 +25,7 @@ namespace Yi.Furion.Application.Rbac.Services.Impl /// /// [HttpGet("{jobId}")] - public SchedulerModel GetById([FromRoute]string jobId) + public SchedulerModel GetById([FromRoute] string jobId) { var result = _schedulerFactory.TryGetJob(jobId, out var scheduler); return scheduler.GetModel(); @@ -36,10 +36,16 @@ namespace Yi.Furion.Application.Rbac.Services.Impl /// /// [HttpGet("")] - public PagedResultDto GetList([FromQuery]TaskGetListInput input) + public PagedResultDto GetList([FromQuery] TaskGetListInput input) { - var data = _schedulerFactory.GetJobsOfModels().Skip(input.PageNum * input.PageSize).Take(input.PageSize).OrderByDescending(x => x.JobDetail.UpdatedTime).ToList(); - return new PagedResultDto(data.Count(), data); + var data = _schedulerFactory.GetJobsOfModels().Skip((input.PageNum - 1) * input.PageSize).Take(input.PageSize).OrderByDescending(x => x.JobDetail.UpdatedTime) + + .ToList(); + var output = data.Select(x => x.JobDetail).Adapt>(); + + + + return new PagedResultDto(data.Count(), output); } /// @@ -53,7 +59,7 @@ namespace Yi.Furion.Application.Rbac.Services.Impl //jobBuilder var jobBuilder = JobBuilder.Create(input.AssemblyName, input.JobTypeFullName).SetJobId(input.JobId).SetGroupName(input.GroupName); - //.SetConcurrent(input.Concurrent).SetDescription(input.Description).SetProperties(Newtonsoft.Json.JsonConvert.SerializeObject(input.Properties)); + //.SetConcurrent(input.Concurrent).SetDescription(input.Description).SetProperties(Newtonsoft.Json.JsonConvert.SerializeObject(input.Properties)); //triggerBuilder //毫秒 @@ -122,7 +128,7 @@ namespace Yi.Furion.Application.Rbac.Services.Impl /// /// /// - public ScheduleResult Update(string jobId,TaskUpdateInput input) + public ScheduleResult Update(string jobId, TaskUpdateInput input) { //jobBuilder var jobBuilder = JobBuilder.Create(input.AssemblyName, input.JobTypeFullName).SetJobId(jobId).SetGroupName(input.GroupName) diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/DataSeeds/MenuDataSeed.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/DataSeeds/MenuDataSeed.cs index 512650c2..f33769ac 100644 --- a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/DataSeeds/MenuDataSeed.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/DataSeeds/MenuDataSeed.cs @@ -111,6 +111,25 @@ namespace Yi.Furion.Core.Rbac.DataSeeds }; entities.Add(server); + //定时任务 + MenuEntity task = new MenuEntity() + { + Id = SnowflakeHelper.NextId, + MenuName = "定时任务", + PermissionCode = "monitor:job:list", + MenuType = MenuTypeEnum.Menu, + Router = "job", + IsShow = true, + IsLink = false, + IsCache = true, + Component = "monitor/job/index", + MenuIcon = "server", + OrderNum = 97, + ParentId = monitoring.Id, + IsDeleted = false + }; + entities.Add(task); + //系统工具 MenuEntity tool = new MenuEntity() diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Task/TaskGetListOutput.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Task/TaskGetListOutput.cs index 1db63ace..168b7b42 100644 --- a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Task/TaskGetListOutput.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Task/TaskGetListOutput.cs @@ -2,11 +2,84 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using System.Text.Json.Serialization; using System.Threading.Tasks; namespace Yi.Furion.Core.Rbac.Dtos.Task { public class TaskGetListOutput { + /// + /// 作业 Id + /// + + public string JobId { get; internal set; } + + /// + /// 作业组名称 + /// + + public string GroupName { get; internal set; } + + /// + /// 作业处理程序类型 + /// + /// 存储的是类型的 FullName + + public string JobType { get; internal set; } + + /// + /// 作业处理程序类型所在程序集 + /// + /// 存储的是程序集 Name + + public string AssemblyName { get; internal set; } + + /// + /// 描述信息 + /// + + public string Description { get; internal set; } + + /// + /// 是否采用并行执行 + /// + /// 如果设置为 false,那么使用串行执行 + + public bool Concurrent { get; internal set; } = true; + + /// + /// 是否扫描 IJob 实现类 [Trigger] 特性触发器 + /// + + public bool IncludeAnnotations { get; internal set; } = false; + + /// + /// 作业信息额外数据 + /// + + public string Properties { get; internal set; } = "{}"; + + /// + /// 作业更新时间 + /// + + public DateTime? UpdatedTime { get; internal set; } + + /// + /// 标记其他作业正在执行 + /// + /// 为 false 时有效,也就是串行执行 + internal bool Blocked { get; set; } = false; + + /// + /// 作业处理程序运行时类型 + /// + internal string RuntimeJobType { get; set; } + + /// + /// 作业信息额外数据运行时实例 + /// + internal string RuntimeProperties { get; set; } } } diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Yi.Furion.Core.xml b/Yi.Furion.Net6/Yi.Furion.Core/Yi.Furion.Core.xml index fe0b6888..ba78fd02 100644 --- a/Yi.Furion.Net6/Yi.Furion.Core/Yi.Furion.Core.xml +++ b/Yi.Furion.Net6/Yi.Furion.Core/Yi.Furion.Core.xml @@ -366,6 +366,70 @@ Role输入创建对象 + + + 作业 Id + + + + + 作业组名称 + + + + + 作业处理程序类型 + + 存储的是类型的 FullName + + + + 作业处理程序类型所在程序集 + + 存储的是程序集 Name + + + + 描述信息 + + + + + 是否采用并行执行 + + 如果设置为 false,那么使用串行执行 + + + + 是否扫描 IJob 实现类 [Trigger] 特性触发器 + + + + + 作业信息额外数据 + + + + + 作业更新时间 + + + + + 标记其他作业正在执行 + + 为 false 时有效,也就是串行执行 + + + + 作业处理程序运行时类型 + + + + + 作业信息额外数据运行时实例 + + User输入创建对象 diff --git a/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs b/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs index 207406bb..816af73d 100644 --- a/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs +++ b/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs @@ -36,8 +36,8 @@ public class Startup : AppStartup services.AddSchedule(options => { // 注册作业,并配置作业触发器 - // options.AddJob(Triggers.Period(10000)); // 表示每秒执行 - options.AddJob(Triggers.Cron("0 0 0,12 ? * ?",CronStringFormat.WithSeconds)); // 表示每天凌晨与12点 + //options.AddJob(Triggers.Period(10000)); // 表示每秒执行 + options.AddJob(Triggers.Cron("0 0 0,12 ? * ?",CronStringFormat.WithSeconds)); // 表示每天凌晨与12点 }); services.AddFileLogging("application-{0:yyyy}-{0:MM}-{0:dd}.log", options => { diff --git a/Yi.RuoYi.Vue3/src/views/monitor/job/index.vue b/Yi.RuoYi.Vue3/src/views/monitor/job/index.vue index 18c5cb12..188a9514 100644 --- a/Yi.RuoYi.Vue3/src/views/monitor/job/index.vue +++ b/Yi.RuoYi.Vue3/src/views/monitor/job/index.vue @@ -87,17 +87,29 @@ + + + - - - -