diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py index 101f9049..92242197 100644 --- a/sf_tool_management/models/base.py +++ b/sf_tool_management/models/base.py @@ -232,7 +232,13 @@ class RealTimeDistributionOfFunctionalTools(models.Model): def _compute_tool_stock_total(self): for record in self: if record: - self.tool_stock_total = record.tool_stock_num + record.side_shelf_num + record.on_tool_stock_num + record.tool_stock_total = record.tool_stock_num + record.side_shelf_num + record.on_tool_stock_num + + # @api.depends('tool_stock_total', 'min_stock_num', 'max_stock_num') + # def _compute_batch_replenishment_num(self): + # for record in self: + # if record.tool_stock_total < record.min_stock_num: + # record.batch_replenishment_num = record.max_stock_num - record.tool_stock_total def create_or_edit_safety_stock(self, vals, sf_functional_cutting_tool_entity_ids): """ @@ -365,7 +371,7 @@ class MachineTableToolChangingApply(models.Model): 'use_tool_time': fields.Datetime.now() + timedelta(hours=4), 'production_line_name_id': self.production_line_id.id, 'machine_tool_name_id': self.maintenance_equipment_id.id, - 'applicant': self.applicant, + 'applicant': '系统自动', 'apply_time': fields.Datetime.now(), 'cutter_spacing_code_id': self.cutter_spacing_code_id.id, 'whether_standard_knife': self.whether_standard_knife, @@ -687,6 +693,20 @@ class FunctionalToolAssembly(models.Model): code = False return code + def get_functional_tool(self, val): + functional_tools = self.env['sf.functional.tool.assembly'].search( + [('after_assembly_functional_tool_name', '=', val.get('after_assembly_functional_tool_name')), + ('after_assembly_functional_tool_diameter', '=', val.get('after_assembly_functional_tool_diameter')), + ('after_assembly_knife_tip_r_angle', '=', val.get('after_assembly_knife_tip_r_angle')), + ('after_assembly_coarse_middle_thin', '=', val.get('after_assembly_coarse_middle_thin'))]) + for functional_tool in functional_tools: + if functional_tool.barcode_id.quant_ids[-1].location_id.name == '刀具线边库': + return functional_tool + for functional_tool in functional_tools: + if functional_tool.barcode_id.quant_ids[-1].location_id.name == '刀具房': + return functional_tool + return False + def automated_assembly(self): """ todo 自动组装 diff --git a/sf_tool_management/views/tool_base_views.xml b/sf_tool_management/views/tool_base_views.xml index 745edac7..a5e09fb8 100644 --- a/sf_tool_management/views/tool_base_views.xml +++ b/sf_tool_management/views/tool_base_views.xml @@ -301,7 +301,7 @@ 功能刀具安全库存 sf.real.time.distribution.of.functional.tools -
+

@@ -310,41 +310,44 @@

