From 9beecab21d19b43459f567b16d7bee551d6ecf7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=B0=A7?= Date: Tue, 24 Sep 2024 11:42:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=BB=E5=8A=A1=E4=B8=8B?= =?UTF-8?q?=E5=8F=91=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/agv_scheduling.py | 25 +++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) 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()