diff --git a/sf_tool_management/models/base.py b/sf_tool_management/models/base.py
index 39805f58..97447936 100644
--- a/sf_tool_management/models/base.py
+++ b/sf_tool_management/models/base.py
@@ -594,16 +594,16 @@ class CAMWorkOrderProgramKnifePlan(models.Model):
_name = 'sf.cam.work.order.program.knife.plan'
_description = 'CAM工单程序用刀计划'
- name = fields.Char(string='工单任务编号', readonly=False)
- cam_procedure_code = fields.Char(string='CAM程序编号', readonly=False)
- cam_cutter_spacing_code = fields.Char(string='CAM刀位号', readonly=False)
+ name = fields.Char('工单任务编号')
+ cam_procedure_code = fields.Char('程序名')
+ filename = fields.Char('文件')
+ cam_cutter_spacing_code = fields.Char('刀号')
tool_position_interface_type = fields.Selection(
[('BT刀柄式', 'BT刀柄式'), ('SK刀柄式', 'SK刀柄式'), ('HSK刀柄式', 'HSK刀柄式'),
('CAT刀柄式', 'CAT刀柄式'), ('ISO刀盘式', 'ISO刀盘式'), ('DIN刀盘式', 'DIN刀盘式'),
('直装固定式', '直装固定式')], string='刀位接口型号')
- production_line_id = fields.Many2one('sf.production.line', string='生产线', readonly=False,
- group_expand='_read_group_names')
- machine_table_name_id = fields.Many2one('maintenance.equipment', string='机床名称', readonly=False,
+ production_line_id = fields.Many2one('sf.production.line', string='生产线', group_expand='_read_group_names')
+ machine_table_name_id = fields.Many2one('maintenance.equipment', string='机床名称',
domain="[('production_line_id', '=', production_line_id)]")
machine_table_name = fields.Char(string='机台号', readonly=True, related='machine_table_name_id.name')
cutter_spacing_code_id = fields.Many2one('maintenance.equipment.tool', string='刀位号', required=True,
@@ -616,8 +616,9 @@ class CAMWorkOrderProgramKnifePlan(models.Model):
barcode_id = fields.Many2one('stock.lot', string='功能刀具序列号',
domain=[('product_id.name', '=', '功能刀具')])
- functional_tool_name = fields.Char(string='功能刀具名称', required=True)
+ functional_tool_name = fields.Char(string='功能刀具名称', compute='_compute_functional_tool_name')
functional_tool_type_id = fields.Many2one('sf.functional.cutting.tool.model', string='功能刀具类型', readonly=False)
+ tool_groups_id = fields.Many2one('sf.tool.groups', '刀具组')
diameter = fields.Integer(string='刀具直径(mm)', readonly=False)
tool_included_angle = fields.Float(string='刀尖R角(mm)', readonly=False)
tool_loading_length = fields.Float(string='总长度(mm)', readonly=False)
@@ -629,12 +630,28 @@ class CAMWorkOrderProgramKnifePlan(models.Model):
L_D = fields.Float(string='L/D值', readonly=False)
clearance_length = fields.Float(string='避空长(mm)', readonly=False)
required_cutting_time = fields.Integer(string='需切削时长', readonly=False)
+ process_type = fields.Char('加工类型')
+ margin_x_y = fields.Float('余量_X/Y')
+ margin_z = fields.Float('余量_Z')
+ finish_depth = fields.Float('加工深度')
+ shank_model = fields.Char('刀柄型号')
+ estimated_processing_time = fields.Char('预计加工时间')
plan_execute_status = fields.Selection([('0', '待下发'), ('1', '执行中'), ('2', '已完成')],
string='计划执行状态', default='0', readonly=False)
sf_functional_tool_assembly_id = fields.Many2one('sf.functional.tool.assembly', '功能刀具组装', readonly=True)
+ @api.depends('diameter', 'tool_included_angle', 'tool_groups_id')
+ def _compute_functional_tool_name(self):
+ for obj in self:
+ if obj.tool_groups_id:
+ obj.functional_tool_name = '%s-D%sR%s' % (
+ obj.tool_groups_id.name, obj.diameter,
+ obj.tool_included_angle)
+ else:
+ obj.functional_tool_name = None
+
@api.model
def _read_group_names(self, categories, domain, order):
names = categories._search([], order=order, access_rights_uid=SUPERUSER_ID)
@@ -646,27 +663,34 @@ class CAMWorkOrderProgramKnifePlan(models.Model):
:return:
"""
record = self.env['sf.functional.tool.assembly'].create({
- 'barcode_id': self.barcode_id.id,
- 'functional_tool_name_id': self.functional_tool_name_id.id,
+ 'functional_tool_name': self.functional_tool_name,
'functional_tool_type_id': self.functional_tool_type_id.id,
+ 'tool_groups_id': self.tool_groups_id.id,
'functional_tool_diameter': self.diameter,
- 'functional_tool_length': self.tool_loading_length,
- 'loading_task_source': '0',
- 'coarse_middle_thin': None,
- 'tool_loading_length': None,
- 'applicant': self.env.user.name,
- 'reason_for_applying': self.reason_for_applying,
- 'use_tool_time': self.need_knife_time,
+ 'knife_tip_r_angle': self.tool_included_angle,
+ 'tool_loading_length': self.tool_loading_length,
+ 'functional_tool_length': self.extension_length,
+ 'effective_length': self.effective_length,
+ 'whether_standard_knife': self.whether_standard_knife,
+ 'coarse_middle_thin': self.coarse_middle_thin,
+ 'new_former': self.new_former,
+ 'production_line_name_id': self.production_line_id.id,
'machine_tool_name_id': self.machine_table_name_id.id,
- 'machine_tool_code': self.cam_procedure_code,
- 'cutter_spacing_code': self.cam_cutter_spacing_code,
+ 'cutter_spacing_code_id': self.env['maintenance.equipment.tool'].sudo().search(
+ [('code', '=', self.cam_cutter_spacing_code), ('equipment_id', '=', self.machine_table_name_id.id)]).id,
+
+ 'loading_task_source': '0',
+ 'applicant': self.env.user.name,
+ 'use_tool_time': self.need_knife_time,
+ 'reason_for_applying': '工单用刀',
+
'sf_cam_work_order_program_knife_plan_id': self.id
})
self.sf_functional_tool_assembly_id = record.id
# 将计划执行状态改为执行中
self.env['sf.cam.work.order.program.knife.plan'].search(
- [('barcode_id', '=', self.barcode_id.id)]).write(
+ [('name', '=', self.name), ('functional_tool_name', '=', self.functional_tool_name)]).write(
{'plan_execute_status': '1',
'applicant': self.env.user.name})
@@ -676,16 +700,19 @@ class CAMWorkOrderProgramKnifePlan(models.Model):
:return:
"""
self.env['sf.functional.tool.assembly'].search(
- [('barcode_id', '=', self.barcode_id.id),
+ [('assembly_order_code', '=', self.sf_functional_tool_assembly_id.assembly_order_code),
('loading_task_source', '=', '0')]).unlink()
# 将计划执行状态改为待执行,同时清除申请人、功能刀具组装字段数据
self.env['sf.cam.work.order.program.knife.plan'].search(
- [('barcode_id', '=', self.barcode_id.id)]).write(
+ [('name', '=', self.name), ('functional_tool_name', '=', self.functional_tool_name)]).write(
{'plan_execute_status': '0',
'applicant': None,
'sf_functional_tool_assembly_id': None})
+ def create_cam_work_plan(self, **kw):
+ pass
+
class FunctionalToolAssembly(models.Model):
_name = 'sf.functional.tool.assembly'
diff --git a/sf_tool_management/views/tool_base_views.xml b/sf_tool_management/views/tool_base_views.xml
index dd8e3bf0..fb8b3a5e 100644
--- a/sf_tool_management/views/tool_base_views.xml
+++ b/sf_tool_management/views/tool_base_views.xml
@@ -756,21 +756,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -780,13 +788,13 @@
sf.cam.work.order.program.knife.plan