From 583548c3e6c5e76fe41d9b5b6d6442d92f56eb65 Mon Sep 17 00:00:00 2001 From: lzq <2495532633@qq.com> Date: Thu, 18 Dec 2025 17:57:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/mp/support/PageResult.java | 3 +- .../sichen/config/TaskAutoConfiguration.java | 12 ++++ .../sichen/controller/TaskController.java | 12 ++++ .../controller/TaskExecuteLogController.java | 67 +++++++++++++++++++ .../TaskScheduleRecodeController.java | 67 +++++++++++++++++++ .../pojo/param/SearchTaskExecuteLogParam.java | 32 +++++++++ .../param/SearchTaskScheduleRecodeParam.java | 43 ++++++++++++ .../common/sichen/service/DbTaskService.java | 8 +++ .../sichen/service/TaskExecuteLogService.java | 50 ++++++++++++++ .../service/TaskScheduleRecodeService.java | 48 +++++++++++++ .../com/njzscloud/dispose/config/Example.java | 2 +- 11 files changed, 342 insertions(+), 2 deletions(-) create mode 100644 njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/controller/TaskExecuteLogController.java create mode 100644 njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/controller/TaskScheduleRecodeController.java create mode 100644 njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/pojo/param/SearchTaskExecuteLogParam.java create mode 100644 njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/pojo/param/SearchTaskScheduleRecodeParam.java diff --git a/njzscloud-common/njzscloud-common-mp/src/main/java/com/njzscloud/common/mp/support/PageResult.java b/njzscloud-common/njzscloud-common-mp/src/main/java/com/njzscloud/common/mp/support/PageResult.java index 3b9eec2..18f3a81 100644 --- a/njzscloud-common/njzscloud-common-mp/src/main/java/com/njzscloud/common/mp/support/PageResult.java +++ b/njzscloud-common/njzscloud-common-mp/src/main/java/com/njzscloud/common/mp/support/PageResult.java @@ -1,6 +1,7 @@ package com.njzscloud.common.mp.support; import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.PageUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.AccessLevel; import lombok.Getter; @@ -49,7 +50,7 @@ public final class PageResult { if (data == null) data = Collections.emptyList(); int total = data.size(); int pages = Math.toIntExact(total % size == 0 ? (total / size) : (total / size + 1)); - + PageUtil.setFirstPageNo(1); return new PageResult<>(ListUtil.page(current, size, data), total, pages, current, size); } diff --git a/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/config/TaskAutoConfiguration.java b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/config/TaskAutoConfiguration.java index 48039a8..3cea893 100644 --- a/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/config/TaskAutoConfiguration.java +++ b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/config/TaskAutoConfiguration.java @@ -7,6 +7,8 @@ import com.njzscloud.common.core.thread.ThreadPool; import com.njzscloud.common.sichen.contant.ScheduleType; import com.njzscloud.common.sichen.contant.TaskLogLevel; import com.njzscloud.common.sichen.controller.TaskController; +import com.njzscloud.common.sichen.controller.TaskExecuteLogController; +import com.njzscloud.common.sichen.controller.TaskScheduleRecodeController; import com.njzscloud.common.sichen.executor.SichenExecutor; import com.njzscloud.common.sichen.scheduler.SichenScheduler; import com.njzscloud.common.sichen.service.*; @@ -60,6 +62,16 @@ public class TaskAutoConfiguration { return new TaskController(combineStoreService); } + @Bean + public TaskScheduleRecodeController taskScheduleRecodeController(TaskScheduleRecodeService taskScheduleRecodeService) { + return new TaskScheduleRecodeController(taskScheduleRecodeService); + } + + @Bean + public TaskExecuteLogController taskExecuteLogController(TaskExecuteLogService taskExecuteLogService) { + return new TaskExecuteLogController(taskExecuteLogService); + } + @Bean public TaskExecuteLogService taskExecuteLogService() { return new TaskExecuteLogService(); diff --git a/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/controller/TaskController.java b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/controller/TaskController.java index 870d113..a662ff4 100644 --- a/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/controller/TaskController.java +++ b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/controller/TaskController.java @@ -51,6 +51,18 @@ public class TaskController { return R.success(); } + /** + * 禁用 + */ + @GetMapping("/disable") + public R disable( + @RequestParam("id") Long id, + @RequestParam("disable") Boolean disable + ) { + taskStore.dbTaskService.disable(id, disable); + return R.success(); + } + /** * 删除 */ diff --git a/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/controller/TaskExecuteLogController.java b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/controller/TaskExecuteLogController.java new file mode 100644 index 0000000..e49ca31 --- /dev/null +++ b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/controller/TaskExecuteLogController.java @@ -0,0 +1,67 @@ +package com.njzscloud.common.sichen.controller; + +import com.njzscloud.common.core.utils.R; +import com.njzscloud.common.mp.support.PageParam; +import com.njzscloud.common.mp.support.PageResult; +import com.njzscloud.common.sichen.pojo.entity.TaskExecuteLogEntity; +import com.njzscloud.common.sichen.pojo.param.SearchTaskExecuteLogParam; +import com.njzscloud.common.sichen.service.TaskExecuteLogService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 任务执行日志表 + */ +@Slf4j +@RestController +@RequestMapping("/task_execute_log") +@RequiredArgsConstructor +public class TaskExecuteLogController { + private final TaskExecuteLogService taskExecuteLogService; + + /** + * 新增 + */ + @PostMapping("/add") + public R add(@RequestBody TaskExecuteLogEntity taskExecuteLogEntity) { + taskExecuteLogService.add(taskExecuteLogEntity); + return R.success(); + } + + /** + * 修改 + */ + @PostMapping("/modify") + public R modify(@RequestBody TaskExecuteLogEntity taskExecuteLogEntity) { + taskExecuteLogService.modify(taskExecuteLogEntity); + return R.success(); + } + + /** + * 删除 + */ + @PostMapping("/del") + public R del(@RequestBody List ids) { + taskExecuteLogService.del(ids); + return R.success(); + } + + /** + * 详情 + */ + @GetMapping("/detail") + public R detail(@RequestParam("id") Long id) { + return R.success(taskExecuteLogService.detail(id)); + } + + /** + * 分页查询 + */ + @GetMapping("/paging") + public R> paging(PageParam pageParam, SearchTaskExecuteLogParam searchTaskExecuteLogParam) { + return R.success(taskExecuteLogService.paging(pageParam, searchTaskExecuteLogParam)); + } +} diff --git a/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/controller/TaskScheduleRecodeController.java b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/controller/TaskScheduleRecodeController.java new file mode 100644 index 0000000..ba4222c --- /dev/null +++ b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/controller/TaskScheduleRecodeController.java @@ -0,0 +1,67 @@ +package com.njzscloud.common.sichen.controller; + +import com.njzscloud.common.core.utils.R; +import com.njzscloud.common.mp.support.PageParam; +import com.njzscloud.common.mp.support.PageResult; +import com.njzscloud.common.sichen.pojo.entity.TaskScheduleRecodeEntity; +import com.njzscloud.common.sichen.pojo.param.SearchTaskScheduleRecodeParam; +import com.njzscloud.common.sichen.service.TaskScheduleRecodeService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 任务调度记录表 + */ +@Slf4j +@RestController +@RequestMapping("/task_schedule_recode") +@RequiredArgsConstructor +public class TaskScheduleRecodeController { + private final TaskScheduleRecodeService taskScheduleRecodeService; + + /** + * 新增 + */ + @PostMapping("/add") + public R add(@RequestBody TaskScheduleRecodeEntity taskScheduleRecodeEntity) { + taskScheduleRecodeService.add(taskScheduleRecodeEntity); + return R.success(); + } + + /** + * 修改 + */ + @PostMapping("/modify") + public R modify(@RequestBody TaskScheduleRecodeEntity taskScheduleRecodeEntity) { + taskScheduleRecodeService.modify(taskScheduleRecodeEntity); + return R.success(); + } + + /** + * 删除 + */ + @PostMapping("/del") + public R del(@RequestBody List ids) { + taskScheduleRecodeService.del(ids); + return R.success(); + } + + /** + * 详情 + */ + @GetMapping("/detail") + public R detail(@RequestParam("id") Long id) { + return R.success(taskScheduleRecodeService.detail(id)); + } + + /** + * 分页查询 + */ + @GetMapping("/paging") + public R> paging(PageParam pageParam, SearchTaskScheduleRecodeParam searchTaskScheduleRecodeParam) { + return R.success(taskScheduleRecodeService.paging(pageParam, searchTaskScheduleRecodeParam)); + } +} diff --git a/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/pojo/param/SearchTaskExecuteLogParam.java b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/pojo/param/SearchTaskExecuteLogParam.java new file mode 100644 index 0000000..0b292bd --- /dev/null +++ b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/pojo/param/SearchTaskExecuteLogParam.java @@ -0,0 +1,32 @@ +package com.njzscloud.common.sichen.pojo.param; + +import com.njzscloud.common.sichen.contant.TaskLogLevel; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDateTime; + +/** + * 任务执行日志表 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class SearchTaskExecuteLogParam { + /** + * 调度 Id + */ + private Long scheduleId; + /** + * 日志等级 + */ + private TaskLogLevel logLevel; + /** + * 日志时间 + */ + private LocalDateTime startLogTime; + private LocalDateTime endLogTime; +} diff --git a/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/pojo/param/SearchTaskScheduleRecodeParam.java b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/pojo/param/SearchTaskScheduleRecodeParam.java new file mode 100644 index 0000000..60a97d1 --- /dev/null +++ b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/pojo/param/SearchTaskScheduleRecodeParam.java @@ -0,0 +1,43 @@ +package com.njzscloud.common.sichen.pojo.param; + +import com.njzscloud.common.sichen.contant.TaskStatus; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDateTime; + +/** + * 任务调度记录表 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class SearchTaskScheduleRecodeParam { + /** + * 任务 Id + */ + private Long taskId; + /** + * 任务开始时间 + */ + private LocalDateTime startTime; + /** + * 任务结束时间 + */ + private LocalDateTime endTime; + + /** + * 任务状态 + */ + private TaskStatus taskStatus; + /** + * 本次调度是否为手动触发 + */ + private Boolean manually; + + private Boolean builtin; + +} diff --git a/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/service/DbTaskService.java b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/service/DbTaskService.java index d1c8938..fa0db71 100644 --- a/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/service/DbTaskService.java +++ b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/service/DbTaskService.java @@ -147,10 +147,18 @@ public class DbTaskService extends ServiceImpl implement public boolean trigger(Long id) { TaskEntity taskEntity = this.getById(id); if (taskEntity != null) { + Assert.isFalse(taskEntity.getDisabled(), () -> Exceptions.exception("请先启用任务")); TaskUtil.execute(BeanUtil.copyProperties(taskEntity, TaskInfo.class), true); return true; } else { return false; } } + + public void disable(Long id, Boolean disable) { + this.updateById(new TaskEntity() + .setId(id) + .setDisabled(disable) + ); + } } diff --git a/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/service/TaskExecuteLogService.java b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/service/TaskExecuteLogService.java index 4cb4948..d1bd432 100644 --- a/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/service/TaskExecuteLogService.java +++ b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/service/TaskExecuteLogService.java @@ -1,9 +1,59 @@ package com.njzscloud.common.sichen.service; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njzscloud.common.core.ex.Exceptions; +import com.njzscloud.common.mp.support.PageParam; +import com.njzscloud.common.mp.support.PageResult; import com.njzscloud.common.sichen.mapper.TaskExecuteLogMapper; import com.njzscloud.common.sichen.pojo.entity.TaskExecuteLogEntity; +import com.njzscloud.common.sichen.pojo.param.SearchTaskExecuteLogParam; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; public class TaskExecuteLogService extends ServiceImpl implements IService { + + /** + * 新增 + */ + public void add(TaskExecuteLogEntity taskExecuteLogEntity) { + this.save(taskExecuteLogEntity); + } + + /** + * 修改 + */ + public void modify(TaskExecuteLogEntity taskExecuteLogEntity) { + this.updateById(taskExecuteLogEntity); + } + + /** + * 删除 + */ + @Transactional(rollbackFor = Exception.class) + public void del(List ids) { + this.removeBatchByIds(ids); + } + + /** + * 详情 + */ + public TaskExecuteLogEntity detail(Long id) { + return this.getById(id); + } + + /** + * 分页查询 + */ + public PageResult paging(PageParam pageParam, SearchTaskExecuteLogParam searchTaskExecuteLogParam) { + Long scheduleId = searchTaskExecuteLogParam.getScheduleId(); + Assert.notNull(scheduleId, () -> Exceptions.clierr("未指调度记录")); + return PageResult.of(this.page(pageParam.toPage(), Wrappers.lambdaQuery() + .eq(TaskExecuteLogEntity::getScheduleId, scheduleId) + + )); + } } diff --git a/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/service/TaskScheduleRecodeService.java b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/service/TaskScheduleRecodeService.java index 4a14ccf..f546ee3 100644 --- a/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/service/TaskScheduleRecodeService.java +++ b/njzscloud-common/njzscloud-common-sichen/src/main/java/com/njzscloud/common/sichen/service/TaskScheduleRecodeService.java @@ -2,23 +2,30 @@ package com.njzscloud.common.sichen.service; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njzscloud.common.core.ex.Exceptions; import com.njzscloud.common.core.tuple.Tuple2; import com.njzscloud.common.core.utils.CallerUtil; +import com.njzscloud.common.mp.support.PageParam; +import com.njzscloud.common.mp.support.PageResult; import com.njzscloud.common.sichen.config.TaskProperties; import com.njzscloud.common.sichen.contant.TaskLogLevel; import com.njzscloud.common.sichen.mapper.TaskScheduleRecodeMapper; import com.njzscloud.common.sichen.pojo.entity.TaskExecuteLogEntity; import com.njzscloud.common.sichen.pojo.entity.TaskScheduleRecodeEntity; +import com.njzscloud.common.sichen.pojo.param.SearchTaskScheduleRecodeParam; import com.njzscloud.common.sichen.support.Task; import com.njzscloud.common.sichen.support.TaskHandle; import lombok.extern.slf4j.Slf4j; +import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.List; import java.util.concurrent.LinkedBlockingQueue; @Slf4j @@ -28,6 +35,47 @@ public class TaskScheduleRecodeService extends ServiceImpl ids) { + this.removeBatchByIds(ids); + taskExecuteLogService.remove(Wrappers.lambdaQuery().in(TaskExecuteLogEntity::getScheduleId, ids)); + } + + /** + * 详情 + */ + public TaskScheduleRecodeEntity detail(Long id) { + return this.getById(id); + } + + /** + * 分页查询 + */ + public PageResult paging(PageParam pageParam, SearchTaskScheduleRecodeParam searchTaskScheduleRecodeParam) { + Long taskId = searchTaskScheduleRecodeParam.getTaskId(); + Assert.notNull(taskId, () -> Exceptions.clierr("未指定任务")); + return PageResult.of(this.page(pageParam.toPage(), Wrappers.lambdaQuery() + .eq(TaskScheduleRecodeEntity::getTaskId, taskId) + )); + } + public TaskScheduleRecodeService(TaskProperties taskProperties, TaskExecuteLogService taskExecuteLogService) { this.taskProperties = taskProperties; this.taskExecuteLogService = taskExecuteLogService; diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/config/Example.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/config/Example.java index b70dc56..bc222e1 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/config/Example.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/config/Example.java @@ -17,7 +17,7 @@ public class Example { TaskHandle.debug("A-------当前时间:{} 线程名称:{} 是否虚拟线程:{}", System.currentTimeMillis() / 1000, name, virtual); TaskHandle.info("A-------当前时间:{} 线程名称:{} 是否虚拟线程:{}", System.currentTimeMillis() / 1000, name, virtual); TaskHandle.warn("A-------当前时间:{} 线程名称:{} 是否虚拟线程:{}", System.currentTimeMillis() / 1000, name, virtual); - TaskHandle.error("A-------当前时间:{} 线程名称:{} 是否虚拟线程:{}", System.currentTimeMillis() / 1000, name, virtual); + TaskHandle.error(new RuntimeException("错误错误错误错误错误错误错误"), "A-------当前时间:{} 线程名称:{} 是否虚拟线程:{}", System.currentTimeMillis() / 1000, name, virtual); try { int sleepTime = RandomUtil.randomInt(1000, 5000); Thread.sleep(sleepTime);