package com.mes.controller; import com.mes.entity.PlcTestTask; import com.mes.service.PlcTestTaskService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.Map; /** * PLC测试任务控制器 * 专注于任务管理相关的API接口 * * @author huang * @date 2025/10/30 */ @Slf4j @RestController @RequestMapping("tasks") @Api(tags = "PLC测试任务管理") public class PlcTestTaskController { @Autowired private PlcTestTaskService plcTestTaskService; /** * 获取任务列表 * 根据项目ID获取任务列表 * 注意:projectId为必填参数 */ @GetMapping("/list") @ApiOperation("获取任务列表") public Map getTasksByProjectId(@RequestParam(required = true) String projectId) { log.info("获取任务列表,projectId: {}", projectId); Map result = new HashMap<>(); try { // 由于使用了required=true,Spring会自动进行非空校验 // 额外的格式校验 if (projectId.trim().isEmpty()) { result.put("code", 400); result.put("message", "项目ID不能为空字符串"); return result; } // 调用服务获取任务列表 java.util.List tasks = plcTestTaskService.getTasksByProjectId(projectId); result.put("code", 200); result.put("message", "获取任务列表成功"); result.put("data", tasks); } catch (Exception e) { log.error("获取任务列表异常,projectId: {}", projectId, e); result.put("code", 500); result.put("message", "获取任务列表异常: " + e.getMessage()); } result.put("timestamp", System.currentTimeMillis()); return result; } /** * 获取任务详情 * 根据任务ID获取任务详情 * 注意:id为必填参数 */ @GetMapping("/detail") @ApiOperation("获取任务详情") public Map getTaskDetail(@RequestParam(required = true) Long id) { log.info("获取任务详情,id: {}", id); Map result = new HashMap<>(); try { // 调用服务获取任务详情 PlcTestTask task = plcTestTaskService.getTaskById(id); if (task != null) { result.put("code", 200); result.put("message", "获取任务详情成功"); result.put("data", task); } else { result.put("code", 404); result.put("message", "未找到任务记录"); } } catch (Exception e) { log.error("获取任务详情异常,id: {}", id, e); result.put("code", 500); result.put("message", "获取任务详情异常: " + e.getMessage()); } result.put("timestamp", System.currentTimeMillis()); return result; } /** * 更新任务状态 * 注意:id和status均为必填参数 */ @PostMapping("/update-status") @ApiOperation("更新任务状态") public Map updateTaskStatus( @RequestParam(required = true) Long id, @RequestParam(required = true) String status) { log.info("更新任务状态,id: {}, status: {}", id, status); Map result = new HashMap<>(); try { // 额外的格式校验 if (status.trim().isEmpty()) { result.put("code", 400); result.put("message", "状态不能为空字符串"); return result; } // 调用服务更新任务状态 plcTestTaskService.updateTaskStatus(id, status); result.put("code", 200); result.put("message", "任务状态更新成功"); } catch (Exception e) { log.error("更新任务状态异常,id: {}", id, e); result.put("code", 500); result.put("message", "更新任务状态异常: " + e.getMessage()); } result.put("timestamp", System.currentTimeMillis()); return result; } /** * 获取运行中的任务 * 注意:projectId为必填参数 */ @GetMapping("/running") @ApiOperation("获取运行中的任务") public Map getRunningTasks(@RequestParam(required = true) String projectId) { log.info("获取运行中的任务,projectId: {}", projectId); Map result = new HashMap<>(); try { // 额外的格式校验 if (projectId.trim().isEmpty()) { result.put("code", 400); result.put("message", "项目ID不能为空字符串"); return result; } // 调用服务获取运行中的任务 java.util.List tasks = plcTestTaskService.getRunningTasks(projectId); result.put("code", 200); result.put("message", "获取运行中的任务成功"); result.put("data", tasks); } catch (Exception e) { log.error("获取运行中的任务异常,projectId: {}", projectId, e); result.put("code", 500); result.put("message", "获取运行中的任务异常: " + e.getMessage()); } result.put("timestamp", System.currentTimeMillis()); return result; } }