89 lines
3.7 KiB
Python
89 lines
3.7 KiB
Python
from odoo import http, fields
|
||
from odoo.http import request
|
||
import json
|
||
import logging
|
||
from odoo.addons.sf_mrs_connect.controllers.controllers import Sf_Mrs_Connect
|
||
from odoo.addons.sf_manufacturing.controllers.controllers import Manufacturing_Connect
|
||
|
||
_logger = logging.getLogger(__name__)
|
||
|
||
class WorkorderExceptionConroller(http.Controller):
|
||
|
||
@http.route('/AutoDeviceApi/BillError', type='json', auth='public', methods=['GET', 'POST'], csrf=False,
|
||
cors="*")
|
||
def workder_exception(self, **kw):
|
||
"""
|
||
记录工单异常
|
||
:param kw:
|
||
:return:
|
||
"""
|
||
_logger.info('workder_exception:%s' % kw)
|
||
try:
|
||
res = {'Succeed': True, 'ErrorCode': 0, 'Error': ''}
|
||
datas = request.httprequest.data
|
||
ret = json.loads(datas)
|
||
if not ret.get('RfidCode') or not ret.get('coding'):
|
||
res = {'Succeed': False, 'ErrorCode': 400, 'Error': '参数错误'}
|
||
return json.JSONEncoder().encode(res)
|
||
|
||
# 通过RfidCode获取就绪的CNC工单
|
||
workorder = request.env['mrp.workorder'].sudo().search([
|
||
('rfid_code', '=', ret['RfidCode']),
|
||
('routing_type', '=', 'CNC加工'),
|
||
])
|
||
if not workorder:
|
||
res = {'Succeed': False, 'ErrorCode': 401, 'Error': '无效的工单'}
|
||
return json.JSONEncoder().encode(res)
|
||
|
||
# 创建工单异常记录,关联工单
|
||
request.env['jikimo.workorder.exception'].sudo().create({
|
||
'workorder_id': workorder.id,
|
||
'exception_code': ret.get('coding'),
|
||
'exception_content': ret.get('Error', '')
|
||
})
|
||
|
||
except Exception as e:
|
||
res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
|
||
_logger.info('workder_exception error:%s' % e)
|
||
return json.JSONEncoder().encode(res)
|
||
|
||
|
||
class SfMrsConnectController(Sf_Mrs_Connect):
|
||
|
||
@http.route('/api/cnc_processing/create', type='json', auth='sf_token', methods=['GET', 'POST'], csrf=False,
|
||
cors="*")
|
||
def get_cnc_processing_create(self, **kw):
|
||
"""
|
||
更新工单异常记录【'YC001', 'YC004'】
|
||
"""
|
||
res = super(SfMrsConnectController, self).get_cnc_processing_create(**kw)
|
||
# 如果有未完成的YC0001、YC0004异常记录,则标记为完成
|
||
res = json.loads(res)
|
||
_logger.info('已进入工单异常:%s' % res)
|
||
if res.get('production_ids'):
|
||
try:
|
||
productions = request.env['mrp.production'].sudo().search([('id', 'in', res.get('production_ids'))])
|
||
if productions.workorder_ids:
|
||
productions.workorder_ids.handle_exception(['YC0001', 'YC0004'])
|
||
except Exception as e:
|
||
_logger.info('更新工单异常记录失败:%s' % e)
|
||
return json.JSONEncoder().encode(res)
|
||
|
||
class ManufactruingController(Manufacturing_Connect):
|
||
|
||
@http.route('/AutoDeviceApi/FeedBackStart', type='json', auth='none', methods=['GET', 'POST'], csrf=False,
|
||
cors="*")
|
||
def button_Work_START(self, **kw):
|
||
"""
|
||
更新工单异常记录【'YC0002', 'YC0003'】
|
||
"""
|
||
res = super(ManufactruingController, self).button_Work_START(**kw)
|
||
res = json.loads(res)
|
||
_logger.info('已进入工单异常:%s' % res)
|
||
if res.get('workorder_id'):
|
||
try:
|
||
workorder = request.env['mrp.workorder'].sudo().browse(int(res.get('workorder_id')))
|
||
workorder.handle_exception(['YC0002', 'YC0003'])
|
||
except Exception as e:
|
||
_logger.info('更新工单异常记录失败:%s' % e)
|
||
return json.JSONEncoder().encode(res) |