Compare commits

..

2 Commits

Author SHA1 Message Date
Junhan Chang
f13156e792 fix dict to tree/nested-dict converter 2025-09-23 00:02:45 +08:00
Xuwznln
13fd1ac572 更新物料接口 2025-09-22 17:14:48 +08:00
3 changed files with 23 additions and 9 deletions

View File

@@ -66,7 +66,6 @@ class HTTPClient:
Args: Args:
resources: 要添加的资源列表 resources: 要添加的资源列表
database_process_later: 后台处理资源
Returns: Returns:
Response: API响应对象 Response: API响应对象
""" """
@@ -131,14 +130,19 @@ class HTTPClient:
Returns: Returns:
Response: API响应对象 Response: API响应对象
""" """
return self.resource_add(resources) response = requests.put(
response = requests.patch( f"{self.remote_addr}/lab/material",
f"{self.remote_addr}/lab/resource/batch_update/?edge_format=1",
json=resources, json=resources,
headers={"Authorization": f"Lab {self.auth}"}, headers={"Authorization": f"Lab {self.auth}"},
timeout=100, timeout=100,
) )
return response if response.status_code == 200:
res = response.json()
if "code" in res and res["code"] != 0:
logger.error(f"添加物料失败: {response.text}")
if response.status_code != 200:
logger.error(f"添加物料失败: {response.text}")
return response.json()
def upload_file(self, file_path: str, scene: str = "models") -> requests.Response: def upload_file(self, file_path: str, scene: str = "models") -> requests.Response:
""" """

View File

@@ -1093,7 +1093,7 @@ class WebSocketClient(BaseCommunicationClient):
}, },
} }
self.message_processor.send_message(message) self.message_processor.send_message(message)
logger.trace(f"[WebSocketClient] Device status published: {device_id}.{property_name}") logger.debug(f"[WebSocketClient] Device status published: {device_id}.{property_name}")
def publish_job_status( def publish_job_status(
self, feedback_data: dict, item: QueueItem, status: str, return_info: Optional[dict] = None self, feedback_data: dict, item: QueueItem, status: str, return_info: Optional[dict] = None

View File

@@ -218,14 +218,20 @@ def dict_to_tree(nodes: dict, devices_only: bool = False) -> list[dict]:
# 将节点转换为字典,以便通过 ID 快速查找 # 将节点转换为字典,以便通过 ID 快速查找
nodes_list = [node for node in nodes.values() if node.get("type") == "device" or not devices_only] nodes_list = [node for node in nodes.values() if node.get("type") == "device" or not devices_only]
id_list = [node["id"] for node in nodes_list] id_list = [node["id"] for node in nodes_list]
is_root = {node["id"]: True for node in nodes_list}
# 初始化每个节点的 children 为包含节点字典的列表 # 初始化每个节点的 children 为包含节点字典的列表
for node in nodes_list: for node in nodes_list:
node["children"] = [nodes[child_id] for child_id in node.get("children", [])] node["children"] = [nodes[child_id] for child_id in node.get("children", [])]
for child_id in node.get("children", []):
if child_id in is_root:
is_root[child_id] = False
# 找到根节点并返回 # 找到根节点并返回
root_nodes = [ root_nodes = [
node for node in nodes_list if len(nodes_list) == 1 or node.get("parent", node.get("parent_name")) in [None, "", "None", np.nan] or node.get("parent", node.get("parent_name")) not in id_list node
for node in nodes_list
if is_root.get(node["id"], False) or len(nodes_list) == 1
] ]
# 如果存在多个根节点,返回所有根节点 # 如果存在多个根节点,返回所有根节点
@@ -235,6 +241,7 @@ def dict_to_tree(nodes: dict, devices_only: bool = False) -> list[dict]:
def dict_to_nested_dict(nodes: dict, devices_only: bool = False) -> dict: def dict_to_nested_dict(nodes: dict, devices_only: bool = False) -> dict:
# 将节点转换为字典,以便通过 ID 快速查找 # 将节点转换为字典,以便通过 ID 快速查找
nodes_list = [node for node in nodes.values() if node.get("type") == "device" or not devices_only] nodes_list = [node for node in nodes.values() if node.get("type") == "device" or not devices_only]
is_root = {node["id"]: True for node in nodes_list}
# 初始化每个节点的 children 为包含节点字典的列表 # 初始化每个节点的 children 为包含节点字典的列表
for node in nodes_list: for node in nodes_list:
@@ -243,14 +250,17 @@ def dict_to_nested_dict(nodes: dict, devices_only: bool = False) -> dict:
for child_id in node.get("children", []) for child_id in node.get("children", [])
if nodes[child_id].get("type") == "device" or not devices_only if nodes[child_id].get("type") == "device" or not devices_only
} }
if len(node["children"]) > 0 and node["type"].lower() == "device" and devices_only: for child_id in node.get("children", []):
if child_id in is_root:
is_root[child_id] = False
if len(node["children"]) > 0 and node["type"].lower() == "device":
node["config"]["children"] = node["children"] node["config"]["children"] = node["children"]
# 找到根节点并返回 # 找到根节点并返回
root_nodes = { root_nodes = {
node["id"]: node node["id"]: node
for node in nodes_list for node in nodes_list
if node.get("parent", node.get("parent_name")) in [None, "", "None", np.nan] or len(nodes_list) == 1 if is_root.get(node["id"], False) or len(nodes_list) == 1
} }
# 如果存在多个根节点,返回所有根节点 # 如果存在多个根节点,返回所有根节点