From cae6444d9645b66cc2db4e06dd9cc9b147cfaf37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com> Date: Sat, 25 Dec 2021 14:42:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=BB=E5=8A=A1=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/System/TasksController.cs | 4 +- ZR.Model/System/Dto/TasksDto.cs | 8 +- ZR.Tasks/TaskScheduler/JobBase.cs | 8 +- ZR.Tasks/TaskScheduler/Job_SyncTest.cs | 2 - ZR.Vue/src/views/monitor/job/index.vue | 87 +++++++++++-------- ZR.Vue/src/views/monitor/job/log.vue | 2 +- 6 files changed, 64 insertions(+), 47 deletions(-) diff --git a/ZR.Admin.WebApi/Controllers/System/TasksController.cs b/ZR.Admin.WebApi/Controllers/System/TasksController.cs index c3cb393..45e1971 100644 --- a/ZR.Admin.WebApi/Controllers/System/TasksController.cs +++ b/ZR.Admin.WebApi/Controllers/System/TasksController.cs @@ -139,7 +139,9 @@ namespace ZR.Admin.WebApi.Controllers IntervalSecond = parm.IntervalSecond, JobParams = parm.JobParams, Update_by = User.Identity.Name, - Update_time = DateTime.Now + Update_time = DateTime.Now, + BeginTime = parm.BeginTime, + EndTime = parm.EndTime }); if (response > 0) { diff --git a/ZR.Model/System/Dto/TasksDto.cs b/ZR.Model/System/Dto/TasksDto.cs index f41827f..3fa3cdf 100644 --- a/ZR.Model/System/Dto/TasksDto.cs +++ b/ZR.Model/System/Dto/TasksDto.cs @@ -79,7 +79,7 @@ namespace ZR.Model.System.Dto /// 默认 : /// [Display(Name = "开始时间")] - public DateTime BeginTime { get; set; } + public DateTime? BeginTime { get; set; } /// /// 描述 : 结束时间 @@ -87,7 +87,7 @@ namespace ZR.Model.System.Dto /// 默认 : /// [Display(Name = "结束时间")] - public DateTime EndTime { get; set; } + public DateTime? EndTime { get; set; } /// /// 描述 : 触发器类型(0、simple 1、cron) @@ -186,7 +186,7 @@ namespace ZR.Model.System.Dto /// 默认 : /// [Display(Name = "开始时间")] - public string BeginTime { get; set; } + public DateTime? BeginTime { get; set; } /// /// 描述 : 结束时间 @@ -194,7 +194,7 @@ namespace ZR.Model.System.Dto /// 默认 : /// [Display(Name = "结束时间")] - public string EndTime { get; set; } + public DateTime? EndTime { get; set; } /// /// 描述 : 触发器类型(0、simple 1、cron) diff --git a/ZR.Tasks/TaskScheduler/JobBase.cs b/ZR.Tasks/TaskScheduler/JobBase.cs index 5ed8fed..48b9a6b 100644 --- a/ZR.Tasks/TaskScheduler/JobBase.cs +++ b/ZR.Tasks/TaskScheduler/JobBase.cs @@ -24,9 +24,9 @@ namespace ZR.Tasks /// 业务逻辑方法 public async Task> ExecuteJob(IJobExecutionContext context, Func job) { - string logMsg = ""; double elapsed = 0; int status = 0; + string logMsg; try { //var s = context.Trigger.Key.Name; @@ -64,6 +64,7 @@ namespace ZR.Tasks protected void RecordTaskLog(IJobExecutionContext context, Dictionary executeLog) { var tasksLogService = (ISysTasksLogService)App.GetRequiredService(typeof(ISysTasksLogService)); + var taskQzService = (ISysTasksQzService)App.GetRequiredService(typeof(ISysTasksQzService)); // 可以直接获取 JobDetail 的值 IJobDetail job = context.JobDetail; @@ -80,7 +81,10 @@ namespace ZR.Tasks logModel.JobMessage = executeLog.GetValueOrDefault("content").ToString(); logModel.Status = executeLog.GetValueOrDefault("status", "0").ToString(); logModel = tasksLogService.AddTaskLog(job.Key.Name, logModel); - + taskQzService.Update(f => f.ID == job.Key.Name, f => new SysTasksQz() + { + RunTimes = f.RunTimes + 1 + }); logger.Info($"执行任务【{job.Key.Name}|{logModel.JobName}】结果={logModel.JobMessage}"); } } diff --git a/ZR.Tasks/TaskScheduler/Job_SyncTest.cs b/ZR.Tasks/TaskScheduler/Job_SyncTest.cs index e8f1b1c..137f981 100644 --- a/ZR.Tasks/TaskScheduler/Job_SyncTest.cs +++ b/ZR.Tasks/TaskScheduler/Job_SyncTest.cs @@ -6,7 +6,6 @@ namespace ZR.Tasks /// /// 定时任务测试 /// - //[AppService(ServiceLifetime = LifeTime.Scoped)] public class Job_SyncTest : JobBase, IJob { //private readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); @@ -21,7 +20,6 @@ namespace ZR.Tasks await Task.Delay(1); //TODO 业务逻辑 - //throw new System.Exception("error"); } } } diff --git a/ZR.Vue/src/views/monitor/job/index.vue b/ZR.Vue/src/views/monitor/job/index.vue index c0c0e7d..3f9c033 100644 --- a/ZR.Vue/src/views/monitor/job/index.vue +++ b/ZR.Vue/src/views/monitor/job/index.vue @@ -4,7 +4,8 @@ - + 搜索 @@ -27,37 +28,43 @@ 导出 - 日志 + 日志 + - + + - + @@ -91,11 +98,6 @@ - - - {{form.isStart? "运行中":"已停止" }} - - @@ -111,36 +113,41 @@ - - + + - + cyon在线生成 - - + + - - + + - + + + + + + @@ -155,10 +162,10 @@ import { startTasks, stopTasks, runTasks, - exportTasks + exportTasks, } from "@/api/monitor/job"; export default { - name: "tasks", + name: "job", data() { var cronValidate = (rule, value, callback) => { if (this.form.triggerType === 1) { @@ -235,14 +242,19 @@ export default { }, // 计划任务列表 dataTasks: [], + // 任务状态字典 + isStartOptions: [ + { dictLabel: "运行中", dictValue: "true" }, + { dictLabel: "已停止", dictValue: "false", listClass: "danger" }, + ], //任务组名字典 jobGroupOptions: [], // 触发器类型 triggerTypeOptions: [ - // { - // label: 'Simple / [普通]', - // value: 0 - // }, + { + label: "Simple / [普通]", + value: 0, + }, { label: "Cron / [表达式]", value: 1, @@ -280,7 +292,6 @@ export default { }, created() { this.getList(); - this.getDicts("sys_job_group").then((response) => { this.jobGroupOptions = response.data; }); @@ -468,11 +479,13 @@ export default { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning", - }).then(() => { - return exportTasks(); - }).then(response => { - this.download(response.data.path) - }); + }) + .then(() => { + return exportTasks(); + }) + .then((response) => { + this.download(response.data.path); + }); }, }, }; diff --git a/ZR.Vue/src/views/monitor/job/log.vue b/ZR.Vue/src/views/monitor/job/log.vue index 9e96e4d..efb667e 100644 --- a/ZR.Vue/src/views/monitor/job/log.vue +++ b/ZR.Vue/src/views/monitor/job/log.vue @@ -108,7 +108,7 @@ import { } from "@/api/monitor/jobLog"; export default { - name: "JobLog", + name: "job/log", data() { return { // 遮罩层