diff --git a/sf_manufacturing/models/agv_scheduling.py b/sf_manufacturing/models/agv_scheduling.py index a18dc5ef..868964d5 100644 --- a/sf_manufacturing/models/agv_scheduling.py +++ b/sf_manufacturing/models/agv_scheduling.py @@ -156,17 +156,26 @@ class AgvScheduling(models.Model): if agv_site_state == '空闲': # 查询终点接驳站为agv_site_id的AGV路线 task_routes = self.env['sf.agv.task.route'].sudo().search([('end_site_id', '=', agv_site_id)]) - agv_scheduling = self.env['sf.agv.scheduling'].sudo().search( + agv_schedulings = self.env['sf.agv.scheduling'].sudo().search( [('state', '=', '待下发'), ('agv_route_type', 'in', task_routes.mapped('route_type'))], order='id asc', - limit=1 ) - task_route = task_routes.filtered( - lambda r: r.start_site_id == agv_scheduling.start_site_id and r.start_site_id == agv_scheduling.start_site_id - ) - if task_route: - # 下发AGV调度任务并修改接驳站状态为占用 - agv_scheduling.dispatch_scheduling(task_route) + for agv_scheduling in agv_schedulings: + # 找到所有起点接驳站匹配的路线 + start_matched_task_routes = task_routes.filtered( + lambda r: r.start_site_id == agv_scheduling.start_site_id + ) + # 如果调度任务有终点接驳站,找到终点接驳站匹配的路线 + if agv_scheduling.end_site_id: + matched_task_routes = start_matched_task_routes.filtered( + lambda r: r.end_site_id == agv_scheduling.end_site_id + ) + else: + matched_task_routes = start_matched_task_routes + if matched_task_routes: + # 下发AGV调度任务并修改接驳站状态为占用 + agv_scheduling.dispatch_scheduling(matched_task_routes[0]) + break; def _delivery_avg(self): config = self.env['res.config.settings'].get_values()