优化同步刀具标准库接口(包含全部合并每日)

This commit is contained in:
jinling.yang
2023-10-19 17:23:53 +08:00
parent 14edbd85f4
commit d83255cc67
11 changed files with 796 additions and 1075 deletions

View File

@@ -19,8 +19,8 @@
'views/fixture_view.xml',
'views/functional_fixture_view.xml',
'views/menu_view.xml',
"views/tool_views.xml",
"views/tool_menu.xml",
'views/tool_views.xml',
'views/tool_menu.xml',
'views/menu_fixture_view.xml',
],

View File

@@ -1,304 +0,0 @@
# -*- coding: utf-8 -*-
import logging
from odoo import fields, models, api
# from odoo.exceptions import UserError
# # from odoo.addons import sf_base, sf_common
# from datetime import datetime
# 功能刀具物料
class CuttingToolMaterial(models.Model):
_name = 'sf.cutting.tool.material'
_description = '刀具物料'
code = fields.Char('编码')
name = fields.Char('名称')
remark = fields.Char('备注')
active = fields.Boolean('有效', default=True)
# 功能刀具
class FunctionalCuttingTool(models.Model):
_name = 'sf.functional.cutting.tool'
_description = '功能刀具'
code = fields.Char('编码')
name = fields.Char('名称')
functional_model_number = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型')
integral_model_number = fields.Many2one('sf.integral.cutting.tool', string='整体式刀具型号')
blade_model_number = fields.Many2one('sf.blade', string='刀片型号')
cutterbar_model_number = fields.Many2one('sf.cutter.bar', string='刀杆型号')
cutterpad_model_number = fields.Many2one('sf.cutter.pad', string='刀盘型号')
handle_model_number = fields.Many2one('sf.handle', string='刀柄型号')
chuck_model_number = fields.Many2one('sf.chuck', string='夹头型号')
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)
# 功能刀具类型
class FunctionalCuttingToolModel(models.Model):
_name = 'sf.functional.cutting.tool.model'
_description = '功能刀具类型'
name = fields.Char('名称')
code = fields.Char('编码')
remark = fields.Char('备注')
active = fields.Boolean('有效', default=True)
# 整体式刀具
class IntegralCuttingTool(models.Model):
_name = 'sf.integral.cutting.tool'
_description = '整体式刀具'
code = fields.Char('编码')
name = fields.Char('型号名称')
# 关联刀具物料
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
# 整体式刀具类型字段,关联整体式刀具类型对象
integral_model_number = fields.Many2one('sf.integral.cutting.tool.model', '整体式刀具类型')
# 增加品牌、总长度(mm)、柄部长度(mm)、刃部长度(mm)、直径(mm)、刃数、前角(°)、后角(°)、主偏角(°)、材料型号、配对螺母(mm)、适用夹头型号、适用范围、图片、创建人、创建时间等字段
brand = fields.Many2one('sf.machine.brand', '品牌', domain="[('tag_ids.name', 'ilike', '刀具')]")
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 = fields.Many2one('sf.materials.model', '材料型号')
nut = fields.Float('配对螺母(mm)')
# 适用夹头型号可以多选
chuck_model = fields.Many2many('sf.chuck', string='适用夹头型号')
scope = fields.Char('适用范围')
image = fields.Binary('图片')
active = fields.Boolean('有效', default=True)
# 整体式刀具类型
class IntegralCuttingToolModel(models.Model):
_name = 'sf.integral.cutting.tool.model'
_description = '整体式刀具类型'
code = fields.Char('编码')
name = fields.Char('名称')
# 关联刀具物料
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
remark = fields.Char('备注')
# 刀片
class Blade(models.Model):
_name = 'sf.blade'
_description = '刀片'
code = fields.Char('编码')
name = fields.Char('型号名称')
# 关联刀具物料
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
# 刀片类型字段,关联刀片类型对象
blade_model_number = fields.Many2one('sf.blade.model', '刀片类型')
# 编码、型号名称、刀片类型、品牌、长度L(mm)、宽度D(mm)、高度T(mm)、顶角(°)、前角(°)、后角(°)、主偏角(°)、R角(°)、材料型号、加工硬度、配对螺母(mm)、适用刀杆/刀盘型号、刀尖半径(mm)、图片、创建人、创建时间字段
brand = fields.Many2one('sf.machine.brand', '品牌', )
length = fields.Float('长度L(mm)')
width = fields.Float('宽度D(mm)')
height = fields.Float('高度T(mm)')
top_angle = fields.Float('顶角(°)')
front_angle = fields.Float('前角(°)')
rear_angle = fields.Float('后角(°)')
main_included_angle = fields.Float('主偏角(°)')
r_angle = fields.Float('R角(°)')
material_model = fields.Many2one('sf.materials.model', '材料型号')
hardness = fields.Char('加工硬度')
nut = fields.Float('配对螺母(mm)')
# 适用刀杆型号可以多选
cutter_bar = fields.Many2many('sf.cutter.bar', string='适用刀杆型号')
# 适用刀盘型号可以多选
cutter_pad = fields.Many2many('sf.cutter.pad', string='适用刀盘型号')
radius = fields.Float('刀尖半径(mm)')
image = fields.Binary('图片')
# 刀片类型
class BladeModel(models.Model):
_name = 'sf.blade.model'
_description = '刀片类型'
code = fields.Char('编码')
name = fields.Char('名称')
# 关联刀具物料
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
# 刀片类型字段,关联刀片对象
blade_ids = fields.One2many('sf.blade', 'blade_model_number', '刀片类型')
remark = fields.Char('备注')
# 刀杆
class CutterBar(models.Model):
_name = 'sf.cutter.bar'
_description = '刀杆'
code = fields.Char('编码')
name = fields.Char('型号名称')
# 关联刀具物料
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
# 刀杆类型字段,关联刀杆类型对象
cutter_bar_model_number = fields.Many2one('sf.cutter.bar.model', '刀杆类型')
# 品牌、C柄径(mm)、L总长(mm)、材料型号、刃数、D刃径(mm)、适用刀片型号、配对扳手(mm)、配备螺丝(mm)、刀尖圆角半径、精度等级、硬度(°)、适用范围、图片、创建人、创建时间
brand = fields.Many2one('sf.machine.brand', '品牌')
c_diameter = fields.Float('C柄径(mm)')
total_length = fields.Float('L总长(mm)')
material_model = fields.Many2one('sf.materials.model', '材料型号')
blade_number = fields.Integer('刃数')
d_diameter = fields.Float('D刃径(mm)')
blade = fields.Many2many('sf.blade', string='适用刀片型号')
wrench = fields.Float('配对扳手(mm)')
screw = fields.Float('配备螺丝(mm)')
radius = fields.Float('刀尖圆角半径')
accuracy = fields.Char('精度等级')
hardness = fields.Char('硬度(°)')
scope = fields.Char('适用范围')
image = fields.Binary('图片')
# 刀杆类型
class CutterBarModel(models.Model):
_name = 'sf.cutter.bar.model'
_description = '刀杆类型'
code = fields.Char('编码')
name = fields.Char('名称')
# 关联刀具物料
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
remark = fields.Char('备注')
# 刀盘
class CutterPad(models.Model):
_name = 'sf.cutter.pad'
_description = '刀盘'
code = fields.Char('编码')
name = fields.Char('型号名称')
# 关联刀具物料
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
# 刀盘类型字段,关联刀盘类型对象
cutter_pad_model_number = fields.Many2one('sf.cutter.pad.model', '刀盘类型')
# 增加品牌、C柄径(mm)、L总长(mm)、材料型号、刃数、D刃径(mm)、适用刀片型号、配对扳手(mm)、配备螺丝(mm)、刀尖圆角半径、精度等级、硬度(°)、适用范围、图片、创建人、创建时间
brand = fields.Many2one('sf.machine.brand', '品牌')
c_diameter = fields.Float('C柄径(mm)')
total_length = fields.Float('L总长(mm)')
material_model = fields.Many2one('sf.materials.model', '材料型号')
blade_number = fields.Integer('刃数')
d_diameter = fields.Float('D刃径(mm)')
blade = fields.Many2many('sf.blade', string='适用刀片型号')
wrench = fields.Float('配对扳手(mm)')
screw = fields.Float('配备螺丝(mm)')
radius = fields.Float('刀尖圆角半径')
accuracy = fields.Char('精度等级')
hardness = fields.Char('硬度(°)')
scope = fields.Char('适用范围')
image = fields.Binary('图片')
# 刀盘类型
class CutterPadModel(models.Model):
_name = 'sf.cutter.pad.model'
_description = '刀盘类型'
code = fields.Char('编码')
name = fields.Char('名称')
# 关联刀具物料
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
remark = fields.Char('备注')
# 刀柄
class Handle(models.Model):
_name = 'sf.handle'
_description = '刀柄'
code = fields.Char('编码')
name = fields.Char('型号名称')
# 关联刀具物料
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
# 刀柄类型字段,关联刀柄类型对象
handle_model_number = fields.Many2one('sf.handle.model', '刀柄类型')
# 增加、刀柄类型、品牌、L(mm)、L1(mm)、D1(mm)、重量(kg)、材料型号、本体精度(mm)、配对螺母(mm)、适用夹头型号、夹持范围(mm)、检测精度、检测硬度、标准转速、图片、创建人、创建时间
brand = fields.Many2one('sf.machine.brand', '品牌')
length = fields.Float('L(mm)')
length1 = fields.Float('L1(mm)')
diameter1 = fields.Float('D1(mm)')
weight = fields.Float('重量(kg)')
material_model = fields.Many2one('sf.materials.model', '材料型号')
body_accuracy = fields.Float('本体精度(mm)')
nut = fields.Float('配对螺母(mm)')
chuck_model = fields.Many2many('sf.chuck.model', string='适用夹头型号')
clamping_range = fields.Float('夹持范围(mm)')
detection_accuracy = fields.Float('检测精度')
detection_hardness = fields.Char('检测硬度')
standard_speed = fields.Float('标准转速')
image = fields.Binary('图片')
# 刀柄类型
class HandleModel(models.Model):
_name = 'sf.handle.model'
_description = '刀柄类型'
code = fields.Char('编码')
name = fields.Char('名称')
# 关联刀具物料
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
remark = fields.Char('备注')
# 夹头对象(夹头型号对象)
class Chuck(models.Model):
_name = 'sf.chuck'
_description = '夹头'
_rec_name = 'code'
code = fields.Char('编码')
name = fields.Char('型号名称')
# 关联刀具物料
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
# 夹头类型字段,关联夹头类型对象
chuck_model_number = fields.Many2one('sf.chuck.model', '夹头类型')
# 增加品牌、精度(mm)、外径(mm)、内径(mm)、高度(mm)、材料型号、配对螺母(mm)、适用刀柄型号、夹持范围(mm)、特性、图片、创建人、创建时间
brand = fields.Many2one('sf.machine.brand', '品牌')
accuracy = fields.Float('精度(mm)')
diameter = fields.Float('外径(mm)')
inner_diameter = fields.Float('内径(mm)')
height = fields.Float('高度(mm)')
material_model = fields.Many2one('sf.materials.model', '材料型号')
nut = fields.Float('配对螺母(mm)')
handle_model = fields.Many2many('sf.handle.model', string='适用刀柄型号')
clamping_range = fields.Float('夹持范围(mm)')
feature = fields.Char('特性')
image = fields.Binary('图片')
# 夹头类型
class ChuckModel(models.Model):
_name = 'sf.chuck.model'
_description = '夹头类型'
code = fields.Char('编码')
name = fields.Char('名称')
# 关联刀具物料
cutting_tool_material = fields.Many2one('sf.cutting.tool.material', '刀具物料')
remark = fields.Char('备注')

View File

@@ -103,6 +103,14 @@ 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):
@@ -148,13 +156,28 @@ class CuttingToolModel(models.Model):
'适合冷却液', domain=[('type', '=', '冷却液')])
compaction_way_ids = fields.Many2many('maintenance.equipment.image', 'compaction_way_library_rel',
'压紧方式', domain=[('type', '=', '压紧方式')])
basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters',
'standard_library_id', string='基本参数')
integral_tool_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters',
'standard_library_id', string='整体式刀具基本参数')
blade_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters',
'standard_library_id', string='刀片基本参数')
cutter_bar_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters',
'standard_library_id', string='刀杆基本参数')
cutter_head_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters',
'standard_library_id', string='刀盘基本参数')
knife_handle_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters',
'standard_library_id', string='刀柄基本参数')
chuck_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters',
'standard_library_id', string='夹头基本参数')
cutting_speed_ids = fields.One2many('sf.cutting.speed', 'standard_library_id', string='切削速度Vc')
feed_per_tooth_ids = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz')
feed_per_tooth_ids = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz',
domain=[('cutting_speed', '!=', False)])
feed_per_tooth_ids_2 = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz',
domain=[('machining_method', '!=', False)])
feed_per_tooth_ids_3 = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz',
domain=[('cutting_speed', '!=', False)])
feed_per_tooth_ids_4 = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz',
domain=[('machining_method', '!=', False)])
material_model_id = fields.Many2one('sf.materials.model', '材料型号')
nut = fields.Float('配对螺母(mm)')
# 适用夹头型号可以多选
chuck_ids = fields.Many2many(
'sf.cutting.tool.type',
@@ -163,8 +186,6 @@ class CuttingToolModel(models.Model):
column2='model_id_2',
domain="[('cutting_tool_material_id.name', '=', '夹头')]",
string='适用夹头型号')
working_hardness = fields.Char('加工硬度(hrc)')
cutter_bar_ids = fields.Many2many(
'sf.cutting.tool.type',
relation='cutting_tool_type_library_cutter_bar_rel',
@@ -182,7 +203,6 @@ class CuttingToolModel(models.Model):
string='适用刀盘型号' # 使用空列表作为默认值
)
# 刀杆/参数
blade_diameter = fields.Float('刃径(mm)')
blade_ids = fields.Many2many(
'sf.cutting.tool.type',
relation='cutting_tool_type_library_pad_blade_rel',
@@ -202,8 +222,8 @@ 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_cutter_bar_ids(self):
# return self.cutter_bar_ids
class MaintenanceStandardImage(models.Model):
@@ -219,6 +239,14 @@ class MaintenanceStandardImage(models.Model):
string='特征')
equipment_id = fields.Many2many('maintenance.equipment', 'image_id', string='设备')
def _get_ids(self, name_arr):
ability_feature_ids = []
for item in name_arr:
ability_feature = self.search([('name', '=', item)])
if ability_feature:
ability_feature_ids.append(ability_feature.id)
return [(6, 0, ability_feature_ids)]
@api.model
def name_search(self, name='', args=None, operator='ilike', limit=100):
# 调用父类的name_search方法获取原始的结果列表

