修复获取机器人位置块BUG

This commit is contained in:
靳中伟 2025-09-23 08:58:16 +08:00
parent 516f9bd825
commit 1f0e46e987

View File

@ -609,61 +609,38 @@ class VehicleStationBlockHandler(RobotBlockHandler):
# 调用AMR信息接口获取机器人位置
amr_info_result = await get_amr_info(token=context.token)
if amr_info_result and amr_info_result.get("success", False):
# 获取AMR列表
amr_list = amr_info_result.get("result", [])
# 根据机器人名称查找对应的AMR信息
target_amr = None
for amr in amr_list:
if amr.get("name") == vehicle:
target_amr = amr
break
if target_amr:
# 获取机器人位置信息
last_node_name = target_amr.get("lastNodeName", "")
last_node_id = target_amr.get("lastNodeId", "")
# 设置上下文变量
context.set_variable("station", last_node_name)
context.set_variable("lastStation", last_node_name)
context.set_block_output(block.get("name"), {
"station": last_node_id,
"lastStation": last_node_id
})
result = {
"success": True,
"message": f"获取机器人 {vehicle} 位置成功,当前位置: {last_node_name}"
}
else:
result = {
"success": False,
"message": f"未找到名称为 {vehicle} 的机器人"
}
# 获取AMR列表
amr_list = amr_info_result.get("result", [])
# 根据机器人名称查找对应的AMR信息
target_amr = None
for amr in amr_list:
if amr.get("name") == vehicle:
target_amr = amr
break
if target_amr:
# 获取机器人位置信息
last_node_id = target_amr.get("lastNodeId", "")
# 设置上下文变量
context.set_variable("station", last_node_id)
context.set_variable("lastStation", last_node_id)
context.set_block_output(block.get("name"), {
"station": last_node_id,
"lastStation": last_node_id
})
result = {
"success": True,
"message": f"获取机器人 {vehicle} 位置成功,当前位置: {last_node_id}"
}
else:
# 如果AMR信息接口调用失败回退到原有的外部API方式
logger.warning(f"获取AMR信息失败回退到外部API方式")
result = await self._call_external_api("vehicle_station", input_params)
if result.get("success", False):
# 获取站点信息
station = result.get("data", {}).get("station", "")
last_station = result.get("data", {}).get("lastStation", "")
# 设置上下文变量
context.set_variable("station", station)
context.set_variable("lastStation", last_station)
context.set_block_output(block.get("name"), {
"station": station,
"lastStation": last_station
})
result["message"] = f"获取机器人 {vehicle} 位置成功,当前位置: {station}, 上次位置: {last_station}"
else:
result["message"] = f"获取机器人位置失败: {result.get('message', '未知错误')}"
result = {
"success": False,
"message": f"未找到名称为 {vehicle} 的机器人"
}
# 记录执行结果
await self._record_task_log(block, result, context)
return result