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