diff --git a/sf_base/models/base.py b/sf_base/models/base.py index 60c999b1..bb225b9b 100644 --- a/sf_base/models/base.py +++ b/sf_base/models/base.py @@ -36,10 +36,10 @@ class MachineBrand(models.Model): name = fields.Char('名称') tag_ids = fields.Many2many('sf.machine.brand.tags', 'rel_machine_brand_tags', string='类别') image_brand = fields.Image("品牌图片") - manufacturer_model_number = fields.Char('厂家型号', size=10) remark = fields.Text('备注') active = fields.Boolean('有效', default=True) + # 机床 class MachineTool(models.Model): _name = 'sf.machine_tool' @@ -316,6 +316,7 @@ class MachineToolCategory(models.Model): code = fields.Char('编码') name = fields.Char('名称') remark = fields.Text('备注') + active = fields.Boolean('有效', default=True) category = fields.Selection([('shukong', u'数控'), ('putong', u'普通')], string=u'机床类别', default='shukong') diff --git a/sf_base/models/fixture.py b/sf_base/models/fixture.py index d929cad9..db22b8d6 100644 --- a/sf_base/models/fixture.py +++ b/sf_base/models/fixture.py @@ -1,8 +1,4 @@ from odoo import models, fields, api -from odoo.addons.sf_base.commons.common import Common -from odoo.exceptions import ValidationError -import requests -import json class FixtureMaterial(models.Model): @@ -36,7 +32,6 @@ class FixtureModel(models.Model): fixture_material_type = fields.Char(string="夹具物料类型", related='fixture_material_id.name', store=True) multi_mounting_type_id = fields.Many2one('sf.multi_mounting.type', string="联装类型") brand_id = fields.Many2one('sf.machine.brand', string="品牌") - manufacturer_model_number = fields.Char(string="厂家型号") clamping_way = fields.Char(string="装夹方式") port_type = fields.Char(string="接口类型") model_file = fields.Binary(string="3D模型图") @@ -56,5 +51,7 @@ class FixtureModel(models.Model): string="适用机床型号") through_hole_size = fields.Integer(string="过孔大小[mm]", size=6) screw_size = fields.Integer(string="螺牙大小[mm]", size=6) + active = fields.Boolean('有效', default=True) + diff --git a/sf_base/models/fixture_base.py b/sf_base/models/fixture_base.py deleted file mode 100644 index 6ca48f71..00000000 --- a/sf_base/models/fixture_base.py +++ /dev/null @@ -1,240 +0,0 @@ -from odoo import models, fields - -'''============================定位元件型号=====================================''' - - -class FixtureSettingElement(models.Model): - _name = 'sf.fixture.setting.element' - _description = "定位元件型号" - - code = fields.Char(string='编码', readonly=True) - name = fields.Char(string="型号名称", readonly=True) - setting_ele_type_id = fields.Many2one('sf.setting.element.type', string="定位元件类型", readonly=True) - brand_id = fields.Many2one('sf.machine.brand', string="品牌", readonly=True) - - length = fields.Char(string='长度(mm)', readonly=True) - width = fields.Char(string='宽度(mm)', readonly=True) - height = fields.Char(string='高度(mm)', readonly=True) - diameter = fields.Char(string='直径(mm)', readonly=True) - - material_type_id = fields.Many2one('sf.materials.model', string='材料型号', readonly=True) - hardness = fields.Char(string='硬度(°)', readonly=True) - chucking_power = fields.Char(string='夹持力', readonly=True) - surface_treatment = fields.Char(string='表面处理', readonly=True) - accuracy_grade = fields.Char(string='精度等级', readonly=True) - - picture = fields.Binary(string="图片", readonly=True) - comment = fields.Text(string='备注', readonly=True) - - -'''=============================定位原件类型=============================================''' - - -class SettingElementType(models.Model): - _name = 'sf.setting.element.type' - _description = "定位原件类型" - - code = fields.Char(string='编码', readonly=True) - name = fields.Char(string='定位原件类型', readonly=True) - comment = fields.Text(string='备注', readonly=True) - - -'''==============================夹紧元件型号==============================================''' - - -class FixtureClampingElement(models.Model): - _name = 'sf.fixture.clamping.element' - _description = "夹紧元件型号" - - code = fields.Char(string='编码', readonly=True) - name = fields.Char(string="型号名称", readonly=True) - clamping_ele_type_id = fields.Many2one('sf.clamping.element.type', string="夹紧元件类型", readonly=True) - brand_id = fields.Many2one('sf.machine.brand', string="品牌", readonly=True) - - length = fields.Char(string='长度(mm)', readonly=True) - width = fields.Char(string='宽度(mm)', readonly=True) - height = fields.Char(string='高度(mm)', readonly=True) - diameter = fields.Char(string='直径(mm)', readonly=True) - - material_type_id = fields.Many2one('sf.materials.model', string='材料型号', readonly=True) - hardness = fields.Char(string='硬度(°)', readonly=True) - chucking_power = fields.Char(string='夹持力', readonly=True) - surface_treatment = fields.Char(string='夹持方式', readonly=True) - accuracy_grade = fields.Char(string='精度等级', readonly=True) - - picture = fields.Binary(string="图片", readonly=True) - comment = fields.Text(string='备注', readonly=True) - - -'''============================夹紧元件类型=======================================''' - - -# 夹紧元件类型 -class ClampingElementType(models.Model): - _name = "sf.clamping.element.type" - _description = "夹紧元件类型" - - code = fields.Char(string='编码', readonly=True) - name = fields.Char(name='夹紧元件类型', readonly=True) - comment = fields.Text(string='备注', readonly=True) - - -'''=========================对刀夹具型号=====================================''' - - -class FixtureToolSetting(models.Model): - _name = 'sf.fixture.tool.setting' - _description = "对刀夹具型号" - - code = fields.Char(string='编码', readonly=True) - name = fields.Char(string="型号名称", readonly=True) - tool_setting_type_id = fields.Many2one('sf.tool.setting.type', string="对刀夹具类型", readonly=True) - brand_id = fields.Many2one('sf.machine.brand', string="品牌", readonly=True) - - length = fields.Char(string='长度(mm)', readonly=True) - width = fields.Char(string='宽度(mm)', readonly=True) - height = fields.Char(string='高度(mm)', readonly=True) - diameter = fields.Char(string='直径(mm)', readonly=True) - - material_type_id = fields.Many2one('sf.materials.model', string='材料型号', readonly=True) - hardness = fields.Char(string='硬度(°)', readonly=True) - chucking_power = fields.Char(string='夹持力', readonly=True) - clamp_mode = fields.Char(string='夹持方式', readonly=True) - accuracy_grade = fields.Char(string='精度等级', readonly=True) - max_clamp_diameter = fields.Char('最大夹持直接(mm)', readonly=True) - - picture = fields.Binary(string="图片", readonly=True) - comment = fields.Text(string='备注', readonly=True) - - -'''===========================对刀夹具类型==========================================''' - - -class ToolSettingType(models.Model): - _name = 'sf.tool.setting.type' - _description = "对刀夹具类型" - - code = fields.Char('编码', readonly=True) - name = fields.Char(string='对刀夹具类型', readonly=True) - comment = fields.Text(string='备注', readonly=True) - - -'''==========================定位装置型号=======================================''' - - -class FixtureLocatingDevice(models.Model): - _name = 'sf.fixture.locating.device' - _description = "定位装置型号" - - code = fields.Char(string='编码', readonly=True) - name = fields.Char(string="型号名称", readonly=True) - locating_device_type_id = fields.Many2one('sf.locating.device.type', string="定位装置类型", readonly=True) - brand_id = fields.Many2one('sf.machine.brand', string="品牌", readonly=True) - - length = fields.Char(string='长度(mm)', readonly=True) - width = fields.Char(string='宽度(mm)', readonly=True) - height = fields.Char(string='高度(mm)', readonly=True) - diameter = fields.Char(string='直径(mm)', readonly=True) - - material_type_id = fields.Many2one('sf.materials.model', string='材料型号', readonly=True) - weight = fields.Char(string='重量(kg)', readonly=True) - accuracy_grade = fields.Char(string='精度等级', readonly=True) - locate_mode_ids = fields.Many2many('sf.locating.device.locate.mode', string='定位装置定位方式', readonly=True) - max_bearing_capacity = fields.Char(string='最大承载力', readonly=True) - - picture = fields.Binary(string="图片", readonly=True) - comment = fields.Text(string='备注', readonly=True) - - -'''==============================定位装置类型================================''' - - -# 定位装置型号 -class LocatingDeviceType(models.Model): - _name = 'sf.locating.device.type' - _description = "定位装置类型" - - code = fields.Char('编码', readonly=True) - name = fields.Char(string='定位装置类型', readonly=True) - comment = fields.Text(string='备注', readonly=True) - - -'''============================定位装置定位方式========================================''' - - -# 定位装置定位方式 -class LocatingDeviceLocateMode(models.Model): - _name = 'sf.locating.device.locate.mode' - _description = "定位装置定位方式" - - code = fields.Char('编码', readonly=True) - name = fields.Char('定位方式', readonly=True) - name_id = fields.Many2many('sf.fixture.locating.device', string='定位装置', readonly=True) - comment = fields.Text(string='备注', readonly=True) - - -'''===========================导向元件型号====================================''' - - -class FixtureGuideElement(models.Model): - _name = 'sf.fixture.guide.element' - _description = "导向元件型号" - - code = fields.Char(string='编码', readonly=True) - name = fields.Char(string="型号名称", readonly=True) - guide_ele_type_id = fields.Many2one('sf.guide.element.type', string="导向元件类型", readonly=True) - brand_id = fields.Many2one('sf.machine.brand', string="品牌", readonly=True) - - length = fields.Char(string='长度(mm)', readonly=True) - width = fields.Char(string='宽度(mm)', readonly=True) - height = fields.Char(string='高度(mm)', readonly=True) - diameter = fields.Char(string='直径(mm)', readonly=True) - - material_type_id = fields.Many2one('sf.materials.model', string='材料型号', readonly=True) - weight = fields.Char(string='重量', readonly=True) - accuracy_grade = fields.Char(string='精度等级', readonly=True) - guide_ele_guide_mode_id = fields.Many2many('sf.guide.element.guide.mode', string='导向元件导向方式', readonly=True) - scope_of_application = fields.Char(string='适用范围', readonly=True) - guide_ele_way_to_install_id = fields.Many2many('sf.guide.element.way.to.install', string='导向元件安装方式', - readonly=True) - - picture = fields.Binary(string="图片", readonly=True) - comment = fields.Text(string='备注', readonly=True) - - -'''=============================导向元件类型============================================''' - - -class GuideElementType(models.Model): - _name = 'sf.guide.element.type' - _description = "导向元件类型" - - code = fields.Char(string='编码', readonly=True) - name = fields.Char(string="导向元件类型", readonly=True) - comment = fields.Text(string='备注', readonly=True) - - -'''================================导向元件导向方式==========================================''' - - -class GuideElementGuideMode(models.Model): - _name = 'sf.guide.element.guide.mode' - _description = "导向元件导向方式" - - code = fields.Char(string='编码', readonly=True) - name = fields.Char(string="导向元件导向方式", readonly=True) - name_id = fields.Many2many('sf.fixture.guide.element', string='导向元件', readonly=True) - comment = fields.Text(string='备注', readonly=True) - - -'''=============================导向元件安装方式===========================================''' - - -class GuideElementWayToInstall(models.Model): - _name = 'sf.guide.element.way.to.install' - _description = '导向元件安装方式' - - code = fields.Char(string='编码', readonly=True) - name = fields.Char(string="导向元件安装方式", readonly=True) - name_id = fields.Many2many('sf.fixture.guide.element', string='导向元件', readonly=True) - comment = fields.Text(string='备注', readonly=True) diff --git a/sf_base/models/functional_fixture.py b/sf_base/models/functional_fixture.py index 86cc015f..5a769757 100644 --- a/sf_base/models/functional_fixture.py +++ b/sf_base/models/functional_fixture.py @@ -37,7 +37,7 @@ class FunctionalFixture(models.Model): vice_tray_model_ids = fields.Many2many('sf.fixture.model', 'rel_fixture_model_vice_tray', string="虎钳托盘型号", domain=[('fixture_material_type', '=', '虎钳托盘')]) registration_status = fields.Selection([("已注册", "已注册"), ("未注册", "未注册")], string="注册状态", default='未注册', tracking=True) - + active = fields.Boolean('有效', default=True) @api.onchange('type_id') def _onchange_type_id(self): diff --git a/sf_base/models/tool_base.py b/sf_base/models/tool_base.py index 08452e69..2d7d7028 100644 --- a/sf_base/models/tool_base.py +++ b/sf_base/models/tool_base.py @@ -15,6 +15,7 @@ class CuttingToolMaterial(models.Model): code = fields.Char('编码') name = fields.Char('名称') remark = fields.Char('备注') + active = fields.Boolean('有效', default=True) # 功能刀具 @@ -43,6 +44,7 @@ class FunctionalCuttingTool(models.Model): is_standard = fields.Boolean('是否标准刀') applicable_range = fields.Char('适用范围') image = fields.Binary('图片') + active = fields.Boolean('有效', default=True) # 功能刀具类型 @@ -53,6 +55,7 @@ class FunctionalCuttingToolModel(models.Model): name = fields.Char('名称') code = fields.Char('编码') remark = fields.Char('备注') + active = fields.Boolean('有效', default=True) # 整体式刀具 @@ -82,6 +85,7 @@ class IntegralCuttingTool(models.Model): chuck_model = fields.Many2many('sf.chuck', string='适用夹头型号') scope = fields.Char('适用范围') image = fields.Binary('图片') + active = fields.Boolean('有效', default=True) # 整体式刀具类型 diff --git a/sf_base/models/tool_base_new.py b/sf_base/models/tool_base_new.py index 048c94d3..575afd5f 100644 --- a/sf_base/models/tool_base_new.py +++ b/sf_base/models/tool_base_new.py @@ -12,6 +12,7 @@ class CuttingToolMaterial(models.Model): code = fields.Char('编码') name = fields.Char('名称') remark = fields.Char('备注') + active = fields.Boolean('有效', default=True) # 功能刀具 @@ -21,57 +22,60 @@ class FunctionalCuttingTool(models.Model): code = fields.Char('编码') 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_integral_model_ids = fields.Many2many('sf.cutting.tool.model', 'rel_integral_model_functional_sf', - string='整体式刀具型号', domain= - [('mrs_cutting_tool_material_name', '=', '整体式刀具')]) - # 刀片型号 - mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model', 'rel_blade_model_functional_sf', - string='刀片型号', domain= - [('mrs_cutting_tool_material_name', '=', '刀片')]) - # 刀杆型号 - mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model', - 'rel_cutterbar_model_functional_sf', - string='刀杆型号', domain= - [('mrs_cutting_tool_material_name', '=', '刀杆')]) - # 刀盘型号 - mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model', - 'rel_cutterpad_model_functional_sf', - string='刀盘型号', domain= - [('mrs_cutting_tool_material_name', '=', '刀盘')]) - # 刀柄型号 - mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model', - 'rel_cutterhandle_model_functional_sf', string='刀柄型号', - domain= - [('mrs_cutting_tool_material_name', '=', '刀柄')]) - # 夹头型号 - mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model', - 'rel_cutterhead_model_functional_sf', - string='夹头型号', domain= - [('mrs_cutting_tool_material_name', '=', '夹头')]) - - diameter = fields.Float('直径(mm)') - tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')], - string='刀具等级') - machining_accuracy = fields.Float('加工精度(mm)') - tool_length = fields.Float('装刀长') - blade_number = fields.Integer('刃数') - integral_blade_length = fields.Float('整体刃长(mm)') - effective_blade_length = fields.Float('有效刃长(mm)') - max_life = fields.Float('最大寿命值') - is_standard = fields.Boolean('是否标准刀') - applicable_range = fields.Char('适用范围') - image = fields.Binary('图片') - - 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_ids.append(functional_tool_model.id) - return [(6, 0, functional_tool_model_ids)] + # # 整体式刀具型号 + # mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model', 'rel_integral_model_functional_sf', + # string='整体式刀具型号', domain= + # [('cutting_tool_type', '=', '整体式刀具')]) + # # 刀片型号 + # mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model', 'rel_blade_model_functional_sf', + # string='刀片型号', domain= + # [('cutting_tool_type', '=', '刀片')]) + # # 刀杆型号 + # mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model', + # 'rel_cutterbar_model_functional_sf', + # string='刀杆型号', domain= + # [('cutting_tool_type', '=', '刀杆')]) + # # 刀盘型号 + # mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model', + # 'rel_cutterpad_model_functional_sf', + # string='刀盘型号', domain= + # [('cutting_tool_type', '=', '刀盘')]) + # # 刀柄型号 + # mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model', + # 'rel_cutterhandle_model_functional_sf', + # string='刀柄型号', + # domain= + # [('cutting_tool_type', '=', '刀柄')]) + # # 夹头型号 + # mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model', + # 'rel_cutterhead_model_functional_sf', + # string='夹头型号', domain= + # [('cutting_tool_type', '=', '夹头')]) + # + # diameter = fields.Float('直径(mm)') + # tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')], + # string='刀具等级') + # machining_accuracy = fields.Float('加工精度(mm)') + # tool_length = fields.Float('装刀长') + # blade_number = fields.Integer('刃数') + # integral_blade_length = fields.Float('整体刃长(mm)') + # effective_blade_length = fields.Float('有效刃长(mm)') + # max_life = fields.Float('最大寿命值') + # is_standard = fields.Boolean('是否标准刀') + # applicable_range = fields.Char('适用范围') + # image = fields.Binary('图片') + # active = fields.Boolean('有效', default=True) + # + # 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_ids.append(functional_tool_model.id) + # return [(6, 0, functional_tool_model_ids)] # 功能刀具类型 @@ -82,6 +86,7 @@ class FunctionalCuttingToolModel(models.Model): name = fields.Char('名称', required=True) code = fields.Char('编码', required=True) remark = fields.Char('备注') + active = fields.Boolean('有效', default=True) # 刀具型号 @@ -91,214 +96,93 @@ class CuttingToolModel(models.Model): name = fields.Char('名称') code = fields.Char('编码') - mrs_machine_brand_id = fields.Many2one('sf.machine.brand', '品牌') - mrs_materials_model_id = fields.Many2one('sf.materials.model', '材料型号') - # 关联刀具物料 - mrs_cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', '刀具物料', required=True) - # 关联刀具物料名称 - mrs_cutting_tool_material_name = fields.Char(related='mrs_cutting_tool_material_id.name', string='刀具物料名称', - store=True) - # 关联刀具类型 - mrs_cutting_tool_type_id = fields.Many2one( - 'sf.cutting.tool.type', '刀具类型', - domain="[('mrs_cutting_tool_material_id.name', '=', mrs_cutting_tool_material_name)]", required=True) - - # 整体式刀具特有字段 - integral_code = fields.Char('整体式刀具编码') - integral_accuracy = fields.Float('精度(μm)') - integral_hardness = fields.Float('加工硬度(HRC)') - integral_coating_material = fields.Char('涂层材质') - integral_total_length = fields.Float('总长度(mm)') - integral_shank_length = fields.Float('柄部长度(mm)') - integral_blade_length = fields.Float('刃部长度(mm)') - integral_diameter = fields.Float('直径(mm)') - integral_blade_number = fields.Integer('刃数') - integral_front_angle = fields.Float('前角(°)') - integral_rear_angle = fields.Float('后角(°)') - integral_main_included_angle = fields.Float('主偏角(°)') - integral_nut = fields.Float('配对螺母(mm)') - integral_scope = fields.Char('适用范围') - - # 刀片特有字段 - blade_code = fields.Char('刀片编码') - blade_coating_material = fields.Char('涂层材质') - blade_length = fields.Float('长度L(mm)') - blade_width = fields.Float('宽度D(mm)') - blade_height = fields.Float('高度T(mm)') - blade_top_angle = fields.Float('顶角(°)') - blade_front_angle = fields.Float('前角(°)') - blade_rear_angle = fields.Float('后角(°)') - blade_main_included_angle = fields.Float('主偏角(°)') - blade_r_angle = fields.Float('R角(°)') - blade_hardness = fields.Char('加工硬度') - blade_accuracy = fields.Char('精度等级') - blade_radius = fields.Float('刀尖半径(mm)') - blade_nut = fields.Float('配对螺母(mm)') - mrs_cutting_tool_model_blade_cutter_bar_ids = fields.Many2many( + cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', string='刀具物料') + cutting_tool_type = fields.Char(string="刀具物料类型", related='cutting_tool_material_id.name', store=True) + cutting_tool_type_id = fields.Many2one('sf.cutting.tool.type', string='刀具类型', + ) + brand_id = fields.Many2one('sf.machine.brand', '品牌') + tool_length = fields.Integer('长度(mm)', size=6) + tool_width = fields.Integer('宽度(mm)', size=6) + tool_height = fields.Integer('高度(mm)', size=6) + tool_thickness = fields.Integer('厚度(mm)', size=6) + tool_weight = fields.Float('重量(kg)', size=4) + coating_material = fields.Char('涂层材质') + # 整体式刀具参数 + total_length = fields.Float('总长度(mm)') + shank_length = fields.Float('柄部长度(mm)') + blade_length = fields.Float('刃部长度(mm)') + diameter = fields.Float('直径(mm)') + blade_number = fields.Integer('刃数') + front_angle = fields.Float('前角(°)') + rear_angle = fields.Float('后角(°)') + main_included_angle = fields.Float('主偏角(°)') + material_model_id = fields.Many2one('sf.materials.model', '材料型号') + nut = fields.Float('配对螺母(mm)') + # 适用夹头型号可以多选 + chuck_ids = fields.Many2many( 'sf.cutting.tool.model', - relation='sf_cutting_tool_model_blade_cutter_bar_rel', + relation='cutting_tool_model_handle_chuck_rel', column1='model_id_1', column2='model_id_2', - domain="[('mrs_cutting_tool_material_id.name', '=', '刀杆')]", - string='适用刀杆型号', - default=lambda self: [], # 使用空列表作为默认值 - ) - mrs_cutting_tool_model_blade_cutter_pad_ids = fields.Many2many( + domain="[('cutting_tool_type', '=', '夹头')]", + string='适用夹头型号') + # 刀片参数 + top_angle = fields.Float('顶角(°)') + jump_accuracy = fields.Float('径跳精度(um)') + working_hardness = fields.Char('加工硬度(hrc)') + cutter_bar_ids = fields.Many2many( 'sf.cutting.tool.model', - relation='sf_cutting_tool_model_blade_cutter_pad_rel', + relation='cutting_tool_model_blade_cutter_bar_rel', column1='model_id_1', column2='model_id_2', - domain="[('mrs_cutting_tool_material_id.name', '=', '刀盘')]", - string='适用刀盘型号', - default=lambda self: [], # 使用空列表作为默认值 + domain="[('cutting_tool_type', '=', '刀杆')]", + string='适用刀杆型号' ) - - # 刀杆特有字段 - bar_code = fields.Char('刀杆编码') - bar_c_diameter = fields.Float('C柄径(mm)') - bar_total_length = fields.Float('L总长(mm)') - bar_blade_number = fields.Integer('刃数') - bar_d_diameter = fields.Float('D刃径(mm)') - mrs_cutting_tool_model_bar_blade_ids = fields.Many2many( + cutter_pad_ids = fields.Many2many( 'sf.cutting.tool.model', - relation='sf_cutting_tool_model_bar_blade_rel', + relation='cutting_tool_model_blade_cutter_pad_rel', column1='model_id_1', column2='model_id_2', - domain="[('mrs_cutting_tool_material_id.name', '=', '刀片')]", - string='适用刀片型号', - default=lambda self: [], # 使用空列表作为默认值 + domain="[('cutting_tool_type', '=', '刀盘')]", + string='适用刀盘型号' # 使用空列表作为默认值 ) - bar_wrench = fields.Float('配对扳手(mm)') - bar_screw = fields.Float('配备螺丝(mm)') - bar_radius = fields.Float('刀尖圆角半径') - bar_accuracy = fields.Char('精度等级') - bar_hardness = fields.Char('硬度(°)') - bar_scope = fields.Char('适用范围') - - # 刀盘特有字段 - pad_code = fields.Char('刀盘编码') - pad_c_diameter = fields.Float('C柄径(mm)') - pad_total_length = fields.Float('L总长(mm)') - pad_blade_number = fields.Integer('刃数') - pad_d_diameter = fields.Float('D刃径(mm)') - mrs_cutting_tool_model_pad_blade_ids = fields.Many2many( + # 刀杆/参数 + blade_diameter = fields.Float('刃径(mm)') + blade_ids = fields.Many2many( 'sf.cutting.tool.model', - relation='sf_cutting_tool_model_pad_blade_rel', + relation='cutting_tool_model_pad_blade_rel', column1='model_id_1', column2='model_id_2', - domain="[('mrs_cutting_tool_material_id.name', '=', '刀片')]", - string='适用刀片型号', - default=lambda self: [], # 使用空列表作为默认值 + domain="[('cutting_tool_type', '=', '刀片')]", + string='适用刀片型号' # 使用空列表作为默认值 ) - pad_wrench = fields.Float('配对扳手(mm)') - pad_screw = fields.Float('配备螺丝(mm)') - pad_radius = fields.Float('刀尖圆角半径') - pad_accuracy = fields.Char('精度等级') - pad_hardness = fields.Char('硬度(°)') - pad_scope = fields.Char('适用范围') - - # 刀柄特有字段 - handle_code = fields.Char('刀柄编码') - # 柄长L(mm)、法兰柄长L1(mm)、法兰直径D1(mm) - handle_length = fields.Float('柄长L(mm)') - handle_diameter = fields.Float('直径D(mm)') - handle_flange_length = fields.Float('法兰柄长L1(mm)') - handle_flange_diameter = fields.Float('法兰直径D1(mm)') - # 夹持直径min、夹持直径max、径跳精度、最大转速n/min、3D模型图 - handle_clamping_diameter_min = fields.Float('夹持直径min') - handle_clamping_diameter_max = fields.Float('夹持直径max') - handle_jump_accuracy = fields.Float('径跳精度') - handle_max_speed = fields.Float('最大转速n/min') - handle_weight = fields.Float('重量(kg)') - handle_body_accuracy = fields.Float('本体精度(mm)') - handle_nut = fields.Float('配对螺母(mm)') - mrs_cutting_tool_model_handle_chuck_model_ids = fields.Many2many( + wrench = fields.Float('配对扳手(mm)') + screw = fields.Float('配备螺丝(mm)') + accuracy_level = fields.Char('精度等级') + # 刀柄参数 + diameter_max = fields.Float('最大直径(mm)') + clamping_diameter = fields.Float('夹持直径(mm)') + flange_length = fields.Float('法兰柄长度(mm)') + flange_diameter = fields.Float('法兰直径(mm)') + # 夹头参数 + outer_diameter = fields.Float('外径(mm)') + inner_diameter = fields.Float('内径(mm)') + handle_ids = fields.Many2many( 'sf.cutting.tool.model', - relation='sf_cutting_tool_model_handle_chuck_rel', + relation='cutting_tool_model_chuck_handle_rel', column1='model_id_1', column2='model_id_2', - domain="[('mrs_cutting_tool_material_id.name', '=', '夹头')]", - string='适用夹头型号', - + domain="[('cutting_tool_type', '=', '刀柄')]", + string='适用刀柄型号' ) - handle_clamping_range = fields.Float('夹持范围(mm)') - handle_detection_accuracy = fields.Float('检测精度') - handle_detection_hardness = fields.Char('检测硬度') - handle_standard_speed = fields.Float('标准转速') + active = fields.Boolean('有效', default=True) - # 夹头特有字段 - chuck_code = fields.Char('夹头编码') - chuck_accuracy = fields.Float('精度(mm)') - # 夹持直径min、夹持直径max、3D模型图 - chuck_clamping_diameter_min = fields.Float('夹持直径min') - chuck_clamping_diameter_max = fields.Float('夹持直径max') - chuck_diameter = fields.Float('外径(mm)') - chuck_inner_diameter = fields.Float('内径(mm)') - chuck_height = fields.Float('高度(mm)') - chuck_nut = fields.Float('配对螺母(mm)') - mrs_cutting_tool_model_chuck_handle_model_ids = fields.Many2many( - 'sf.cutting.tool.model', - relation='sf_cutting_tool_model_chuck_handle_rel', - column1='model_id_1', - column2='model_id_2', - domain="[('mrs_cutting_tool_material_id.name', '=', '刀柄')]", - string='适用刀柄型号', - default=lambda self: [], # 使用空列表作为默认值 - ) - chuck_clamping_range = fields.Float('夹持范围(mm)') - chuck_feature = fields.Char('特性') - - image = fields.Binary('图片') - three_d_model = fields.Many2one('ir.attachment', '3D模型') - - hide_integral = fields.Boolean(compute='_compute_hide_model_number', default=False, string='隐藏整体式刀具') - hide_blade = fields.Boolean(compute='_compute_hide_model_number', default=False, string='隐藏刀片') - hide_cutter_bar = fields.Boolean(compute='_compute_hide_model_number', default=False, string='隐藏刀杆') - hide_cutter_pad = fields.Boolean(compute='_compute_hide_model_number', default=False, string='隐藏刀盘') - hide_handler = fields.Boolean(compute='_compute_hide_model_number', default=False, string='隐藏刀柄') - hide_chuck = fields.Boolean(compute='_compute_hide_model_number', default=False, string='隐藏夹头') - hide_model = fields.Boolean(compute='_compute_hide_model_number', default=True, string='隐藏型号') - image_is_visible = fields.Boolean(compute='_compute_image_is_visible', default=True, string='隐藏图片') - - @api.depends('mrs_cutting_tool_material_id') - def _compute_image_is_visible(self): - for record in self: - record.image_is_visible = not (record.hide_handler or record.hide_chuck) - - @api.depends('mrs_cutting_tool_material_id') - def _compute_hide_model_number(self): - """ - 根据刀具物料类型,显示不同的字段 - """ - for record in self: - record.hide_integral = False - record.hide_blade = False - record.hide_cutter_bar = False - record.hide_cutter_pad = False - record.hide_handler = False - record.hide_chuck = False - record.hide_model = True - - if record.mrs_cutting_tool_material_id and record.mrs_cutting_tool_material_id.name == '整体式刀具': - record.hide_model = False - record.hide_integral = True - elif record.mrs_cutting_tool_material_id and record.mrs_cutting_tool_material_id.name == '刀片': - record.hide_model = False - record.hide_blade = True - elif record.mrs_cutting_tool_material_id and record.mrs_cutting_tool_material_id.name == '刀杆': - record.hide_model = False - record.hide_cutter_bar = True - elif record.mrs_cutting_tool_material_id and record.mrs_cutting_tool_material_id.name == '刀盘': - record.hide_model = False - record.hide_cutter_pad = True - elif record.mrs_cutting_tool_material_id and record.mrs_cutting_tool_material_id.name == '刀柄': - record.hide_model = False - record.hide_handler = True - elif record.mrs_cutting_tool_material_id and record.mrs_cutting_tool_material_id.name == '夹头': - record.hide_model = False - record.hide_chuck = True - else: - record.hide_model = True + # @api.model + # def create(self, vals): + # if vals.get('name', '/') == '/' or vals.get('name', '/') is False: + # vals['name'] = '/' + # obj = super(CuttingToolModel, self).create(vals) + # return obj # 刀具类型 @@ -309,18 +193,6 @@ class CuttingToolType(models.Model): code = fields.Char('编码') name = fields.Char('名称') # 关联刀具物料 - mrs_cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', '刀具物料') - # 整体式刀具类型特有字段 - integral_tool_type_code = fields.Char('整体式刀具类型编码') - # 刀片类型特有字段 - blade_type_code = fields.Char('刀片类型编码') - # 刀杆类型特有字段 - bar_type_code = fields.Char('刀杆类型编码') - # 刀盘类型特有字段 - pad_type_code = fields.Char('刀盘类型编码') - # 刀柄类型特有字段 - handle_type_code = fields.Char('刀柄类型编码') - # 夹头类型特有字段 - chuck_type_code = fields.Char('夹头类型编码') - + cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', '刀具物料') remark = fields.Char('备注') + active = fields.Boolean('有效', default=True) diff --git a/sf_base/views/base_view.xml b/sf_base/views/base_view.xml index fa071acc..6c4f9660 100644 --- a/sf_base/views/base_view.xml +++ b/sf_base/views/base_view.xml @@ -10,6 +10,7 @@ + @@ -27,9 +28,8 @@ - - + @@ -43,21 +43,18 @@ - - - - - - +
+

+ +

+
- - + - @@ -82,6 +79,8 @@ + +
@@ -90,9 +89,9 @@ tree.sf.machine_tool.type sf.machine_tool.type - + - + @@ -105,16 +104,19 @@ sf.machine_tool.type
-
-
+ - + @@ -221,7 +223,7 @@