diff --git a/sf_tool_management/controllers/controllers.py b/sf_tool_management/controllers/controllers.py index a524f0bc..0c61f486 100644 --- a/sf_tool_management/controllers/controllers.py +++ b/sf_tool_management/controllers/controllers.py @@ -36,3 +36,34 @@ class Manufacturing_Connect(http.Controller): 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/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 + 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])]) + if not tool_assembly: + return json.JSONEncoder().encode( + {'Succeed': False, 'ErrorCode': 201, 'Error': '没有找到组装单!'}) + tool_assembly.write({ + 'after_assembly_tool_loading_length': float(data_list[1]), # 高度(总长度) + 'after_assembly_functional_tool_diameter': float(data_list[2] or "0"), # 直径 + 'after_assembly_knife_tip_r_angle': float(data_list[3] or "0") # R角 + }) + 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) diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py index 4a440df6..26cf43e7 100644 --- a/sf_tool_management/models/base.py +++ b/sf_tool_management/models/base.py @@ -538,12 +538,13 @@ class FunctionalToolAssembly(models.Model): chuck_name = fields.Char('') # ============================================== # 组装功能刀具参数信息 + start_preset_bool = fields.Boolean('开始预调', default=False) barcode_id = fields.Many2one('stock.lot', string='功能刀具序列号', readonly=True) after_assembly_functional_tool_name = fields.Char(string='组装后功能刀具名称', readonly=True) after_assembly_functional_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='组装后功能刀具类型', readonly=True) - after_assembly_functional_tool_diameter = fields.Float(string='组装后功能刀具直径(mm)', readonly=True) - after_assembly_knife_tip_r_angle = fields.Float(string='组装后刀尖R角(mm)', readonly=True) + after_assembly_functional_tool_diameter = fields.Float(string='组装后功能刀具直径(mm)', readonly=True, digits=(10, 3)) + after_assembly_knife_tip_r_angle = fields.Float(string='组装后刀尖R角(mm)', readonly=True, digits=(10, 3)) after_assembly_new_former = fields.Selection([('0', '新'), ('1', '旧')], string='组装后新/旧', readonly=True) cut_time = fields.Integer(string='已切削时间(min)', readonly=True) cut_length = fields.Float(string='已切削长度(mm)', readonly=True) @@ -555,7 +556,7 @@ class FunctionalToolAssembly(models.Model): after_assembly_max_lifetime_value = fields.Integer(string='组装后最大寿命值(min)', readonly=True) after_assembly_alarm_value = fields.Integer(string='组装后报警值(min)', readonly=True) after_assembly_used_value = fields.Integer(string='组装后已使用值(min)', readonly=True) - after_assembly_tool_loading_length = fields.Float(string='组装后总长度(mm)', readonly=True) + after_assembly_tool_loading_length = fields.Float(string='组装后总长度(mm)', readonly=True, digits=(10, 3)) after_assembly_functional_tool_length = fields.Float(string='组装后伸出长(mm)', readonly=True) after_assembly_effective_length = fields.Float(string='组装后有效长(mm)', readonly=True) L_D_number = fields.Float(string='L/D值(mm)', readonly=True) @@ -574,29 +575,59 @@ class FunctionalToolAssembly(models.Model): active = fields.Boolean(string='已归档', default=True) + def put_start_preset(self): + self.search([('start_preset_bool', '=', True)]).write({'start_preset_bool': False}) + self.write({'start_preset_bool': True}) + return { + 'type': 'ir.actions.act_window', + 'res_model': 'sf.functional.tool.assembly.order', + 'name': '功能刀具组装单', + 'view_mode': 'form', + 'target': 'new', + 'context': {'default_name': self.name, + 'default_assembly_order_code': self.assembly_order_code, + 'default_production_line_name_id': self.production_line_name_id, + 'default_machine_tool_name_id': self.machine_tool_name_id, + 'default_cutter_spacing_code_id': self.cutter_spacing_code_id, + 'default_functional_tool_name': self.functional_tool_name, + 'default_functional_tool_type_id': self.functional_tool_type_id, + 'default_tool_groups_id': self.tool_groups_id, + 'default_functional_tool_diameter': self.functional_tool_diameter, + 'default_knife_tip_r_angle': self.knife_tip_r_angle, + 'default_tool_loading_length': self.tool_loading_length, + 'default_functional_tool_length': self.functional_tool_length, + 'default_effective_length': self.effective_length, + 'default_whether_standard_knife': self.whether_standard_knife, + 'default_coarse_middle_thin': self.coarse_middle_thin, + 'default_new_former': self.new_former, + 'default_use_tool_time': self.use_tool_time, + 'default_reason_for_applying': self.reason_for_applying + } + } + def _get_code(self, loading_task_source): """ 自动生成组装单编码 """ new_time = str(fields.Date.today()) - datetime = new_time[2:4] + new_time[5:7] + new_time[-2:] + datetime = new_time[2:4] + new_time[5:7] + if loading_task_source == '0': + code = 'C' + datetime + elif loading_task_source == '1': + code = 'J' + datetime + elif loading_task_source == '2': + code = 'K' + datetime + else: + code = False functional_tool_assembly = self.env['sf.functional.tool.assembly'].sudo().search( [('loading_task_source', '=', loading_task_source), - ('assembly_order_code', 'ilike', datetime)], limit=1, order="id desc") + ('assembly_order_code', 'ilike', code)], limit=1, order="id desc") if not functional_tool_assembly: num = "%03d" % 1 else: m = int(functional_tool_assembly.assembly_order_code[-3:]) + 1 num = "%03d" % m - if loading_task_source == '0': - code = 'CAMZZD' + datetime + str(num) - elif loading_task_source == '1': - code = 'JTZZD' + datetime + str(num) - elif loading_task_source == '2': - code = 'MTSZZD' + datetime + str(num) - else: - code = False - return code + return code + str(num) def get_functional_tool(self, val): functional_tools = self.env['sf.functional.tool.assembly'].search( diff --git a/sf_tool_management/views/tool_base_views.xml b/sf_tool_management/views/tool_base_views.xml index 06a60b1c..985c28a5 100644 --- a/sf_tool_management/views/tool_base_views.xml +++ b/sf_tool_management/views/tool_base_views.xml @@ -451,36 +451,9 @@ - - -