mirror of
https://github.com/deepmodeling/Uni-Lab-OS
synced 2026-05-24 16:00:03 +00:00
Compare commits
3 Commits
a34ffcaeb9
...
2240b832c4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2240b832c4 | ||
|
|
a3c6b7e898 | ||
|
|
62dbe98207 |
@@ -180,8 +180,8 @@ class ItemizedCarrier(ResourcePLR):
|
||||
break
|
||||
|
||||
if idx is None:
|
||||
# 反序列化时无法匹配 site(名称或坐标均不符),退回父类默认分配,不更新 site 跟踪
|
||||
super().assign_child_resource(resource, location=location, reassign=reassign)
|
||||
# 反序列化时无法匹配 site(名称或坐标均不符)。
|
||||
# WareHouse 通过 sites 追踪占用,无需将子资源加入 PLR 子树,直接跳过避免命名冲突。
|
||||
return
|
||||
|
||||
if not reassign and self.sites[idx] is not None:
|
||||
|
||||
@@ -606,7 +606,10 @@ class ResourceTreeSet(object):
|
||||
},
|
||||
"rotation": {"x": 0, "y": 0, "z": 0, "type": "Rotation"},
|
||||
"category": res.config.get("category", plr_type),
|
||||
"children": [node_to_plr_dict(child, has_model) for child in node.children],
|
||||
# WareHouse 通过 sites 字符串追踪占位,不依赖 PLR children tree。
|
||||
# 将 WareHouse 子节点排除在外,避免同名载架出现在多个 WareHouse 下时
|
||||
# PLR _check_naming_conflicts 报命名冲突。
|
||||
"children": [] if res.type == "warehouse" else [node_to_plr_dict(child, has_model) for child in node.children],
|
||||
"parent_name": res.parent_instance_name,
|
||||
}
|
||||
if has_model:
|
||||
@@ -868,13 +871,34 @@ class ResourceTreeSet(object):
|
||||
f"已存在,跳过"
|
||||
)
|
||||
|
||||
# 移除本地有但远端已不存在的物料(以远端为准)
|
||||
remote_material_names = {m.res_content.name for m in remote_child.children}
|
||||
removed_count = 0
|
||||
for child in list(local_sub_device.children):
|
||||
if child.res_content.name not in remote_material_names:
|
||||
local_sub_device.children.remove(child)
|
||||
removed_count += 1
|
||||
logger.info(
|
||||
f"移除远端已不存在的物料: '{remote_root_id}/{remote_child_name}/{child.res_content.name}'"
|
||||
)
|
||||
|
||||
if added_count > 0:
|
||||
logger.info(
|
||||
f"Device '{remote_root_id}/{remote_child_name}': "
|
||||
f"从远端同步了 {added_count} 个物料子树"
|
||||
)
|
||||
if removed_count > 0:
|
||||
logger.info(
|
||||
f"Device '{remote_root_id}/{remote_child_name}': "
|
||||
f"移除了 {removed_count} 个远端已删除的物料"
|
||||
)
|
||||
else:
|
||||
# 二级物料已存在,比较三级子节点是否缺失
|
||||
if remote_child_name not in local_children_map:
|
||||
logger.warning(
|
||||
f"物料 '{remote_root_id}/{remote_child_name}' 在远端存在但本地不存在,跳过"
|
||||
)
|
||||
continue
|
||||
local_material = local_children_map[remote_child_name]
|
||||
local_material_children_map = {child.res_content.name: child for child in
|
||||
local_material.children}
|
||||
@@ -890,11 +914,28 @@ class ResourceTreeSet(object):
|
||||
f"物料 '{remote_root_id}/{remote_child_name}/{remote_sub_name}' "
|
||||
f"已存在,跳过"
|
||||
)
|
||||
|
||||
# 移除本地有但远端已不存在的子物料(以远端为准)
|
||||
remote_sub_names = {s.res_content.name for s in remote_child.children}
|
||||
removed_count = 0
|
||||
for child in list(local_material.children):
|
||||
if child.res_content.name not in remote_sub_names:
|
||||
local_material.children.remove(child)
|
||||
removed_count += 1
|
||||
logger.info(
|
||||
f"移除远端已不存在的子物料: '{remote_root_id}/{remote_child_name}/{child.res_content.name}'"
|
||||
)
|
||||
|
||||
if added_count > 0:
|
||||
logger.info(
|
||||
f"物料 '{remote_root_id}/{remote_child_name}': "
|
||||
f"从远端同步了 {added_count} 个子物料"
|
||||
)
|
||||
if removed_count > 0:
|
||||
logger.info(
|
||||
f"物料 '{remote_root_id}/{remote_child_name}': "
|
||||
f"移除了 {removed_count} 个远端已删除的子物料"
|
||||
)
|
||||
else:
|
||||
# 情况1: 一级节点是物料(不是 device)
|
||||
# 检查是否已存在
|
||||
|
||||
@@ -15,92 +15,92 @@
|
||||
"z": 0
|
||||
},
|
||||
"config": {
|
||||
"api_key": "YOUR_API_KEY",
|
||||
"api_host": "http://your-api-host:port",
|
||||
"api_key": "DE9BDDA0",
|
||||
"api_host": "http://172.21.103.36:44388",
|
||||
"material_type_mappings": {
|
||||
"BIOYOND_PolymerStation_1FlaskCarrier": [
|
||||
"烧杯",
|
||||
"uuid-placeholder-flask"
|
||||
"3a14196b-24f2-ca49-9081-0cab8021bf1a"
|
||||
],
|
||||
"BIOYOND_PolymerStation_1BottleCarrier": [
|
||||
"试剂瓶",
|
||||
"uuid-placeholder-bottle"
|
||||
"3a14196b-8bcf-a460-4f74-23f21ca79e72"
|
||||
],
|
||||
"BIOYOND_PolymerStation_6StockCarrier": [
|
||||
"分装板",
|
||||
"uuid-placeholder-stock-6"
|
||||
"3a14196e-5dfe-6e21-0c79-fe2036d052c4"
|
||||
],
|
||||
"BIOYOND_PolymerStation_Liquid_Vial": [
|
||||
"10%分装小瓶",
|
||||
"uuid-placeholder-liquid-vial"
|
||||
"3a14196c-76be-2279-4e22-7310d69aed68"
|
||||
],
|
||||
"BIOYOND_PolymerStation_Solid_Vial": [
|
||||
"90%分装小瓶",
|
||||
"uuid-placeholder-solid-vial"
|
||||
"3a14196c-cdcf-088d-dc7d-5cf38f0ad9ea"
|
||||
],
|
||||
"BIOYOND_PolymerStation_8StockCarrier": [
|
||||
"样品板",
|
||||
"uuid-placeholder-stock-8"
|
||||
"3a14196e-b7a0-a5da-1931-35f3000281e9"
|
||||
],
|
||||
"BIOYOND_PolymerStation_Solid_Stock": [
|
||||
"样品瓶",
|
||||
"uuid-placeholder-solid-stock"
|
||||
"3a14196a-cf7d-8aea-48d8-b9662c7dba94"
|
||||
]
|
||||
},
|
||||
"warehouse_mapping": {
|
||||
"粉末堆栈": {
|
||||
"uuid": "uuid-placeholder-powder-stack",
|
||||
"uuid": "3a14198e-6928-121f-7ca6-88ad3ae7e6a0",
|
||||
"site_uuids": {
|
||||
"A01": "uuid-placeholder-powder-A01",
|
||||
"A02": "uuid-placeholder-powder-A02",
|
||||
"A03": "uuid-placeholder-powder-A03",
|
||||
"A04": "uuid-placeholder-powder-A04",
|
||||
"B01": "uuid-placeholder-powder-B01",
|
||||
"B02": "uuid-placeholder-powder-B02",
|
||||
"B03": "uuid-placeholder-powder-B03",
|
||||
"B04": "uuid-placeholder-powder-B04",
|
||||
"C01": "uuid-placeholder-powder-C01",
|
||||
"C02": "uuid-placeholder-powder-C02",
|
||||
"C03": "uuid-placeholder-powder-C03",
|
||||
"C04": "uuid-placeholder-powder-C04",
|
||||
"D01": "uuid-placeholder-powder-D01",
|
||||
"D02": "uuid-placeholder-powder-D02",
|
||||
"D03": "uuid-placeholder-powder-D03",
|
||||
"D04": "uuid-placeholder-powder-D04"
|
||||
"A01": "3a14198e-6929-31f0-8a22-0f98f72260df",
|
||||
"A02": "3a14198e-6929-4379-affa-9a2935c17f99",
|
||||
"A03": "3a14198e-6929-56da-9a1c-7f5fbd4ae8af",
|
||||
"A04": "3a14198e-6929-5e99-2b79-80720f7cfb54",
|
||||
"B01": "3a14198e-6929-f525-9a1b-1857552b28ee",
|
||||
"B02": "3a14198e-6929-bf98-0fd5-26e1d68bf62d",
|
||||
"B03": "3a14198e-6929-2d86-a468-602175a2b5aa",
|
||||
"B04": "3a14198e-6929-1a98-ae57-e97660c489ad",
|
||||
"C01": "3a14198e-6929-46fe-841e-03dd753f1e4a",
|
||||
"C02": "3a14198e-6929-72ac-32ce-9b50245682b8",
|
||||
"C03": "3a14198e-6929-8a0b-b686-6f4a2955c4e2",
|
||||
"C04": "3a14198e-6929-a0ec-5f15-c0f9f339f963",
|
||||
"D01": "3a14198e-6929-1bc9-a9bd-3b7ca66e7f95",
|
||||
"D02": "3a14198e-6929-3bd8-e6c7-4a9fd93be118",
|
||||
"D03": "3a14198e-6929-dde1-fc78-34a84b71afdf",
|
||||
"D04": "3a14198e-6929-7ac8-915a-fea51cb2e884"
|
||||
}
|
||||
},
|
||||
"溶液堆栈": {
|
||||
"uuid": "uuid-placeholder-liquid-stack",
|
||||
"uuid": "3a14198e-d723-2c13-7d12-50143e190a23",
|
||||
"site_uuids": {
|
||||
"A01": "uuid-placeholder-liquid-A01",
|
||||
"A02": "uuid-placeholder-liquid-A02",
|
||||
"A03": "uuid-placeholder-liquid-A03",
|
||||
"A04": "uuid-placeholder-liquid-A04",
|
||||
"B01": "uuid-placeholder-liquid-B01",
|
||||
"B02": "uuid-placeholder-liquid-B02",
|
||||
"B03": "uuid-placeholder-liquid-B03",
|
||||
"B04": "uuid-placeholder-liquid-B04",
|
||||
"C01": "uuid-placeholder-liquid-C01",
|
||||
"C02": "uuid-placeholder-liquid-C02",
|
||||
"C03": "uuid-placeholder-liquid-C03",
|
||||
"C04": "uuid-placeholder-liquid-C04",
|
||||
"D01": "uuid-placeholder-liquid-D01",
|
||||
"D02": "uuid-placeholder-liquid-D02",
|
||||
"D03": "uuid-placeholder-liquid-D03",
|
||||
"D04": "uuid-placeholder-liquid-D04"
|
||||
"A01": "3a14198e-d724-e036-afdc-2ae39a7f3383",
|
||||
"A02": "3a14198e-d724-d818-6d4f-5725191a24b5",
|
||||
"A03": "3a14198e-d724-b5bb-adf3-4c5a0da6fb31",
|
||||
"A04": "3a14198e-d724-d378-d266-2508a224a19f",
|
||||
"B01": "3a14198e-d724-afa4-fc82-0ac8a9016791",
|
||||
"B02": "3a14198e-d724-be8a-5e0b-012675e195c6",
|
||||
"B03": "3a14198e-d724-ab4e-48cb-817c3c146707",
|
||||
"B04": "3a14198e-d724-f56e-468b-0110a8feb36a",
|
||||
"C01": "3a14198e-d724-ca48-bb9e-7e85751e55b6",
|
||||
"C02": "3a14198e-d724-cc1e-5c2c-228a130f40a8",
|
||||
"C03": "3a14198e-d724-7f18-1853-39d0c62e1d33",
|
||||
"C04": "3a14198e-d724-0cf1-dea9-a1f40fe7e13c",
|
||||
"D01": "3a14198e-d724-df6d-5e32-5483b3cab583",
|
||||
"D02": "3a14198e-d724-1e28-c885-574c3df468d0",
|
||||
"D03": "3a14198e-d724-28a2-a760-baa896f46b66",
|
||||
"D04": "3a14198e-d724-0ddd-9654-f9352a421de9"
|
||||
}
|
||||
},
|
||||
"试剂堆栈": {
|
||||
"uuid": "uuid-placeholder-reagent-stack",
|
||||
"uuid": "3a14198c-c2cc-0290-e086-44a428fba248",
|
||||
"site_uuids": {
|
||||
"A01": "uuid-placeholder-reagent-A01",
|
||||
"A02": "uuid-placeholder-reagent-A02",
|
||||
"A03": "uuid-placeholder-reagent-A03",
|
||||
"A04": "uuid-placeholder-reagent-A04",
|
||||
"B01": "uuid-placeholder-reagent-B01",
|
||||
"B02": "uuid-placeholder-reagent-B02",
|
||||
"B03": "uuid-placeholder-reagent-B03",
|
||||
"B04": "uuid-placeholder-reagent-B04"
|
||||
"A01": "3a14198c-c2cf-8b40-af28-b467808f1c36",
|
||||
"A02": "3a14198c-c2d0-dc7d-b8d0-e1d88cee3094",
|
||||
"A03": "3a14198c-c2d0-354f-39ad-642e1a72fcb8",
|
||||
"A04": "3a14198c-c2d0-725e-523d-34c037ac2440",
|
||||
"B01": "3a14198c-c2d0-f3e7-871a-e470d144296f",
|
||||
"B02": "3a14198c-c2d0-2070-efc8-44e245f10c6f",
|
||||
"B03": "3a14198c-c2d0-1559-105d-0ea30682cab4",
|
||||
"B04": "3a14198c-c2d0-efce-0939-69ca5a7dfd39"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user