diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py index cbdc1d22..84460220 100644 --- a/sf_tool_management/models/base.py +++ b/sf_tool_management/models/base.py @@ -185,6 +185,7 @@ class CAMWorkOrderProgramKnifePlan(models.Model): _description = 'CAM工单程序用刀计划' name = fields.Char('工单任务编号') + programming_no = fields.Char('编程单号') cam_procedure_code = fields.Char('程序名') filename = fields.Char('文件') cam_cutter_spacing_code = fields.Char('刀号') @@ -317,23 +318,30 @@ class CAMWorkOrderProgramKnifePlan(models.Model): """ 根据传入的工单信息,查询是否有需要的功能刀具,如果没有则生成CAM工单程序用刀计划 """ - knife_plan = self.env['sf.cam.work.order.program.knife.plan'].sudo().create({ - 'name': cnc_processing.workorder_id.production_id.name, - 'cam_procedure_code': cnc_processing.program_name, - 'filename': cnc_processing.cnc_id.name, - 'functional_tool_name': cnc_processing.cutting_tool_name, - 'cam_cutter_spacing_code': cnc_processing.cutting_tool_no, - 'process_type': cnc_processing.processing_type, - 'margin_x_y': float(cnc_processing.margin_x_y), - 'margin_z': float(cnc_processing.margin_z), - 'finish_depth': float(cnc_processing.depth_of_processing_z), - 'extension_length': float(cnc_processing.cutting_tool_extension_length), - 'shank_model': cnc_processing.cutting_tool_handle_type, - 'estimated_processing_time': cnc_processing.estimated_processing_time, - }) - logging.info('CAM工单程序用刀计划创建成功!!!') - # 创建装刀请求 - knife_plan.apply_for_tooling() + + # 获取编程单号 + programming_no = cnc_processing.workorder_id.production_id.programming_no + if not self.env['sf.cam.work.order.program.knife.plan'].sudo().search( + [('programming_no', '=', programming_no), + ('functional_tool_name', '=', cnc_processing.cutting_tool_name)]): + knife_plan = self.env['sf.cam.work.order.program.knife.plan'].sudo().create({ + 'name': cnc_processing.workorder_id.production_id.name, + 'programming_no': programming_no, + 'cam_procedure_code': cnc_processing.program_name, + 'filename': cnc_processing.cnc_id.name, + 'functional_tool_name': cnc_processing.cutting_tool_name, + 'cam_cutter_spacing_code': cnc_processing.cutting_tool_no, + 'process_type': cnc_processing.processing_type, + 'margin_x_y': float(cnc_processing.margin_x_y), + 'margin_z': float(cnc_processing.margin_z), + 'finish_depth': float(cnc_processing.depth_of_processing_z), + 'extension_length': float(cnc_processing.cutting_tool_extension_length), + 'shank_model': cnc_processing.cutting_tool_handle_type, + 'estimated_processing_time': cnc_processing.estimated_processing_time, + }) + logging.info('CAM工单程序用刀计划创建成功!!!') + # 创建装刀请求 + knife_plan.apply_for_tooling() def unlink_cam_plan(self, production): for item in production: diff --git a/sf_tool_management/views/tool_base_views.xml b/sf_tool_management/views/tool_base_views.xml index 130936d8..b01f5b4c 100644 --- a/sf_tool_management/views/tool_base_views.xml +++ b/sf_tool_management/views/tool_base_views.xml @@ -283,21 +283,22 @@ - - + + + - + - - + + @@ -332,6 +333,7 @@ + @@ -388,6 +390,7 @@ sf.cam.work.order.program.knife.plan +