From 36270477d5e7125752ed23f284e4affee5dbe688 Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Thu, 2 Nov 2023 17:17:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=8C=E6=AD=A5=E5=88=80?= =?UTF-8?q?=E5=85=B7=E6=A0=87=E5=87=86=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/models/tool_base_new.py | 29 ++++++------- sf_base/models/tool_other_features.py | 42 +++++++++---------- sf_base/views/tool_basic_param.xml | 2 +- sf_base/views/tool_views.xml | 14 +++---- sf_dlm/views/product_template_view.xml | 2 +- sf_manufacturing/models/product_template.py | 17 ++++---- sf_mrs_connect/__manifest__.py | 1 + sf_mrs_connect/models/res_config_setting.py | 4 +- sf_mrs_connect/models/sync_common.py | 24 +++++++---- sf_mrs_connect/security/ir.model.access.csv | 7 ++++ sf_tool_management/models/base.py | 4 +- .../models/tool_material_search.py | 12 +++--- 12 files changed, 85 insertions(+), 73 deletions(-) create mode 100644 sf_mrs_connect/security/ir.model.access.csv diff --git a/sf_base/models/tool_base_new.py b/sf_base/models/tool_base_new.py index e2839763..4d4c702a 100644 --- a/sf_base/models/tool_base_new.py +++ b/sf_base/models/tool_base_new.py @@ -26,7 +26,7 @@ class FunctionalCuttingTool(models.Model): name = fields.Char('名称') active = fields.Boolean('有效', default=True) mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型') - mrs_cutting_tool_model_id = fields.Many2one('sf.cutting.tool.model', string='刀具型号') + mrs_cutting_tool_model_id = fields.Many2one('sf.cutting_tool.standard.library', string='刀具型号') # # 整体式刀具型号 # mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model', 'rel_integral_model_functional_sf', @@ -103,14 +103,6 @@ class CuttingToolType(models.Model): remark = fields.Char('备注') active = fields.Boolean('有效', default=True) - def _get_ids(self, cutting_tool_type_code): - cutting_tool_type_ids = [] - for item in cutting_tool_type_code: - cutting_tool_type = self.search([('code', '=', item)]) - if cutting_tool_type: - cutting_tool_type_ids.append(cutting_tool_type.id) - return [(6, 0, cutting_tool_type_ids)] - # 刀具标准库 class CuttingToolModel(models.Model): @@ -180,14 +172,14 @@ class CuttingToolModel(models.Model): material_model_id = fields.Many2one('sf.materials.model', '材料型号') # 适用夹头型号可以多选 chuck_ids = fields.Many2many( - 'sf.cutting.tool.type', + 'sf.cutting_tool.standard.library', relation='cutting_tool_type_library_handle_chuck_rel', column1='model_id_1', column2='model_id_2', domain="[('cutting_tool_material_id.name', '=', '夹头')]", string='适用夹头型号') cutter_bar_ids = fields.Many2many( - 'sf.cutting.tool.type', + 'sf.cutting_tool.standard.library', relation='cutting_tool_type_library_cutter_bar_rel', column1='model_id_1', column2='model_id_2', @@ -195,7 +187,7 @@ class CuttingToolModel(models.Model): string='适用刀杆型号' ) cutter_pad_ids = fields.Many2many( - 'sf.cutting.tool.type', + 'sf.cutting_tool.standard.library', relation='cutting_tool_type_library_cutter_pad_rel', column1='model_id_1', column2='model_id_2', @@ -204,7 +196,7 @@ class CuttingToolModel(models.Model): ) # 刀杆/参数 blade_ids = fields.Many2many( - 'sf.cutting.tool.type', + 'sf.cutting_tool.standard.library', relation='cutting_tool_type_library_pad_blade_rel', column1='model_id_1', column2='model_id_2', @@ -212,7 +204,7 @@ class CuttingToolModel(models.Model): string='适用刀片型号' # 使用空列表作为默认值 ) handle_ids = fields.Many2many( - 'sf.cutting.tool.type', + 'sf.cutting_tool.standard.library', relation='cutting_tool_type_library_chuck_handle_rel', column1='model_id_1', column2='model_id_2', @@ -222,8 +214,13 @@ class CuttingToolModel(models.Model): active = fields.Boolean('有效', default=True) is_cloud = fields.Boolean('云端数据', default=False) - # def get_cutter_bar_ids(self): - # return self.cutter_bar_ids + def _get_ids(self, cutting_tool_type_code, factory_short_name): + cutting_tool_type_ids = [] + for item in cutting_tool_type_code: + cutting_tool_type = self.search([('code', '=', item.replace("JKM", factory_short_name))]) + if cutting_tool_type: + cutting_tool_type_ids.append(cutting_tool_type.id) + return [(6, 0, cutting_tool_type_ids)] class MaintenanceStandardImage(models.Model): diff --git a/sf_base/models/tool_other_features.py b/sf_base/models/tool_other_features.py index f97c9a9f..9d7c57ea 100644 --- a/sf_base/models/tool_other_features.py +++ b/sf_base/models/tool_other_features.py @@ -41,11 +41,11 @@ class ToolMaterialsBasicParameters(models.Model): chip_breaker_groove = fields.Selection([('无', '无'), ('单面', '单面'), ('双面', '双面')], string='有无断屑槽') blade_teeth_model = fields.Selection( - [('V牙型', 'V牙型'), ('米制全牙型', '米制全牙型'), ('美制全牙型', '美制全牙型'), + [('无', '无'), ('V牙型', 'V牙型'), ('米制全牙型', '米制全牙型'), ('美制全牙型', '美制全牙型'), ('惠氏全牙型', '惠氏全牙型'), ('BSPT全牙型', 'BSPT全牙型'), ('NPT全牙型', 'NPT全牙型'), ('UNJ全牙型', 'UNJ全牙型'), ('DIN405圆牙型', 'DIN405圆牙型'), ('ACME梯形', 'ACME梯形'), ('石油管螺纹刀片', '石油管螺纹刀片'), ('矮牙ACME梯形', '矮牙ACME梯形'), - ('Trapeze30° 103', 'Trapeze30° 103')], string='刀片牙型') + ('Trapeze30° 103', 'Trapeze30° 103')], string='刀片牙型', default='无') blade_blade_number = fields.Selection([('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8'), ('9', '9'), ('10', '10')], string='刀片的刃数(个)') @@ -53,7 +53,7 @@ class ToolMaterialsBasicParameters(models.Model): top_angle = fields.Integer('顶角(°)') blade_tip_dip_angle = fields.Integer('刀尖倾角(°)') side_cutting_edge_angle = fields.Integer('侧切削角(°)') - thread_model = fields.Selection([('外螺纹', '外螺纹'), ('内螺纹', '内螺纹')], string='螺纹类型') + thread_model = fields.Selection([('无', '无'), ('外螺纹', '外螺纹'), ('内螺纹', '内螺纹')], string='螺纹类型', default='无') thread_num = fields.Char('每英寸螺纹数(tpi)', size=20) blade_tip_height_tolerance = fields.Char('刀尖高度公差(mm)', size=20) inscribed_circle_tolerance = fields.Char('内接圆公差(mm)', size=20) @@ -66,7 +66,7 @@ class ToolMaterialsBasicParameters(models.Model): min_machining_aperture = fields.Char('最小加工孔径(mm)', size=20) install_blade_tip_num = fields.Char('可装刀片数/齿数(个)', size=20) cutting_blade_model = fields.Char('切削类型', size=20) - cooling_hole = fields.Selection([('有', '有'), ('无', '无')], string='有无冷却孔') + is_cooling_hole = fields.Boolean('有无冷却孔', default=False) locating_slot_code = fields.Char('定位槽代号', size=20) installing_structure = fields.Char('安装结构', size=20) blade_ids = fields.Many2many( @@ -99,11 +99,11 @@ class ToolMaterialsBasicParameters(models.Model): max_rotate_speed = fields.Char('最大转速(n/min)', size=20) diameter_slip_accuracy = fields.Char('径跳精度(mm)', size=20) cooling_model = fields.Char('冷却类型', size=20) - is_rough_machining = fields.Selection([('是', '是'), ('否', '否')], string='是否可粗加工') - is_finish_machining = fields.Selection([('是', '是'), ('否', '否')], string='是否可精加工') - is_quick_cutting = fields.Selection([('是', '是'), ('否', '否')], string='是否可高速切削') - is_drill_hole = fields.Selection([('是', '是'), ('否', '否')], string='是否可钻孔') - is_safe_lock = fields.Selection([('是', '是'), ('否', '否')], string='有无安全锁') + is_rough_machining = fields.Boolean('可粗加工', default=False) + is_finish_machining = fields.Boolean('可精加工', default=False) + is_quick_cutting = fields.Boolean('可高速切削', default=False) + is_drill_hole = fields.Boolean('可钻孔', default=False) + is_safe_lock = fields.Boolean('有无安全锁', default=False) # 夹头参数 er_size_model = fields.Char('ER尺寸型号', size=20) outer_diameter = fields.Char('外径(mm)', size=20) @@ -160,7 +160,7 @@ class ToolMaterialsBasicParameters(models.Model): 'install_aperture_diameter': obj['install_aperture_diameter'], 'pitch': obj['pitch'], 'chip_breaker_groove': obj['chip_breaker_groove'], - 'blade_teeth_model': obj['bladed_teeth_model'], + 'blade_teeth_model': '无' if not obj['bladed_teeth_model'] else obj['bladed_teeth_model'], 'blade_blade_number': obj['blade_blade_number'], 'cutting_depth': obj['cutting_depth'], 'blade_width': obj['blade_width'], @@ -168,7 +168,7 @@ class ToolMaterialsBasicParameters(models.Model): 'top_angle': obj['top_angle'], 'blade_tip_dip_angle': obj['blade_tip_dip_angle'], 'side_cutting_edge_angle': obj['side_cutting_edge_angle'], - 'thread_model': obj['thread_model'], + 'thread_model': '无' if not obj['thread_model'] else obj['thread_model'], 'thread_num': obj['thread_num'], 'blade_tip_height_tolerance': obj['blade_tip_height_tolerance'], 'inscribed_circle_tolerance': obj['inscribed_circle_tolerance'], @@ -194,10 +194,10 @@ class ToolMaterialsBasicParameters(models.Model): 'min_machining_aperture': obj['min_machining_aperture'], 'install_blade_tip_num': obj['install_blade_tip_num'], 'cutting_blade_model': obj['cutting_blade_model'], - 'cooling_hole': obj['cooling_hole'], + 'is_cooling_hole': obj['is_cooling_hole'], 'locating_slot_code': obj['locating_slot_code'], 'installing_structure': obj['installing_structure'], - 'blade_ids': [(6, 0, [])] if not obj.get('blade_codes') else self.evn['sf.cutting.tool.type']._get_ids( + 'blade_ids': [(6, 0, [])] if not obj.get('blade_codes') else self.evn['sf.cutting_tool.standard.library']._get_ids( obj['blade_codes']), 'tool_shim': obj['tool_shim'], 'cotter_pin': obj['cotter_pin'], @@ -220,12 +220,12 @@ class ToolMaterialsBasicParameters(models.Model): 'cutting_depth': obj['cutting_depth'], 'main_included_angle': obj['main_included_angle'], 'installing_structure': obj['installing_structure'], - 'blade_ids': [(6, 0, [])] if not obj.get('blade_codes') else self.evn['sf.cutting.tool.type']._get_ids( + 'blade_ids': [(6, 0, [])] if not obj.get('blade_codes') else self.evn['sf.cutting_tool.standard.library']._get_ids( obj['blade_codes']), 'screw': obj['screw'], 'spanner': obj['spanner'], 'cutting_blade_model': obj['cutting_blade_model'], - 'cooling_hole': obj['cooling_hole'], + 'is_cooling_hole': obj['is_cooling_hole'], 'locating_slot_code': obj['locating_slot_code'], }) return cutter_head_basic_param_str @@ -248,11 +248,11 @@ class ToolMaterialsBasicParameters(models.Model): 'max_rotate_speed': obj['max_rotate_speed'], 'diameter_slip_accuracy': obj['diameter_slip_accuracy'], 'cooling_model': obj['cooling_model'], - 'is_rough_machining': obj['whether_rough_machining'], - 'is_finish_machining': obj['whether_finish_machining'], - 'is_quick_cutting': obj['whether_quick_cutting'], - 'is_drill_hole': obj['whether_drill_hole'], - 'is_safe_lock': obj['whether_safe_lock'], + 'is_rough_machining': obj['is_rough_machining'], + 'is_finish_machining': obj['is_finish_machining'], + 'is_quick_cutting': obj['is_quick_cutting'], + 'is_drill_hole': obj['is_drill_hole'], + 'is_safe_lock': obj['is_safe_lock'], 'screw': obj['screw'], 'spanner': obj['spanner'], }) @@ -278,7 +278,7 @@ class ToolMaterialsBasicParameters(models.Model): 'clamping_tolerance': obj['clamping_tolerance'], 'max_load_capacity': obj['max_load_capacity'], 'handle_ids': [(6, 0, [])] if not obj.get( - 'handle_codes') else self.evn['sf.cutting.tool.type']._get_ids(obj['handle_codes']), + 'handle_codes') else self.evn['sf.cutting_tool.standard.library']._get_ids(obj['handle_codes']), 'cooling_jacket': obj['cooling_jacket'], }) return chuck_basic_param_str diff --git a/sf_base/views/tool_basic_param.xml b/sf_base/views/tool_basic_param.xml index 1cc631f0..a512de10 100644 --- a/sf_base/views/tool_basic_param.xml +++ b/sf_base/views/tool_basic_param.xml @@ -70,7 +70,7 @@ - + diff --git a/sf_base/views/tool_views.xml b/sf_base/views/tool_views.xml index fe2fcf5c..c1e03123 100644 --- a/sf_base/views/tool_views.xml +++ b/sf_base/views/tool_views.xml @@ -274,7 +274,7 @@ - + @@ -304,7 +304,7 @@ - + @@ -328,11 +328,11 @@ - - - - - + + + + + diff --git a/sf_dlm/views/product_template_view.xml b/sf_dlm/views/product_template_view.xml index 130be2c4..b212ddef 100644 --- a/sf_dlm/views/product_template_view.xml +++ b/sf_dlm/views/product_template_view.xml @@ -393,7 +393,7 @@ attrs="{'invisible': [('cutting_tool_type', '!=', '刀杆')]}"/> - diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py index bcd32b08..6981103d 100644 --- a/sf_manufacturing/models/product_template.py +++ b/sf_manufacturing/models/product_template.py @@ -73,7 +73,7 @@ class ResProductMo(models.Model): tool_length = fields.Float('长度(mm)') tool_width = fields.Float('宽度(mm)') tool_height = fields.Float('高度(mm)') - tool_thickness = fields.Integer('厚度(mm)') + tool_thickness = fields.Float('厚度(mm)') tool_weight = fields.Float('重量(kg)') tool_hardness = fields.Integer('硬度(hrc)') @@ -81,7 +81,7 @@ class ResProductMo(models.Model): # 整体式刀具特有字段 cutting_tool_total_length = fields.Float('总长度(mm)', digits=(6, 1)) cutting_tool_shank_length = fields.Float('柄部长度(mm)', digits=(6, 1)) - cutting_tool_blade_length = fields.Float('刃部长度(mm)', digits=(6, 1)) + cutting_tool_blade_length = fields.Char('刃部长度(mm)') cutting_tool_blade_number = fields.Selection( [('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8')], '刃数(个)') # 整体式刀具新增字段 @@ -227,7 +227,7 @@ class ResProductMo(models.Model): self.cutting_tool_clamping_diameter_min = self.specification_id.min_clamping_diameter self.cutting_tool_clamping_diameter_min = self.specification_id.max_clamping_diameter self.cutting_tool_clamping_way = self.specification_id.clamping_mode - self.cutting_tool_top_diameter = self.cutting_tool_model_id.top_diameter + self.cutting_tool_top_diameter = self.specification_id.top_diameter self.cutting_tool_outer_diameter = self.specification_id.outer_diameter self.cutting_tool_inner_diameter = self.specification_id.inner_diameter self.tool_weight = self.specification_id.weight @@ -290,7 +290,7 @@ class ResProductMo(models.Model): self.cutting_tool_interface_diameter = self.specification_id.interface_diameter elif self.cutting_tool_type == '刀柄': self.cutting_tool_total_length = self.specification_id.total_length - self.cutting_tool_standard_speed = self.specification_id.standard_speed + self.cutting_tool_standard_speed = self.specification_id.standard_rotate_speed self.cutting_tool_speed_max = self.specification_id.speed_max self.cutting_tool_change_time = self.specification_id.change_time self.cutting_tool_total_length = self.specification_id.total_length @@ -431,7 +431,7 @@ class ResProductMo(models.Model): ('惠氏全牙型', '惠氏全牙型'), ('BSPT全牙型', 'BSPT全牙型'), ('NPT全牙型', 'NPT全牙型'), ('UNJ全牙型', 'UNJ全牙型'), ('DIN405圆牙型', 'DIN405圆牙型'), ('ACME梯形', 'ACME梯形'), ('石油管螺纹刀片', '石油管螺纹刀片'), ('矮牙ACME梯形', '矮牙ACME梯形'), - ('Trapeze30° 103', 'Trapeze30° 103')], string='刀片牙型') + ('Trapeze30° 103', 'Trapeze30° 103')], string='刀片牙型', default='无') cutting_tool_blade_blade_number = fields.Selection( [('0', '0'), ('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8'), ('9', '9'), ('10', '10')], @@ -486,9 +486,8 @@ class ResProductMo(models.Model): cutting_tool_pressing_plate = fields.Char('适配压板型号', size=50) cutting_tool_screw = fields.Char('适配螺钉型号', size=50) cutting_tool_wrench = fields.Char('适配扳手型号') - cutting_tool_cooling_hole = fields.Selection([('有', '有'), ('无', '无')], string='有无冷却孔') + cutting_tool_is_cooling_hole = fields.Boolean('有无冷却孔', default=False) cutting_tool_locating_slot_code = fields.Char('定位槽代号', size=20) - # 刀盘参数 cutting_tool_cutter_head_diameter = fields.Char('刀盘直径(mm)', size=20) cutting_tool_interface_diameter = fields.Char('接口直径(mm)', size=20) @@ -505,11 +504,11 @@ class ResProductMo(models.Model): cutting_tool_is_rough_finish = fields.Boolean('可粗加工', default=False) cutting_tool_is_finish = fields.Boolean('可精加工', default=False) cutting_tool_is_drill_hole = fields.Boolean('可钻孔', default=False) - cutting_tool_is_safety_lock = fields.Boolean('安全锁', default=False) + cutting_tool_is_safety_lock = fields.Boolean('有无安全锁', default=False) cutting_tool_is_high_speed_cutting = fields.Boolean('可高速切削', default=False) cutting_tool_change_time = fields.Integer('换刀时间(s)') cutting_tool_clamping_way = fields.Char('夹持方式') - cutting_tool_standard_speed = fields.Integer('标准转速(n/min)') + cutting_tool_standard_speed = fields.Char('标准转速(n/min)') cutting_tool_speed_max = fields.Integer('最大转速(n/min)') cutting_tool_cooling_type = fields.Char('冷却类型') # 夹头参数 diff --git a/sf_mrs_connect/__manifest__.py b/sf_mrs_connect/__manifest__.py index b1955012..3ccd3ac4 100644 --- a/sf_mrs_connect/__manifest__.py +++ b/sf_mrs_connect/__manifest__.py @@ -13,6 +13,7 @@ 'depends': ['sf_base', 'base_setup'], 'data': [ 'data/ir_cron_data.xml', + 'security/ir.model.access.csv', 'views/res_config_settings_views.xml' ], 'demo': [ diff --git a/sf_mrs_connect/models/res_config_setting.py b/sf_mrs_connect/models/res_config_setting.py index 549e3ce1..91bd52c6 100644 --- a/sf_mrs_connect/models/res_config_setting.py +++ b/sf_mrs_connect/models/res_config_setting.py @@ -48,7 +48,7 @@ class ResConfigSettings(models.TransientModel): self.env['sf.cutting.tool.material'].sync_all_cutting_tool_material() _logger.info("同步刀具类型完成") self.env['sf.cutting.tool.type'].sync_all_tool_type() - _logger.info("同步所有刀具型号完成") + _logger.info("同步功能刀具类型完成") self.env['sf.functional.cutting.tool.model'].sync_all_functional_cutting_tool_model() _logger.info("同步夹具物料完成") self.env['sf.fixture.material'].sync_all_fixture_material() @@ -56,7 +56,7 @@ class ResConfigSettings(models.TransientModel): self.env['sf.multi_mounting.type'].sync_all_multi_mounting_type() _logger.info("同步夹具型号完成") self.env['sf.fixture.model'].sync_all_fixture_model() - _logger.info("同步功能夹具类型完成") + _logger.info("同步夹具型号类型完成") self.env['sf.functional.fixture.type'].sync_all_functional_fixture_type() _logger.info("同步功能夹具类型完成") self.env['sf.machine_tool.type'].sync_all_machine_tool_type() diff --git a/sf_mrs_connect/models/sync_common.py b/sf_mrs_connect/models/sync_common.py index c3679969..6d5a819c 100644 --- a/sf_mrs_connect/models/sync_common.py +++ b/sf_mrs_connect/models/sync_common.py @@ -1815,9 +1815,11 @@ class Cutting_tool_standard_library(models.Model): "integral_run_out_accuracy_max": item['integral_run_out_accuracy_max'], "integral_run_out_accuracy_min": item['integral_run_out_accuracy_min'], "cutter_bar_ids": [(6, 0, [])] if not item.get('cutter_bar_codes') else self.env[ - 'sf.cutting.tool.type']._get_ids(item['cutter_bar_codes']), + 'sf.cutting_tool.standard.library']._get_ids(item['cutter_bar_codes'], + result['factory_short_name']), "cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[ - 'sf.cutting.tool.type']._get_ids(item['cutter_pad_codes']), + 'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'], + result['factory_short_name']), "fit_blade_shape_id": [(6, 0, [])] if not item.get('fit_blade_shape') else self.env[ 'maintenance.equipment.image']._get_ids(item['fit_blade_shape']), "suitable_machining_method_ids": [(6, 0, [])] if not item.get( @@ -1861,9 +1863,11 @@ class Cutting_tool_standard_library(models.Model): "integral_run_out_accuracy_max": item['integral_run_out_accuracy_max'], "integral_run_out_accuracy_min": item['integral_run_out_accuracy_min'], "cutter_bar_ids": [(6, 0, [])] if not item.get('cutter_bar_codes') else self.env[ - 'sf.cutting.tool.type']._get_ids(item['cutter_bar_codes']), + 'sf.cutting_tool.standard.library']._get_ids(item['cutter_bar_codes'], + result['factory_short_name']), "cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[ - 'sf.cutting.tool.type']._get_ids(item['cutter_pad_codes']), + 'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'], + result['factory_short_name']), "fit_blade_shape_id": [(6, 0, [])] if not item.get('fit_blade_shape') else self.env[ 'maintenance.equipment.image']._get_ids(item['fit_blade_shape']), "suitable_machining_method_ids": [(6, 0, [])] if not item.get( @@ -1976,9 +1980,11 @@ class Cutting_tool_standard_library(models.Model): "integral_run_out_accuracy_max": item['integral_run_out_accuracy_max'], "integral_run_out_accuracy_min": item['integral_run_out_accuracy_min'], "cutter_bar_ids": [(6, 0, [])] if not item.get('cutter_bar_codes') else self.env[ - 'sf.cutting.tool.type']._get_ids(item['cutter_bar_codes']), + 'sf.cutting_tool.standard.library']._get_ids(item['cutter_bar_codes'], + result['factory_short_name']), "cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[ - 'sf.cutting.tool.type']._get_ids(item['cutter_pad_codes']), + 'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'], + result['factory_short_name']), "fit_blade_shape_id": [(6, 0, [])] if not item.get('fit_blade_shape') else self.env[ 'maintenance.equipment.image']._get_ids(item['fit_blade_shape']), "suitable_machining_method_ids": [(6, 0, [])] if not item.get( @@ -2022,9 +2028,11 @@ class Cutting_tool_standard_library(models.Model): "integral_run_out_accuracy_max": item['integral_run_out_accuracy_max'], "integral_run_out_accuracy_min": item['integral_run_out_accuracy_min'], "cutter_bar_ids": [(6, 0, [])] if not item.get('cutter_bar_codes') else self.env[ - 'sf.cutting.tool.type']._get_ids(item['cutter_bar_codes']), + 'sf.cutting_tool.standard.library']._get_ids(item['cutter_bar_codes'], + result['factory_short_name']), "cutter_pad_ids": [(6, 0, [])] if not item.get('cutter_pad_codes') else self.env[ - 'sf.cutting.tool.type']._get_ids(item['cutter_pad_codes']), + 'sf.cutting_tool.standard.library']._get_ids(item['cutter_pad_codes'], + result['factory_short_name']), "fit_blade_shape_id": [(6, 0, [])] if not item.get('fit_blade_shape') else self.env[ 'maintenance.equipment.image']._get_ids(item['fit_blade_shape']), "suitable_machining_method_ids": [(6, 0, [])] if not item.get( diff --git a/sf_mrs_connect/security/ir.model.access.csv b/sf_mrs_connect/security/ir.model.access.csv new file mode 100644 index 00000000..0ed43a62 --- /dev/null +++ b/sf_mrs_connect/security/ir.model.access.csv @@ -0,0 +1,7 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_sf_static_resource_datasync,sf_static_resource_datasync,model_sf_static_resource_datasync,base.group_user,1,1,1,1 + + + + + diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py index 02d723ce..4b9edfe6 100644 --- a/sf_tool_management/models/base.py +++ b/sf_tool_management/models/base.py @@ -16,7 +16,7 @@ class FunctionalCuttingToolEntity(models.Model): barcode_id = fields.Many2one('stock.lot', string='功能刀具序列号', readonly=True) name = fields.Char(related='barcode_id.name') functional_tool_name_id = fields.Many2one('product.product', string='功能刀具名称', readonly=True) - mrs_cutting_tool_model_id = fields.Many2one('sf.cutting.tool.model', string='刀具型号') + mrs_cutting_tool_model_id = fields.Many2one('sf.cutting_tool.standard.library', string='刀具型号') mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', group_expand='_read_group_mrs_cutting_tool_type_id', compute_sudo=True) @@ -90,7 +90,7 @@ class FunctionalCuttingToolEntity(models.Model): def _get_functional_tool_model_ids(self, functional_tool_model_code): functional_tool_model_ids = [] for item in functional_tool_model_code: - functional_tool_model = self.env['sf.cutting.tool.model'].search([('code', '=', item)]) + functional_tool_model = self.env['sf.cutting_tool.standard.library'].search([('code', '=', item)]) functional_tool_model_ids.append(functional_tool_model.id) return [(6, 0, functional_tool_model_ids)] diff --git a/sf_tool_management/models/tool_material_search.py b/sf_tool_management/models/tool_material_search.py index f03738b6..32b4d6a8 100644 --- a/sf_tool_management/models/tool_material_search.py +++ b/sf_tool_management/models/tool_material_search.py @@ -55,7 +55,7 @@ class SfToolMaterialSearch(models.Model): blade_radius = fields.Float('刀片刀尖半径(mm)') blade_nut = fields.Float('刀片配对螺母(mm)') mrs_cutting_tool_model_blade_cutter_bar_ids = fields.Many2many( - 'sf.cutting.tool.model', + 'sf.cutting_tool.standard.library', relation='sf_tool_material_search_blade_cutter_bar_rel', column1='model_id_1', column2='model_id_2', @@ -64,7 +64,7 @@ class SfToolMaterialSearch(models.Model): default=lambda self: [], # 使用空列表作为默认值 ) mrs_cutting_tool_model_blade_cutter_pad_ids = fields.Many2many( - 'sf.cutting.tool.model', + 'sf.cutting_tool.standard.library', relation='sf_tool_material_search_blade_cutter_pad_rel', column1='model_id_1', column2='model_id_2', @@ -204,7 +204,7 @@ class SfToolMaterialSearch(models.Model): bar_blade_number = fields.Integer('刀杆刃数') bar_d_diameter = fields.Float('刀杆D刃径(mm)') mrs_cutting_tool_model_bar_blade_ids = fields.Many2many( - 'sf.cutting.tool.model', + 'sf.cutting_tool.standard.library', relation='sf_tool_material_search_bar_blade_rel', column1='model_id_1', column2='model_id_2', @@ -226,7 +226,7 @@ class SfToolMaterialSearch(models.Model): pad_blade_number = fields.Integer('刀盘刃数') pad_d_diameter = fields.Float('刀盘D刃径(mm)') mrs_cutting_tool_model_pad_blade_ids = fields.Many2many( - 'sf.cutting.tool.model', + 'sf.cutting_tool.standard.library', relation='sf_tool_material_search_pad_blade_rel', column1='model_id_1', column2='model_id_2', @@ -256,7 +256,7 @@ class SfToolMaterialSearch(models.Model): handle_body_accuracy = fields.Float('刀柄本体精度(mm)') handle_nut = fields.Float('刀柄配对螺母(mm)') mrs_cutting_tool_model_handle_chuck_model_ids = fields.Many2many( - 'sf.cutting.tool.model', + 'sf.cutting_tool.standard.library', relation='sf_tool_material_search_handle_chuck_rel', column1='model_id_1', column2='model_id_2', @@ -280,7 +280,7 @@ class SfToolMaterialSearch(models.Model): chuck_height = fields.Float('夹头高度(mm)') chuck_nut = fields.Float('夹头配对螺母(mm)') mrs_cutting_tool_model_chuck_handle_model_ids = fields.Many2many( - 'sf.cutting.tool.model', + 'sf.cutting_tool.standard.library', relation='sf_tool_material_search_chuck_handle_rel', column1='model_id_1', column2='model_id_2',