新增同步cloud的刀具标准库接口

This commit is contained in:
jinling.yang
2023-10-13 17:29:34 +08:00
parent c04e138d6b
commit 9acdcc0429
12 changed files with 406 additions and 1762 deletions

View File

@@ -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