diff --git a/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/controller/SysFileController.java b/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/controller/SysFileController.java index f8dc500..548813b 100644 --- a/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/controller/SysFileController.java +++ b/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/controller/SysFileController.java @@ -129,7 +129,6 @@ public class SysFileController implements SysFileApi { @PathVariable Boolean refresh ) { return sysFileService.getStats(refresh); -// return Result.ok(List.of()); } } diff --git a/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/controller/SysTaskController.java b/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/controller/SysTaskController.java index afea9f3..76207bc 100644 --- a/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/controller/SysTaskController.java +++ b/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/controller/SysTaskController.java @@ -9,12 +9,16 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import xtools.app.sys.model.dto.req.SysTaskPageReq; +import xtools.app.sys.model.dto.req.SysTaskStatsReq; import xtools.app.sys.model.dto.resp.SysTaskResp; +import xtools.app.sys.model.dto.resp.SysTaskStatsResp; import xtools.app.sys.service.SysTaskService; import xtools.boot.api.model.dto.Result; import xtools.boot.api.model.dto.page.PageReq; import xtools.boot.api.model.dto.page.PageResp; +import java.util.List; + /** *

Title : SysTaskController

*

Description : 系统任务 Controller

@@ -38,4 +42,16 @@ public class SysTaskController { return sysTaskService.page(pageReq); } + /** + * 获取统计信息 + * + * @param req 统计请求(时间范围) + * @return 统计信息 + */ + @Operation(summary = "获取统计信息") + @PostMapping("stats") + public Result> getStats(@RequestBody @Valid SysTaskStatsReq req) { + return sysTaskService.getStats(req); + } + } diff --git a/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/mapper/SysTaskMapper.java b/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/mapper/SysTaskMapper.java index b90d1f5..622a4ba 100644 --- a/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/mapper/SysTaskMapper.java +++ b/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/mapper/SysTaskMapper.java @@ -2,8 +2,13 @@ package xtools.app.sys.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import xtools.app.sys.model.dto.resp.SysTaskStatsResp; import xtools.app.sys.model.entity.SysTask; +import java.time.Instant; +import java.util.List; + /** *

Title : SysTaskMapper

*

Description : 系统任务 Mapper 接口

@@ -16,4 +21,16 @@ import xtools.app.sys.model.entity.SysTask; @Mapper public interface SysTaskMapper extends BaseMapper { + /** + * 按天统计任务数量(成功/失败/进行中) + * + * @param startTime 开始时间(包含) + * @param endTime 结束时间(包含) + * @return 每日统计列表 + */ + List selectStats( + @Param("startTime") Instant startTime, + @Param("endTime") Instant endTime + ); + } diff --git a/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/model/dto/req/SysTaskStatsReq.java b/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/model/dto/req/SysTaskStatsReq.java new file mode 100644 index 0000000..ffce8c2 --- /dev/null +++ b/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/model/dto/req/SysTaskStatsReq.java @@ -0,0 +1,35 @@ +package xtools.app.sys.model.dto.req; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.Instant; + +/** + *

Title : SysTaskStatsReq

+ *

Description : SysTaskStatsReq

+ *

Company : org.xujun

+ * + * @author : xujun + * @version : 1.0.0 + * @date : 2026-01-30 19:15:03 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class SysTaskStatsReq implements Serializable { + + /** + * 创建时间范围[开始时间(包含),结束时间(包含)],不能为空且需同时包含开,结束时间 + */ + @NotNull(message = "时间范围不能为空") + @Size(min = 2, message = "时间范围需要包含开始和结束时间") + @Schema(description = "创建时间范围(包含两端)", example = "['2026-07-17 00:00:00', '2026-07-24 23:59:59']") + private Instant[] gmtCreateRange; + +} diff --git a/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/model/dto/resp/SysTaskStatsResp.java b/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/model/dto/resp/SysTaskStatsResp.java new file mode 100644 index 0000000..f9ce414 --- /dev/null +++ b/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/model/dto/resp/SysTaskStatsResp.java @@ -0,0 +1,43 @@ +package xtools.app.sys.model.dto.resp; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.time.Instant; + +/** + *

Title : SysTaskStatsResp

+ *

Description : 系统任务每日统计响应对象

+ *

Company : org.xujun

+ * + * @author : xujun + * @version : 1.0.0 + * @date : 2026-07-24 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SysTaskStatsResp implements Serializable { + + /** 当天(Instant,当天 0 点) */ + @Schema(description = "当天(Instant,当天 0 点)") + private Instant day; + + /** 成功数 */ + @Schema(description = "成功数") + private Long successCount; + + /** 失败数 */ + @Schema(description = "失败数") + private Long failCount; + + /** 进行中数 */ + @Schema(description = "进行中数") + private Long ingCount; + +} diff --git a/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/service/SysTaskService.java b/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/service/SysTaskService.java index 6cad7f2..e6ceb77 100644 --- a/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/service/SysTaskService.java +++ b/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/service/SysTaskService.java @@ -1,12 +1,16 @@ package xtools.app.sys.service; import xtools.app.sys.model.dto.req.SysTaskPageReq; +import xtools.app.sys.model.dto.req.SysTaskStatsReq; import xtools.app.sys.model.dto.resp.SysTaskResp; +import xtools.app.sys.model.dto.resp.SysTaskStatsResp; import xtools.boot.api.model.dto.Result; import xtools.boot.api.model.dto.page.PageReq; import xtools.boot.api.model.dto.page.PageResp; import xtools.boot.task.model.dto.TaskInfo; +import java.util.List; + /** *

Title : SysTaskService

*

Description : 系统任务 Service

@@ -33,4 +37,12 @@ public interface SysTaskService { */ void save(TaskInfo taskInfo); + /** + * 获取统计信息 + * + * @param req 统计请求(时间范围) + * @return 统计信息 + */ + Result> getStats(SysTaskStatsReq req); + } diff --git a/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/service/impl/SysTaskServiceImpl.java b/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/service/impl/SysTaskServiceImpl.java index a472b74..45ce924 100644 --- a/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/service/impl/SysTaskServiceImpl.java +++ b/xtools-app-sys/xtools-app-sys-biz/src/main/java/xtools/app/sys/service/impl/SysTaskServiceImpl.java @@ -10,7 +10,9 @@ import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Service; import xtools.app.sys.convert.SysTaskConvert; import xtools.app.sys.model.dto.req.SysTaskPageReq; +import xtools.app.sys.model.dto.req.SysTaskStatsReq; import xtools.app.sys.model.dto.resp.SysTaskResp; +import xtools.app.sys.model.dto.resp.SysTaskStatsResp; import xtools.app.sys.model.entity.SysTask; import xtools.app.sys.service.SysTaskService; import xtools.app.sys.service.base.SysTaskBaseService; @@ -30,6 +32,7 @@ import xtools.core.StringUtils; import xtools.core.enums.LogLevel; import java.time.Instant; +import java.util.List; import java.util.Objects; /** @@ -210,4 +213,27 @@ public class SysTaskServiceImpl implements SysTaskService, BaseParams { return Objects.isNull(data) ? null : data.getId(); } + /** + * 获取统计信息 + * + * @param req 统计请求(时间范围) + * @return 统计信息 + */ + @Override + public Result> getStats(SysTaskStatsReq req) { + Instant[] range = req.getGmtCreateRange(); + if (Objects.isNull(range) || range.length != CP_NUM2) { + throw new BizWarning("时间范围不能为空且需要包含开始和结束时间"); + } + // 判断开始时间不能大于结束时间 + Instant startTime = range[CP_NUM0]; + Instant endTime = range[CP_NUM1]; + if (startTime.isAfter(endTime)) { + throw new BizWarning("开始时间不能大于结束时间"); + } + // 按天统计任务数量(成功/失败/进行中) + List list = sysTaskBaseService.getBaseMapper().selectStats(startTime, endTime); + return Result.ok(list); + } + } diff --git a/xtools-app-sys/xtools-app-sys-biz/src/main/resources/mapper/SysTaskMapper.xml b/xtools-app-sys/xtools-app-sys-biz/src/main/resources/mapper/SysTaskMapper.xml new file mode 100644 index 0000000..0741b75 --- /dev/null +++ b/xtools-app-sys/xtools-app-sys-biz/src/main/resources/mapper/SysTaskMapper.xml @@ -0,0 +1,17 @@ + + + + + + + +