上下产线接口新增IsComplete判断

This commit is contained in:
jinling.yang
2024-04-26 18:04:30 +08:00
parent 8f9781dd13
commit 42178e3e1e
6 changed files with 87 additions and 70 deletions

View File

@@ -422,32 +422,40 @@ class Manufacturing_Connect(http.Controller):
logging.info('ret:%s' % ret) logging.info('ret:%s' % ret)
if 'DeviceId' in ret: if 'DeviceId' in ret:
logging.info('DeviceId:%s' % ret['DeviceId']) logging.info('DeviceId:%s' % ret['DeviceId'])
for i in range(1, 5): if 'IsComplete' in ret:
logging.info('F-RfidCode:%s' % i) if ret['IsComplete'] is True:
if f'RfidCode{i}' in ret: for i in range(1, 5):
rfid_code = ret[f'RfidCode{i}'] logging.info('F-RfidCode:%s' % i)
logging.info('RfidCode:%s' % rfid_code) if f'RfidCode{i}' in ret:
domain = [ rfid_code = ret[f'RfidCode{i}']
('feeder_station_destination_id.name', '=', ret['DeviceId']), logging.info('RfidCode:%s' % rfid_code)
('workorder_id.rfid_code', '=', rfid_code), domain = [
('status', '=', '已配送'), ('feeder_station_destination_id.name', '=', ret['DeviceId']),
('type', '=', '上产线') ('workorder_id.rfid_code', '=', rfid_code),
] ('status', '=', '已配送'),
workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search(domain, order='id asc') ('type', '=', '上产线')
if workpiece_delivery: ]
for wd in workpiece_delivery: workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search(domain,
logging.info('wd.production_id:%s' % wd.production_id.name) order='id asc')
if wd.workorder_id.state == 'done' and wd.production_id.production_line_state == '待上产线': if workpiece_delivery:
logging.info('wd.production_line_state:%s' % wd.production_id.production_line_state) for wd in workpiece_delivery:
wd.production_id.write({'production_line_state': '已上产线'}) logging.info('wd.production_id:%s' % wd.production_id.name)
next_workpiece = request.env['sf.workpiece.delivery'].sudo().search( if wd.workorder_id.state == 'done' and wd.production_id.production_line_state == '待上产线':
[('workorder_id.rfid_code', '=', rfid_code), ('type', '=', '下产线'), logging.info(
('production_id', '=', wd.production_id.id)]) 'wd.production_line_state:%s' % wd.production_id.production_line_state)
if next_workpiece: wd.production_id.write({'production_line_state': '已上产线'})
logging.info('next_workpiece:%s' % next_workpiece.delivery_num) next_workpiece = request.env['sf.workpiece.delivery'].sudo().search(
next_workpiece.write({'status': '待下发', 'task_delivery_time': datetime.now()}) [('workorder_id.rfid_code', '=', rfid_code), ('type', '=', '下产线'),
('production_id', '=', wd.production_id.id)])
if next_workpiece:
logging.info('next_workpiece:%s' % next_workpiece.delivery_num)
next_workpiece.write(
{'status': '待下发', 'task_delivery_time': datetime.now()})
else:
res = {'Succeed': False, 'ErrorCode': 204,
'Error': 'DeviceId为%s没有对应的已配送工件数据' % ret['DeviceId']}
else: else:
res = {'Succeed': False, 'ErrorCode': 203, 'Error': '该DeviceId没有对应的已配送工件数据'} res = {'Succeed': False, 'ErrorCode': 203, 'Error': '未传IsComplete字段'}
else: else:
res = {'Succeed': False, 'ErrorCode': 201, 'Error': '未传DeviceId字段'} res = {'Succeed': False, 'ErrorCode': 201, 'Error': '未传DeviceId字段'}
except Exception as e: except Exception as e:
@@ -455,7 +463,7 @@ class Manufacturing_Connect(http.Controller):
logging.info('AGVToProduct error:%s' % e) logging.info('AGVToProduct error:%s' % e)
return json.JSONEncoder().encode(res) return json.JSONEncoder().encode(res)
@http.route('/AutoDeviceApi/AGVDownProduct', type='json', auth='sf_token', methods=['GET', 'POST'], csrf=False, @http.route('/AutoDeviceApi/AGVDownProduct', type='json', auth='none', methods=['GET', 'POST'], csrf=False,
cors="*") cors="*")
def AGVDownProduct(self, **kw): def AGVDownProduct(self, **kw):
""" """
@@ -473,39 +481,50 @@ class Manufacturing_Connect(http.Controller):
if 'DeviceId' in ret: if 'DeviceId' in ret:
logging.info('DeviceId:%s' % ret['DeviceId']) logging.info('DeviceId:%s' % ret['DeviceId'])
delivery_Arr = [] delivery_Arr = []
for i in range(1, 5): if 'IsComplete' in ret:
logging.info('F-RfidCode:%s' % i) if ret['IsComplete'] is True:
if f'RfidCode{i}' in ret: for i in range(1, 5):
rfid_code = ret[f'RfidCode{i}'] logging.info('F-RfidCode:%s' % i)
logging.info('RfidCode:%s' % rfid_code) if f'RfidCode{i}' in ret:
domain = [ rfid_code = ret[f'RfidCode{i}']
('feeder_station_start_id.name', '=', ret['DeviceId']), logging.info('RfidCode:%s' % rfid_code)
('workorder_id.rfid_code', '=', rfid_code), domain = [
('status', '=', '待下发'), ('feeder_station_start_id.name', '=', ret['DeviceId']),
('type', '=', '下产线') ('workorder_id.rfid_code', '=', rfid_code),
] ('status', '=', '待下发'),
workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search(domain, order='id asc') ('type', '=', '下产线')
if workpiece_delivery: ]
for wd in workpiece_delivery: workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search(domain,
logging.info('wd.production_id:%s' % wd.production_id.name) order='id asc')
if wd.workorder_id.state == 'done' and wd.production_id.production_line_state == '已上产线': if workpiece_delivery:
logging.info('wd.production_line_state:%s' % wd.production_id.production_line_state) for wd in workpiece_delivery:
wd.production_id.write({'production_line_state': '已下产线'}) logging.info('wd.production_id:%s' % wd.production_id.name)
delivery_Arr.append({wd.id}) if wd.workorder_id.state == 'done' and wd.production_id.production_line_state == '已上产线':
next_workpiece = request.env['sf.workpiece.delivery'].sudo().search( logging.info(
[('workorder_id.rfid_code', '=', rfid_code), ('type', '=', '运送空料架'), 'wd.production_line_state:%s' % wd.production_id.production_line_state)
('production_id', '=', wd.production_id.id)]) wd.production_id.write({'production_line_state': '已下产线'})
if next_workpiece: delivery_Arr.append({wd.id})
logging.info('next_workpiece:%s' % next_workpiece.delivery_num) next_workpiece = request.env['sf.workpiece.delivery'].sudo().search(
next_workpiece.write({'status': '待下发', 'task_delivery_time': datetime.now()}) [('workorder_id.rfid_code', '=', rfid_code),
if delivery_Arr: ('type', '=', '运送空料架'),
logging.info('delivery_Arr:%s' % delivery_Arr) ('production_id', '=', wd.production_id.id)])
delivery_workpiece = request.env['sf.workpiece.delivery'].sudo().search( if next_workpiece:
[('id', 'in', delivery_Arr)]) logging.info('next_workpiece:%s' % next_workpiece.delivery_num)
if delivery_workpiece: next_workpiece.write(
logging.info('开始向agv下发下产线任务') {'status': '待下发', 'task_delivery_time': datetime.now()})
delivery_workpiece._delivery_avg() else:
logging.info('agv下发下产线任务下发完成') res = {'Succeed': False, 'ErrorCode': 204,
'Error': 'DeviceId为%s没有对应的已配送工件数据' % ret['DeviceId']}
if delivery_Arr:
logging.info('delivery_Arr:%s' % delivery_Arr)
delivery_workpiece = request.env['sf.workpiece.delivery'].sudo().search(
[('id', 'in', delivery_Arr)])
if delivery_workpiece:
logging.info('开始向agv下发下产线任务')
delivery_workpiece._delivery_avg()
logging.info('agv下发下产线任务下发完成')
else:
res = {'Succeed': False, 'ErrorCode': 203, 'Error': '未传IsComplete字段'}
except Exception as e: except Exception as e:
res = {'Succeed': False, 'ErrorCode': 202, 'Error': e} res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
logging.info('AGVDownProduct error:%s' % e) logging.info('AGVDownProduct error:%s' % e)

