Files
test/jikimo_workorder_exception/controllers/main.py
2024-10-21 11:46:14 +08:00

89 lines
3.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)