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 @@
导出
- 日志
+ 日志
+
-
+
+
{{ scope.row.isStart ? "运行中":"已停止" }}
-
+
-
日志
+ 运行
+ 停止
- 运行
- 停止
-
- 启动
- 编辑
- 删除
+ 启动
+ 编辑
+ 删除
@@ -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 {
// 遮罩层