fix bug :任务状态没有正确更新为 COMPLETED

This commit is contained in:
Alvin-lyq 2026-04-23 16:58:32 +08:00
parent fa779cb512
commit f3fc9be86b
3 changed files with 26 additions and 3 deletions

View File

@ -39,6 +39,9 @@ class TaskManager
int mode = 0, int duration = 0, int count = 0, int mode = 0, int duration = 0, int count = 0,
const std::vector<ROUTE_INFO>& routeInfos = std::vector<ROUTE_INFO>()); const std::vector<ROUTE_INFO>& routeInfos = std::vector<ROUTE_INFO>());
// 只更新当前任务的状态
void updateCurrentTaskStatus(TaskStatus status);
// 获取当前任务名称 // 获取当前任务名称
std::string getCurrentTaskName(); std::string getCurrentTaskName();

View File

@ -147,6 +147,13 @@ ROUTE_INFO TaskManager::getCurrentRouteInfo()
return ROUTE_INFO(); return ROUTE_INFO();
} }
void TaskManager::updateCurrentTaskStatus(TaskStatus status)
{
std::lock_guard<std::mutex> lock(task_mutex_);
current_task_.status = status;
LOG_INFO("当前任务状态更新为: %d", status);
}
std::string TaskManager::getCurrentTaskName() std::string TaskManager::getCurrentTaskName()
{ {
std::lock_guard<std::mutex> lock(task_mutex_); std::lock_guard<std::mutex> lock(task_mutex_);

View File

@ -588,9 +588,10 @@ class TaskManagerNode : public rclcpp::Node
dst << src.rdbuf(); dst << src.rdbuf();
LOG_INFO("路径文件复制成功"); LOG_INFO("路径文件复制成功");
// 重新设置状态为 RUNNING让 PL 层继续工作 // 同时更新两个状态,保持任务继续运行
task_manager.setTaskStatus(1); task_manager.setTaskStatus(1);
// 定时器会自动发布任务消息PL 层会收到 task_status=1 并重新加载路径 task_manager.updateCurrentTaskStatus(TaskStatus::RUNNING);
// 定时器会自动发布任务消息PL 层会重新加载路径
} }
else else
{ {
@ -598,7 +599,19 @@ class TaskManagerNode : public rclcpp::Node
} }
} }
} }
// 如果没有下一条路径,保持 COMPLETED 状态 else
{
// 最后一条路径完成,更新任务管理器内部状态为 COMPLETED
LOG_INFO("已完成全部路径,任务结束");
task_manager.setTaskStatus(TaskStatus::COMPLETED);
task_manager.updateCurrentTaskStatus(TaskStatus::COMPLETED);
}
}
else
{
// 如果不是 COMPLETED 状态,直接同步更新任务管理器的状态
task_manager.setTaskStatus(msg->task_status);
task_manager.updateCurrentTaskStatus(status_up);
} }
} }
else else