优化工件上下产线

This commit is contained in:
jinling.yang
2024-06-04 16:13:42 +08:00
parent e9ab57854e
commit f33d7b79fc

View File

@@ -166,11 +166,13 @@ class Manufacturing_Connect(http.Controller):
if not workorder: if not workorder:
res = {'Succeed': False, 'ErrorCode': 202, 'Error': '该工单不存在'} res = {'Succeed': False, 'ErrorCode': 202, 'Error': '该工单不存在'}
return json.JSONEncoder().encode(res) return json.JSONEncoder().encode(res)
logging.info('workorder_state:%s' % workorder.state)
if workorder.state != 'ready': if workorder.state != 'ready':
res = {'Succeed': False, 'ErrorCode': 202, 'Error': '工单未就绪'} res = {'Succeed': False, 'ErrorCode': 202, 'Error': '工单未就绪'}
return json.JSONEncoder().encode(res) return json.JSONEncoder().encode(res)
work_equipment_id = request.env['maintenance.equipment'].sudo().search([('name', '=', equipment_id)], work_equipment_id = request.env['maintenance.equipment'].sudo().search([('name', '=', equipment_id)],
limit=1) limit=1)
logging.info('work_equipment_id:%s' % work_equipment_id.name)
if not work_equipment_id: if not work_equipment_id:
res = {'Succeed': False, 'ErrorCode': 202, 'Error': '没有找到该加工设备'} res = {'Succeed': False, 'ErrorCode': 202, 'Error': '没有找到该加工设备'}
return json.JSONEncoder().encode(res) return json.JSONEncoder().encode(res)
@@ -457,20 +459,21 @@ class Manufacturing_Connect(http.Controller):
rfid_code = ret[f'RfidCode{i}'] rfid_code = ret[f'RfidCode{i}']
logging.info('RfidCode:%s' % rfid_code) logging.info('RfidCode:%s' % rfid_code)
domain = [ domain = [
('feeder_station_destination_id.name', '=', ret['DeviceId']), ('rfid_code', '=', rfid_code),
('workorder_id.rfid_code', '=', rfid_code), ('routing_type', '=', 'CNC加工')
('status', '=', '已配送'),
('type', '=', '上产线')
] ]
workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search(domain, workorder = request.env['mrp.workorder'].sudo().search(domain, order='id asc')
order='id asc') if workorder:
if workpiece_delivery: for order in workorder:
for wd in workpiece_delivery: if order.production_id.production_line_state == '待上产线':
logging.info('wd.production_id:%s' % wd.production_id.name)
if wd.workorder_id.state == 'done' and wd.production_id.production_line_state == '待上产线':
logging.info( logging.info(
'wd.production_line_state:%s' % wd.production_id.production_line_state) '制造订单产线状态:%s' % order.production_id.production_line_state)
wd.production_id.write({'production_line_state': '已上产线'}) order.production_id.write({'production_line_state': '已上产线'})
workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search([
('rfid_code', '=', rfid_code), ('type', '=', '上产线'),
('production_id', '=', order.production_id.id)])
if workpiece_delivery.status == '待下发':
workpiece_delivery.write({'is_manual_work': True})
else: else:
res = {'Succeed': False, 'ErrorCode': 204, res = {'Succeed': False, 'ErrorCode': 204,
'Error': 'DeviceId为%s没有对应的已配送工件数据' % ret['DeviceId']} 'Error': 'DeviceId为%s没有对应的已配送工件数据' % ret['DeviceId']}
@@ -511,20 +514,20 @@ class Manufacturing_Connect(http.Controller):
rfid_code = ret[f'RfidCode{i}'] rfid_code = ret[f'RfidCode{i}']
logging.info('RfidCode:%s' % rfid_code) logging.info('RfidCode:%s' % rfid_code)
domain = [ domain = [
('workorder_id.rfid_code', '=', rfid_code), ('rfid_code', '=', rfid_code),
('status', '=', '待下发'), ('routing_type', '=', 'CNC加工')
('type', '=', '下产线')
] ]
workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search(domain, workorder = request.env['mrp.workorder'].sudo().search(domain, order='id asc')
order='id asc') if workorder:
if workpiece_delivery: for order in workorder:
for wd in workpiece_delivery: if order.production_id.production_line_state == '已上产线':
logging.info('wd.production_id:%s' % wd.production_id.name)
if wd.workorder_id.state == 'done' and wd.production_id.production_line_state == '已上产线':
logging.info( logging.info(
'wd.production_line_state:%s' % wd.production_id.production_line_state) '制造订单产线状态:%s' % order.production_id.production_line_state)
wd.production_id.write({'production_line_state': '已下产线'}) order.production_id.write({'production_line_state': '已下产线'})
delivery_Arr.append(wd.id) workpiece_delivery = request.env['sf.workpiece.delivery'].sudo().search([
('rfid_code', '=', rfid_code), ('type', '=', '下产线'),
('production_id', '=', order.production_id.id)])
delivery_Arr.append(workpiece_delivery.id)
else: else:
res = {'Succeed': False, 'ErrorCode': 204, res = {'Succeed': False, 'ErrorCode': 204,
'Error': 'DeviceId为%s没有对应的已配送工件数据' % ret['DeviceId']} 'Error': 'DeviceId为%s没有对应的已配送工件数据' % ret['DeviceId']}
@@ -534,10 +537,14 @@ class Manufacturing_Connect(http.Controller):
[('id', 'in', delivery_Arr)]) [('id', 'in', delivery_Arr)])
if delivery_workpiece: if delivery_workpiece:
logging.info('开始向agv下发下产线任务') logging.info('开始向agv下发下产线任务')
is_free = delivery_workpiece._check_avgsite_state() agv_site = request.env['sf.agv.site'].sudo().search([])
if is_free is True: if agv_site:
delivery_workpiece._delivery_avg() has_site = agv_site.update_site_state()
logging.info('agv下发下产线任务下发完成') if has_site is True:
is_free = delivery_workpiece._check_avgsite_state()
if is_free is True:
delivery_workpiece._delivery_avg()
logging.info('agv下发下产线任务下发完成')
else: else:
res = {'Succeed': False, 'ErrorCode': 203, 'Error': '未传IsComplete字段'} res = {'Succeed': False, 'ErrorCode': 203, 'Error': '未传IsComplete字段'}
except Exception as e: except Exception as e: