AGV任务调度开发

This commit is contained in:
胡尧
2024-08-14 17:34:50 +08:00
parent 0b85f29262
commit f7e4ce416a
10 changed files with 256 additions and 131 deletions

View File

@@ -5,6 +5,8 @@ import time
from odoo import fields, models, api
from odoo.exceptions import UserError
_logger = logging.getLogger(__name__)
class AgvSetting(models.Model):
_name = 'sf.agv.site'
@@ -57,14 +59,23 @@ class AgvSetting(models.Model):
# logging.error('工件配送-请求中控接口错误: %s', e)
# return False
def update_site_state(self, agv_site_name, is_occupy):
if agv_site_name:
agv_site = self.env['sf.agv.site'].sudo().search([('name', '=', agv_site_name)])
if agv_site:
agv_site.state = '占用' if is_occupy else '空闲'
self.env['sf.agv.scheduling'].on_site_state_change(agv_site.id, agv_site.state)
else:
raise UserError("更新失败:接驳站站点错误!")
def update_site_state(self, agv_site_state_arr, notify=True):
"""
更新接驳站状态
params:
agv_site_state_arr: {'A01': '空闲', 'B01': '占用'}
notify: 是否通知调度(非中控发起的状态改变不触发调度任务)
"""
if isinstance(agv_site_state_arr, dict):
for agv_site_name, is_occupy in agv_site_state_arr.items():
agv_site = self.env['sf.agv.site'].sudo().search([('name', '=', agv_site_name)])
if agv_site:
agv_site.state = is_occupy
if notify:
self.env['sf.agv.scheduling'].on_site_state_change(agv_site.id, agv_site.state)
else:
_logger.error("更新失败:接驳站站点错误!%s" % agv_site_name)
raise UserError("更新失败:接驳站站点错误!")
class AgvTaskRoute(models.Model):