package com.ruoyi.web.controller.task; import java.util.List; import javax.servlet.http.HttpServletResponse; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.system.domain.SysTask; import com.ruoyi.system.domain.vo.TaskQueryVO; import com.ruoyi.system.domain.vo.TaskCreateVO; import com.ruoyi.system.domain.vo.TaskUpdateVO; import com.ruoyi.system.domain.vo.TaskStatisticsVO; import com.ruoyi.system.domain.enums.TaskStatus; import com.ruoyi.system.service.ISysTaskService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; /** * 任务管理Controller * * @author ruoyi * @date 2024-01-15 */ @RestController @RequestMapping("/task") public class SysTaskController extends BaseController { @Autowired private ISysTaskService sysTaskService; /** * 查询任务管理列表 */ @PreAuthorize("@ss.hasPermi('task:general:query')") @GetMapping("/list") public TableDataInfo list(TaskQueryVO queryVO) { startPage(); List list = sysTaskService.selectSysTaskList(queryVO); return getDataTable(list); } /** * 导出任务管理列表 */ @PreAuthorize("@ss.hasPermi('task:general:export')") @Log(title = "任务管理", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, TaskQueryVO queryVO) { List list = sysTaskService.selectSysTaskList(queryVO); ExcelUtil util = new ExcelUtil(SysTask.class); util.exportExcel(response, list, "任务管理数据"); } /** * 获取任务管理详细信息 */ @PreAuthorize("@ss.hasPermi('task:general:query')") @GetMapping(value = "/{taskId}") public AjaxResult getInfo(@PathVariable("taskId") Long taskId) { return success(sysTaskService.getTaskDetail(taskId)); } /** * 新增任务管理 */ @PreAuthorize("@ss.hasPermi('task:general:add')") @Log(title = "任务管理", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody TaskCreateVO createVO) { return toAjax(sysTaskService.insertSysTask(createVO)); } /** * 修改任务管理 */ @PreAuthorize("@ss.hasPermi('task:general:edit')") @Log(title = "任务管理", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody TaskUpdateVO updateVO) { return toAjax(sysTaskService.updateSysTask(updateVO)); } /** * 删除任务管理 */ @PreAuthorize("@ss.hasPermi('task:general:remove')") @Log(title = "任务管理", businessType = BusinessType.DELETE) @DeleteMapping("/{taskIds}") public AjaxResult remove(@PathVariable Long[] taskIds) { return toAjax(sysTaskService.deleteSysTaskByTaskIds(taskIds)); } /** * 分配任务 */ @PreAuthorize("@ss.hasPermi('task:general:assign')") @Log(title = "任务分配", businessType = BusinessType.UPDATE) @PutMapping("/{taskId}/assign") public AjaxResult assignTask(@PathVariable Long taskId, @RequestBody AssignTaskRequest request) { return toAjax(sysTaskService.assignTask(taskId, request.getAssigneeId(), request.getRemark())); } /** * 更新任务状态 */ @PreAuthorize("@ss.hasPermi('task:general:status')") @Log(title = "任务状态变更", businessType = BusinessType.UPDATE) @PutMapping("/{taskId}/status") public AjaxResult changeTaskStatus(@PathVariable Long taskId, @RequestBody ChangeStatusRequest request) { TaskStatus newStatus = TaskStatus.getByCode(request.getTaskStatus()); if (newStatus == null) { return error("无效的任务状态"); } return toAjax(sysTaskService.changeTaskStatus(taskId, newStatus, request.getRemark())); } /** * 查询任务统计信息 */ @PreAuthorize("@ss.hasPermi('task:general:query')") @GetMapping("/statistics") public AjaxResult getStatistics() { TaskStatisticsVO statistics = sysTaskService.getTaskStatistics(); return success(statistics); } /** * 查询超时任务列表 */ @PreAuthorize("@ss.hasPermi('task:general:query')") @GetMapping("/overdue") public AjaxResult getOverdueTasks() { List list = sysTaskService.selectOverdueTasks(); return success(list); } /** * 查询我的任务列表 */ @PreAuthorize("@ss.hasPermi('task:general:query')") @GetMapping("/my") public AjaxResult getMyTasks() { List list = sysTaskService.selectMyTasks(getUserId()); return success(list); } /** * 分配任务请求对象 */ public static class AssignTaskRequest { private Long assigneeId; private String remark; public Long getAssigneeId() { return assigneeId; } public void setAssigneeId(Long assigneeId) { this.assigneeId = assigneeId; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } } /** * 变更状态请求对象 */ public static class ChangeStatusRequest { private String taskStatus; private String remark; public String getTaskStatus() { return taskStatus; } public void setTaskStatus(String taskStatus) { this.taskStatus = taskStatus; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } } }