新增同步cloud的刀具标准库接口
This commit is contained in:
@@ -91,133 +91,6 @@ class FunctionalCuttingToolModel(models.Model):
|
||||
active = fields.Boolean('有效', default=True)
|
||||
|
||||
|
||||
# 刀具型号
|
||||
class CuttingToolModel(models.Model):
|
||||
_name = 'sf.cutting.tool.model'
|
||||
_description = '刀具型号'
|
||||
|
||||
name = fields.Char('名称')
|
||||
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)')
|
||||
tool_width = fields.Integer('宽度(mm)')
|
||||
tool_height = fields.Integer('高度(mm)')
|
||||
tool_thickness = fields.Integer('厚度(mm)')
|
||||
tool_weight = fields.Float('重量(kg)')
|
||||
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='cutting_tool_model_handle_chuck_rel',
|
||||
column1='model_id_1',
|
||||
column2='model_id_2',
|
||||
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='cutting_tool_model_blade_cutter_bar_rel',
|
||||
column1='model_id_1',
|
||||
column2='model_id_2',
|
||||
domain="[('cutting_tool_type', '=', '刀杆')]",
|
||||
string='适用刀杆型号'
|
||||
)
|
||||
cutter_pad_ids = fields.Many2many(
|
||||
'sf.cutting.tool.model',
|
||||
relation='cutting_tool_model_blade_cutter_pad_rel',
|
||||
column1='model_id_1',
|
||||
column2='model_id_2',
|
||||
domain="[('cutting_tool_type', '=', '刀盘')]",
|
||||
string='适用刀盘型号' # 使用空列表作为默认值
|
||||
)
|
||||
# 刀杆/参数
|
||||
blade_diameter = fields.Float('刃径(mm)')
|
||||
blade_ids = fields.Many2many(
|
||||
'sf.cutting.tool.model',
|
||||
relation='cutting_tool_model_pad_blade_rel',
|
||||
column1='model_id_1',
|
||||
column2='model_id_2',
|
||||
domain="[('cutting_tool_type', '=', '刀片')]",
|
||||
string='适用刀片型号' # 使用空列表作为默认值
|
||||
)
|
||||
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='cutting_tool_model_chuck_handle_rel',
|
||||
column1='model_id_1',
|
||||
column2='model_id_2',
|
||||
domain="[('cutting_tool_type', '=', '刀柄')]",
|
||||
string='适用刀柄型号'
|
||||
)
|
||||
active = fields.Boolean('有效', default=True)
|
||||
|
||||
def _get_code(self, cutting_tool_type_code):
|
||||
cutting_tool_model = self.search(
|
||||
[('code', 'ilike', cutting_tool_type_code)],
|
||||
limit=1,
|
||||
order="id desc")
|
||||
if not cutting_tool_model:
|
||||
num = "%03d" % 1
|
||||
else:
|
||||
m = int(cutting_tool_model.code[-3:]) + 1
|
||||
num = "%03d" % m
|
||||
return "%s%s" % (cutting_tool_type_code, num)
|
||||
|
||||
code = fields.Char(string='编码', readonly=True)
|
||||
|
||||
def _onchange_cutting_tool_material_id(self, cutting_tool_material_id):
|
||||
if cutting_tool_material_id:
|
||||
if cutting_tool_material_id.name == "整体式刀具":
|
||||
code = self._get_code("JKM-T-DJWL-ZTDJ-")
|
||||
elif cutting_tool_material_id.name == "刀片":
|
||||
code = self._get_code("JKM-T-DJWL-DPIA-")
|
||||
elif cutting_tool_material_id.name == "刀杆":
|
||||
code = self._get_code("JKM-T-DJWL-DGAN-")
|
||||
elif cutting_tool_material_id.name == "刀盘":
|
||||
code = self._get_code("JKM-T-DJWL-DPAN-")
|
||||
elif cutting_tool_material_id.name == "夹头":
|
||||
code = self._get_code("JKM-T-DJWL-DJIA-")
|
||||
else:
|
||||
code = self._get_code("JKM-T-DJWL-DBIN-")
|
||||
return code
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals):
|
||||
obj = super(CuttingToolModel, self).create(vals)
|
||||
if obj.cutting_tool_material_id:
|
||||
code = self._onchange_cutting_tool_material_id(obj.cutting_tool_material_id)
|
||||
obj.code = code
|
||||
return obj
|
||||
|
||||
|
||||
# 刀具类型
|
||||
class CuttingToolType(models.Model):
|
||||
_name = 'sf.cutting.tool.type'
|
||||
@@ -229,3 +102,105 @@ class CuttingToolType(models.Model):
|
||||
cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', '刀具物料')
|
||||
remark = fields.Char('备注')
|
||||
active = fields.Boolean('有效', default=True)
|
||||
|
||||
|
||||
# 刀具标准库
|
||||
class CuttingToolModel(models.Model):
|
||||
_name = 'sf.cutting_tool.standard.library'
|
||||
_description = '刀具标准库'
|
||||
|
||||
code = fields.Char(string='编码')
|
||||
name = fields.Char('名称')
|
||||
# 关联刀具物料
|
||||
cutting_tool_material_id = fields.Many2one('sf.cutting.tool.material', '刀具物料', required=True)
|
||||
# 刀具物料类型
|
||||
cutting_tool_type = fields.Char(related='cutting_tool_material_id.name', string='刀具物料类型',
|
||||
store=True)
|
||||
# 关联刀具类型
|
||||
cutting_tool_type_id = fields.Many2one('sf.cutting.tool.type', '类型',
|
||||
domain="[('cutting_tool_material_id.name', '=', cutting_tool_type)]")
|
||||
brand_id = fields.Many2one('sf.machine.brand', '品牌')
|
||||
status = fields.Boolean(string='状态', default=False)
|
||||
image = fields.Binary('图片')
|
||||
|
||||
# 整体式刀具参数
|
||||
material_model_id = fields.Many2one('mrs.materials.model', '刀具材质')
|
||||
tool_hardness = fields.Integer('刀具硬度(hrc)')
|
||||
coating_material = fields.Char('涂层材质')
|
||||
blade_type = fields.Char('刃部类型')
|
||||
integral_coarse_medium_fine = fields.Selection([('粗', '粗'), ('中', '中'), ('精', '精')], '粗/中/精')
|
||||
integral_run_out_accuracy_max = fields.Char('整体式刀具端跳精度max')
|
||||
integral_run_out_accuracy_min = fields.Char('整体式刀具端跳精度min')
|
||||
|
||||
fit_blade_shape_ids = fields.Many2many('maintenance.equipment.image', 'fit_blade_shape_library_rel',
|
||||
'适配刀片形状', domain=[('type', '=', '刀片形状')])
|
||||
suitable_machining_method_ids = fields.Many2many('maintenance.equipment.image',
|
||||
'suitable_machining_method_library_rel',
|
||||
'适合加工方式', domain=[('type', '=', '加工能力')])
|
||||
blade_tip_characteristics_ids = fields.Many2many('maintenance.equipment.image',
|
||||
'blade_tip_character_library_rel',
|
||||
'刀尖特征', domain=[('type', '=', '刀尖特征')])
|
||||
handle_type_ids = fields.Many2many('maintenance.equipment.image', 'handle_type_library_rel',
|
||||
'柄部类型', domain=[('type', '=', '柄部类型')])
|
||||
cutting_direction_ids = fields.Many2many('maintenance.equipment.image', 'cutting_direction_library_rel',
|
||||
'走刀方向', domain=[('type', '=', '走刀方向')])
|
||||
suitable_coolant_ids = fields.Many2many('maintenance.equipment.image', 'suitable_coolant_library_rel',
|
||||
'适合冷却液', domain=[('type', '=', '冷却液')])
|
||||
compaction_way_ids = fields.Many2many('maintenance.equipment.image', 'compaction_way_library_rel',
|
||||
'压紧方式', domain=[('type', '=', '压紧方式')])
|
||||
# tool_materials_basic_parameters_ids = fields.One2many('mrs.tool.materials.basic.parameters',
|
||||
# 'cutting_tool_model_id', string='基本参数')
|
||||
# cutting_speed_ids = fields.One2many('mrs.cutting.speed', 'cutting_tool_model_id', string='切削速度Vc')
|
||||
# feed_per_tooth_ids = fields.One2many('mrs.feed.per.tooth', 'cutting_tool_model_id', '每齿走刀量fz')
|
||||
|
||||
material_model_id = fields.Many2one('sf.materials.model', '材料型号')
|
||||
nut = fields.Float('配对螺母(mm)')
|
||||
# 适用夹头型号可以多选
|
||||
chuck_ids = fields.Many2many(
|
||||
'sf.cutting.tool.type',
|
||||
relation='cutting_tool_type_library_handle_chuck_rel',
|
||||
column1='model_id_1',
|
||||
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',
|
||||
column1='model_id_1',
|
||||
column2='model_id_2',
|
||||
domain="[('cutting_tool_material_id.name', '=', '刀杆')]",
|
||||
string='适用刀杆型号'
|
||||
)
|
||||
cutter_pad_ids = fields.Many2many(
|
||||
'sf.cutting.tool.type',
|
||||
relation='cutting_tool_type_library_cutter_pad_rel',
|
||||
column1='model_id_1',
|
||||
column2='model_id_2',
|
||||
domain="[('cutting_tool_material_id.name', '=', '刀盘')]",
|
||||
string='适用刀盘型号' # 使用空列表作为默认值
|
||||
)
|
||||
# 刀杆/参数
|
||||
blade_diameter = fields.Float('刃径(mm)')
|
||||
blade_ids = fields.Many2many(
|
||||
'sf.cutting.tool.type',
|
||||
relation='cutting_tool_type_library_pad_blade_rel',
|
||||
column1='model_id_1',
|
||||
column2='model_id_2',
|
||||
domain="[('cutting_tool_material_id.name', '=', '刀片')]",
|
||||
string='适用刀片型号' # 使用空列表作为默认值
|
||||
)
|
||||
handle_ids = fields.Many2many(
|
||||
'sf.cutting.tool.type',
|
||||
relation='cutting_tool_type_library_chuck_handle_rel',
|
||||
column1='model_id_1',
|
||||
column2='model_id_2',
|
||||
domain="[('cutting_tool_material_id.name', '=', '刀柄')]",
|
||||
string='适用刀柄型号'
|
||||
)
|
||||
active = fields.Boolean('有效', default=True)
|
||||
is_cloud = fields.Boolean('云端数据', default=False)
|
||||
|
||||
def get_cutter_bar_ids(self):
|
||||
return self.cutter_bar_ids
|
||||
|
||||
Reference in New Issue
Block a user