wlzboy
2025-11-05 37de2f4b0f732ca5c19582d4a340ad7c987925b5
ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/SysTaskController.java
@@ -11,6 +11,7 @@
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
@@ -18,12 +19,14 @@
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.domain.SysTask;
import com.ruoyi.system.domain.SysTaskLog;
import com.ruoyi.system.domain.VehicleInfo;
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.system.service.IVehicleInfoService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
@@ -39,24 +42,39 @@
    
    @Autowired
    private ISysTaskService sysTaskService;
    @Autowired
    private IVehicleInfoService vehicleInfoService;
    /**
     * 查询任务管理列表
     * 查询任务管理列表(后台管理端)
     * 管理员权限,可以查看所有任务
     */
    @PreAuthorize("@ss.hasPermi('task:general:query')")
    @GetMapping("/admin/list")
    public TableDataInfo adminList(TaskQueryVO queryVO) {
        startPage();
        List<SysTask> list = sysTaskService.selectSysTaskList(queryVO);
        return getDataTable(list);
    }
    /**
     * 查询任务列表(APP端)
     * 仅显示当前用户相关的任务:
     * 1. 当前用户所在机构的任务
     * 2. 当前用户创建的任务
     * 3. 分配给当前用户的任务
     */
    @GetMapping("/list")
    public TableDataInfo list(TaskQueryVO queryVO) {
    public TableDataInfo appList(TaskQueryVO queryVO) {
        // 在后端自动获取当前用户信息,实现综合查询
        // 综合查询:当前用户所在机构任务 + 当前用户创建的任务 + 分配给当前用户的任务
        Long currentUserId = getUserId();
        Long currentDeptId = getDeptId();
        
        // 如果前端没有传递这些参数,则使用当前登录用户信息
        if (queryVO.getCreatorId() == null && queryVO.getAssigneeId() == null && queryVO.getDeptId() == null) {
            queryVO.setDeptId(currentDeptId);
            queryVO.setCreatorId(currentUserId);
            queryVO.setAssigneeId(currentUserId);
        }
        // APP端强制使用当前登录用户信息进行过滤
        queryVO.setDeptId(currentDeptId);
        queryVO.setCreatorId(currentUserId);
        queryVO.setAssigneeId(currentUserId);
        
        startPage();
        List<SysTask> list = sysTaskService.selectSysTaskList(queryVO);
@@ -64,11 +82,11 @@
    }
    /**
     * 导出任务管理列表
     * 导出任务管理列表(后台管理端)
     */
    @PreAuthorize("@ss.hasPermi('task:general:export')")
    @Log(title = "任务管理", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    @PostMapping("/admin/export")
    public void export(HttpServletResponse response, TaskQueryVO queryVO) {
        List<SysTask> list = sysTaskService.selectSysTaskList(queryVO);
        ExcelUtil<SysTask> util = new ExcelUtil<SysTask>(SysTask.class);
@@ -76,61 +94,119 @@
    }
    /**
     * 获取任务管理详细信息
     * 获取任务详细信息(后台管理端)
     */
    @PreAuthorize("@ss.hasPermi('task:general:query')")
    @GetMapping(value = "/{taskId}")
    public AjaxResult getInfo(@PathVariable("taskId") Long taskId) {
    @GetMapping(value = "/admin/{taskId}")
    public AjaxResult adminGetInfo(@PathVariable("taskId") Long taskId) {
        return success(sysTaskService.getTaskDetail(taskId));
    }
    /**
     * 新增任务管理
     * 获取任务详细信息(APP端)
     */
    @GetMapping(value = "/{taskId}")
    public AjaxResult appGetInfo(@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) {
    @PostMapping("/admin")
    public AjaxResult adminAdd(@RequestBody TaskCreateVO createVO) {
        return toAjax(sysTaskService.insertSysTask(createVO));
    }
    /**
     * 修改任务管理
     * 新增任务(APP端)
     */
    @Log(title = "任务创建", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult appAdd(@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) {
    @PutMapping("/admin")
    public AjaxResult adminEdit(@RequestBody TaskUpdateVO updateVO) {
        return toAjax(sysTaskService.updateSysTask(updateVO));
    }
    /**
     * 删除任务管理
     * 修改任务(APP端)
     */
    @PreAuthorize("@ss.hasPermi('task:general:remove')")
    @Log(title = "任务管理", businessType = BusinessType.DELETE)
    @Log(title = "任务修改", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult appEdit(@RequestBody TaskUpdateVO updateVO) {
        return toAjax(sysTaskService.updateSysTask(updateVO));
    }
    /**
     * 删除任务(APP端)
     */
    @Log(title = "任务删除", businessType = BusinessType.DELETE)
    @DeleteMapping("/{taskIds}")
    public AjaxResult remove(@PathVariable Long[] taskIds) {
    public AjaxResult appRemove(@PathVariable Long[] taskIds) {
        return toAjax(sysTaskService.deleteSysTaskByTaskIds(taskIds));
    }
    /**
     * 分配任务
     * 删除任务(后台管理端)
     */
    @PreAuthorize("@ss.hasPermi('task:general:assign')")
    @PreAuthorize("@ss.hasPermi('task:general:remove')")
    @Log(title = "任务管理", businessType = BusinessType.DELETE)
    @DeleteMapping("/admin/{taskIds}")
    public AjaxResult adminRemove(@PathVariable Long[] taskIds) {
        return toAjax(sysTaskService.deleteSysTaskByTaskIds(taskIds));
    }
    /**
     * 分配任务(后台管理端)
     */
    @PreAuthorize("@ss.hasPermi('task:general:edit')")
    @Log(title = "任务分配", businessType = BusinessType.UPDATE)
    @PutMapping("/{taskId}/assign")
    public AjaxResult assignTask(@PathVariable Long taskId, @RequestBody AssignTaskRequest request) {
    @PutMapping("/admin/{taskId}/assign")
    public AjaxResult adminAssignTask(@PathVariable Long taskId, @RequestBody AssignTaskRequest request) {
        return toAjax(sysTaskService.assignTask(taskId, request.getAssigneeId(), request.getRemark()));
    }
    /**
     * 更新任务状态
     * 分配任务(APP端)
     */
    @PreAuthorize("@ss.hasPermi('task:general:status')")
    @Log(title = "任务分配", businessType = BusinessType.UPDATE)
    @PutMapping("/{taskId}/assign")
    public AjaxResult appAssignTask(@PathVariable Long taskId, @RequestBody AssignTaskRequest request) {
        return toAjax(sysTaskService.assignTask(taskId, request.getAssigneeId(), request.getRemark()));
    }
    /**
     * 更新任务状态(后台管理端)
     */
    @PreAuthorize("@ss.hasPermi('task:general:edit')")
    @Log(title = "任务状态变更", businessType = BusinessType.UPDATE)
    @PutMapping("/admin/{taskId}/status")
    public AjaxResult adminChangeTaskStatus(@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()));
    }
    /**
     * 更新任务状态(APP端)
     * 支持GPS位置信息上报
     */
    @Log(title = "任务状态变更", businessType = BusinessType.UPDATE)
    @PutMapping("/{taskId}/status")
    public AjaxResult changeTaskStatus(@PathVariable Long taskId, @RequestBody ChangeStatusRequest request) {
    public AjaxResult appChangeTaskStatus(@PathVariable Long taskId, @RequestBody ChangeStatusRequest request) {
        TaskStatus newStatus = TaskStatus.getByCode(request.getTaskStatus());
        if (newStatus == null) {
            return error("无效的任务状态");
@@ -157,9 +233,8 @@
    }
    /**
     * 查询任务统计信息
     * 查询任务统计信息(APP端)
     */
    @PreAuthorize("@ss.hasPermi('task:general:query')")
    @GetMapping("/statistics")
    public AjaxResult getStatistics() {
        TaskStatisticsVO statistics = sysTaskService.getTaskStatistics();
@@ -167,9 +242,18 @@
    }
    /**
     * 查询超时任务列表
     * 查询任务统计信息(后台管理端)
     */
    @PreAuthorize("@ss.hasPermi('task:general:query')")
    @GetMapping("/admin/statistics")
    public AjaxResult adminGetStatistics() {
        TaskStatisticsVO statistics = sysTaskService.getTaskStatistics();
        return success(statistics);
    }
    /**
     * 查询超时任务列表(APP端)
     */
    @GetMapping("/overdue")
    public AjaxResult getOverdueTasks() {
        List<SysTask> list = sysTaskService.selectOverdueTasks();
@@ -177,9 +261,18 @@
    }
    /**
     * 查询我的任务列表
     * 查询超时任务列表(后台管理端)
     */
    @PreAuthorize("@ss.hasPermi('task:general:query')")
    @GetMapping("/admin/overdue")
    public AjaxResult adminGetOverdueTasks() {
        List<SysTask> list = sysTaskService.selectOverdueTasks();
        return success(list);
    }
    /**
     * 查询我的任务列表(APP端)
     */
    @GetMapping("/my")
    public AjaxResult getMyTasks() {
        List<SysTask> list = sysTaskService.selectMyTasks(getUserId());