- - - - - + + + + + + + + - + - - @@ -352,7 +355,7 @@ - + @@ -468,7 +471,7 @@ 机床换刀申请 sf.machine.table.tool.changing.apply - + diff --git a/sf_tool_management/wizard/wizard.py b/sf_tool_management/wizard/wizard.py index 2c81cb31..b072ec2c 100644 --- a/sf_tool_management/wizard/wizard.py +++ b/sf_tool_management/wizard/wizard.py @@ -62,33 +62,47 @@ class ToolChangeRequirementInformation(models.TransientModel): ('cutter_spacing_code_id', '=', self.cutter_spacing_code_id.id) ]) - # 功能刀具组装创建新任务(new_assembly_task) - sf_functional_tool_assembly = self.env['sf.functional.tool.assembly'].sudo().create({ - 'functional_tool_name': self.replacement_tool_name, - 'functional_tool_type_id': self.replacement_tool_type_id.id, - 'functional_tool_diameter': self.replacement_diameter, - 'knife_tip_r_angle': self.replacement_knife_tip_r_angle, - 'coarse_middle_thin': self.replacement_tool_coarse_middle_thin, - 'new_former': self.new_former, - 'tool_loading_length': self.replacement_tool_setting_length, - 'functional_tool_length': self.replacement_extension_length, - 'effective_length': self.replacement_effective_length, - 'loading_task_source': '1', - 'use_tool_time': self.used_tool_time, - 'production_line_name_id': self.production_line_id.id, - 'machine_tool_name_id': self.maintenance_equipment_id.id, - 'applicant': self.applicant, - 'apply_time': fields.Datetime.now(), - 'cutter_spacing_code_id': self.cutter_spacing_code_id.id, - 'whether_standard_knife': self.whether_standard_knife, - 'reason_for_applying': self.reason_for_applying, - 'sf_machine_table_tool_changing_apply_id': record.id - }) - # 修改机床换刀申请状态 - record.write({ - 'status': '1', - 'sf_functional_tool_assembly_id': sf_functional_tool_assembly.id + # 搜索满足需求的功能刀具 + functional_tool = self.env['sf.functional.tool.assembly'].get_functional_tool({ + 'after_assembly_functional_tool_name': self.replacement_tool_name, + 'after_assembly_functional_tool_diameter': self.replacement_diameter, + 'after_assembly_knife_tip_r_angle': self.replacement_knife_tip_r_angle, + 'after_assembly_coarse_middle_thin': self.replacement_tool_coarse_middle_thin }) + # 如果有满足需求的刀具,就返回刀具信息 + if functional_tool: + record.write({'status': '3'}) + # todo 将功能刀具信息传递到机床 + return functional_tool + # 如果没有满足需求的刀具,就创建功能刀具组装单 + else: + # 功能刀具组装创建新任务(new_assembly_task) + sf_functional_tool_assembly = self.env['sf.functional.tool.assembly'].sudo().create({ + 'functional_tool_name': self.replacement_tool_name, + 'functional_tool_type_id': self.replacement_tool_type_id.id, + 'functional_tool_diameter': self.replacement_diameter, + 'knife_tip_r_angle': self.replacement_knife_tip_r_angle, + 'coarse_middle_thin': self.replacement_tool_coarse_middle_thin, + 'new_former': self.new_former, + 'tool_loading_length': self.replacement_tool_setting_length, + 'functional_tool_length': self.replacement_extension_length, + 'effective_length': self.replacement_effective_length, + 'loading_task_source': '1', + 'use_tool_time': self.used_tool_time, + 'production_line_name_id': self.production_line_id.id, + 'machine_tool_name_id': self.maintenance_equipment_id.id, + 'applicant': self.applicant, + 'apply_time': fields.Datetime.now(), + 'cutter_spacing_code_id': self.cutter_spacing_code_id.id, + 'whether_standard_knife': self.whether_standard_knife, + 'reason_for_applying': self.reason_for_applying, + 'sf_machine_table_tool_changing_apply_id': record.id + }) + # 修改机床换刀申请状态 + record.write({ + 'status': '1', + 'sf_functional_tool_assembly_id': sf_functional_tool_assembly.id + }) # 关闭弹出窗口 return {'type': 'ir.actions.act_window_close'} @@ -323,14 +337,14 @@ class FunctionalToolAssemblyOrder(models.TransientModel): string='组装后功能刀具类型') after_assembly_functional_tool_diameter = fields.Integer(string='组装后功能刀具直径(mm)') after_assembly_knife_tip_r_angle = fields.Float(string='组装后刀尖R角(mm)') - after_assembly_new_former = fields.Selection([('0', '新'), ('1', '旧')], string='组装后新/旧') + after_assembly_new_former = fields.Selection([('0', '新'), ('1', '旧')], string='组装后新/旧', default='0') cut_time = fields.Integer(string='已切削时间(min)') cut_length = fields.Float(string='已切削长度(mm)') cut_number = fields.Integer(string='已切削次数') after_assembly_whether_standard_knife = fields.Boolean(string='组装后是否标准刀', default=True) after_assembly_coarse_middle_thin = fields.Selection([("1", "粗"), ('2', '中'), ('3', '精')], - string='组装后粗/中/精') + string='组装后粗/中/精', default='3') after_assembly_max_lifetime_value = fields.Integer(string='组装后最大寿命值(min)') after_assembly_alarm_value = fields.Integer(string='组装后报警值(min)') after_assembly_used_value = fields.Integer(string='组装后已使用值(min)')