134 lines
5.6 KiB
Python
134 lines
5.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
import logging
|
|
import json
|
|
import base64
|
|
from odoo import http
|
|
from odoo.http import request
|
|
from odoo.addons.sf_base.decorators.api_log import api_log
|
|
|
|
|
|
class Manufacturing_Connect(http.Controller):
|
|
|
|
@http.route('/AutoDeviceApi/ToolGroup', type='json', auth='sf_token', methods=['GET', 'POST'], csrf=False,
|
|
cors="*")
|
|
@api_log('刀具组', requester='中控系统')
|
|
def get_functional_tool_groups_Info(self, **kw):
|
|
"""
|
|
刀具组接口
|
|
:param kw:
|
|
:return:
|
|
"""
|
|
logging.info('get_functional_tool_groups_Info:%s' % kw)
|
|
try:
|
|
datas = request.httprequest.data
|
|
ret = json.loads(datas)
|
|
# ret = json.loads(ret['result'])
|
|
logging.info('DeviceId:%s' % ret)
|
|
functional_tools = request.env['sf.tool.inventory'].sudo().search([])
|
|
|
|
res = {'Succeed': True, 'Datas': []}
|
|
if functional_tools:
|
|
for item in functional_tools:
|
|
res['Datas'].append({
|
|
'GroupName': item.tool_groups_id.name,
|
|
'ToolId': item.functional_cutting_tool_model_id.name,
|
|
'ToolName': item.name
|
|
})
|
|
except Exception as e:
|
|
res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
|
|
logging.info('get_functional_tool_groups_Info error:%s' % e)
|
|
return json.JSONEncoder().encode(res)
|
|
|
|
@http.route('/AutoDeviceApi/ToolInventory', type='json', auth='none', methods=['GET', 'POST'], csrf=False,
|
|
cors="*")
|
|
def get_functional_tool_inventory_Info(self, **kw):
|
|
"""
|
|
功能刀具清单接口
|
|
:param kw:
|
|
:return:
|
|
"""
|
|
logging.info('get_functional_tool_inventory_Info:%s' % kw)
|
|
try:
|
|
datas = request.httprequest.data
|
|
ret = json.loads(datas)
|
|
# ret = json.loads(ret['result'])
|
|
logging.info('DeviceId:%s' % ret)
|
|
tool_inventory = request.env['sf.tool.inventory'].sudo().search([])
|
|
|
|
res = {'Succeed': True, 'Datas': []}
|
|
if tool_inventory:
|
|
for item in tool_inventory:
|
|
res['Datas'].append({
|
|
'ToolName': item.name,
|
|
'GroupName': item.tool_groups_id.name,
|
|
'Lifetime': item.life_span
|
|
})
|
|
except Exception as e:
|
|
res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
|
|
logging.info('get_functional_tool_inventory_Info error:%s' % e)
|
|
return json.JSONEncoder().encode(res)
|
|
|
|
@http.route('/AutoDeviceApi/ToolEntity', type='json', auth='none', methods=['GET', 'POST'], csrf=False,
|
|
cors="*")
|
|
def get_functional_tool_entity_Info(self, **kw):
|
|
"""
|
|
功能刀具列表接口
|
|
:param kw:
|
|
:return:
|
|
"""
|
|
logging.info('get_functional_tool_entity_Info:%s' % kw)
|
|
try:
|
|
datas = request.httprequest.data
|
|
ret = json.loads(datas)
|
|
# ret = json.loads(ret['result'])
|
|
logging.info('DeviceId:%s' % ret)
|
|
functional_tools = request.env['sf.functional.cutting.tool.entity'].sudo().search([])
|
|
|
|
res = {'Succeed': True, 'Datas': []}
|
|
if functional_tools:
|
|
for item in functional_tools:
|
|
res['Datas'].append({
|
|
'Rfid': item.rfid,
|
|
'ToolName': item.tool_name_id.name,
|
|
'GroupName': item.tool_groups_id.name,
|
|
'MaxLifetime': item.max_lifetime_value,
|
|
'KnifeHandle': item.cutting_tool_cutterhandle_model_id.name
|
|
})
|
|
except Exception as e:
|
|
res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
|
|
logging.info('get_functional_tool_entity_Info error:%s' % e)
|
|
return json.JSONEncoder().encode(res)
|
|
|
|
@http.route('/AutoDeviceApi/PutToolParameter', type='http', auth='none', methods=['GET', 'POST'], csrf=False,
|
|
cors="*")
|
|
def put_tool_preset_parameter_port(self, **kw):
|
|
"""
|
|
刀具预调仪接口
|
|
:param kw:
|
|
:return:
|
|
"""
|
|
logging.info('put_tool_preset_parameter_port:%s' % kw)
|
|
res = {'Succeed': True, 'Datas': []}
|
|
try:
|
|
datas = request.httprequest.data
|
|
logging.info('datas: %s' % datas)
|
|
ret = str(datas, 'utf-8')
|
|
data_lists = ret.split(",")
|
|
data_list = [data.replace('+', '') for data in data_lists]
|
|
logging.info(data_list)
|
|
tool_assembly = request.env['sf.functional.tool.assembly'].sudo().search(
|
|
[('assembly_order_code', '=', data_list[0]), ('start_preset_bool', '=', True)])
|
|
if not tool_assembly:
|
|
return json.JSONEncoder().encode(
|
|
{'Succeed': False, 'ErrorCode': 201, 'code': data_list[0], 'Error': '没有找到正在组装的组装单!'})
|
|
tool_assembly.write({
|
|
'after_assembly_tool_loading_length': float(data_list[1] or "0"), # 高度(总长度)
|
|
'after_assembly_functional_tool_diameter': float(data_list[2] or "0") * 2, # 直径
|
|
'after_assembly_knife_tip_r_angle': float(data_list[3] or "0"), # R角
|
|
'bool_preset_parameter': True
|
|
})
|
|
except Exception as e:
|
|
res = {'Succeed': False, 'ErrorCode': 202, 'Error': e}
|
|
logging.info('put_tool_preset_parameter_port error:%s' % e)
|
|
return json.JSONEncoder().encode(res)
|