新增功能刀具组装对象组装新刀具时创建功能刀具预警、功能刀具实时分布、功能刀具出入库记录的记录;新增新刀具取消组装时删除功能刀具预警、功能刀具实时分布、功能刀具出入库记录的记录;新增同步功能刀具列表数据到功能刀具预警、功能刀具实时分布、功能刀具出入库记录对象;新增同步功能刀具组装数据到功能刀具预警对象;新增功能刀具出入库记录和功能刀具实时分布对象分组展示全部功能刀具类型。
This commit is contained in:
@@ -126,69 +126,78 @@ class FunctionalToolWarning(models.Model):
|
|||||||
_name = 'sf.functional.tool.warning'
|
_name = 'sf.functional.tool.warning'
|
||||||
_description = '功能刀具预警'
|
_description = '功能刀具预警'
|
||||||
|
|
||||||
functional_cutting_tool_id = fields.Many2one('sf.functional.cutting.tool.entity', '功能刀具', readonly=True)
|
|
||||||
|
|
||||||
code = fields.Char('编码', readonly=True)
|
functional_cutting_tool_id = fields.Many2one('sf.functional.cutting.tool.entity', '功能刀具', readonly=True)
|
||||||
name = fields.Char('名称', invisible=True, readonly=True)
|
functional_tool_assembly_id = fields.Many2one('sf.functional.tool.assembly', '功能刀具组装', readonly=True)
|
||||||
mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=True)
|
|
||||||
|
code = fields.Char('编码', readonly=True, related='functional_cutting_tool_id.code')
|
||||||
|
name = fields.Char('名称', invisible=True, readonly=True, related='functional_cutting_tool_id.name')
|
||||||
|
mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=True,
|
||||||
|
related='functional_cutting_tool_id.mrs_cutting_tool_type_id')
|
||||||
|
|
||||||
# 整体式刀具型号
|
# 整体式刀具型号
|
||||||
mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model',
|
mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
'sf_functional_tool_warning_id',
|
'sf_functional_tool_warning_id',
|
||||||
string='整体式刀具型号', readonly=True, domain=
|
string='整体式刀具型号', readonly=True,
|
||||||
[('mrs_cutting_tool_material_name', '=', '整体式刀具')])
|
domain= [('mrs_cutting_tool_material_name', '=', '整体式刀具')],
|
||||||
|
related='functional_cutting_tool_id.mrs_cutting_tool_integral_model_ids')
|
||||||
# 刀片型号
|
# 刀片型号
|
||||||
mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model',
|
mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
'sf_functional_tool_warning_id',
|
'sf_functional_tool_warning_id',
|
||||||
string='刀片型号', readonly=True, domain=
|
string='刀片型号', readonly=True,
|
||||||
[('mrs_cutting_tool_material_name', '=', '刀片')])
|
domain= [('mrs_cutting_tool_material_name', '=', '刀片')],
|
||||||
|
related='functional_cutting_tool_id.mrs_cutting_tool_blade_model_ids')
|
||||||
# 刀杆型号
|
# 刀杆型号
|
||||||
mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model',
|
mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
'sf_functional_tool_warning_id',
|
'sf_functional_tool_warning_id',
|
||||||
string='刀杆型号', readonly=True, domain=
|
string='刀杆型号', readonly=True,
|
||||||
[('mrs_cutting_tool_material_name', '=', '刀杆')])
|
domain= [('mrs_cutting_tool_material_name', '=', '刀杆')],
|
||||||
|
related='functional_cutting_tool_id.mrs_cutting_tool_cutterbar_model_ids')
|
||||||
# 刀盘型号
|
# 刀盘型号
|
||||||
mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model',
|
mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
'sf_functional_tool_warning_id',
|
'sf_functional_tool_warning_id',
|
||||||
string='刀盘型号', readonly=True, domain=
|
string='刀盘型号', readonly=True,
|
||||||
[('mrs_cutting_tool_material_name', '=', '刀盘')])
|
domain=[('mrs_cutting_tool_material_name', '=', '刀盘')],
|
||||||
|
related='functional_cutting_tool_id.mrs_cutting_tool_cutterpad_model_ids')
|
||||||
# 刀柄型号
|
# 刀柄型号
|
||||||
mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model',
|
mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
'sf_functional_tool_warning_id',
|
'sf_functional_tool_warning_id',
|
||||||
string='刀柄型号', readonly=True, domain=
|
string='刀柄型号', readonly=True,
|
||||||
[('mrs_cutting_tool_material_name', '=', '刀柄')])
|
domain=[('mrs_cutting_tool_material_name', '=', '刀柄')],
|
||||||
|
related='functional_cutting_tool_id.mrs_cutting_tool_cutterhandle_model_ids')
|
||||||
# 夹头型号
|
# 夹头型号
|
||||||
mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model',
|
mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
'sf_functional_tool_warning_id',
|
'sf_functional_tool_warning_id',
|
||||||
string='夹头型号', readonly=True, domain=
|
string='夹头型号', readonly=True,
|
||||||
[('mrs_cutting_tool_material_name', '=', '夹头')])
|
domain=[('mrs_cutting_tool_material_name', '=', '夹头')],
|
||||||
|
related='functional_cutting_tool_id.mrs_cutting_tool_cutterhead_model_ids')
|
||||||
|
|
||||||
diameter = fields.Float('直径(mm)', readonly=True)
|
diameter = fields.Float('直径(mm)', readonly=True, related='functional_cutting_tool_id.diameter')
|
||||||
tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')],
|
tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')],
|
||||||
string='刀具等级', readonly=True)
|
string='刀具等级', readonly=True, related='functional_cutting_tool_id.tool_grade')
|
||||||
machining_accuracy = fields.Float('加工精度(mm)', readonly=True)
|
machining_accuracy = fields.Float('加工精度(mm)', readonly=True, related='functional_cutting_tool_id.machining_accuracy')
|
||||||
tool_length = fields.Float('装刀长', readonly=True)
|
tool_length = fields.Float('装刀长', readonly=True, related='functional_cutting_tool_id.tool_length')
|
||||||
blade_number = fields.Integer('刃数', readonly=True)
|
blade_number = fields.Integer('刃数', readonly=True, related='functional_cutting_tool_id.blade_number')
|
||||||
integral_blade_length = fields.Float('整体刃长(mm)', readonly=True)
|
integral_blade_length = fields.Float('整体刃长(mm)', readonly=True, related='functional_cutting_tool_id.integral_blade_length')
|
||||||
effective_blade_length = fields.Float('有效刃长(mm)', readonly=True)
|
effective_blade_length = fields.Float('有效刃长(mm)', readonly=True, related='functional_cutting_tool_id.effective_blade_length')
|
||||||
max_life = fields.Float('最大寿命值', readonly=True)
|
max_life = fields.Float('最大寿命值', readonly=True, related='functional_cutting_tool_id.max_life')
|
||||||
is_standard = fields.Boolean('是否标准刀', readonly=True)
|
is_standard = fields.Boolean('是否标准刀', readonly=True, related='functional_cutting_tool_id.is_standard')
|
||||||
applicable_range = fields.Char('适用范围', readonly=True)
|
applicable_range = fields.Char('适用范围', readonly=True, related='functional_cutting_tool_id.applicable_range')
|
||||||
image = fields.Binary('图片', readonly=True)
|
image = fields.Binary('图片', readonly=True, related='functional_cutting_tool_id.image')
|
||||||
|
|
||||||
# 功能刀具预警 特有字段
|
# 功能刀具预警 特有字段
|
||||||
install_tool_time = fields.Char("装刀时间", readonly=False)
|
install_tool_time = fields.Datetime("装刀时间", readonly=True,related='functional_tool_assembly_id.tool_loading_time')
|
||||||
outbound_time = fields.Char('出库时间', readonly=False)
|
outbound_time = fields.Datetime('出库时间', readonly=True,related='functional_tool_assembly_id.receive_time')
|
||||||
on_board_time = fields.Char('上机时间', readonly=False)
|
on_board_time = fields.Datetime('上机时间', readonly=False)
|
||||||
machine_table_name_id = fields.Many2one('maintenance.equipment', string='机床名称', readonly=False, tracking=True,
|
machine_table_name_id = fields.Many2one('maintenance.equipment', string='机床名称', readonly=True, tracking=True,
|
||||||
group_expand='_read_group_machine_table_name_ids')
|
group_expand='_read_group_machine_table_name_ids')
|
||||||
@api.model
|
@api.model
|
||||||
def _read_group_machine_table_name_ids(self, categories, domain, order):
|
def _read_group_machine_table_name_ids(self, categories, domain, order):
|
||||||
machine_table_name_ids = categories._search([], order=order, access_rights_uid=SUPERUSER_ID)
|
machine_table_name_ids = categories._search([], order=order, access_rights_uid=SUPERUSER_ID)
|
||||||
return categories.browse(machine_table_name_ids)
|
return categories.browse(machine_table_name_ids)
|
||||||
|
|
||||||
machine_tool_code = fields.Char('机台号', readonly=False)
|
machine_tool_code = fields.Char('机台号', readonly=True,related='functional_tool_assembly_id.machine_tool_code')
|
||||||
cutting_tool_code = fields.Char('刀位号', readonly=False)
|
cutting_tool_code = fields.Char('刀位号', readonly=True,related='functional_tool_assembly_id.cutter_spacing_code')
|
||||||
idle_time = fields.Char('闲置时长', readonly=False)
|
idle_time = fields.Char('闲置时长', readonly=False)
|
||||||
alarm_value = fields.Char('报警值', readonly=False)
|
alarm_value = fields.Char('报警值', readonly=False)
|
||||||
used_value = fields.Char('已使用值', readonly=False)
|
used_value = fields.Char('已使用值', readonly=False)
|
||||||
@@ -209,53 +218,79 @@ class RealTimeDistributionOfFunctionalTools(models.Model):
|
|||||||
_description = '功能刀具实时分布'
|
_description = '功能刀具实时分布'
|
||||||
|
|
||||||
functional_cutting_tool_id = fields.Many2one('sf.functional.cutting.tool.entity', '功能刀具', readonly=True)
|
functional_cutting_tool_id = fields.Many2one('sf.functional.cutting.tool.entity', '功能刀具', readonly=True)
|
||||||
code = fields.Char('编码', readonly=True)
|
mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=True,
|
||||||
name = fields.Char('名称', invisible=True, readonly=True)
|
tracking=True, group_expand='_read_mrs_cutting_tool_type_ids',store=True,
|
||||||
mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=True)
|
compute='_compute_functional_cutting_tool_id')
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _read_mrs_cutting_tool_type_ids(self, categories, domain, order):
|
||||||
|
mrs_cutting_tool_type_ids = categories._search([], order=order, access_rights_uid=SUPERUSER_ID)
|
||||||
|
return categories.browse(mrs_cutting_tool_type_ids)
|
||||||
|
|
||||||
|
@api.depends('functional_cutting_tool_id')
|
||||||
|
def _compute_functional_cutting_tool_id(self):
|
||||||
|
for record in self:
|
||||||
|
if record:
|
||||||
|
record.mrs_cutting_tool_type_id = record.functional_cutting_tool_id.mrs_cutting_tool_type_id.id
|
||||||
|
|
||||||
|
code = fields.Char('编码', readonly=True, related='functional_cutting_tool_id.code')
|
||||||
|
name = fields.Char('名称', invisible=True, readonly=True, related='functional_cutting_tool_id.name')
|
||||||
|
# mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=True,
|
||||||
|
# related='functional_cutting_tool_id.mrs_cutting_tool_type_id')
|
||||||
|
|
||||||
# 整体式刀具型号
|
# 整体式刀具型号
|
||||||
mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model',
|
mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
'sf_real_time_distribution_of_functional_tools_id',
|
'sf_functional_tool_warning_id',
|
||||||
string='整体式刀具型号', readonly=True, domain=
|
string='整体式刀具型号', readonly=True,
|
||||||
[('mrs_cutting_tool_material_name', '=', '整体式刀具')])
|
domain=[
|
||||||
|
('mrs_cutting_tool_material_name', '=', '整体式刀具')],
|
||||||
|
related='functional_cutting_tool_id.mrs_cutting_tool_integral_model_ids')
|
||||||
# 刀片型号
|
# 刀片型号
|
||||||
mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model',
|
mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
'sf_real_time_distribution_of_functional_tools_id',
|
'sf_functional_tool_warning_id',
|
||||||
string='刀片型号', readonly=True, domain=
|
string='刀片型号', readonly=True,
|
||||||
[('mrs_cutting_tool_material_name', '=', '刀片')])
|
domain=[('mrs_cutting_tool_material_name', '=', '刀片')],
|
||||||
|
related='functional_cutting_tool_id.mrs_cutting_tool_blade_model_ids')
|
||||||
# 刀杆型号
|
# 刀杆型号
|
||||||
mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model',
|
mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
'sf_real_time_distribution_of_functional_tools_id',
|
'sf_functional_tool_warning_id',
|
||||||
string='刀杆型号', readonly=True, domain=
|
string='刀杆型号', readonly=True,
|
||||||
[('mrs_cutting_tool_material_name', '=', '刀杆')])
|
domain=[('mrs_cutting_tool_material_name', '=', '刀杆')],
|
||||||
|
related='functional_cutting_tool_id.mrs_cutting_tool_cutterbar_model_ids')
|
||||||
# 刀盘型号
|
# 刀盘型号
|
||||||
mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model',
|
mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
'sf_real_time_distribution_of_functional_tools_id',
|
'sf_functional_tool_warning_id',
|
||||||
string='刀盘型号', readonly=True, domain=
|
string='刀盘型号', readonly=True,
|
||||||
[('mrs_cutting_tool_material_name', '=', '刀盘')])
|
domain=[('mrs_cutting_tool_material_name', '=', '刀盘')],
|
||||||
|
related='functional_cutting_tool_id.mrs_cutting_tool_cutterpad_model_ids')
|
||||||
# 刀柄型号
|
# 刀柄型号
|
||||||
mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model',
|
mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
'sf_real_time_distribution_of_functional_tools_id',
|
'sf_functional_tool_warning_id',
|
||||||
string='刀柄型号', readonly=True, domain=
|
string='刀柄型号', readonly=True,
|
||||||
[('mrs_cutting_tool_material_name', '=', '刀柄')])
|
domain=[('mrs_cutting_tool_material_name', '=', '刀柄')],
|
||||||
|
related='functional_cutting_tool_id.mrs_cutting_tool_cutterhandle_model_ids')
|
||||||
# 夹头型号
|
# 夹头型号
|
||||||
mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model',
|
mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
'sf_real_time_distribution_of_functional_tools_id',
|
'sf_functional_tool_warning_id',
|
||||||
string='夹头型号', readonly=True, domain=
|
string='夹头型号', readonly=True,
|
||||||
[('mrs_cutting_tool_material_name', '=', '夹头')])
|
domain=[('mrs_cutting_tool_material_name', '=', '夹头')],
|
||||||
|
related='functional_cutting_tool_id.mrs_cutting_tool_cutterhead_model_ids')
|
||||||
|
|
||||||
diameter = fields.Float('直径(mm)', readonly=True)
|
diameter = fields.Float('直径(mm)', readonly=True, related='functional_cutting_tool_id.diameter')
|
||||||
tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')],
|
tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')],
|
||||||
string='刀具等级', readonly=True)
|
string='刀具等级', readonly=True, related='functional_cutting_tool_id.tool_grade')
|
||||||
machining_accuracy = fields.Float('加工精度(mm)', readonly=True)
|
machining_accuracy = fields.Float('加工精度(mm)', readonly=True,
|
||||||
tool_length = fields.Float('装刀长', readonly=True)
|
related='functional_cutting_tool_id.machining_accuracy')
|
||||||
blade_number = fields.Integer('刃数', readonly=True)
|
tool_length = fields.Float('装刀长', readonly=True, related='functional_cutting_tool_id.tool_length')
|
||||||
integral_blade_length = fields.Float('整体刃长(mm)', readonly=True)
|
blade_number = fields.Integer('刃数', readonly=True, related='functional_cutting_tool_id.blade_number')
|
||||||
effective_blade_length = fields.Float('有效刃长(mm)', readonly=True)
|
integral_blade_length = fields.Float('整体刃长(mm)', readonly=True,
|
||||||
max_life = fields.Float('最大寿命值', readonly=True)
|
related='functional_cutting_tool_id.integral_blade_length')
|
||||||
is_standard = fields.Boolean('是否标准刀', readonly=True)
|
effective_blade_length = fields.Float('有效刃长(mm)', readonly=True,
|
||||||
applicable_range = fields.Char('适用范围', readonly=True)
|
related='functional_cutting_tool_id.effective_blade_length')
|
||||||
image = fields.Binary('图片', readonly=True)
|
max_life = fields.Float('最大寿命值', readonly=True, related='functional_cutting_tool_id.max_life')
|
||||||
|
is_standard = fields.Boolean('是否标准刀', readonly=True, related='functional_cutting_tool_id.is_standard')
|
||||||
|
applicable_range = fields.Char('适用范围', readonly=True, related='functional_cutting_tool_id.applicable_range')
|
||||||
|
image = fields.Binary('图片', readonly=True, related='functional_cutting_tool_id.image')
|
||||||
|
|
||||||
# 功能刀具实时分布
|
# 功能刀具实时分布
|
||||||
tool_stock_num = fields.Integer(string='刀具房库存数量', readonly=False)
|
tool_stock_num = fields.Integer(string='刀具房库存数量', readonly=False)
|
||||||
@@ -294,53 +329,78 @@ class InboundAndOutboundRecordsOfFunctionalTools(models.Model):
|
|||||||
_description = '功能刀具出入库记录'
|
_description = '功能刀具出入库记录'
|
||||||
|
|
||||||
functional_cutting_tool_id = fields.Many2one('sf.functional.cutting.tool.entity', '功能刀具', readonly=True)
|
functional_cutting_tool_id = fields.Many2one('sf.functional.cutting.tool.entity', '功能刀具', readonly=True)
|
||||||
code = fields.Char('编码', readonly=True)
|
mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=True,
|
||||||
name = fields.Char('名称', invisible=True, readonly=True)
|
tracking=True, group_expand='_read_mrs_cutting_tool_type_ids',
|
||||||
mrs_cutting_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=True)
|
store=True,
|
||||||
|
compute='_compute_functional_cutting_tool_id')
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _read_mrs_cutting_tool_type_ids(self, categories, domain, order):
|
||||||
|
mrs_cutting_tool_type_ids = categories._search([], order=order, access_rights_uid=SUPERUSER_ID)
|
||||||
|
return categories.browse(mrs_cutting_tool_type_ids)
|
||||||
|
|
||||||
|
@api.depends('functional_cutting_tool_id')
|
||||||
|
def _compute_functional_cutting_tool_id(self):
|
||||||
|
for record in self:
|
||||||
|
if record:
|
||||||
|
record.mrs_cutting_tool_type_id = record.functional_cutting_tool_id.mrs_cutting_tool_type_id.id
|
||||||
|
|
||||||
|
code = fields.Char('编码', readonly=True, related='functional_cutting_tool_id.code')
|
||||||
|
name = fields.Char('名称', invisible=True, readonly=True, related='functional_cutting_tool_id.name')
|
||||||
|
|
||||||
# 整体式刀具型号
|
# 整体式刀具型号
|
||||||
mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model',
|
mrs_cutting_tool_integral_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
'sf_inbound_and_outbound_records_of_functional_tools_id',
|
'sf_functional_tool_warning_id',
|
||||||
string='整体式刀具型号', readonly=True, domain=
|
string='整体式刀具型号', readonly=True,
|
||||||
[('mrs_cutting_tool_material_name', '=', '整体式刀具')])
|
domain=[
|
||||||
|
('mrs_cutting_tool_material_name', '=', '整体式刀具')],
|
||||||
|
related='functional_cutting_tool_id.mrs_cutting_tool_integral_model_ids')
|
||||||
# 刀片型号
|
# 刀片型号
|
||||||
mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model',
|
mrs_cutting_tool_blade_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
'sf_inbound_and_outbound_records_of_functional_tools_id',
|
'sf_functional_tool_warning_id',
|
||||||
string='刀片型号', readonly=True, domain=
|
string='刀片型号', readonly=True,
|
||||||
[('mrs_cutting_tool_material_name', '=', '刀片')])
|
domain=[('mrs_cutting_tool_material_name', '=', '刀片')],
|
||||||
|
related='functional_cutting_tool_id.mrs_cutting_tool_blade_model_ids')
|
||||||
# 刀杆型号
|
# 刀杆型号
|
||||||
mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model',
|
mrs_cutting_tool_cutterbar_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
'sf_inbound_and_outbound_records_of_functional_tools_id',
|
'sf_functional_tool_warning_id',
|
||||||
string='刀杆型号', readonly=True, domain=
|
string='刀杆型号', readonly=True,
|
||||||
[('mrs_cutting_tool_material_name', '=', '刀杆')])
|
domain=[('mrs_cutting_tool_material_name', '=', '刀杆')],
|
||||||
|
related='functional_cutting_tool_id.mrs_cutting_tool_cutterbar_model_ids')
|
||||||
# 刀盘型号
|
# 刀盘型号
|
||||||
mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model',
|
mrs_cutting_tool_cutterpad_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
'sf_inbound_and_outbound_records_of_functional_tools_id',
|
'sf_functional_tool_warning_id',
|
||||||
string='刀盘型号', readonly=True, domain=
|
string='刀盘型号', readonly=True,
|
||||||
[('mrs_cutting_tool_material_name', '=', '刀盘')])
|
domain=[('mrs_cutting_tool_material_name', '=', '刀盘')],
|
||||||
|
related='functional_cutting_tool_id.mrs_cutting_tool_cutterpad_model_ids')
|
||||||
# 刀柄型号
|
# 刀柄型号
|
||||||
mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model',
|
mrs_cutting_tool_cutterhandle_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
'sf_inbound_and_outbound_records_of_functional_tools_id',
|
'sf_functional_tool_warning_id',
|
||||||
string='刀柄型号', readonly=True, domain=
|
string='刀柄型号', readonly=True,
|
||||||
[('mrs_cutting_tool_material_name', '=', '刀柄')])
|
domain=[('mrs_cutting_tool_material_name', '=', '刀柄')],
|
||||||
|
related='functional_cutting_tool_id.mrs_cutting_tool_cutterhandle_model_ids')
|
||||||
# 夹头型号
|
# 夹头型号
|
||||||
mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model',
|
mrs_cutting_tool_cutterhead_model_ids = fields.Many2many('sf.cutting.tool.model',
|
||||||
'sf_inbound_and_outbound_records_of_functional_tools_id',
|
'sf_functional_tool_warning_id',
|
||||||
string='夹头型号', readonly=True, domain=
|
string='夹头型号', readonly=True,
|
||||||
[('mrs_cutting_tool_material_name', '=', '夹头')])
|
domain=[('mrs_cutting_tool_material_name', '=', '夹头')],
|
||||||
|
related='functional_cutting_tool_id.mrs_cutting_tool_cutterhead_model_ids')
|
||||||
|
|
||||||
diameter = fields.Float('直径(mm)', readonly=True)
|
diameter = fields.Float('直径(mm)', readonly=True, related='functional_cutting_tool_id.diameter')
|
||||||
tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')],
|
tool_grade = fields.Selection([('1', 'P1'), ('2', 'P2'), ('3', 'P3'), ('4', 'P4'), ('5', 'P5'), ('6', 'P6')],
|
||||||
string='刀具等级', readonly=True)
|
string='刀具等级', readonly=True, related='functional_cutting_tool_id.tool_grade')
|
||||||
machining_accuracy = fields.Float('加工精度(mm)', readonly=True)
|
machining_accuracy = fields.Float('加工精度(mm)', readonly=True,
|
||||||
tool_length = fields.Float('装刀长', readonly=True)
|
related='functional_cutting_tool_id.machining_accuracy')
|
||||||
blade_number = fields.Integer('刃数', readonly=True)
|
tool_length = fields.Float('装刀长', readonly=True, related='functional_cutting_tool_id.tool_length')
|
||||||
integral_blade_length = fields.Float('整体刃长(mm)', readonly=True)
|
blade_number = fields.Integer('刃数', readonly=True, related='functional_cutting_tool_id.blade_number')
|
||||||
effective_blade_length = fields.Float('有效刃长(mm)', readonly=True)
|
integral_blade_length = fields.Float('整体刃长(mm)', readonly=True,
|
||||||
max_life = fields.Float('最大寿命值', readonly=True)
|
related='functional_cutting_tool_id.integral_blade_length')
|
||||||
is_standard = fields.Boolean('是否标准刀', readonly=True)
|
effective_blade_length = fields.Float('有效刃长(mm)', readonly=True,
|
||||||
applicable_range = fields.Char('适用范围', readonly=True)
|
related='functional_cutting_tool_id.effective_blade_length')
|
||||||
image = fields.Binary('图片', readonly=True)
|
max_life = fields.Float('最大寿命值', readonly=True, related='functional_cutting_tool_id.max_life')
|
||||||
|
is_standard = fields.Boolean('是否标准刀', readonly=True, related='functional_cutting_tool_id.is_standard')
|
||||||
|
applicable_range = fields.Char('适用范围', readonly=True, related='functional_cutting_tool_id.applicable_range')
|
||||||
|
image = fields.Binary('图片', readonly=True, related='functional_cutting_tool_id.image')
|
||||||
|
|
||||||
# 功能刀具出入库记录 特有字段
|
# 功能刀具出入库记录 特有字段
|
||||||
thickness = fields.Selection([('1', '粗'), ('2', '中'), ('3', '精')], string='粗/中/精', readonly=False)
|
thickness = fields.Selection([('1', '粗'), ('2', '中'), ('3', '精')], string='粗/中/精', readonly=False)
|
||||||
@@ -735,9 +795,16 @@ class FunctionalToolAssembly(models.Model):
|
|||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if self.new_former == '0':
|
if self.new_former == '0':
|
||||||
# 如果是新刀,则删除功能刀具列表、
|
# 如果是新刀,则删除功能刀具列表、功能刀具预警、功能刀具实时分布、功能刀具出入库记录的记录
|
||||||
self.env['sf.functional.cutting.tool.entity'].search([
|
record = self.env['sf.functional.cutting.tool.entity'].search([
|
||||||
('code', '=', self.functional_tool_code)]).unlink()
|
('code', '=', self.functional_tool_code)])
|
||||||
|
self.env['sf.functional.tool.warning'].search(
|
||||||
|
[('functional_cutting_tool_id', '=', record.id)]).unlink()
|
||||||
|
self.env['sf.real.time.distribution.of.functional.tools'].search(
|
||||||
|
[('functional_cutting_tool_id', '=', record.id)]).unlink()
|
||||||
|
self.env['sf.inbound.and.outbound.records.of.functional.tools'].search(
|
||||||
|
[('functional_cutting_tool_id', '=', record.id)]).unlink()
|
||||||
|
record.unlink()
|
||||||
else:
|
else:
|
||||||
# 获取功能刀具缓存信息
|
# 获取功能刀具缓存信息
|
||||||
record = self.env['sf.functional.cutting.tool.entity.cache'].search([
|
record = self.env['sf.functional.cutting.tool.entity.cache'].search([
|
||||||
|
|||||||
@@ -843,6 +843,7 @@
|
|||||||
<field name="remark" optional="hide"/>
|
<field name="remark" optional="hide"/>
|
||||||
|
|
||||||
<field name="machine_tool_name_id" invisible="True"/>
|
<field name="machine_tool_name_id" invisible="True"/>
|
||||||
|
<field name="machine_tool_code" invisible="True"/>
|
||||||
<field name="cutter_spacing_code" invisible="True"/>
|
<field name="cutter_spacing_code" invisible="True"/>
|
||||||
<field name="functional_tool_length" invisible="True"/>
|
<field name="functional_tool_length" invisible="True"/>
|
||||||
<field name="functional_tool_diameter" invisible="True"/>
|
<field name="functional_tool_diameter" invisible="True"/>
|
||||||
@@ -853,6 +854,7 @@
|
|||||||
type="action"
|
type="action"
|
||||||
context="{
|
context="{
|
||||||
'default_machine_tool_name_id': machine_tool_name_id,
|
'default_machine_tool_name_id': machine_tool_name_id,
|
||||||
|
'default_machine_tool_code': machine_tool_code,
|
||||||
'default_code': functional_tool_code,
|
'default_code': functional_tool_code,
|
||||||
'default_cutter_spacing_code': cutter_spacing_code,
|
'default_cutter_spacing_code': cutter_spacing_code,
|
||||||
'default_functional_tool_name_id': name,
|
'default_functional_tool_name_id': name,
|
||||||
@@ -888,6 +890,7 @@
|
|||||||
type="action"
|
type="action"
|
||||||
context="{
|
context="{
|
||||||
'default_machine_tool_name_id': machine_tool_name_id,
|
'default_machine_tool_name_id': machine_tool_name_id,
|
||||||
|
'default_machine_tool_code': machine_tool_code,
|
||||||
'default_code': functional_tool_code,
|
'default_code': functional_tool_code,
|
||||||
'default_cutter_spacing_code': cutter_spacing_code,
|
'default_cutter_spacing_code': cutter_spacing_code,
|
||||||
'default_functional_tool_name_id': name,
|
'default_functional_tool_name_id': name,
|
||||||
|
|||||||
@@ -122,6 +122,7 @@ class FunctionalToolAssemblyOrder(models.TransientModel):
|
|||||||
|
|
||||||
# 功能刀具申请信息
|
# 功能刀具申请信息
|
||||||
machine_tool_name_id = fields.Many2one('maintenance.equipment', string='机床名称', readonly=True)
|
machine_tool_name_id = fields.Many2one('maintenance.equipment', string='机床名称', readonly=True)
|
||||||
|
machine_tool_code = fields.Char(string='机台号', readonly=True)
|
||||||
cutter_spacing_code = fields.Char(string='刀位号', readonly=True)
|
cutter_spacing_code = fields.Char(string='刀位号', readonly=True)
|
||||||
code = fields.Char(string='功能刀具编码', readonly=True)
|
code = fields.Char(string='功能刀具编码', readonly=True)
|
||||||
functional_tool_name_id = fields.Many2one('sf.functional.cutting.tool', string='功能刀具名称', readonly=True)
|
functional_tool_name_id = fields.Many2one('sf.functional.cutting.tool', string='功能刀具名称', readonly=True)
|
||||||
@@ -294,11 +295,13 @@ class FunctionalToolAssemblyOrder(models.TransientModel):
|
|||||||
'tool_loading_person': self.env.user.name,
|
'tool_loading_person': self.env.user.name,
|
||||||
'tool_loading_time': fields.Datetime.now()
|
'tool_loading_time': fields.Datetime.now()
|
||||||
}
|
}
|
||||||
self.env['sf.functional.tool.assembly'].search([
|
functional_tool_assembly = self.env['sf.functional.tool.assembly'].search([
|
||||||
('machine_tool_name_id', '=', self.machine_tool_name_id.id),
|
('machine_tool_name_id', '=', self.machine_tool_name_id.id),
|
||||||
('cutter_spacing_code', '=', self.cutter_spacing_code),
|
('cutter_spacing_code', '=', self.cutter_spacing_code),
|
||||||
('assemble_status', '=', '0'),
|
('assemble_status', '=', '0'),
|
||||||
]).write(desc_1)
|
])
|
||||||
|
|
||||||
|
print('功能刀具组装id:',functional_tool_assembly.id)
|
||||||
|
|
||||||
# 封装功能刀具数据
|
# 封装功能刀具数据
|
||||||
desc_2 = {
|
desc_2 = {
|
||||||
@@ -324,8 +327,19 @@ class FunctionalToolAssemblyOrder(models.TransientModel):
|
|||||||
'image': None,
|
'image': None,
|
||||||
}
|
}
|
||||||
if self.new_former == '0':
|
if self.new_former == '0':
|
||||||
# 如果是新刀,则创建功能刀具列表、
|
# 如果是新刀,则创建功能刀具列表、功能刀具预警、功能刀具实时分布
|
||||||
self.env['sf.functional.cutting.tool.entity'].create(desc_2)
|
record_1 = self.env['sf.functional.cutting.tool.entity'].create(desc_2)
|
||||||
|
self.env['sf.functional.tool.warning'].create({
|
||||||
|
'functional_cutting_tool_id': record_1.id,
|
||||||
|
'functional_tool_assembly_id': functional_tool_assembly.id,
|
||||||
|
'machine_table_name_id': self.machine_tool_name_id.id,
|
||||||
|
})
|
||||||
|
self.env['sf.real.time.distribution.of.functional.tools'].create({
|
||||||
|
'functional_cutting_tool_id': record_1.id
|
||||||
|
})
|
||||||
|
self.env['sf.inbound.and.outbound.records.of.functional.tools'].create({
|
||||||
|
'functional_cutting_tool_id': record_1.id
|
||||||
|
})
|
||||||
else:
|
else:
|
||||||
record = self.env['sf.functional.cutting.tool.entity'].search([('code', '=', self.code)])
|
record = self.env['sf.functional.cutting.tool.entity'].search([('code', '=', self.code)])
|
||||||
# 创建功能刀具缓存信息
|
# 创建功能刀具缓存信息
|
||||||
@@ -356,11 +370,8 @@ class FunctionalToolAssemblyOrder(models.TransientModel):
|
|||||||
self.env['sf.functional.cutting.tool.entity'].search([('code', '=', self.code)]).unlink()
|
self.env['sf.functional.cutting.tool.entity'].search([('code', '=', self.code)]).unlink()
|
||||||
# 创建功能刀具列表信息
|
# 创建功能刀具列表信息
|
||||||
self.env['sf.functional.cutting.tool.entity'].search([('code', '=', self.code)]).create(desc_2)
|
self.env['sf.functional.cutting.tool.entity'].search([('code', '=', self.code)]).create(desc_2)
|
||||||
# # 创建功能刀具预警、实时分布、出入库记录的新记录
|
|
||||||
# self.env['sf.functional.tool.warning'].create(desc)
|
|
||||||
# self.env['sf.real.time.distribution.of.functional.tools'].create(desc)
|
|
||||||
# self.env['sf.inbound.and.outbound.records.of.functional.tools'].create(desc)
|
|
||||||
|
|
||||||
|
functional_tool_assembly.write(desc_1)
|
||||||
# 关闭弹出窗口
|
# 关闭弹出窗口
|
||||||
return {'type': 'ir.actions.act_window_close'}
|
return {'type': 'ir.actions.act_window_close'}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user