@@ -430,8 +430,10 @@ async def append_resource(req: SerialCommand_Request, res: SerialCommand_Respons
430430 })
431431 tree_response : SerialCommand .Response = await client .call_async (request )
432432 uuid_maps = json .loads (tree_response .response )
433- self .resource_tracker .loop_update_uuid (input_resources , uuid_maps )
434- rts : ResourceTreeSet = ResourceTreeSet .from_raw_dict_list (input_resources )
433+ plr_instances = rts .to_plr_resources ()
434+ for plr_instance in plr_instances :
435+ self .resource_tracker .loop_update_uuid (plr_instance , uuid_maps )
436+ rts : ResourceTreeSet = ResourceTreeSet .from_plr_resources (plr_instances )
435437 self .lab_logger ().info (f"Resource tree added. UUID mapping: { len (uuid_maps )} nodes" )
436438 final_response = {
437439 "created_resource_tree" : rts .dump (),
@@ -461,7 +463,7 @@ async def append_resource(req: SerialCommand_Request, res: SerialCommand_Respons
461463 return res
462464 try :
463465 if len (rts .root_nodes ) == 1 and parent_resource is not None :
464- plr_instance = rts . to_plr_resources () [0 ]
466+ plr_instance = plr_instances [0 ]
465467 if isinstance (plr_instance , Plate ):
466468 empty_liquid_info_in : List [Tuple [Optional [str ], float ]] = [(None , 0 )] * plr_instance .num_items
467469 if len (ADD_LIQUID_TYPE ) == 1 and len (LIQUID_VOLUME ) == 1 and len (LIQUID_INPUT_SLOT ) > 1 :
@@ -1281,9 +1283,14 @@ def ACTION(**kwargs):
12811283 # 批量查询资源
12821284 queried_resources = []
12831285 for resource_data in resource_inputs :
1284- plr_resource = await self .get_resource_with_dir (
1285- resource_id = resource_data ["id" ], with_children = True
1286- )
1286+ unilabos_uuid = resource_data .get ("data" , {}).get ("unilabos_uuid" )
1287+ if unilabos_uuid is None :
1288+ plr_resource = await self .get_resource_with_dir (
1289+ resource_id = resource_data ["id" ], with_children = True
1290+ )
1291+ else :
1292+ resource_tree = await self .get_resource ([unilabos_uuid ])
1293+ plr_resource = resource_tree .to_plr_resources ()[0 ]
12871294 if "sample_id" in resource_data :
12881295 plr_resource .unilabos_extra ["sample_uuid" ] = resource_data ["sample_id" ]
12891296 queried_resources .append (plr_resource )
@@ -1423,7 +1430,7 @@ def _handle_future_exception(fut: Future):
14231430 for r in rs :
14241431 res = self .resource_tracker .parent_resource (r ) # 获取 resource 对象
14251432 else :
1426- res = self .resource_tracker .parent_resource (r )
1433+ res = self .resource_tracker .parent_resource (rs )
14271434 if id (res ) not in seen :
14281435 seen .add (id (res ))
14291436 unique_resources .append (res )
0 commit comments