# -*- coding: utf-8 -*- import logging import json import base64 from odoo import http from odoo.http import request class Manufacturing_Connect(http.Controller): @http.route('/AutoDeviceApi/ToolGroup', type='json', auth='sf_token', methods=['GET', 'POST'], csrf=False, cors="*") 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)