feat:动态定时任务开发

This commit is contained in:
Xiang
2026-02-11 15:23:32 +08:00
parent 90433695e4
commit a3241d8469
36 changed files with 1065 additions and 10 deletions

View File

@@ -0,0 +1,44 @@
package com.xiang.quartz.common.api;
import com.xiang.quartz.common.entity.dynamic.request.DynamicTaskQueryRequest;
import com.xiang.quartz.common.entity.dynamic.request.DynamicTaskSaveRequest;
import com.xiang.quartz.common.entity.dynamic.request.DynamicTaskUpdateRequest;
import com.xiang.quartz.common.entity.dynamic.response.DynamicTaskInfoResponse;
import com.xiang.xservice.basic.common.resp.Result;
import java.util.List;
/**
* @Author: xiang
* @Date: 2026-02-11 10:59
*/
public interface DynamicTaskApi {
/**
* 保存任务
* @param request 新增请求
* @return
*/
Result<Void> saveTask(DynamicTaskSaveRequest request);
/**
* 修改任务
* @param request 修改请求
* @return
*/
Result<Void> updateTask(DynamicTaskUpdateRequest request);
/**
* 查询任务详情
* @param id 任务id
* @return 任务详情
*/
Result<DynamicTaskInfoResponse> info(Long id);
/**
* 查询任务列表
* @param request 查询参数
* @return 任务列表
*/
Result<List<DynamicTaskInfoResponse>> list(DynamicTaskQueryRequest request);
}

View File

@@ -0,0 +1,33 @@
package com.xiang.quartz.common.entity.dynamic.request;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
/**
* @Author: xiang
* @Date: 2026-02-11 11:10
*/
@Data
public class DynamicTaskQueryRequest {
/**
* 任务名称
*/
private String taskName;
/**
* 任务分组
*/
private String taskGroup;
/**
* 运行时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime runTime;
/**
* 任务状态
*/
private Integer status;
}

View File

@@ -0,0 +1,45 @@
package com.xiang.quartz.common.entity.dynamic.request;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
/**
* @Author: xiang
* @Date: 2026-02-11 10:55
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DynamicTaskSaveRequest {
/**
* 任务id
*/
private Long id;
/**
* 任务名称
*/
private String taskName;
/**
* 任务分组
*/
private String taskGroup;
/**
* 运行时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime runTime;
/**
* 任务状态
*/
private Integer status;
/**
* 参数
*/
private String parameters;
}

View File

@@ -0,0 +1,45 @@
package com.xiang.quartz.common.entity.dynamic.request;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
/**
* @Author: xiang
* @Date: 2026-02-11 10:57
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DynamicTaskUpdateRequest {
/**
* id
*/
private Long id;
/**
* 任务名称
*/
private String taskName;
/**
* 任务分组
*/
private String taskGroup;
/**
* 运行时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime runTime;
/**
* 任务状态
*/
private Integer status;
/**
* 参数
*/
private String parameters;
}

View File

@@ -0,0 +1,58 @@
package com.xiang.quartz.common.entity.dynamic.response;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
/**
* @Author: xiang
* @Date: 2026-02-11 10:58
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DynamicTaskInfoResponse {
/**
* id
*/
private Long id;
/**
* 任务名称
*/
private String taskName;
/**
* 任务分组
*/
private String taskGroup;
/**
* 运行时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime runTime;
/**
* 任务状态
*/
private Integer status;
/**
* 参数
*/
private String parameters;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createdTime;
/**
* 修改时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updatedTime;
}

View File

@@ -0,0 +1,21 @@
package com.xiang.quartz.common.enums;
import lombok.Getter;
@Getter
public enum TaskStatusEnum {
UN_START(1, "未开始"),
PROCEED(2, "进行中"),
FINISHED(3, "已完成"),
CANCELED(4, "取消"),
ERROR(5, "错误"),
;
private final Integer code;
private final String desc;
TaskStatusEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
}

View File

@@ -0,0 +1,26 @@
package com.xiang.quartz.common.enums.url;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.springframework.http.HttpMethod;
/**
* @Author: xiang
* @Date: 2026-02-11 11:24
*/
@Getter
@AllArgsConstructor
public enum DynamicTaskUrlEnum {
SAVE_TASK("/open/dynamic/task/save", "保存任务", HttpMethod.POST),
UPDATE_TASK("/open/dynamic/task/update", "保存任务",HttpMethod.POST),
QUERY_TASK_INFO("/open/dynamic/task/info/", "查询任务详情", HttpMethod.GET),
QUERY_TASK_LIST("/open/dynamic/task/list", "查询任务列表", HttpMethod.POST),
;
private final String url;
private final String desc;
private final HttpMethod method;
}