添加任务状态获取接口
This commit is contained in:
-1
@@ -129,7 +129,6 @@ public class SysFileController implements SysFileApi {
|
||||
@PathVariable Boolean refresh
|
||||
) {
|
||||
return sysFileService.getStats(refresh);
|
||||
// return Result.ok(List.of());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+16
@@ -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;
|
||||
|
||||
/**
|
||||
* <p>Title : SysTaskController</p>
|
||||
* <p>Description : 系统任务 Controller</p>
|
||||
@@ -38,4 +42,16 @@ public class SysTaskController {
|
||||
return sysTaskService.page(pageReq);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取统计信息
|
||||
*
|
||||
* @param req 统计请求(时间范围)
|
||||
* @return 统计信息
|
||||
*/
|
||||
@Operation(summary = "获取统计信息")
|
||||
@PostMapping("stats")
|
||||
public Result<List<SysTaskStatsResp>> getStats(@RequestBody @Valid SysTaskStatsReq req) {
|
||||
return sysTaskService.getStats(req);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+17
@@ -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;
|
||||
|
||||
/**
|
||||
* <p>Title : SysTaskMapper</p>
|
||||
* <p>Description : 系统任务 Mapper 接口</p>
|
||||
@@ -16,4 +21,16 @@ import xtools.app.sys.model.entity.SysTask;
|
||||
@Mapper
|
||||
public interface SysTaskMapper extends BaseMapper<SysTask> {
|
||||
|
||||
/**
|
||||
* 按天统计任务数量(成功/失败/进行中)
|
||||
*
|
||||
* @param startTime 开始时间(包含)
|
||||
* @param endTime 结束时间(包含)
|
||||
* @return 每日统计列表
|
||||
*/
|
||||
List<SysTaskStatsResp> selectStats(
|
||||
@Param("startTime") Instant startTime,
|
||||
@Param("endTime") Instant endTime
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
+35
@@ -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;
|
||||
|
||||
/**
|
||||
* <p>Title : SysTaskStatsReq</p>
|
||||
* <p>Description : SysTaskStatsReq</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @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;
|
||||
|
||||
}
|
||||
+43
@@ -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;
|
||||
|
||||
/**
|
||||
* <p>Title : SysTaskStatsResp</p>
|
||||
* <p>Description : 系统任务每日统计响应对象</p>
|
||||
* <p>Company : org.xujun</p>
|
||||
*
|
||||
* @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;
|
||||
|
||||
}
|
||||
+12
@@ -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;
|
||||
|
||||
/**
|
||||
* <p>Title : SysTaskService</p>
|
||||
* <p>Description : 系统任务 Service</p>
|
||||
@@ -33,4 +37,12 @@ public interface SysTaskService {
|
||||
*/
|
||||
void save(TaskInfo taskInfo);
|
||||
|
||||
/**
|
||||
* 获取统计信息
|
||||
*
|
||||
* @param req 统计请求(时间范围)
|
||||
* @return 统计信息
|
||||
*/
|
||||
Result<List<SysTaskStatsResp>> getStats(SysTaskStatsReq req);
|
||||
|
||||
}
|
||||
|
||||
+26
@@ -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<List<SysTaskStatsResp>> 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<SysTaskStatsResp> list = sysTaskBaseService.getBaseMapper().selectStats(startTime, endTime);
|
||||
return Result.ok(list);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="xtools.app.sys.mapper.SysTaskMapper">
|
||||
|
||||
<!-- 按天统计任务数量(成功/失败/进行中) -->
|
||||
<select id="selectStats" resultType="xtools.app.sys.model.dto.resp.SysTaskStatsResp">
|
||||
SELECT DATE(gmt_create) AS day,
|
||||
COUNT(CASE WHEN status = 1 THEN 1 END) AS successCount,
|
||||
COUNT(CASE WHEN status = 2 THEN 1 END) AS failCount,
|
||||
COUNT(CASE WHEN status = 0 THEN 1 END) AS ingCount
|
||||
FROM sys_task
|
||||
WHERE gmt_create BETWEEN #{startTime} AND #{endTime}
|
||||
GROUP BY DATE(gmt_create)
|
||||
ORDER BY day
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user