feat:完成job页面+接口功能,还差job状态更新
This commit is contained in:
@@ -30,6 +30,10 @@ namespace Yi.Furion.Application.Rbac.Services.Impl
|
||||
var result = _schedulerFactory.TryGetJob(jobId, out var scheduler);
|
||||
var data = scheduler.GetModel();
|
||||
var output = data.JobDetail.Adapt<TaskGetOutput>();
|
||||
output.TriggerArgs = data.Triggers[0].Args;
|
||||
output.NextRunTime = data.Triggers[0].NextRunTime;
|
||||
output.LastRunTime = data.Triggers[0].LastRunTime;
|
||||
output.NumberOfRuns = data.Triggers[0].NumberOfRuns;
|
||||
return output;
|
||||
}
|
||||
|
||||
@@ -43,10 +47,14 @@ namespace Yi.Furion.Application.Rbac.Services.Impl
|
||||
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<List<TaskGetListOutput>>();
|
||||
|
||||
|
||||
|
||||
var output = data.Select(x => {
|
||||
|
||||
var res= new TaskGetListOutput();
|
||||
res= x.JobDetail.Adapt<TaskGetListOutput>();
|
||||
res.TriggerArgs = x.Triggers[0].Args;
|
||||
res.Status = x.Triggers[0].Status.ToString();
|
||||
return res;
|
||||
} ).ToList();
|
||||
return new PagedResultDto<TaskGetListOutput>(data.Count(), output);
|
||||
}
|
||||
|
||||
@@ -60,8 +68,8 @@ 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));
|
||||
var jobBuilder = JobBuilder.Create(input.AssemblyName, input.JobType).SetJobId(input.JobId).SetGroupName(input.GroupName)
|
||||
.SetConcurrent(input.Concurrent).SetDescription(input.Description);
|
||||
|
||||
//triggerBuilder
|
||||
//毫秒
|
||||
@@ -133,8 +141,8 @@ namespace Yi.Furion.Application.Rbac.Services.Impl
|
||||
public ScheduleResult Update(string jobId, TaskUpdateInput input)
|
||||
{
|
||||
//jobBuilder
|
||||
var jobBuilder = JobBuilder.Create(input.AssemblyName, input.JobTypeFullName).SetJobId(jobId).SetGroupName(input.GroupName)
|
||||
.SetConcurrent(input.Concurrent).SetDescription(input.Description).SetProperties(Newtonsoft.Json.JsonConvert.SerializeObject(input.Properties));
|
||||
var jobBuilder = JobBuilder.Create(input.AssemblyName, input.JobType).SetJobId(jobId).SetGroupName(input.GroupName)
|
||||
.SetConcurrent(input.Concurrent).SetDescription(input.Description);
|
||||
|
||||
//triggerBuilder
|
||||
//毫秒
|
||||
|
||||
@@ -11,11 +11,11 @@ namespace Yi.Furion.Core.Rbac.Dtos.Task
|
||||
{
|
||||
public string AssemblyName { get; set; }
|
||||
|
||||
public string JobTypeFullName { get; set; }
|
||||
public string JobType { get; set; }
|
||||
|
||||
public string JobId { get; set; }
|
||||
|
||||
public string GroupName { get; set; }
|
||||
public string? GroupName { get; set; }
|
||||
|
||||
public JobTypeEnum Type { get; set; }
|
||||
|
||||
@@ -25,8 +25,8 @@ namespace Yi.Furion.Core.Rbac.Dtos.Task
|
||||
|
||||
public bool Concurrent { get; set; }
|
||||
|
||||
public Dictionary<string, object> Properties { get; set; }
|
||||
//public Dictionary<string, object>? Properties { get; set; }
|
||||
|
||||
public string Description { get; set; }
|
||||
public string? Description { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,5 +81,14 @@ namespace Yi.Furion.Core.Rbac.Dtos.Task
|
||||
/// 作业信息额外数据运行时实例
|
||||
/// </summary>
|
||||
internal string RuntimeProperties { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 触发器参数
|
||||
/// </summary>
|
||||
public string TriggerArgs { get; set; }
|
||||
|
||||
//状态
|
||||
public string Status { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,5 +81,13 @@ namespace Yi.Furion.Core.Rbac.Dtos.Task
|
||||
/// 作业信息额外数据运行时实例
|
||||
/// </summary>
|
||||
internal string RuntimeProperties { get; set; }
|
||||
|
||||
public string TriggerArgs { get; set; }
|
||||
|
||||
public DateTime? NextRunTime { get; set; }
|
||||
|
||||
public DateTime? LastRunTime { get; set; }
|
||||
|
||||
public long NumberOfRuns { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,20 +11,20 @@ namespace Yi.Furion.Core.Rbac.Dtos.Task
|
||||
{
|
||||
public string AssemblyName { get; set; }
|
||||
|
||||
public string JobTypeFullName { get; set; }
|
||||
public string JobType { get; set; }
|
||||
|
||||
public string GroupName { get; set; }
|
||||
public string? GroupName { get; set; }
|
||||
|
||||
public JobTypeEnum Type { get; set; }
|
||||
|
||||
public string Cron { get; set; }
|
||||
public string? Cron { get; set; }
|
||||
|
||||
public int Millisecond { get; set; }
|
||||
|
||||
public bool Concurrent { get; set; }
|
||||
|
||||
public Dictionary<string, object> Properties { get; set; }
|
||||
// public Dictionary<string, object>? Properties { get; set; }
|
||||
|
||||
public string Description { get; set; }
|
||||
public string? Description { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -430,6 +430,11 @@
|
||||
作业信息额外数据运行时实例
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Yi.Furion.Core.Rbac.Dtos.Task.TaskGetListOutput.TriggerArgs">
|
||||
<summary>
|
||||
触发器参数
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Yi.Furion.Core.Rbac.Dtos.Task.TaskGetOutput.JobId">
|
||||
<summary>
|
||||
作业 Id
|
||||
|
||||
@@ -59,13 +59,13 @@ export function changeJobStatus(jobId, status) {
|
||||
|
||||
// 定时任务立即执行一次
|
||||
export function runJob(jobId, jobGroup) {
|
||||
const data = {
|
||||
jobId,
|
||||
jobGroup
|
||||
}
|
||||
// const data = {
|
||||
// jobId,
|
||||
// jobGroup
|
||||
// }
|
||||
return request({
|
||||
url: '/monitor/job/run',
|
||||
method: 'put',
|
||||
data: data
|
||||
url: `/task/run-once/${jobId}`,
|
||||
method: 'post',
|
||||
// data: data
|
||||
})
|
||||
}
|
||||
@@ -99,13 +99,13 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="程序集" align="center" prop="assemblyName" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="类型" align="center" prop="jobType" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="cron执行表达式" align="center" prop="cronExpression" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="毫秒间隔周期" align="center" prop="cronExpression" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="参数" align="center" prop="properties" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="触发器参数" align="center" prop="triggerArgs" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="Job参数" align="center" prop="properties" :show-overflow-tooltip="true" />
|
||||
|
||||
<el-table-column label="是否并行" align="center" prop="concurrent" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="最后更新时间" align="center" prop="updatedTime" :show-overflow-tooltip="true" />
|
||||
|
||||
<el-table-column label="状态" align="center" prop="status" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="描述" align="center" prop="description" :show-overflow-tooltip="true" />
|
||||
<!-- <el-table-column label="状态" align="center">
|
||||
<template #default="scope">
|
||||
@@ -207,7 +207,7 @@
|
||||
|
||||
|
||||
|
||||
<el-form-item prop="jobTypeFullName">
|
||||
<el-form-item prop="jobType">
|
||||
<template #label>
|
||||
<span>
|
||||
job类名
|
||||
@@ -223,7 +223,7 @@
|
||||
</el-tooltip>
|
||||
</span>
|
||||
</template>
|
||||
<el-input v-model="form.jobTypeFullName" placeholder="请输入调用程序集下的job完整类名" />
|
||||
<el-input v-model="form.jobType" placeholder="请输入调用程序集下的job完整类名" />
|
||||
</el-form-item>
|
||||
|
||||
|
||||
@@ -315,21 +315,24 @@
|
||||
<el-form :model="form" label-width="120px">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="任务编号:">{{ form.jobId }}</el-form-item>
|
||||
<el-form-item label="任务名称:">{{ form.jobName }}</el-form-item>
|
||||
<el-form-item label="任务Id:">{{ form.jobId }}</el-form-item>
|
||||
<el-form-item label="任务分组:">{{ form.groupName }}</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="任务分组:">{{ jobGroupFormat(form) }}</el-form-item>
|
||||
<el-form-item label="创建时间:">{{ form.createTime }}</el-form-item>
|
||||
<el-form-item label="任务所在程序集:">{{ form.assemblyName }}</el-form-item>
|
||||
<el-form-item label="任务完整类名:">{{ form.jobType }}</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="cron表达式:">{{ form.cronExpression }}</el-form-item>
|
||||
<el-form-item label="触发器参数:">{{ form.triggerArgs }}</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="下次执行时间:">{{ parseTime(form.nextValidTime) }}</el-form-item>
|
||||
<el-form-item label="下次执行时间:">{{ parseTime(form.nextRunTime) }}</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="调用目标方法:">{{ form.invokeTarget }}</el-form-item>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="最后执行时间:">{{ parseTime(form.lastRunTime) }}</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="已执行次数:">{{ form.numberOfRuns }}</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="任务状态:">
|
||||
@@ -339,18 +342,18 @@
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="是否并发:">
|
||||
<div v-if="form.concurrent == 0">允许</div>
|
||||
<div v-else-if="form.concurrent == 1">禁止</div>
|
||||
<div v-if="form.concurrent == true">允许</div>
|
||||
<div v-else-if="form.concurrent == false">禁止</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<!-- <el-col :span="12">
|
||||
<el-form-item label="执行策略:">
|
||||
<div v-if="form.misfirePolicy == 0">默认策略</div>
|
||||
<div v-else-if="form.misfirePolicy == 1">立即执行</div>
|
||||
<div v-else-if="form.misfirePolicy == 2">执行一次</div>
|
||||
<div v-else-if="form.misfirePolicy == 3">放弃执行</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-col> -->
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
@@ -395,9 +398,9 @@ const data = reactive({
|
||||
status: undefined
|
||||
},
|
||||
rules: {
|
||||
JobId: [{ required: true, message: "任务Id不能为空", trigger: "blur" }],
|
||||
jobId: [{ required: true, message: "任务Id不能为空", trigger: "blur" }],
|
||||
assemblyName: [{ required: true, message: "Job程序集不能为空", trigger: "blur" }],
|
||||
jobTypeFullName: [{ required: true, message: "Job全类名不能为空", trigger: "blur" }]
|
||||
jobType: [{ required: true, message: "Job全类名不能为空", trigger: "blur" }]
|
||||
}
|
||||
});
|
||||
|
||||
@@ -518,8 +521,9 @@ function handleAdd() {
|
||||
}
|
||||
/** 修改按钮操作 */
|
||||
function handleUpdate(row) {
|
||||
IsAdd.value=false;
|
||||
|
||||
reset();
|
||||
IsAdd.value=false;
|
||||
const jobId = row.jobId || ids.value;
|
||||
getJob(jobId).then(response => {
|
||||
form.value = response.data;
|
||||
@@ -530,7 +534,9 @@ IsAdd.value=false;
|
||||
/** 提交按钮 */
|
||||
function submitForm() {
|
||||
proxy.$refs["jobRef"].validate(valid => {
|
||||
if (valid) {
|
||||
console.log(valid,"123");
|
||||
if (true) {
|
||||
|
||||
if (IsAdd.value) {
|
||||
addJob(form.value).then(response => {
|
||||
proxy.$modal.msgSuccess("新增成功");
|
||||
@@ -539,7 +545,7 @@ function submitForm() {
|
||||
});
|
||||
} else {
|
||||
|
||||
updateJob(form.value).then(response => {
|
||||
updateJob(form.value.jobId,form.value).then(response => {
|
||||
proxy.$modal.msgSuccess("修改成功");
|
||||
open.value = false;
|
||||
getList();
|
||||
|
||||
Reference in New Issue
Block a user