diff --git a/ZR.Admin.WebApi/Controllers/System/TasksController.cs b/ZR.Admin.WebApi/Controllers/System/TasksController.cs
index c3cb393f..45e19711 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 f41827f0..3fa3cdfc 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 5ed8fede..48b9a6b8 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 e8f1b1c3..137f9810 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 c0c0e7d4..3f9c0339 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 9e96e4d2..efb667e2 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 {
// 遮罩层