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<String, Object> getTasksByProjectId(@RequestParam(required = true) String projectId) {
|
log.info("获取任务列表,projectId: {}", projectId);
|
|
Map<String, Object> result = new HashMap<>();
|
try {
|
// 由于使用了required=true,Spring会自动进行非空校验
|
// 额外的格式校验
|
if (projectId.trim().isEmpty()) {
|
result.put("code", 400);
|
result.put("message", "项目ID不能为空字符串");
|
return result;
|
}
|
|
// 调用服务获取任务列表
|
java.util.List<PlcTestTask> 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<String, Object> getTaskDetail(@RequestParam(required = true) Long id) {
|
log.info("获取任务详情,id: {}", id);
|
|
Map<String, Object> 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<String, Object> updateTaskStatus( @RequestParam(required = true) Long id,
|
@RequestParam(required = true) String status) {
|
log.info("更新任务状态,id: {}, status: {}", id, status);
|
|
Map<String, Object> 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<String, Object> getRunningTasks(@RequestParam(required = true) String projectId) {
|
log.info("获取运行中的任务,projectId: {}", projectId);
|
|
Map<String, Object> result = new HashMap<>();
|
try {
|
// 额外的格式校验
|
if (projectId.trim().isEmpty()) {
|
result.put("code", 400);
|
result.put("message", "项目ID不能为空字符串");
|
return result;
|
}
|
|
// 调用服务获取运行中的任务
|
java.util.List<PlcTestTask> 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;
|
}
|
}
|