View File

@@ -113,6 +113,7 @@ class ToolMaterialsBasicParameters(models.Model):
weight = fields.Char('重量(kg)', size=20)
clamping_length = fields.Char('夹持长度(mm)', size=20)
clamping_tolerance = fields.Char('夹持公差(mm)', size=20)
cooling_jacket = fields.Char('适用冷却套型号', size=50)
handle_ids = fields.Many2many(
'sf.cutting.tool.type',
relation='basic_param_chuck_handle_rel',
@@ -122,25 +123,33 @@ class ToolMaterialsBasicParameters(models.Model):
string='适用刀柄型号'
)
def _json_basic_param(self, obj):
basic_param_str = [0, '', {
def _json_integral_tool_basic_param(self, obj):
integral_tool_basic_param_str = (0, '', {
'code': obj['code'],
'cutting_tool_type': obj['cutting_tool_type'],
'total_length': obj['total_length'],
'blade_diameter': obj['blade_diameter'],
'blade_length': obj['blade_length'],
'blade_number': obj['blade_number'],
'neck_diameter': obj['neck_diameter'],
'neck_length': obj['neck_length'],
'neck_diameter': obj['neck_diameter'],
'handle_diameter': obj['handle_diameter'],
'handle_length': obj['handle_length'],
'blade_tip_diameter': obj['blade_tip_diameter'],
'blade_tip_working_size': obj['blade_tip_working_size'],
'blade_tip_taper': obj['blade_tip_taper'],
'blade_diameter': obj['blade_diameter'],
'blade_length': obj['blade_length'],
'blade_helix_angle': obj['blade_helix_angle'],
'blade_width': obj['blade_width'],
'blade_depth': obj['blade_depth'],
'pitch': obj['pitch'],
'cutting_depth': obj['cutting_depth'],
})
return integral_tool_basic_param_str
def _json_blade_basic_param(self, obj):
blade_basic_param_str = (0, '', {
'code': obj['code'],
'cutting_tool_type': obj['cutting_tool_type'],
'length': obj['length'],
'thickness': obj['thickness'],
'width': obj['width'],
@@ -149,9 +158,12 @@ class ToolMaterialsBasicParameters(models.Model):
'blade_tip_circular_arc_radius': obj['blade_tip_circular_arc_radius'],
'inscribed_circle_diameter': obj['inscribed_circle_diameter'],
'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_blade_number': obj['blade_blade_number'],
'cutting_depth': obj['cutting_depth'],
'blade_width': obj['blade_width'],
'main_included_angle': obj['main_included_angle'],
'top_angle': obj['top_angle'],
'blade_tip_dip_angle': obj['blade_tip_dip_angle'],
@@ -161,22 +173,68 @@ class ToolMaterialsBasicParameters(models.Model):
'blade_tip_height_tolerance': obj['blade_tip_height_tolerance'],
'inscribed_circle_tolerance': obj['inscribed_circle_tolerance'],
'thickness_tolerance': obj['thickness_tolerance'],
})
return blade_basic_param_str
def _json_cutter_arbor_basic_param(self, obj):
cutter_arbor_basic_param_str = (0, '', {
'code': obj['code'],
'cutting_tool_type': obj['cutting_tool_type'],
'height': obj['height'],
'width': obj['width'],
'blade_height': obj['blade_height'],
'total_length': obj['total_length'],
'blade_width': obj['blade_width'],
'blade_length': obj['blade_length'],
'blade_height': obj['blade_height'],
'cutter_arbor_diameter': obj['cutter_arbor_diameter'],
'main_included_angle': obj['main_included_angle'],
'relief_angle': obj['relief_angle'],
'cutting_depth': obj['cutting_depth'],
'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'],
'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(
obj['blade_codes']),
'tool_shim': obj['tool_shim'],
'cotter_pin': obj['cotter_pin'],
'pressing_plate': obj['pressing_plate'],
'screw': obj['screw'],
'spanner': obj['spanner'],
})
return cutter_arbor_basic_param_str
def _json_cutter_head_basic_param(self, obj):
cutter_head_basic_param_str = (0, '', {
'code': obj['code'],
'cutting_tool_type': obj['cutting_tool_type'],
'install_blade_tip_num': obj['install_blade_tip_num'],
'blade_diameter': obj['blade_diameter'],
'cutter_head_diameter': obj['cutter_head_diameter'],
'interface_diameter': obj['interface_diameter'],
'total_length': obj['total_length'],
'blade_length': obj['blade_length'],
'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(
obj['blade_codes']),
'screw': obj['screw'],
'spanner': obj['spanner'],
'cutting_blade_model': obj['cutting_blade_model'],
'cooling_hole': obj['cooling_hole'],
'locating_slot_code': obj['locating_slot_code'],
})
return cutter_head_basic_param_str
def _json_knife_handle_basic_param(self, obj):
knife_handle_basic_param_str = (0, '', {
'code': obj['code'],
'cutting_tool_type': obj['cutting_tool_type'],
'total_length': obj['total_length'],
'flange_shank_length': obj['flange_shank_length'],
'handle_external_diameter': obj['handle_external_diameter'],
'handle_inside_diameter': obj['handle_inside_diameter'],
@@ -190,23 +248,40 @@ 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['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'],
'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'],
'screw': obj['screw'],
'spanner': obj['spanner'],
})
return knife_handle_basic_param_str
def _json_chuck_basic_param(self, obj):
chuck_basic_param_str = (0, '', {
'code': obj['code'],
'cutting_tool_type': obj['cutting_tool_type'],
'er_size_model': obj['er_size_model'],
'min_clamping_diameter': obj['min_clamping_diameter'],
'max_clamping_diameter': obj['max_clamping_diameter'],
'outer_diameter': obj['outer_diameter'],
'inner_diameter': obj['inner_diameter'],
'run_out_accuracy': obj['run_out_accuracy'],
'total_length': obj['total_length'],
'taper': obj['taper'],
'run_out_accuracy': obj['run_out_accuracy'],
'top_diameter': obj['top_diameter'],
'weight': obj['weight'],
'clamping_mode': obj['clamping_mode'],
'clamping_length': obj['clamping_length'],
'clamping_tolerance': obj['clamping_tolerance'],
'handle_ids': obj['weight'],
'blade_ids': obj['clamping_length'],
}]
return basic_param_str
'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']),
'cooling_jacket': obj['cooling_jacket'],
})
return chuck_basic_param_str
class CuttingSpeed(models.Model):
@@ -215,11 +290,13 @@ class CuttingSpeed(models.Model):
# product_template_id = fields.Many2one('product.template', string='产品')
standard_library_id = fields.Many2one('sf.cutting_tool.standard.library', string='标准库')
execution_standard_id = fields.Char('执行标准')
execution_standard_id = fields.Many2one('sf.international.standards', string='执行标准', store=True)
material_code = fields.Char('材料代号')
material_name = fields.Char('材料名称')
material_id = fields.Many2one('sf.materials.model', '材料名称',
domain="[('standards_id', '=', execution_standard_id)]")
slope_milling_angle = fields.Integer('坡铣角度(°)')
material_grade = fields.Char('材料牌号')
tensile_strength = fields.Float('拉伸强度 (N/mm²)')
tensile_strength = fields.Char('拉伸强度 (N/mm²)')
hardness = fields.Float('硬度(HRC)')
cutting_speed_n1 = fields.Char('径向切宽 ae=100%D1 ap=1*D1 切削速度Vc')
cutting_speed_n2 = fields.Char('径向切宽 ae=50%D1 ap=1.5*D1 切削速度Vc')
@@ -231,10 +308,11 @@ class CuttingSpeed(models.Model):
application = fields.Selection([('主应用', '主应用'), ('次应用', '次应用')], '主/次应用')
def _json_cutting_speed(self, obj):
cutting_speed_str = [0, '', {
'execution_standard_id': obj['execution_standard_id'],
cutting_speed_str = (0, '', {
'execution_standard_id': self.env['sf.international.standards'].search(
[('code', '=', obj['execution_standard_code'])]).id,
'material_code': obj['material_code'],
'material_name': obj['material_name'],
'material_id': self.env['sf.materials.model'].search([('materials_no', '=', obj['material_name_code'])]).id,
'material_grade': obj['material_grade'],
'tensile_strength': obj['tensile_strength'],
'hardness': obj['hardness'],
@@ -246,36 +324,57 @@ class CuttingSpeed(models.Model):
'rough_machining': obj['rough_machining'],
'precision_machining': obj['precision_machining'],
'application': obj['application'],
}]
})
return cutting_speed_str
class FeedPerTooth(models.Model):
_name = 'sf.feed.per.tooth'
_description = '每齿走刀量fz'
_order = 'machining_method desc, blade_diameter, materials_type_id'
# product_template_id = fields.Many2one('product.template', string='产品')
standard_library_id = fields.Many2one('sf.cutting_tool.standard.library', string='标准库')
cutting_speed = fields.Char('径向切宽 ae(mm)')
machining_method = fields.Selection([('直铣', '直铣'), ('坡铣', '坡铣')], string='加工方式')
materials_type_id = fields.Many2one('sf.materials.model', string='材料型号')
# blade_diameter = fields.Float('刃部直径D1(mm)', readonly=True,
# related='product_template_id.cutting_tool_blade_diameter')
blade_diameter = fields.Char('刃部直径(mm)', readonly=True)
feed_per_tooth = fields.Char('每齿走刀量 (mm/z)')
unit = fields.Char('单位', default='fz')
def _json_feed_per_tooth(self, obj):
feed_per_tooth_str = [0, '', {
feed_per_tooth_str = (0, '', {
'cutting_speed': obj['cutting_speed'],
'machining_method': obj['machining_method'],
'materials_type_id': obj['materials_type_id'],
# 'blade_diameter': obj['blade_diameter'],
'blade_diameter': obj['blade_diameter'],
'feed_per_tooth': obj['feed_per_tooth'],
'unit': obj['unit'],
}]
})
return feed_per_tooth_str
def _json_feed_per_tooth_2(self, obj):
feed_per_tooth_2_str = (0, '', {
'machining_method': obj['machining_method'],
'materials_type_id': self.env['sf.materials.model'].search(
[('materials_no', '=', obj['materials_type_code'])]).id,
'blade_diameter': obj['blade_diameter'],
'feed_per_tooth': obj['feed_per_tooth'],
})
return feed_per_tooth_2_str
def _json_feed_per_tooth_3(self, obj):
feed_per_tooth_3_str = (0, '', {
'cutting_speed': obj['cutting_speed'],
'feed_per_tooth': obj['feed_per_tooth'],
})
return feed_per_tooth_3_str
def _json_feed_per_tooth_4(self, obj):
feed_per_tooth_4_str = (0, '', {
'machining_method': obj['machining_method'],
'materials_type_id': self.env['sf.materials.model'].search(
[('materials_no', '=', obj['materials_type_code'])]).id,
'feed_per_tooth': obj['feed_per_tooth'],
})
return feed_per_tooth_4_str
# @api.depends('product_template_id')
# def _compute_product_template_id(self):
# if self.product_template_id is not None:

