diff --git a/sf_manufacturing/controllers/workpiece.py b/sf_manufacturing/controllers/workpiece.py index 5c5d6f22..5d79a1b3 100644 --- a/sf_manufacturing/controllers/workpiece.py +++ b/sf_manufacturing/controllers/workpiece.py @@ -25,15 +25,14 @@ class Workpiece(http.Controller): if 'reqCode' in ret: if 'method' in ret: if ret['method'] == 'end': - req_codes = ret['reqCode'].split(',') - for req_code in req_codes: - workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search( - [('name', '=', req_code.strip()), ('task_completion_time', '=', False)]) - if workpiece_delivery: - workpiece_delivery.write({'status': '已配送', 'task_completion_time': datetime.now()}) - else: - res = {'Succeed': False, 'ErrorCode': 203, - 'Error': '该reqCode暂未查到对应的工件配送记录'} + # 找到对应的AGV调度任务 + agv_scheduling = request.env['sf.agv.scheduling'].sudo().search( + [('name', '=', ret['reqCode']), ('state', '=', '配送中')]) + if agv_scheduling: + agv_scheduling.finish_scheduling() + else: + res = {'Succeed': False, 'ErrorCode': 203, + 'Error': '该reqCode暂未查到对应的AGV任务记录'} else: res = {'Succeed': False, 'ErrorCode': 204, 'Error': '未传method字段'} else: diff --git a/sf_manufacturing/models/agv_scheduling.py b/sf_manufacturing/models/agv_scheduling.py index 16e0a4ee..f634154b 100644 --- a/sf_manufacturing/models/agv_scheduling.py +++ b/sf_manufacturing/models/agv_scheduling.py @@ -1,3 +1,5 @@ +import requests + from odoo import models, fields, api, _ from odoo.exceptions import UserError @@ -143,55 +145,19 @@ class AgvScheduling(models.Model): ) # 下发AGV调度任务并修改接驳站状态为占用 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): config = self.env['res.config.settings'].get_values() - positionCode_Arr = [] - delivery_Arr = [] - 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' - }) - if feeder_station_destination is not None: - positionCode_Arr.append({ - 'positionCode': feeder_station_destination.name, - 'code': '00' - }) - res = {'reqCode': delivery_str, 'reqTime': '', 'clientCode': '', 'tokenCode': '', + position_code_arr = [{ + 'positionCode': self.start_site_id.name, + 'code': '00' + }, { + 'positionCode': self.end_site_id.name, + 'code': '00' + }] + res = {'reqCode': self.name, 'reqTime': '', 'clientCode': '', 'tokenCode': '', 'taskTyp': 'F01', 'ctnrTyp': '', 'ctnrCode': '', 'wbCode': config['wbcode'], - 'positionCodePath': positionCode_Arr, + 'positionCodePath': position_code_arr, 'podCode': '', 'podDir': '', 'materialLot': '', 'priority': '', 'taskCode': '', 'agvCode': '', 'materialLot': '', 'data': ''} @@ -203,17 +169,7 @@ class AgvScheduling(models.Model): ret = ret.json() logging.info('config-ret:%s' % ret) if ret['code'] == 0: - req_codes = ret['reqCode'].split(',') - 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}) + return True else: raise UserError(ret['message']) except Exception as e: @@ -249,7 +205,6 @@ class AgvScheduling(models.Model): return False _logger.info('AGV任务调度:下发调度任务,路线为%s' % agv_task_route) # rec._delivery_avg() - # 获取agv任务路线名称 rec.state = '配送中' rec.task_delivery_time = fields.Datetime.now() rec.site_state = '空闲'