View File

@@ -28,8 +28,7 @@ class Workpiece(http.Controller):
req_codes = ret['reqCode'].split(',') req_codes = ret['reqCode'].split(',')
for req_code in req_codes: for req_code in req_codes:
workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search( workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search(
[('production_id.name', '=', req_code.rsplit('-', 1)[0]), [('delivery_num', '=', req_code.strip()), ('task_completion_time', '=', False)])
('delivery_num', '=', req_code.strip())])
if workpiece_delivery: if workpiece_delivery:
workpiece_delivery.write({'status': '已配送', 'task_completion_time': datetime.now()}) workpiece_delivery.write({'status': '已配送', 'task_completion_time': datetime.now()})
else: else:

View File

@@ -485,10 +485,8 @@ class ResMrpWorkOrder(models.Model):
def _json_workpiece_delivery_list(self, production): def _json_workpiece_delivery_list(self, production):
return [ return [
[0, '', {'production_id': production.id, 'type': '上产线', 'delivery_num': '%s-%s' % (production.name, 1)}], [0, '', {'production_id': production.id, 'type': '上产线', 'delivery_num': '%s-%s' % (production.name, 1)}],
[0, '', {'production_id': production.id, 'type': '下产线', 'delivery_num': '%s-%s' % (production.name, 2)}],
[0, '', [0, '',
{'production_id': production.id, 'type': '运送空料架', 'delivery_num': '%s-%s' % (production.name, 3)}], {'production_id': production.id, 'type': '下产线', 'delivery_num': '%s-%s' % (production.name, 2)}], ]
]
# 拼接工单对象属性值(表面工艺) # 拼接工单对象属性值(表面工艺)
def _json_workorder_surface_process_str(self, production, route, process_parameter, supplier_id): def _json_workorder_surface_process_str(self, production, route, process_parameter, supplier_id):
@@ -1162,6 +1160,7 @@ class WorkPieceDelivery(models.Model):
agv_site = self.env['sf.agv.site'].search([]) agv_site = self.env['sf.agv.site'].search([])
if agv_site: if agv_site:
agv_site.update_site_state() agv_site.update_site_state()
# if
config = self.env['res.config.settings'].get_values() config = self.env['res.config.settings'].get_values()
positionCode_Arr = [] positionCode_Arr = []
delivery_Arr = [] delivery_Arr = []