View File

@@ -249,65 +249,227 @@
<field name="suitable_coolant_ids" string="" widget="custom_many2many_checkboxes"/>
</group>
</group>
<!-- <notebook>-->
<!-- <page string="基本参数">-->
<!-- <field name="tool_materials_basic_parameters_ids">-->
<!-- <tree editable="bottom" class="center">-->
<!-- <field name="code"/>-->
<!-- <field name="total_length"/>-->
<!-- <field name="blade_diameter"/>-->
<!-- <field name="blade_length"/>-->
<!-- <field name="blade_number"/>-->
<!-- <field name="neck_length"/>-->
<!-- <field name="neck_diameter"/>-->
<!-- <field name="handle_length"/>-->
<!-- <field name="handle_diameter"/>-->
<!-- <field name="blade_tip_diameter"/>-->
<!-- <field name="blade_tip_working_size"/>-->
<!-- <field name="blade_tip_taper"/>-->
<!-- <field name="blade_helix_angle"/>-->
<!-- <field name="blade_width"/>-->
<!-- <field name="blade_depth"/>-->
<!-- <field name="pitch"/>-->
<!-- <field name="cutting_depth"/>-->
<!-- </tree>-->
<!-- </field>-->
<!-- </page>-->
<!-- <page string="切削速度Vc"-->
<!-- attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}">-->
<!-- <field name="cutting_speed_ids">-->
<!-- <tree editable="bottom" class="center">-->
<!-- <field name="execution_standard_id"/>-->
<!-- <field name="material_code"/>-->
<!-- <field name="material_name_id"/>-->
<!-- <field name="material_grade"/>-->
<!-- <field name="tensile_strength"/>-->
<!-- <field name="hardness"/>-->
<!-- <field name="cutting_speed_n1"/>-->
<!-- <field name="cutting_speed_n2"/>-->
<!-- <field name="cutting_speed_n3"/>-->
<!-- <field name="cutting_speed_n4"/>-->
<!-- <field name="cutting_speed_n5"/>-->
<!-- <field name="rough_machining"/>-->
<!-- <field name="precision_machining"/>-->
<!-- <field name="application"/>-->
<!-- </tree>-->
<!-- </field>-->
<!-- </page>-->
<!-- <page string="每齿走刀量fz"-->
<!-- attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}">-->
<!-- <field name="feed_per_tooth_ids">-->
<!-- <tree editable="bottom" class="center">-->
<!-- <field name="cutting_speed"/>-->
<!-- <field name="machining_method"/>-->
<!-- <field name="materials_type_id"/>-->
<!-- <field name="blade_diameter"/>-->
<!-- <field name="feed_per_tooth"/>-->
<!-- <field name="unit"/>-->
<!-- </tree>-->
<!-- </field>-->
<!-- </page>-->
<!-- </notebook>-->
<notebook>
<page string="基本参数">
<field name="integral_tool_basic_parameters_ids" import_button="true"
attrs="{'invisible': [('cutting_tool_type', '!=', '整体式刀具')]}">
<tree editable="bottom" class="center" delete="1">
<field name="cutting_tool_type" invisible="1"/>
<field name="code"/>
<field name="total_length"/>
<field name="blade_diameter" class="diameter"/>
<field name="blade_length"/>
<field name="blade_number" placeholder="请选择"/>
<field name="neck_length"/>
<field name="neck_diameter" class="diameter"/>
<field name="handle_diameter" class="diameter"/>
<field name="handle_length"/>
<field name="blade_tip_working_size" class="du"/>
<field name="blade_tip_diameter" class="diameter"/>
<field name="blade_tip_taper" class="du"/>
<field name="blade_helix_angle" class="du"/>
<field name="pitch"/>
<field name="blade_width"/>
<field name="blade_depth"/>
<field name="cutting_depth"/>
</tree>
</field>
<field name="blade_basic_parameters_ids"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀片')]}">
<tree editable="bottom" class="center" delete="1">
<field name="cutting_tool_type" invisible="1"/>
<field name="code"/>
<field name="length"/>
<field name="thickness"/>
<field name="width"/>
<field name="cutting_blade_length"/>
<field name="relief_angle" class="du"/>
<field name="blade_tip_circular_arc_radius"/>
<field name="inscribed_circle_diameter" class="diameter"/>
<field name="install_aperture_diameter" class="diameter"/>
<field name="pitch"/>
<field name="chip_breaker_groove" placeholder="请选择"/>
<field name="blade_teeth_model" placeholder="请选择"/>
<field name="cutting_depth" string="最大切削深度(mm)"/>
<field name="blade_blade_number" string="刃数(个)"/>
<field name="blade_width" string="刃宽(mm)"/>
<field name="main_included_angle"/>
<field name="top_angle"/>
<field name="blade_tip_dip_angle"/>
<field name="side_cutting_edge_angle"/>
<field name="thread_model" placeholder="请选择"/>
<field name="thread_num"/>
<field name="blade_tip_height_tolerance"/>
<field name="inscribed_circle_tolerance"/>
<field name="thickness_tolerance"/>
</tree>
</field>
<field name="cutter_bar_basic_parameters_ids"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀杆')]}">
<tree editable="bottom" class="center" delete="1">
<field name="cutting_tool_type" invisible="1"/>
<field name="code"/>
<field name="height"/>
<field name="width"/>
<field name="total_length"/>
<field name="blade_height"/>
<field name="blade_width"/>
<field name="blade_length"/>
<field name="blade_diameter" class="diameter"/>
<field name="cutter_arbor_diameter" class="diameter"/>
<field name="main_included_angle" class="du"/>
<field name="relief_angle" class="du"/>
<field name="cutting_depth" string="最大切削深度(mm)"/>
<field name="min_machining_aperture" class="diameter"/>
<field name="install_blade_tip_num"/>
<field name="cutting_blade_model"/>
<field name="cooling_hole" placeholder="请选择"/>
<field name="locating_slot_code"/>
<field name="installing_structure"/>
<field name="blade_ids" widget="many2many_tags" placeholder="请选择"/>
<field name="tool_shim"/>
<field name="cotter_pin"/>
<field name="pressing_plate"/>
<field name="screw"/>
<field name="spanner"/>
</tree>
</field>
<field name="cutter_head_basic_parameters_ids"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀盘')]}">
<tree editable="bottom" class="center" delete="1">
<field name="cutting_tool_type" invisible="1"/>
<field name="code"/>
<field name="install_blade_tip_num"/>
<field name="blade_diameter" class="diameter"/>
<field name="cutter_head_diameter" class="diameter"/>
<field name="interface_diameter" class="diameter"/>
<field name="total_length"/>
<field name="blade_length"/>
<field name="cutting_depth" string="最大切削深度(mm)"/>
<field name="main_included_angle" class="du"/>
<field name="installing_structure"/>
<field name="blade_ids" widget="many2many_tags" placeholder="请选择"/>
<field name="screw"/>
<field name="spanner"/>
<field name="cutting_blade_model"/>
<field name="cooling_hole" placeholder="请选择"/>
<field name="locating_slot_code"/>
</tree>
</field>
<field name="knife_handle_basic_parameters_ids"
attrs="{'invisible': [('cutting_tool_type', '!=', '刀柄')]}">
<tree editable="bottom" class="center" delete="1">
<field name="cutting_tool_type" invisible="1"/>
<field name="code"/>
<field name="total_length"/>
<field name="flange_shank_length"/>
<field name="handle_external_diameter" class="diameter"/>
<field name="handle_inside_diameter" class="diameter"/>
<field name="min_clamping_diameter" class="diameter"/>
<field name="max_clamping_diameter" class="diameter"/>
<field name="clamping_mode"/>
<field name="max_load_capacity"/>
<field name="taper" class="du"/>
<field name="tool_changing_time"/>
<field name="standard_rotate_speed"/>
<field name="max_rotate_speed"/>
<field name="diameter_slip_accuracy"/>
<field name="cooling_model"/>
<field name="is_rough_machining" placeholder="请选择"/>
<field name="is_finish_machining" placeholder="请选择"/>
<field name="is_quick_cutting" placeholder="请选择"/>
<field name="is_drill_hole" placeholder="请选择"/>
<field name="is_safe_lock" placeholder="请选择"/>
<field name="screw"/>
<field name="spanner"/>
</tree>
</field>
<field name="chuck_basic_parameters_ids"
attrs="{'invisible': [('cutting_tool_type', '!=', '夹头')]}">
<tree editable="bottom" class="center" delete="1">
<field name="cutting_tool_type" invisible="1"/>
<field name="code"/>
<field name="er_size_model"/>
<field name="min_clamping_diameter" class="diameter" required="1"/>
<field name="max_clamping_diameter" class="diameter"/>
<field name="outer_diameter" class="diameter"/>
<field name="inner_diameter" class="diameter"/>
<field name="total_length"/>
<field name="taper" class="du"/>
<field name="run_out_accuracy"/>
<field name="top_diameter" class="diameter"/>
<field name="weight"/>
<field name="clamping_mode"/>
<field name="clamping_length"/>
<field name="clamping_tolerance"/>
<field name="max_load_capacity"/>
<field name="handle_ids" widget="many2many_tags" placeholder="请选择"/>
<field name="cooling_jacket"/>
</tree>
</field>
</page>
<page string="切削速度Vc"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}">
<field name="cutting_speed_ids">
<tree editable="bottom" class="center" delete="1">
<field name="execution_standard_id" placeholder="请选择" required="1"/>
<field name="material_code" readonly="1"/>
<field name="material_id" placeholder="请选择"
attrs="{'readonly': [('execution_standard_id', '=', False)], 'required': [('execution_standard_id', '!=', False)]}"/>
<field name="material_grade" readonly="1"/>
<field name="tensile_strength" readonly="1"/>
<field name="hardness" readonly="1"/>
<field name="slope_milling_angle" widget="du"/>
<field name="cutting_speed_n1"/>
<field name="cutting_speed_n2"/>
<field name="cutting_speed_n3"/>
<field name="cutting_speed_n4"/>
<field name="cutting_speed_n5"/>
<field name="rough_machining"/>
<field name="precision_machining"/>
<field name="application" placeholder="请选择" required="1"/>
</tree>
</field>
</page>
<page string="每齿走刀量fz"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具','刀片'))]}">
<field name="feed_per_tooth_ids"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具'))]}">
<tree editable="bottom" class="center" create="0" delete="0">
<field name="cutting_speed"/>
<field name="blade_diameter"/>
<field name="feed_per_tooth" required="1"/>
</tree>
</field>
<field name="feed_per_tooth_ids_2"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('整体式刀具'))]}">
<tree editable="bottom" class="center" create="0" delete="0">
<field name="machining_method"/>
<field name="materials_type_id"/>
<field name="blade_diameter"/>
<field name="feed_per_tooth" required="1"/>
</tree>
</field>
<field name="feed_per_tooth_ids_3"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}">
<tree editable="bottom" class="center" create="0" delete="0">
<field name="cutting_speed"/>
<field name="feed_per_tooth" required="1"/>
</tree>
</field>
<field name="feed_per_tooth_ids_4"
attrs="{'invisible': [('cutting_tool_type', 'not in', ('刀片'))]}">
<tree editable="bottom" class="center" create="0" delete="0">
<field name="machining_method"/>
<field name="materials_type_id"/>
<field name="feed_per_tooth" required="1"/>
</tree>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
@@ -360,16 +522,16 @@
</record>
</data>
<!-- ================================================能力特征库================================================ -->
<record id="view_maintenance_equipment_image_tree" model="ir.ui.view">
<!-- ================================================能力特征库================================================ -->
<record id="view_maintenance_equipment_image_tree" model="ir.ui.view">
<field name="name">maintenance.equipment.image.tree</field>
<field name="model">maintenance.equipment.image</field>
<field name="arch" type="xml">
<tree string="能力特征库" editable="bottom" delete="0" create="0" >
<tree string="能力特征库" editable="bottom" delete="0" create="0">
<field name="name" readonly="1"/>
<field name="type" readonly="1"/>
<field name="image" widget="image" readonly="1"/>
<field name="equipment_id" />
<field name="equipment_id"/>
<field name="active" invisible="1"/>
</tree>
</field>
@@ -397,5 +559,4 @@
</record>
</odoo>