opt:1.更新后台管理首页看板功能

This commit is contained in:
2026-03-20 15:31:04 +08:00
parent bbd09035a8
commit 9498380c6f
12 changed files with 257 additions and 1 deletions

View File

@@ -167,4 +167,36 @@ public class TaskAPIProvider implements TaskAPI {
public WebResponse oneClickOperation(OneClickOperationRequestParam param, String source) {
return taskService.oneClickOperation(param, source);
}
@Override
public Map<String, Object> queryTasksByTimeRange(String startTime, String endTime) {
List<Task> taskList = taskService.queryTasksByTimeRange(startTime, endTime);
// 统计数据
long totalTasks = taskList.size();
long executingTasks = taskList.stream()
.filter(task -> TaskStatusEnum.EXECUTING.getCode().equals(task.getStatus()))
.count();
long completedTasks = taskList.stream()
.filter(task -> TaskStatusEnum.FINISHED.getCode().equals(task.getStatus()))
.count();
long canceledTasks = taskList.stream()
.filter(task -> TaskStatusEnum.CANCELED.getCode().equals(task.getStatus()))
.count();
// 计算完成率和取消率
double completionRate = totalTasks > 0 ? (completedTasks * 100.0 / totalTasks) : 0;
double cancellationRate = totalTasks > 0 ? (canceledTasks * 100.0 / totalTasks) : 0;
// 构建统计数据 Map
Map<String, Object> statisticsData = new java.util.HashMap<>();
statisticsData.put("totalTasks", totalTasks);
statisticsData.put("executingTasks", executingTasks);
statisticsData.put("completedTasks", completedTasks);
statisticsData.put("canceledTasks", canceledTasks);
statisticsData.put("completionRate", Math.round(completionRate * 100.0) / 100.0);
statisticsData.put("cancellationRate", Math.round(cancellationRate * 100.0) / 100.0);
return statisticsData;
}
}

View File

@@ -81,4 +81,12 @@ public interface TaskService extends IService<Task>{
*/
WebResponse createCruiseTask(CreateCruiseTaskRequestParam param);
/**
* 按时间范围查询任务数据(用于看板统计)
* @param startTime 开始时间
* @param endTime 结束时间
* @return 任务列表
*/
List<Task> queryTasksByTimeRange(String startTime, String endTime);
}

View File

@@ -359,4 +359,12 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper,Task> implements Tas
}
}
@Override
public List<Task> queryTasksByTimeRange(String startTime, String endTime) {
return taskMapper.selectList(new LambdaQueryWrapper<>(Task.class)
.ge(StrUtil.isNotBlank(startTime), Task::getCreate_time, startTime)
.le(StrUtil.isNotBlank(endTime), Task::getCreate_time, endTime)
);
}
}