修改agv小车相关接口
This commit is contained in:
@@ -25,15 +25,14 @@ class Workpiece(http.Controller):
|
|||||||
if 'reqCode' in ret:
|
if 'reqCode' in ret:
|
||||||
if 'method' in ret:
|
if 'method' in ret:
|
||||||
if ret['method'] == 'end':
|
if ret['method'] == 'end':
|
||||||
req_codes = ret['reqCode'].split(',')
|
# 找到对应的AGV调度任务
|
||||||
for req_code in req_codes:
|
agv_scheduling = request.env['sf.agv.scheduling'].sudo().search(
|
||||||
workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search(
|
[('name', '=', ret['reqCode']), ('state', '=', '配送中')])
|
||||||
[('name', '=', req_code.strip()), ('task_completion_time', '=', False)])
|
if agv_scheduling:
|
||||||
if workpiece_delivery:
|
agv_scheduling.finish_scheduling()
|
||||||
workpiece_delivery.write({'status': '已配送', 'task_completion_time': datetime.now()})
|
|
||||||
else:
|
else:
|
||||||
res = {'Succeed': False, 'ErrorCode': 203,
|
res = {'Succeed': False, 'ErrorCode': 203,
|
||||||
'Error': '该reqCode暂未查到对应的工件配送记录'}
|
'Error': '该reqCode暂未查到对应的AGV任务记录'}
|
||||||
else:
|
else:
|
||||||
res = {'Succeed': False, 'ErrorCode': 204, 'Error': '未传method字段'}
|
res = {'Succeed': False, 'ErrorCode': 204, 'Error': '未传method字段'}
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import requests
|
||||||
|
|
||||||
from odoo import models, fields, api, _
|
from odoo import models, fields, api, _
|
||||||
from odoo.exceptions import UserError
|
from odoo.exceptions import UserError
|
||||||
|
|
||||||
@@ -143,55 +145,19 @@ class AgvScheduling(models.Model):
|
|||||||
)
|
)
|
||||||
# 下发AGV调度任务并修改接驳站状态为占用
|
# 下发AGV调度任务并修改接驳站状态为占用
|
||||||
agv_scheduling.dispatch_scheduling(task_route)
|
agv_scheduling.dispatch_scheduling(task_route)
|
||||||
else:
|
|
||||||
# 如果终点接驳站变为占用,则认为任务完成
|
|
||||||
agv_scheduling = self.env['sf.agv.scheduling'].sudo().search(
|
|
||||||
[('state', '=', '配送中'), ('end_site_id', '=', agv_site_id)],
|
|
||||||
order='id asc',
|
|
||||||
limit=1
|
|
||||||
)
|
|
||||||
agv_scheduling.finish_scheduling()
|
|
||||||
|
|
||||||
def _delivery_avg(self):
|
def _delivery_avg(self):
|
||||||
config = self.env['res.config.settings'].get_values()
|
config = self.env['res.config.settings'].get_values()
|
||||||
positionCode_Arr = []
|
position_code_arr = [{
|
||||||
delivery_Arr = []
|
'positionCode': self.start_site_id.name,
|
||||||
feeder_station_start = None
|
|
||||||
feeder_station_destination = None
|
|
||||||
route_id = None
|
|
||||||
for item in self:
|
|
||||||
if route_id is None:
|
|
||||||
route_id = item.route_id.id
|
|
||||||
if feeder_station_start is None:
|
|
||||||
feeder_station_start = item.feeder_station_start_id
|
|
||||||
if feeder_station_destination is None:
|
|
||||||
feeder_station_destination = item.feeder_station_destination_id
|
|
||||||
if item.type in ['上产线', '下产线']:
|
|
||||||
item.route_id = route_id
|
|
||||||
item.feeder_station_start_id = feeder_station_start.id
|
|
||||||
item.feeder_station_destination_id = feeder_station_destination.id
|
|
||||||
delivery_Arr.append(item.name)
|
|
||||||
else:
|
|
||||||
self = self.create(
|
|
||||||
{'name': self.env['ir.sequence'].next_by_code('sf.workpiece.delivery'),
|
|
||||||
'route_id': self.route_id.id,
|
|
||||||
'feeder_station_start_id': self.feeder_station_start_id.id,
|
|
||||||
'feeder_station_destination_id': self.feeder_station_destination_id.id})
|
|
||||||
delivery_Arr.append(self.name)
|
|
||||||
delivery_str = ','.join(map(str, delivery_Arr))
|
|
||||||
if feeder_station_start is not None:
|
|
||||||
positionCode_Arr.append({
|
|
||||||
'positionCode': feeder_station_start.name,
|
|
||||||
'code': '00'
|
'code': '00'
|
||||||
})
|
}, {
|
||||||
if feeder_station_destination is not None:
|
'positionCode': self.end_site_id.name,
|
||||||
positionCode_Arr.append({
|
|
||||||
'positionCode': feeder_station_destination.name,
|
|
||||||
'code': '00'
|
'code': '00'
|
||||||
})
|
}]
|
||||||
res = {'reqCode': delivery_str, 'reqTime': '', 'clientCode': '', 'tokenCode': '',
|
res = {'reqCode': self.name, 'reqTime': '', 'clientCode': '', 'tokenCode': '',
|
||||||
'taskTyp': 'F01', 'ctnrTyp': '', 'ctnrCode': '', 'wbCode': config['wbcode'],
|
'taskTyp': 'F01', 'ctnrTyp': '', 'ctnrCode': '', 'wbCode': config['wbcode'],
|
||||||
'positionCodePath': positionCode_Arr,
|
'positionCodePath': position_code_arr,
|
||||||
'podCode': '',
|
'podCode': '',
|
||||||
'podDir': '', 'materialLot': '', 'priority': '', 'taskCode': '', 'agvCode': '', 'materialLot': '',
|
'podDir': '', 'materialLot': '', 'priority': '', 'taskCode': '', 'agvCode': '', 'materialLot': '',
|
||||||
'data': ''}
|
'data': ''}
|
||||||
@@ -203,17 +169,7 @@ class AgvScheduling(models.Model):
|
|||||||
ret = ret.json()
|
ret = ret.json()
|
||||||
logging.info('config-ret:%s' % ret)
|
logging.info('config-ret:%s' % ret)
|
||||||
if ret['code'] == 0:
|
if ret['code'] == 0:
|
||||||
req_codes = ret['reqCode'].split(',')
|
return True
|
||||||
for delivery_item in self:
|
|
||||||
for req_code in req_codes:
|
|
||||||
if delivery_item.name == req_code.strip():
|
|
||||||
logging.info('delivery_item-name:%s' % delivery_item.name)
|
|
||||||
delivery_item.write({
|
|
||||||
'task_delivery_time': fields.Datetime.now(),
|
|
||||||
'status': '待配送'
|
|
||||||
})
|
|
||||||
if delivery_item.type == "上产线":
|
|
||||||
delivery_item.workorder_id.write({'is_delivery': True})
|
|
||||||
else:
|
else:
|
||||||
raise UserError(ret['message'])
|
raise UserError(ret['message'])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -249,7 +205,6 @@ class AgvScheduling(models.Model):
|
|||||||
return False
|
return False
|
||||||
_logger.info('AGV任务调度:下发调度任务,路线为%s' % agv_task_route)
|
_logger.info('AGV任务调度:下发调度任务,路线为%s' % agv_task_route)
|
||||||
# rec._delivery_avg()
|
# rec._delivery_avg()
|
||||||
# 获取agv任务路线名称
|
|
||||||
rec.state = '配送中'
|
rec.state = '配送中'
|
||||||
rec.task_delivery_time = fields.Datetime.now()
|
rec.task_delivery_time = fields.Datetime.now()
|
||||||
rec.site_state = '空闲'
|
rec.site_state = '空闲'
|
||||||
|
|||||||
Reference in New Issue
Block a user