Commit e541fe63246e140b9e3c1e309ec7f7d6540f191b

Authored by YunaiV
1 parent 35d171b1

🔧 简化 job 模块的 VO

Showing 22 changed files with 151 additions and 591 deletions
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/JobController.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.job;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 7 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
6 8 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
7 9 import cn.iocoder.yudao.framework.quartz.core.util.CronUtils;
8   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.*;
9   -import cn.iocoder.yudao.module.infra.convert.job.JobConvert;
  10 +import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobPageReqVO;
  11 +import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobRespVO;
  12 +import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobSaveReqVO;
10 13 import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobDO;
11 14 import cn.iocoder.yudao.module.infra.service.job.JobService;
12   -import io.swagger.v3.oas.annotations.tags.Tag;
  15 +import io.swagger.v3.oas.annotations.Operation;
13 16 import io.swagger.v3.oas.annotations.Parameter;
14 17 import io.swagger.v3.oas.annotations.Parameters;
15   -import io.swagger.v3.oas.annotations.Operation;
  18 +import io.swagger.v3.oas.annotations.tags.Tag;
16 19 import org.quartz.SchedulerException;
17 20 import org.springframework.security.access.prepost.PreAuthorize;
18 21 import org.springframework.validation.annotation.Validated;
... ... @@ -23,7 +26,6 @@ import javax.servlet.http.HttpServletResponse;
23 26 import javax.validation.Valid;
24 27 import java.io.IOException;
25 28 import java.time.LocalDateTime;
26   -import java.util.Collection;
27 29 import java.util.Collections;
28 30 import java.util.List;
29 31  
... ... @@ -42,7 +44,7 @@ public class JobController {
42 44 @PostMapping("/create")
43 45 @Operation(summary = "创建定时任务")
44 46 @PreAuthorize("@ss.hasPermission('infra:job:create')")
45   - public CommonResult<Long> createJob(@Valid @RequestBody JobCreateReqVO createReqVO)
  47 + public CommonResult<Long> createJob(@Valid @RequestBody JobSaveReqVO createReqVO)
46 48 throws SchedulerException {
47 49 return success(jobService.createJob(createReqVO));
48 50 }
... ... @@ -50,7 +52,7 @@ public class JobController {
50 52 @PutMapping("/update")
51 53 @Operation(summary = "更新定时任务")
52 54 @PreAuthorize("@ss.hasPermission('infra:job:update')")
53   - public CommonResult<Boolean> updateJob(@Valid @RequestBody JobUpdateReqVO updateReqVO)
  55 + public CommonResult<Boolean> updateJob(@Valid @RequestBody JobSaveReqVO updateReqVO)
54 56 throws SchedulerException {
55 57 jobService.updateJob(updateReqVO);
56 58 return success(true);
... ... @@ -94,16 +96,7 @@ public class JobController {
94 96 @PreAuthorize("@ss.hasPermission('infra:job:query')")
95 97 public CommonResult<JobRespVO> getJob(@RequestParam("id") Long id) {
96 98 JobDO job = jobService.getJob(id);
97   - return success(JobConvert.INSTANCE.convert(job));
98   - }
99   -
100   - @GetMapping("/list")
101   - @Operation(summary = "获得定时任务列表")
102   - @Parameter(name = "ids", description = "编号列表", required = true)
103   - @PreAuthorize("@ss.hasPermission('infra:job:query')")
104   - public CommonResult<List<JobRespVO>> getJobList(@RequestParam("ids") Collection<Long> ids) {
105   - List<JobDO> list = jobService.getJobList(ids);
106   - return success(JobConvert.INSTANCE.convertList(list));
  99 + return success(BeanUtils.toBean(job, JobRespVO.class));
107 100 }
108 101  
109 102 @GetMapping("/page")
... ... @@ -111,19 +104,20 @@ public class JobController {
111 104 @PreAuthorize("@ss.hasPermission('infra:job:query')")
112 105 public CommonResult<PageResult<JobRespVO>> getJobPage(@Valid JobPageReqVO pageVO) {
113 106 PageResult<JobDO> pageResult = jobService.getJobPage(pageVO);
114   - return success(JobConvert.INSTANCE.convertPage(pageResult));
  107 + return success(BeanUtils.toBean(pageResult, JobRespVO.class));
115 108 }
116 109  
117 110 @GetMapping("/export-excel")
118 111 @Operation(summary = "导出定时任务 Excel")
119 112 @PreAuthorize("@ss.hasPermission('infra:job:export')")
120 113 @OperateLog(type = EXPORT)
121   - public void exportJobExcel(@Valid JobExportReqVO exportReqVO,
  114 + public void exportJobExcel(@Valid JobPageReqVO exportReqVO,
122 115 HttpServletResponse response) throws IOException {
123   - List<JobDO> list = jobService.getJobList(exportReqVO);
  116 + exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
  117 + List<JobDO> list = jobService.getJobPage(exportReqVO).getList();
124 118 // 导出 Excel
125   - List<JobExcelVO> datas = JobConvert.INSTANCE.convertList02(list);
126   - ExcelUtils.write(response, "定时任务.xls", "数据", JobExcelVO.class, datas);
  119 + ExcelUtils.write(response, "定时任务.xls", "数据", JobRespVO.class,
  120 + BeanUtils.toBean(list, JobRespVO.class));
127 121 }
128 122  
129 123 @GetMapping("/get_next_times")
... ... @@ -133,8 +127,9 @@ public class JobController {
133 127 @Parameter(name = "count", description = "数量", example = "5")
134 128 })
135 129 @PreAuthorize("@ss.hasPermission('infra:job:query')")
136   - public CommonResult<List<LocalDateTime>> getJobNextTimes(@RequestParam("id") Long id,
137   - @RequestParam(value = "count", required = false, defaultValue = "5") Integer count) {
  130 + public CommonResult<List<LocalDateTime>> getJobNextTimes(
  131 + @RequestParam("id") Long id,
  132 + @RequestParam(value = "count", required = false, defaultValue = "5") Integer count) {
138 133 JobDO job = jobService.getJob(id);
139 134 if (job == null) {
140 135 return success(Collections.emptyList());
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/JobLogController.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.job;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
  4 +import cn.iocoder.yudao.framework.common.pojo.PageParam;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  6 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 7 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
6 8 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
7   -import cn.iocoder.yudao.framework.operatelog.core.util.OperateLogUtils;
8   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogExcelVO;
9   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogExportReqVO;
10 9 import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogPageReqVO;
11 10 import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogRespVO;
12   -import cn.iocoder.yudao.module.infra.convert.job.JobLogConvert;
13 11 import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobLogDO;
14 12 import cn.iocoder.yudao.module.infra.service.job.JobLogService;
15   -import io.swagger.v3.oas.annotations.tags.Tag;
16   -import io.swagger.v3.oas.annotations.Parameter;
17 13 import io.swagger.v3.oas.annotations.Operation;
  14 +import io.swagger.v3.oas.annotations.Parameter;
  15 +import io.swagger.v3.oas.annotations.tags.Tag;
18 16 import org.springframework.security.access.prepost.PreAuthorize;
19 17 import org.springframework.validation.annotation.Validated;
20 18 import org.springframework.web.bind.annotation.GetMapping;
... ... @@ -26,7 +24,6 @@ import javax.annotation.Resource;
26 24 import javax.servlet.http.HttpServletResponse;
27 25 import javax.validation.Valid;
28 26 import java.io.IOException;
29   -import java.util.Collection;
30 27 import java.util.List;
31 28  
32 29 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
... ... @@ -47,16 +44,7 @@ public class JobLogController {
47 44 @PreAuthorize("@ss.hasPermission('infra:job:query')")
48 45 public CommonResult<JobLogRespVO> getJobLog(@RequestParam("id") Long id) {
49 46 JobLogDO jobLog = jobLogService.getJobLog(id);
50   - return success(JobLogConvert.INSTANCE.convert(jobLog));
51   - }
52   -
53   - @GetMapping("/list")
54   - @Operation(summary = "获得定时任务日志列表")
55   - @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
56   - @PreAuthorize("@ss.hasPermission('infra:job:query')")
57   - public CommonResult<List<JobLogRespVO>> getJobLogList(@RequestParam("ids") Collection<Long> ids) {
58   - List<JobLogDO> list = jobLogService.getJobLogList(ids);
59   - return success(JobLogConvert.INSTANCE.convertList(list));
  47 + return success(BeanUtils.toBean(jobLog, JobLogRespVO.class));
60 48 }
61 49  
62 50 @GetMapping("/page")
... ... @@ -64,19 +52,20 @@ public class JobLogController {
64 52 @PreAuthorize("@ss.hasPermission('infra:job:query')")
65 53 public CommonResult<PageResult<JobLogRespVO>> getJobLogPage(@Valid JobLogPageReqVO pageVO) {
66 54 PageResult<JobLogDO> pageResult = jobLogService.getJobLogPage(pageVO);
67   - return success(JobLogConvert.INSTANCE.convertPage(pageResult));
  55 + return success(BeanUtils.toBean(pageResult, JobLogRespVO.class));
68 56 }
69 57  
70 58 @GetMapping("/export-excel")
71 59 @Operation(summary = "导出定时任务日志 Excel")
72 60 @PreAuthorize("@ss.hasPermission('infra:job:export')")
73 61 @OperateLog(type = EXPORT)
74   - public void exportJobLogExcel(@Valid JobLogExportReqVO exportReqVO,
  62 + public void exportJobLogExcel(@Valid JobLogPageReqVO exportReqVO,
75 63 HttpServletResponse response) throws IOException {
76   - List<JobLogDO> list = jobLogService.getJobLogList(exportReqVO);
  64 + exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
  65 + List<JobLogDO> list = jobLogService.getJobLogPage(exportReqVO).getList();
77 66 // 导出 Excel
78   - List<JobLogExcelVO> datas = JobLogConvert.INSTANCE.convertList02(list);
79   - ExcelUtils.write(response, "任务日志.xls", "数据", JobLogExcelVO.class, datas);
  67 + ExcelUtils.write(response, "任务日志.xls", "数据", JobLogRespVO.class,
  68 + BeanUtils.toBean(list, JobLogRespVO.class));
80 69 }
81 70  
82 71 -}
  72 +}
83 73 \ No newline at end of file
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/job/JobCreateReqVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.job.vo.job;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.Data;
5   -import lombok.EqualsAndHashCode;
6   -import lombok.ToString;
7   -
8   -import javax.validation.constraints.NotNull;
9   -
10   -@Schema(description = "管理后台 - 定时任务创建 Request VO")
11   -@Data
12   -@EqualsAndHashCode(callSuper = true)
13   -@ToString(callSuper = true)
14   -public class JobCreateReqVO extends JobBaseVO {
15   -
16   - @Schema(description = "处理器的名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "sysUserSessionTimeoutJob")
17   - @NotNull(message = "处理器的名字不能为空")
18   - private String handlerName;
19   -
20   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/job/JobExcelVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.job.vo.job;
2   -
3   -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
4   -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
5   -import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
6   -import com.alibaba.excel.annotation.ExcelProperty;
7   -import lombok.Data;
8   -
9   -import java.time.LocalDateTime;
10   -
11   -/**
12   - * 定时任务 Excel VO
13   - *
14   - * @author 芋道源码
15   - */
16   -@Data
17   -public class JobExcelVO {
18   -
19   - @ExcelProperty("任务编号")
20   - private Long id;
21   -
22   - @ExcelProperty("任务名称")
23   - private String name;
24   -
25   - @ExcelProperty(value = "任务状态", converter = DictConvert.class)
26   - @DictFormat(DictTypeConstants.JOB_STATUS)
27   - private Integer status;
28   -
29   - @ExcelProperty("处理器的名字")
30   - private String handlerName;
31   -
32   - @ExcelProperty("处理器的参数")
33   - private String handlerParam;
34   -
35   - @ExcelProperty("CRON 表达式")
36   - private String cronExpression;
37   -
38   - @ExcelProperty("最后一次执行的开始时间")
39   - private LocalDateTime executeBeginTime;
40   -
41   - @ExcelProperty("最后一次执行的结束时间")
42   - private LocalDateTime executeEndTime;
43   -
44   - @ExcelProperty("上一次触发时间")
45   - private LocalDateTime firePrevTime;
46   -
47   - @ExcelProperty("下一次触发时间")
48   - private LocalDateTime fireNextTime;
49   -
50   - @ExcelProperty("监控超时时间")
51   - private Integer monitorTimeout;
52   -
53   - @ExcelProperty("创建时间")
54   - private LocalDateTime createTime;
55   -
56   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/job/JobExportReqVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.job.vo.job;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.Data;
5   -
6   -@Schema(description = "管理后台 - 定时任务 Excel 导出 Request VO-参数和 JobPageReqVO 是一致的")
7   -@Data
8   -public class JobExportReqVO {
9   -
10   - @Schema(description = "任务名称-模糊匹配", example = "测试任务")
11   - private String name;
12   -
13   - @Schema(description = "任务状态-参见 JobStatusEnum 枚举", example = "1")
14   - private Integer status;
15   -
16   - @Schema(description = "处理器的名字-模糊匹配", example = "UserSessionTimeoutJob")
17   - private String handlerName;
18   -
19   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/job/JobRespVO.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.job.vo.job;
2 2  
  3 +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
  4 +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
  5 +import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
  6 +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
  7 +import com.alibaba.excel.annotation.ExcelProperty;
3 8 import io.swagger.v3.oas.annotations.media.Schema;
4 9 import lombok.Data;
5   -import lombok.EqualsAndHashCode;
6   -import lombok.ToString;
7 10  
8 11 import javax.validation.constraints.NotNull;
9 12 import java.time.LocalDateTime;
10 13  
11 14 @Schema(description = "管理后台 - 定时任务 Response VO")
12 15 @Data
13   -@EqualsAndHashCode(callSuper = true)
14   -@ToString(callSuper = true)
15   -public class JobRespVO extends JobBaseVO {
  16 +@ExcelIgnoreUnannotated
  17 +public class JobRespVO {
16 18  
17 19 @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  20 + @ExcelProperty("任务编号")
18 21 private Long id;
19 22  
  23 + @Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试任务")
  24 + @ExcelProperty("任务名称")
  25 + private String name;
  26 +
20 27 @Schema(description = "任务状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  28 + @ExcelProperty(value = "任务状态", converter = DictConvert.class)
  29 + @DictFormat(DictTypeConstants.JOB_STATUS)
21 30 private Integer status;
22 31  
23 32 @Schema(description = "处理器的名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "sysUserSessionTimeoutJob")
24   - @NotNull(message = "处理器的名字不能为空")
  33 + @ExcelProperty("处理器的名字")
25 34 private String handlerName;
26 35  
  36 + @Schema(description = "处理器的参数", example = "yudao")
  37 + @ExcelProperty("处理器的参数")
  38 + private String handlerParam;
  39 +
  40 + @Schema(description = "CRON 表达式", requiredMode = Schema.RequiredMode.REQUIRED, example = "0/10 * * * * ? *")
  41 + @ExcelProperty("CRON 表达式")
  42 + private String cronExpression;
  43 +
  44 + @Schema(description = "重试次数", requiredMode = Schema.RequiredMode.REQUIRED, example = "3")
  45 + @NotNull(message = "重试次数不能为空")
  46 + private Integer retryCount;
  47 +
  48 + @Schema(description = "重试间隔", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000")
  49 + private Integer retryInterval;
  50 +
  51 + @Schema(description = "监控超时时间", example = "1000")
  52 + @ExcelProperty("监控超时时间")
  53 + private Integer monitorTimeout;
  54 +
27 55 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
  56 + @ExcelProperty("创建时间")
28 57 private LocalDateTime createTime;
29 58  
30 59 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/job/JobBaseVO.java renamed to yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/job/JobSaveReqVO.java
... ... @@ -3,24 +3,29 @@ package cn.iocoder.yudao.module.infra.controller.admin.job.vo.job;
3 3 import io.swagger.v3.oas.annotations.media.Schema;
4 4 import lombok.Data;
5 5  
  6 +import javax.validation.constraints.NotEmpty;
6 7 import javax.validation.constraints.NotNull;
7 8  
8   -/**
9   -* 定时任务 Base VO,提供给添加、修改、详细的子 VO 使用
10   -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
11   -*/
  9 +@Schema(description = "管理后台 - 定时任务创建/修改 Request VO")
12 10 @Data
13   -public class JobBaseVO {
  11 +public class JobSaveReqVO {
  12 +
  13 + @Schema(description = "任务编号", example = "1024")
  14 + private Long id;
14 15  
15 16 @Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试任务")
16   - @NotNull(message = "任务名称不能为空")
  17 + @NotEmpty(message = "任务名称不能为空")
17 18 private String name;
18 19  
  20 + @Schema(description = "处理器的名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "sysUserSessionTimeoutJob")
  21 + @NotEmpty(message = "处理器的名字不能为空")
  22 + private String handlerName;
  23 +
19 24 @Schema(description = "处理器的参数", example = "yudao")
20 25 private String handlerParam;
21 26  
22 27 @Schema(description = "CRON 表达式", requiredMode = Schema.RequiredMode.REQUIRED, example = "0/10 * * * * ? *")
23   - @NotNull(message = "CRON 表达式不能为空")
  28 + @NotEmpty(message = "CRON 表达式不能为空")
24 29 private String cronExpression;
25 30  
26 31 @Schema(description = "重试次数", requiredMode = Schema.RequiredMode.REQUIRED, example = "3")
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/job/JobUpdateReqVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.job.vo.job;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.Data;
5   -import lombok.EqualsAndHashCode;
6   -import lombok.ToString;
7   -
8   -import javax.validation.constraints.NotNull;
9   -
10   -@Schema(description = "管理后台 - 定时任务更新 Request VO")
11   -@Data
12   -@EqualsAndHashCode(callSuper = true)
13   -@ToString(callSuper = true)
14   -public class JobUpdateReqVO extends JobBaseVO {
15   -
16   - @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
17   - @NotNull(message = "任务编号不能为空")
18   - private Long id;
19   -
20   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/log/JobLogBaseVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.job.vo.log;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.Data;
5   -import org.springframework.format.annotation.DateTimeFormat;
6   -
7   -import javax.validation.constraints.NotNull;
8   -import java.time.LocalDateTime;
9   -
10   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11   -
12   -/**
13   -* 定时任务日志 Base VO,提供给添加、修改、详细的子 VO 使用
14   -* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
15   -*/
16   -@Data
17   -public class JobLogBaseVO {
18   -
19   - @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
20   - @NotNull(message = "任务编号不能为空")
21   - private Long jobId;
22   -
23   - @Schema(description = "处理器的名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "sysUserSessionTimeoutJob")
24   - @NotNull(message = "处理器的名字不能为空")
25   - private String handlerName;
26   -
27   - @Schema(description = "处理器的参数", example = "yudao")
28   - private String handlerParam;
29   -
30   - @Schema(description = "第几次执行", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
31   - @NotNull(message = "第几次执行不能为空")
32   - private Integer executeIndex;
33   -
34   - @Schema(description = "开始执行时间", requiredMode = Schema.RequiredMode.REQUIRED)
35   - @NotNull(message = "开始执行时间不能为空")
36   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
37   - private LocalDateTime beginTime;
38   -
39   - @Schema(description = "结束执行时间")
40   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
41   - private LocalDateTime endTime;
42   -
43   - @Schema(description = "执行时长", example = "123")
44   - private Integer duration;
45   -
46   - @Schema(description = "任务状态,参见 JobLogStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
47   - @NotNull(message = "任务状态不能为空")
48   - private Integer status;
49   -
50   - @Schema(description = "结果数据", example = "执行成功")
51   - private String result;
52   -
53   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/log/JobLogExcelVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.job.vo.log;
2   -
3   -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
4   -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
5   -import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
6   -import com.alibaba.excel.annotation.ExcelProperty;
7   -import lombok.Data;
8   -
9   -import java.time.LocalDateTime;
10   -
11   -/**
12   - * 定时任务 Excel VO
13   - *
14   - * @author 芋艿
15   - */
16   -@Data
17   -public class JobLogExcelVO {
18   -
19   - @ExcelProperty("日志编号")
20   - private Long id;
21   -
22   - @ExcelProperty("任务编号")
23   - private Long jobId;
24   -
25   - @ExcelProperty("处理器的名字")
26   - private String handlerName;
27   -
28   - @ExcelProperty("处理器的参数")
29   - private String handlerParam;
30   -
31   - @ExcelProperty("第几次执行")
32   - private Integer executeIndex;
33   -
34   - @ExcelProperty("开始执行时间")
35   - private LocalDateTime beginTime;
36   -
37   - @ExcelProperty("结束执行时间")
38   - private LocalDateTime endTime;
39   -
40   - @ExcelProperty("执行时长")
41   - private Integer duration;
42   -
43   - @ExcelProperty(value = "任务状态", converter = DictConvert.class)
44   - @DictFormat(DictTypeConstants.JOB_STATUS)
45   - private Integer status;
46   -
47   - @ExcelProperty("结果数据")
48   - private String result;
49   -
50   - @ExcelProperty("创建时间")
51   - private LocalDateTime createTime;
52   -
53   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/log/JobLogExportReqVO.java deleted
1   -package cn.iocoder.yudao.module.infra.controller.admin.job.vo.log;
2   -
3   -import io.swagger.v3.oas.annotations.media.Schema;
4   -import lombok.Data;
5   -import org.springframework.format.annotation.DateTimeFormat;
6   -
7   -import java.time.LocalDateTime;
8   -
9   -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
10   -
11   -@Schema(description = "管理后台 - 定时任务 Excel 导出 Request VO,参数和 JobLogPageReqVO 是一致的")
12   -@Data
13   -public class JobLogExportReqVO {
14   -
15   - @Schema(description = "任务编号", example = "10")
16   - private Long jobId;
17   -
18   - @Schema(description = "处理器的名字,模糊匹配")
19   - private String handlerName;
20   -
21   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
22   - @Schema(description = "开始执行时间")
23   - private LocalDateTime beginTime;
24   -
25   - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
26   - @Schema(description = "结束执行时间")
27   - private LocalDateTime endTime;
28   -
29   - @Schema(description = "任务状态,参见 JobLogStatusEnum 枚举")
30   - private Integer status;
31   -
32   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/job/vo/log/JobLogRespVO.java
1 1 package cn.iocoder.yudao.module.infra.controller.admin.job.vo.log;
2 2  
  3 +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
  4 +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
  5 +import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
  6 +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
  7 +import com.alibaba.excel.annotation.ExcelProperty;
3 8 import io.swagger.v3.oas.annotations.media.Schema;
4 9 import lombok.Data;
5   -import lombok.EqualsAndHashCode;
6   -import lombok.ToString;
7 10  
8 11 import java.time.LocalDateTime;
9 12  
10 13 @Schema(description = "管理后台 - 定时任务日志 Response VO")
11 14 @Data
12   -@EqualsAndHashCode(callSuper = true)
13   -@ToString(callSuper = true)
14   -public class JobLogRespVO extends JobLogBaseVO {
  15 +@ExcelIgnoreUnannotated
  16 +public class JobLogRespVO {
15 17  
16 18 @Schema(description = "日志编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  19 + @ExcelProperty("日志编号")
17 20 private Long id;
18 21  
  22 + @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  23 + @ExcelProperty("任务编号")
  24 + private Long jobId;
  25 +
  26 + @Schema(description = "处理器的名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "sysUserSessionTimeoutJob")
  27 + @ExcelProperty("处理器的名字")
  28 + private String handlerName;
  29 +
  30 + @Schema(description = "处理器的参数", example = "yudao")
  31 + @ExcelProperty("处理器的参数")
  32 + private String handlerParam;
  33 +
  34 + @Schema(description = "第几次执行", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  35 + @ExcelProperty("第几次执行")
  36 + private Integer executeIndex;
  37 +
  38 + @Schema(description = "开始执行时间", requiredMode = Schema.RequiredMode.REQUIRED)
  39 + @ExcelProperty("开始执行时间")
  40 + private LocalDateTime beginTime;
  41 +
  42 + @Schema(description = "结束执行时间")
  43 + @ExcelProperty("结束执行时间")
  44 + private LocalDateTime endTime;
  45 +
  46 + @Schema(description = "执行时长", example = "123")
  47 + @ExcelProperty("执行时长")
  48 + private Integer duration;
  49 +
  50 + @Schema(description = "任务状态,参见 JobLogStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  51 + @ExcelProperty(value = "任务状态", converter = DictConvert.class)
  52 + @DictFormat(DictTypeConstants.JOB_STATUS)
  53 + private Integer status;
  54 +
  55 + @Schema(description = "结果数据", example = "执行成功")
  56 + @ExcelProperty("结果数据")
  57 + private String result;
  58 +
19 59 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
  60 + @ExcelProperty("创建时间")
20 61 private LocalDateTime createTime;
21 62  
22 63 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/convert/job/JobConvert.java deleted
1   -package cn.iocoder.yudao.module.infra.convert.job;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobCreateReqVO;
5   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobExcelVO;
6   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobRespVO;
7   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobUpdateReqVO;
8   -import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobDO;
9   -import org.mapstruct.Mapper;
10   -import org.mapstruct.factory.Mappers;
11   -
12   -import java.util.List;
13   -
14   -/**
15   - * 定时任务 Convert
16   - *
17   - * @author 芋道源码
18   - */
19   -@Mapper
20   -public interface JobConvert {
21   -
22   - JobConvert INSTANCE = Mappers.getMapper(JobConvert.class);
23   -
24   - JobDO convert(JobCreateReqVO bean);
25   -
26   - JobDO convert(JobUpdateReqVO bean);
27   -
28   - JobRespVO convert(JobDO bean);
29   -
30   - List<JobRespVO> convertList(List<JobDO> list);
31   -
32   - PageResult<JobRespVO> convertPage(PageResult<JobDO> page);
33   -
34   - List<JobExcelVO> convertList02(List<JobDO> list);
35   -
36   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/convert/job/JobLogConvert.java deleted
1   -package cn.iocoder.yudao.module.infra.convert.job;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogExcelVO;
5   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogRespVO;
6   -import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobLogDO;
7   -import org.mapstruct.Mapper;
8   -import org.mapstruct.factory.Mappers;
9   -
10   -import java.util.List;
11   -
12   -/**
13   - * 定时任务日志 Convert
14   - *
15   - * @author 芋艿
16   - */
17   -@Mapper
18   -public interface JobLogConvert {
19   -
20   - JobLogConvert INSTANCE = Mappers.getMapper(JobLogConvert.class);
21   -
22   - JobLogRespVO convert(JobLogDO bean);
23   -
24   - List<JobLogRespVO> convertList(List<JobLogDO> list);
25   -
26   - PageResult<JobLogRespVO> convertPage(PageResult<JobLogDO> page);
27   -
28   - List<JobLogExcelVO> convertList02(List<JobLogDO> list);
29   -
30   -}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/job/JobLogMapper.java
... ... @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.infra.dal.mysql.job;
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogExportReqVO;
7 6 import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogPageReqVO;
8 7 import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobLogDO;
9 8 import org.apache.ibatis.annotations.Delete;
... ... @@ -11,7 +10,6 @@ import org.apache.ibatis.annotations.Mapper;
11 10 import org.apache.ibatis.annotations.Param;
12 11  
13 12 import java.time.LocalDateTime;
14   -import java.util.List;
15 13  
16 14 /**
17 15 * 任务日志 Mapper
... ... @@ -32,17 +30,6 @@ public interface JobLogMapper extends BaseMapperX&lt;JobLogDO&gt; {
32 30 );
33 31 }
34 32  
35   - default List<JobLogDO> selectList(JobLogExportReqVO reqVO) {
36   - return selectList(new LambdaQueryWrapperX<JobLogDO>()
37   - .eqIfPresent(JobLogDO::getJobId, reqVO.getJobId())
38   - .likeIfPresent(JobLogDO::getHandlerName, reqVO.getHandlerName())
39   - .geIfPresent(JobLogDO::getBeginTime, reqVO.getBeginTime())
40   - .leIfPresent(JobLogDO::getEndTime, reqVO.getEndTime())
41   - .eqIfPresent(JobLogDO::getStatus, reqVO.getStatus())
42   - .orderByDesc(JobLogDO::getId) // ID 倒序
43   - );
44   - }
45   -
46 33 /**
47 34 * 物理删除指定时间之前的日志
48 35 *
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/job/JobMapper.java
1 1 package cn.iocoder.yudao.module.infra.dal.mysql.job;
2 2  
3   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobExportReqVO;
4   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobPageReqVO;
5   -import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobDO;
6 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
7 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
8 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
  6 +import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobPageReqVO;
  7 +import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobDO;
9 8 import org.apache.ibatis.annotations.Mapper;
10 9  
11   -import java.util.List;
12   -
13 10 /**
14 11 * 定时任务 Mapper
15 12 *
... ... @@ -30,12 +27,4 @@ public interface JobMapper extends BaseMapperX&lt;JobDO&gt; {
30 27 );
31 28 }
32 29  
33   - default List<JobDO> selectList(JobExportReqVO reqVO) {
34   - return selectList(new LambdaQueryWrapperX<JobDO>()
35   - .likeIfPresent(JobDO::getName, reqVO.getName())
36   - .eqIfPresent(JobDO::getStatus, reqVO.getStatus())
37   - .likeIfPresent(JobDO::getHandlerName, reqVO.getHandlerName())
38   - );
39   - }
40   -
41 30 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/job/JobLogService.java
... ... @@ -2,13 +2,9 @@ package cn.iocoder.yudao.module.infra.service.job;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.quartz.core.service.JobLogFrameworkService;
5   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogExportReqVO;
6 5 import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogPageReqVO;
7 6 import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobLogDO;
8 7  
9   -import java.util.Collection;
10   -import java.util.List;
11   -
12 8 /**
13 9 * Job 日志 Service 接口
14 10 *
... ... @@ -25,14 +21,6 @@ public interface JobLogService extends JobLogFrameworkService {
25 21 JobLogDO getJobLog(Long id);
26 22  
27 23 /**
28   - * 获得定时任务列表
29   - *
30   - * @param ids 编号
31   - * @return 定时任务列表
32   - */
33   - List<JobLogDO> getJobLogList(Collection<Long> ids);
34   -
35   - /**
36 24 * 获得定时任务分页
37 25 *
38 26 * @param pageReqVO 分页查询
... ... @@ -41,14 +29,6 @@ public interface JobLogService extends JobLogFrameworkService {
41 29 PageResult<JobLogDO> getJobLogPage(JobLogPageReqVO pageReqVO);
42 30  
43 31 /**
44   - * 获得定时任务列表, 用于 Excel 导出
45   - *
46   - * @param exportReqVO 查询条件
47   - * @return 定时任务分页
48   - */
49   - List<JobLogDO> getJobLogList(JobLogExportReqVO exportReqVO);
50   -
51   - /**
52 32 * 清理 exceedDay 天前的任务日志
53 33 *
54 34 * @param exceedDay 超过多少天就进行清理
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/job/JobLogServiceImpl.java
1 1 package cn.iocoder.yudao.module.infra.service.job;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogExportReqVO;
5 4 import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogPageReqVO;
6 5 import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobLogDO;
7 6 import cn.iocoder.yudao.module.infra.dal.mysql.job.JobLogMapper;
... ... @@ -13,8 +12,6 @@ import org.springframework.validation.annotation.Validated;
13 12  
14 13 import javax.annotation.Resource;
15 14 import java.time.LocalDateTime;
16   -import java.util.Collection;
17   -import java.util.List;
18 15  
19 16 /**
20 17 * Job 日志 Service 实现类
... ... @@ -30,8 +27,10 @@ public class JobLogServiceImpl implements JobLogService {
30 27 private JobLogMapper jobLogMapper;
31 28  
32 29 @Override
33   - public Long createJobLog(Long jobId, LocalDateTime beginTime, String jobHandlerName, String jobHandlerParam, Integer executeIndex) {
34   - JobLogDO log = JobLogDO.builder().jobId(jobId).handlerName(jobHandlerName).handlerParam(jobHandlerParam).executeIndex(executeIndex)
  30 + public Long createJobLog(Long jobId, LocalDateTime beginTime,
  31 + String jobHandlerName, String jobHandlerParam, Integer executeIndex) {
  32 + JobLogDO log = JobLogDO.builder().jobId(jobId).handlerName(jobHandlerName)
  33 + .handlerParam(jobHandlerParam).executeIndex(executeIndex)
35 34 .beginTime(beginTime).status(JobLogStatusEnum.RUNNING.getStatus()).build();
36 35 jobLogMapper.insert(log);
37 36 return log.getId();
... ... @@ -42,7 +41,8 @@ public class JobLogServiceImpl implements JobLogService {
42 41 public void updateJobLogResultAsync(Long logId, LocalDateTime endTime, Integer duration, boolean success, String result) {
43 42 try {
44 43 JobLogDO updateObj = JobLogDO.builder().id(logId).endTime(endTime).duration(duration)
45   - .status(success ? JobLogStatusEnum.SUCCESS.getStatus() : JobLogStatusEnum.FAILURE.getStatus()).result(result).build();
  44 + .status(success ? JobLogStatusEnum.SUCCESS.getStatus() : JobLogStatusEnum.FAILURE.getStatus())
  45 + .result(result).build();
46 46 jobLogMapper.updateById(updateObj);
47 47 } catch (Exception ex) {
48 48 log.error("[updateJobLogResultAsync][logId({}) endTime({}) duration({}) success({}) result({})]",
... ... @@ -73,18 +73,8 @@ public class JobLogServiceImpl implements JobLogService {
73 73 }
74 74  
75 75 @Override
76   - public List<JobLogDO> getJobLogList(Collection<Long> ids) {
77   - return jobLogMapper.selectBatchIds(ids);
78   - }
79   -
80   - @Override
81 76 public PageResult<JobLogDO> getJobLogPage(JobLogPageReqVO pageReqVO) {
82 77 return jobLogMapper.selectPage(pageReqVO);
83 78 }
84 79  
85   - @Override
86   - public List<JobLogDO> getJobLogList(JobLogExportReqVO exportReqVO) {
87   - return jobLogMapper.selectList(exportReqVO);
88   - }
89   -
90 80 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/job/JobService.java
1 1 package cn.iocoder.yudao.module.infra.service.job;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobCreateReqVO;
5   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobExportReqVO;
6 4 import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobPageReqVO;
7   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobUpdateReqVO;
  5 +import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobSaveReqVO;
8 6 import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobDO;
9 7 import org.quartz.SchedulerException;
10 8  
... ... @@ -25,14 +23,14 @@ public interface JobService {
25 23 * @param createReqVO 创建信息
26 24 * @return 编号
27 25 */
28   - Long createJob(@Valid JobCreateReqVO createReqVO) throws SchedulerException;
  26 + Long createJob(@Valid JobSaveReqVO createReqVO) throws SchedulerException;
29 27  
30 28 /**
31 29 * 更新定时任务
32 30 *
33 31 * @param updateReqVO 更新信息
34 32 */
35   - void updateJob(@Valid JobUpdateReqVO updateReqVO) throws SchedulerException;
  33 + void updateJob(@Valid JobSaveReqVO updateReqVO) throws SchedulerException;
36 34  
37 35 /**
38 36 * 更新定时任务的状态
... ... @@ -80,12 +78,4 @@ public interface JobService {
80 78 */
81 79 PageResult<JobDO> getJobPage(JobPageReqVO pageReqVO);
82 80  
83   - /**
84   - * 获得定时任务列表, 用于 Excel 导出
85   - *
86   - * @param exportReqVO 查询条件
87   - * @return 定时任务分页
88   - */
89   - List<JobDO> getJobList(JobExportReqVO exportReqVO);
90   -
91 81 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/job/JobServiceImpl.java
1 1 package cn.iocoder.yudao.module.infra.service.job;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
  4 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
4 5 import cn.iocoder.yudao.framework.quartz.core.scheduler.SchedulerManager;
5 6 import cn.iocoder.yudao.framework.quartz.core.util.CronUtils;
6   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobCreateReqVO;
7   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobExportReqVO;
8 7 import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobPageReqVO;
9   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobUpdateReqVO;
10   -import cn.iocoder.yudao.module.infra.convert.job.JobConvert;
  8 +import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobSaveReqVO;
11 9 import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobDO;
12 10 import cn.iocoder.yudao.module.infra.dal.mysql.job.JobMapper;
13 11 import cn.iocoder.yudao.module.infra.enums.job.JobStatusEnum;
... ... @@ -21,8 +19,8 @@ import java.util.Collection;
21 19 import java.util.List;
22 20  
23 21 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
24   -import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.*;
25 22 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.containsAny;
  23 +import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.*;
26 24  
27 25 /**
28 26 * 定时任务 Service 实现类
... ... @@ -41,14 +39,14 @@ public class JobServiceImpl implements JobService {
41 39  
42 40 @Override
43 41 @Transactional(rollbackFor = Exception.class)
44   - public Long createJob(JobCreateReqVO createReqVO) throws SchedulerException {
  42 + public Long createJob(JobSaveReqVO createReqVO) throws SchedulerException {
45 43 validateCronExpression(createReqVO.getCronExpression());
46 44 // 校验唯一性
47 45 if (jobMapper.selectByHandlerName(createReqVO.getHandlerName()) != null) {
48 46 throw exception(JOB_HANDLER_EXISTS);
49 47 }
50 48 // 插入
51   - JobDO job = JobConvert.INSTANCE.convert(createReqVO);
  49 + JobDO job = BeanUtils.toBean(createReqVO, JobDO.class);
52 50 job.setStatus(JobStatusEnum.INIT.getStatus());
53 51 fillJobMonitorTimeoutEmpty(job);
54 52 jobMapper.insert(job);
... ... @@ -66,7 +64,7 @@ public class JobServiceImpl implements JobService {
66 64  
67 65 @Override
68 66 @Transactional(rollbackFor = Exception.class)
69   - public void updateJob(JobUpdateReqVO updateReqVO) throws SchedulerException {
  67 + public void updateJob(JobSaveReqVO updateReqVO) throws SchedulerException {
70 68 validateCronExpression(updateReqVO.getCronExpression());
71 69 // 校验存在
72 70 JobDO job = validateJobExists(updateReqVO.getId());
... ... @@ -75,7 +73,7 @@ public class JobServiceImpl implements JobService {
75 73 throw exception(JOB_UPDATE_ONLY_NORMAL_STATUS);
76 74 }
77 75 // 更新
78   - JobDO updateObj = JobConvert.INSTANCE.convert(updateReqVO);
  76 + JobDO updateObj = BeanUtils.toBean(updateReqVO, JobDO.class);
79 77 fillJobMonitorTimeoutEmpty(updateObj);
80 78 jobMapper.updateById(updateObj);
81 79  
... ... @@ -159,11 +157,6 @@ public class JobServiceImpl implements JobService {
159 157 return jobMapper.selectPage(pageReqVO);
160 158 }
161 159  
162   - @Override
163   - public List<JobDO> getJobList(JobExportReqVO exportReqVO) {
164   - return jobMapper.selectList(exportReqVO);
165   - }
166   -
167 160 private static void fillJobMonitorTimeoutEmpty(JobDO job) {
168 161 if (job.getMonitorTimeout() == null) {
169 162 job.setMonitorTimeout(0);
... ...
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/job/JobLogServiceImplTest.java
... ... @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.infra.service.job;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
5   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogExportReqVO;
6 5 import cn.iocoder.yudao.module.infra.controller.admin.job.vo.log.JobLogPageReqVO;
7 6 import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobLogDO;
8 7 import cn.iocoder.yudao.module.infra.dal.mysql.job.JobLogMapper;
... ... @@ -12,14 +11,11 @@ import org.springframework.context.annotation.Import;
12 11  
13 12 import javax.annotation.Resource;
14 13 import java.time.LocalDateTime;
15   -import java.util.Collection;
16   -import java.util.List;
17 14  
18 15 import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildTime;
19 16 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
20 17 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
21 18 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
22   -import static java.util.Collections.singleton;
23 19 import static org.junit.jupiter.api.Assertions.assertEquals;
24 20 import static org.junit.jupiter.api.Assertions.assertNotNull;
25 21  
... ... @@ -111,23 +107,6 @@ public class JobLogServiceImplTest extends BaseDbUnitTest {
111 107 }
112 108  
113 109 @Test
114   - public void testGetJobLogList() {
115   - // mock 数据
116   - JobLogDO dbJobLog = randomPojo(JobLogDO.class, o -> o.setExecuteIndex(1));
117   - jobLogMapper.insert(dbJobLog);
118   - // 测试 handlerName 不匹配
119   - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> {}));
120   - // 准备参数
121   - Collection<Long> ids = singleton(dbJobLog.getId());
122   -
123   - // 调用
124   - List<JobLogDO> list = jobLogService.getJobLogList(ids);
125   - // 断言
126   - assertEquals(1, list.size());
127   - assertPojoEquals(dbJobLog, list.get(0));
128   - }
129   -
130   - @Test
131 110 public void testGetJobPage() {
132 111 // mock 数据
133 112 JobLogDO dbJobLog = randomPojo(JobLogDO.class, o -> {
... ... @@ -164,40 +143,4 @@ public class JobLogServiceImplTest extends BaseDbUnitTest {
164 143 assertPojoEquals(dbJobLog, pageResult.getList().get(0));
165 144 }
166 145  
167   - @Test
168   - public void testGetJobList_export() {
169   - // mock 数据
170   - JobLogDO dbJobLog = randomPojo(JobLogDO.class, o -> {
171   - o.setExecuteIndex(1);
172   - o.setHandlerName("handlerName 单元测试");
173   - o.setStatus(JobLogStatusEnum.SUCCESS.getStatus());
174   - o.setBeginTime(buildTime(2021, 1, 8));
175   - o.setEndTime(buildTime(2021, 1, 8));
176   - });
177   - jobLogMapper.insert(dbJobLog);
178   - // 测试 jobId 不匹配
179   - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setJobId(randomLongId())));
180   - // 测试 handlerName 不匹配
181   - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setHandlerName(randomString())));
182   - // 测试 beginTime 不匹配
183   - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setBeginTime(buildTime(2021, 1, 7))));
184   - // 测试 endTime 不匹配
185   - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setEndTime(buildTime(2021, 1, 9))));
186   - // 测试 status 不匹配
187   - jobLogMapper.insert(cloneIgnoreId(dbJobLog, o -> o.setStatus(JobLogStatusEnum.FAILURE.getStatus())));
188   - // 准备参数
189   - JobLogExportReqVO reqVo = new JobLogExportReqVO();
190   - reqVo.setJobId(dbJobLog.getJobId());
191   - reqVo.setHandlerName("单元");
192   - reqVo.setBeginTime(dbJobLog.getBeginTime());
193   - reqVo.setEndTime(dbJobLog.getEndTime());
194   - reqVo.setStatus(JobLogStatusEnum.SUCCESS.getStatus());
195   -
196   - // 调用
197   - List<JobLogDO> list = jobLogService.getJobLogList(reqVo);
198   - // 断言
199   - assertEquals(1, list.size());
200   - assertPojoEquals(dbJobLog, list.get(0));
201   - }
202   -
203 146 }
... ...
yudao-module-infra/yudao-module-infra-biz/src/test/java/cn/iocoder/yudao/module/infra/service/job/JobServiceImplTest.java
... ... @@ -3,10 +3,8 @@ package cn.iocoder.yudao.module.infra.service.job;
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.quartz.core.scheduler.SchedulerManager;
5 5 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
6   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobCreateReqVO;
7   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobExportReqVO;
8 6 import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobPageReqVO;
9   -import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobUpdateReqVO;
  7 +import cn.iocoder.yudao.module.infra.controller.admin.job.vo.job.JobSaveReqVO;
10 8 import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobDO;
11 9 import cn.iocoder.yudao.module.infra.dal.mysql.job.JobMapper;
12 10 import cn.iocoder.yudao.module.infra.enums.job.JobStatusEnum;
... ... @@ -16,17 +14,13 @@ import org.springframework.boot.test.mock.mockito.MockBean;
16 14 import org.springframework.context.annotation.Import;
17 15  
18 16 import javax.annotation.Resource;
19   -import java.util.Collection;
20   -import java.util.List;
21 17  
22   -import static cn.hutool.core.util.RandomUtil.randomEle;
23 18 import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
24 19 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
25 20 import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
26 21 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
27 22 import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomString;
28 23 import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.*;
29   -import static java.util.Collections.singletonList;
30 24 import static org.junit.jupiter.api.Assertions.*;
31 25 import static org.mockito.ArgumentMatchers.eq;
32 26 import static org.mockito.Mockito.verify;
... ... @@ -44,7 +38,7 @@ public class JobServiceImplTest extends BaseDbUnitTest {
44 38 @Test
45 39 public void testCreateJob_cronExpressionValid() {
46 40 // 准备参数。Cron 表达式为 String 类型,默认随机字符串。
47   - JobCreateReqVO reqVO = randomPojo(JobCreateReqVO.class);
  41 + JobSaveReqVO reqVO = randomPojo(JobSaveReqVO.class);
48 42  
49 43 // 调用,并断言异常
50 44 assertServiceException(() -> jobService.createJob(reqVO), JOB_CRON_EXPRESSION_VALID);
... ... @@ -53,7 +47,7 @@ public class JobServiceImplTest extends BaseDbUnitTest {
53 47 @Test
54 48 public void testCreateJob_jobHandlerExists() throws SchedulerException {
55 49 // 准备参数 指定 Cron 表达式
56   - JobCreateReqVO reqVO = randomPojo(JobCreateReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *"));
  50 + JobSaveReqVO reqVO = randomPojo(JobSaveReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *"));
57 51  
58 52 // 调用
59 53 jobService.createJob(reqVO);
... ... @@ -64,7 +58,8 @@ public class JobServiceImplTest extends BaseDbUnitTest {
64 58 @Test
65 59 public void testCreateJob_success() throws SchedulerException {
66 60 // 准备参数 指定 Cron 表达式
67   - JobCreateReqVO reqVO = randomPojo(JobCreateReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *"));
  61 + JobSaveReqVO reqVO = randomPojo(JobSaveReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *"))
  62 + .setId(null);
68 63  
69 64 // 调用
70 65 Long jobId = jobService.createJob(reqVO);
... ... @@ -72,7 +67,7 @@ public class JobServiceImplTest extends BaseDbUnitTest {
72 67 assertNotNull(jobId);
73 68 // 校验记录的属性是否正确
74 69 JobDO job = jobMapper.selectById(jobId);
75   - assertPojoEquals(reqVO, job);
  70 + assertPojoEquals(reqVO, job, "id");
76 71 assertEquals(JobStatusEnum.NORMAL.getStatus(), job.getStatus());
77 72 // 校验调用
78 73 verify(schedulerManager).addJob(eq(job.getId()), eq(job.getHandlerName()), eq(job.getHandlerParam()),
... ... @@ -82,7 +77,7 @@ public class JobServiceImplTest extends BaseDbUnitTest {
82 77 @Test
83 78 public void testUpdateJob_jobNotExists(){
84 79 // 准备参数
85   - JobUpdateReqVO reqVO = randomPojo(JobUpdateReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *"));
  80 + JobSaveReqVO reqVO = randomPojo(JobSaveReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *"));
86 81  
87 82 // 调用,并断言异常
88 83 assertServiceException(() -> jobService.updateJob(reqVO), JOB_NOT_EXISTS);
... ... @@ -94,7 +89,7 @@ public class JobServiceImplTest extends BaseDbUnitTest {
94 89 JobDO job = randomPojo(JobDO.class, o -> o.setStatus(JobStatusEnum.INIT.getStatus()));
95 90 jobMapper.insert(job);
96 91 // 准备参数
97   - JobUpdateReqVO updateReqVO = randomPojo(JobUpdateReqVO.class, o -> {
  92 + JobSaveReqVO updateReqVO = randomPojo(JobSaveReqVO.class, o -> {
98 93 o.setId(job.getId());
99 94 o.setCronExpression("0 0/1 * * * ? *");
100 95 });
... ... @@ -110,7 +105,7 @@ public class JobServiceImplTest extends BaseDbUnitTest {
110 105 JobDO job = randomPojo(JobDO.class, o -> o.setStatus(JobStatusEnum.NORMAL.getStatus()));
111 106 jobMapper.insert(job);
112 107 // 准备参数
113   - JobUpdateReqVO updateReqVO = randomPojo(JobUpdateReqVO.class, o -> {
  108 + JobSaveReqVO updateReqVO = randomPojo(JobSaveReqVO.class, o -> {
114 109 o.setId(job.getId());
115 110 o.setCronExpression("0 0/1 * * * ? *");
116 111 });
... ... @@ -201,25 +196,6 @@ public class JobServiceImplTest extends BaseDbUnitTest {
201 196 }
202 197  
203 198 @Test
204   - public void testGetJobList() {
205   - // mock 数据
206   - JobDO dbJob = randomPojo(JobDO.class, o -> {
207   - o.setStatus(randomEle(JobStatusEnum.values()).getStatus()); // 保证 status 的范围
208   - });
209   - jobMapper.insert(dbJob);
210   - // 测试 id 不匹配
211   - jobMapper.insert(cloneIgnoreId(dbJob, o -> {}));
212   -
213   - // 准备参数
214   - Collection<Long> ids = singletonList(dbJob.getId());
215   - // 调用
216   - List<JobDO> list = jobService.getJobList(ids);
217   - // 断言
218   - assertEquals(1, list.size());
219   - assertPojoEquals(dbJob, list.get(0));
220   - }
221   -
222   - @Test
223 199 public void testGetJobPage() {
224 200 // mock 数据
225 201 JobDO dbJob = randomPojo(JobDO.class, o -> {
... ... @@ -249,34 +225,6 @@ public class JobServiceImplTest extends BaseDbUnitTest {
249 225 }
250 226  
251 227 @Test
252   - public void testGetJobList_export() {
253   - // mock 数据
254   - JobDO dbJob = randomPojo(JobDO.class, o -> {
255   - o.setName("定时任务测试");
256   - o.setHandlerName("handlerName 单元测试");
257   - o.setStatus(JobStatusEnum.INIT.getStatus());
258   - });
259   - jobMapper.insert(dbJob);
260   - // 测试 name 不匹配
261   - jobMapper.insert(cloneIgnoreId(dbJob, o -> o.setName("土豆")));
262   - // 测试 status 不匹配
263   - jobMapper.insert(cloneIgnoreId(dbJob, o -> o.setStatus(JobStatusEnum.NORMAL.getStatus())));
264   - // 测试 handlerName 不匹配
265   - jobMapper.insert(cloneIgnoreId(dbJob, o -> o.setHandlerName(randomString())));
266   - // 准备参数
267   - JobExportReqVO reqVo = new JobExportReqVO();
268   - reqVo.setName("定时");
269   - reqVo.setStatus(JobStatusEnum.INIT.getStatus());
270   - reqVo.setHandlerName("单元");
271   -
272   - // 调用
273   - List<JobDO> list = jobService.getJobList(reqVo);
274   - // 断言
275   - assertEquals(1, list.size());
276   - assertPojoEquals(dbJob, list.get(0));
277   - }
278   -
279   - @Test
280 228 public void testGetJob() {
281 229 // mock 数据
282 230 JobDO dbJob = randomPojo(JobDO.class);
... ...