View File

@@ -7,8 +7,8 @@ import os
from odoo import models, fields, api, _ from odoo import models, fields, api, _
from odoo.exceptions import ValidationError from odoo.exceptions import ValidationError
from odoo.modules import get_resource_path from odoo.modules import get_resource_path
from OCC.Extend.DataExchange import read_step_file # from OCC.Extend.DataExchange import read_step_file
from OCC.Extend.DataExchange import write_stl_file # from OCC.Extend.DataExchange import write_stl_file
class ResProductMo(models.Model): class ResProductMo(models.Model):

View File

@@ -8,8 +8,8 @@ from datetime import datetime
import requests import requests
from odoo import http from odoo import http
from odoo.http import request from odoo.http import request
from OCC.Extend.DataExchange import read_step_file # from OCC.Extend.DataExchange import read_step_file
from OCC.Extend.DataExchange import write_stl_file # from OCC.Extend.DataExchange import write_stl_file
from odoo import models, fields, api from odoo import models, fields, api
from odoo.modules import get_resource_path from odoo.modules import get_resource_path
from odoo.exceptions import ValidationError, UserError from odoo.exceptions import ValidationError, UserError

View File

@@ -6,8 +6,8 @@ import os
from datetime import datetime from datetime import datetime
from stl import mesh from stl import mesh
# from OCC.Core.GProp import GProp_GProps # from OCC.Core.GProp import GProp_GProps
from OCC.Extend.DataExchange import read_step_file # from OCC.Extend.DataExchange import read_step_file
from OCC.Extend.DataExchange import write_stl_file # from OCC.Extend.DataExchange import write_stl_file
from odoo.addons.sf_base.commons.common import Common from odoo.addons.sf_base.commons.common import Common
from odoo import models, fields, api from odoo import models, fields, api
from odoo.modules import get_resource_path from odoo.modules import get_resource_path