fix:同步工作流序列

This commit is contained in:
ZiWei
2025-12-10 17:32:11 +08:00
parent 2c69e663a7
commit d7c970d244

View File

@@ -85,23 +85,24 @@ class BioyondReactionStation(BioyondWorkstation):
self.force = 0.0 self.force = 0.0
self._frame_to_reactor_id = {1: "reactor_1", 2: "reactor_2", 3: "reactor_3", 4: "reactor_4", 5: "reactor_5"} self._frame_to_reactor_id = {1: "reactor_1", 2: "reactor_2", 3: "reactor_3", 4: "reactor_4", 5: "reactor_5"}
# 用于缓存从 Bioyond 查询的工作流序列 # 用于缓存从 Bioyond 查询的工作流序列
self._cached_workflow_sequence = [] self._cached_workflow_sequence = []
# 自动从 Bioyond 系统同步工作流序列(只在初始化时执行一次) # 自动从 Bioyond 系统同步工作流序列(只在初始化时执行一次)
try: # 自动从 Bioyond 系统同步工作流序列(只在初始化时执行一次)
print(f"[初始化] 开始自动同步工作流序列...") # try:
sync_result = self.sync_workflow_sequence_from_bioyond() # print(f"[初始化] 开始自动同步工作流序列...")
if sync_result.get("success"): # sync_result = self.sync_workflow_sequence_from_bioyond()
print(f"✅ [初始化] {sync_result.get('message')}") # if sync_result.get("success"):
print(f"✅ [初始化] workflow_sequence 已设置为: {self._cached_workflow_sequence}") # print(f"✅ [初始化] {sync_result.get('message')}")
else: # print(f"✅ [初始化] workflow_sequence 已设置为: {self._cached_workflow_sequence}")
print(f"⚠️ [初始化] 工作流序列同步失败: {sync_result.get('message')}") # else:
except Exception as e: # print(f"⚠️ [初始化] 工作流序列同步失败: {sync_result.get('message')}")
print(f"⚠️ [初始化] 自动同步工作流序列时发生异常: {e}") # except Exception as e:
import traceback # print(f"⚠️ [初始化] 自动同步工作流序列时发生异常: {e}")
traceback.print_exc() # import traceback
# traceback.print_exc()
@property @property
def workflow_sequence(self) -> str: def workflow_sequence(self) -> str:
@@ -112,7 +113,7 @@ class BioyondReactionStation(BioyondWorkstation):
""" """
import json import json
return json.dumps(self._cached_workflow_sequence, ensure_ascii=False) return json.dumps(self._cached_workflow_sequence, ensure_ascii=False)
@workflow_sequence.setter @workflow_sequence.setter
def workflow_sequence(self, value: List[str]): def workflow_sequence(self, value: List[str]):
"""设置工作流序列 """设置工作流序列
@@ -960,7 +961,7 @@ class BioyondReactionStation(BioyondWorkstation):
""" """
try: try:
print(f"[同步工作流序列] 开始从 Bioyond 系统查询工作流...") print(f"[同步工作流序列] 开始从 Bioyond 系统查询工作流...")
# 检查 hardware_interface 是否可用 # 检查 hardware_interface 是否可用
if not hasattr(self, 'hardware_interface') or self.hardware_interface is None: if not hasattr(self, 'hardware_interface') or self.hardware_interface is None:
error_msg = "hardware_interface 未初始化" error_msg = "hardware_interface 未初始化"
@@ -970,14 +971,14 @@ class BioyondReactionStation(BioyondWorkstation):
"workflows": [], "workflows": [],
"message": error_msg "message": error_msg
} }
# 查询所有工作流 # 查询所有工作流
query_params = json.dumps({}) query_params = json.dumps({})
print(f"[同步工作流序列] 调用 hardware_interface.query_workflow...") print(f"[同步工作流序列] 调用 hardware_interface.query_workflow...")
workflows_data = self.hardware_interface.query_workflow(query_params) workflows_data = self.hardware_interface.query_workflow(query_params)
print(f"[同步工作流序列] 查询返回数据: {workflows_data}") print(f"[同步工作流序列] 查询返回数据: {workflows_data}")
if not workflows_data: if not workflows_data:
error_msg = "未能从 Bioyond 系统获取工作流数据(返回为空)" error_msg = "未能从 Bioyond 系统获取工作流数据(返回为空)"
print(f"⚠️ [同步工作流序列] {error_msg}") print(f"⚠️ [同步工作流序列] {error_msg}")
@@ -986,11 +987,11 @@ class BioyondReactionStation(BioyondWorkstation):
"workflows": [], "workflows": [],
"message": error_msg "message": error_msg
} }
# 获取工作流列表 - Bioyond API 返回的字段是 items不是 list # 获取工作流列表 - Bioyond API 返回的字段是 items不是 list
workflow_list = workflows_data.get("items", workflows_data.get("list", [])) workflow_list = workflows_data.get("items", workflows_data.get("list", []))
print(f"[同步工作流序列] 从 Bioyond 查询到 {len(workflow_list)} 个工作流") print(f"[同步工作流序列] 从 Bioyond 查询到 {len(workflow_list)} 个工作流")
if len(workflow_list) == 0: if len(workflow_list) == 0:
warning_msg = "Bioyond 系统中暂无工作流" warning_msg = "Bioyond 系统中暂无工作流"
print(f"⚠️ [同步工作流序列] {warning_msg}") print(f"⚠️ [同步工作流序列] {warning_msg}")
@@ -1001,19 +1002,19 @@ class BioyondReactionStation(BioyondWorkstation):
"workflows": [], "workflows": [],
"message": warning_msg "message": warning_msg
} }
# 清空当前序列 # 清空当前序列
workflow_ids = [] workflow_ids = []
# 构建结果 # 构建结果
synced_workflows = [] synced_workflows = []
for workflow in workflow_list: for workflow in workflow_list:
workflow_id = workflow.get("id") workflow_id = workflow.get("id")
workflow_name = workflow.get("name") workflow_name = workflow.get("name")
workflow_status = workflow.get("status") # 工作流状态 workflow_status = workflow.get("status") # 工作流状态
print(f" - 工作流: {workflow_name} (ID: {workflow_id[:8] if workflow_id else 'N/A'}..., 状态: {workflow_status})") print(f" - 工作流: {workflow_name} (ID: {workflow_id[:8] if workflow_id else 'N/A'}..., 状态: {workflow_status})")
synced_workflows.append({ synced_workflows.append({
"id": workflow_id, "id": workflow_id,
"name": workflow_name, "name": workflow_name,
@@ -1021,24 +1022,24 @@ class BioyondReactionStation(BioyondWorkstation):
"createTime": workflow.get("createTime"), "createTime": workflow.get("createTime"),
"updateTime": workflow.get("updateTime") "updateTime": workflow.get("updateTime")
}) })
# 添加所有工作流 ID 到执行序列 # 添加所有工作流 ID 到执行序列
if workflow_id: if workflow_id:
workflow_ids.append(workflow_id) workflow_ids.append(workflow_id)
# 更新缓存 # 更新缓存
self._cached_workflow_sequence = workflow_ids self._cached_workflow_sequence = workflow_ids
success_msg = f"成功同步 {len(synced_workflows)} 个工作流到本地序列" success_msg = f"成功同步 {len(synced_workflows)} 个工作流到本地序列"
print(f"✅ [同步工作流序列] {success_msg}") print(f"✅ [同步工作流序列] {success_msg}")
print(f"[同步工作流序列] 当前 workflow_sequence: {self._cached_workflow_sequence}") print(f"[同步工作流序列] 当前 workflow_sequence: {self._cached_workflow_sequence}")
return { return {
"success": True, "success": True,
"workflows": synced_workflows, "workflows": synced_workflows,
"message": success_msg "message": success_msg
} }
except Exception as e: except Exception as e:
error_msg = f"从 Bioyond 同步工作流序列失败: {e}" error_msg = f"从 Bioyond 同步工作流序列失败: {e}"
print(f"❌ [同步工作流序列] {error_msg}") print(f"❌ [同步工作流序列] {error_msg}")