diff --git a/sf_base/models/__init__.py b/sf_base/models/__init__.py
index cc906ab8..6811dd70 100644
--- a/sf_base/models/__init__.py
+++ b/sf_base/models/__init__.py
@@ -3,6 +3,7 @@ from . import common
from . import tool_base_new
from . import fixture
from . import functional_fixture
+from . import workpiece_clamping
diff --git a/sf_base/models/workpiece_clamping.py b/sf_base/models/workpiece_clamping.py
new file mode 100644
index 00000000..2f90da48
--- /dev/null
+++ b/sf_base/models/workpiece_clamping.py
@@ -0,0 +1,110 @@
+from odoo import models, fields, api
+
+
+class WorkpieceClamping(models.Model):
+ _name = 'sf.workpiece.clamping'
+ _description = "工件装夹"
+ # 以下为坯料(工件)申请信息
+ apply_code = fields.Char(string="申请坯料编码", size=25, required=True)
+ apply_name = fields.Char(string="申请坯料名称", size=25, required=True)
+ material_id = fields.Many2one('sf.production.materials', string="坯料材料", required=True)
+ apply_width = fields.Float(string="申请宽度", required=True)
+ apply_length = fields.Float(string="申请长度", required=True)
+ apply_height = fields.Float(string="申请高度", required=True)
+ apply_weight = fields.Float(string="申请重量", required=True)
+ apply_diameter = fields.Float(string="申请直径", required=True)
+ surface_accuracy = fields.Char(string="表面精度", required=True)
+ # 以下为坯料(工件)装夹信息
+ chuck_name = fields.Char(string="卡盘名称", required=True)
+ chuck_brand_id = fields.Many2one('sf.machine.brand', string="卡盘品牌", required=True)
+ chuck_type_id = fields.Char(string="卡盘类型", required=True)
+ chuck_model_id = fields.Char(string="卡盘型号", required=True)
+ tray_name = fields.Char(string="托盘名称", required=True)
+ tray_brand_id = fields.Many2one('sf.machine.brand', string="托盘品牌", required=True)
+ tray_type_id = fields.Char(string="托盘类型", required=True)
+ tray_model_id = fields.Char(string="托盘型号", required=True)
+ real_code = fields.Char(string="真实坯料编码", size=25, required=True)
+ real_name = fields.Char(string="真实坯料名称", size=25, required=True)
+ real_width = fields.Float(string="真实宽度", required=True)
+ real_length = fields.Float(string="真实长度", required=True)
+ real_height = fields.Float(string="真实高度", required=True)
+ real_diameter = fields.Float(string="真实直径", required=True)
+ # 以下为坯料(工件)预调信息
+ # hole_site = fields.Char(string="孔位", required=True)
+ # curve = fields.Char(string="曲线", required=True)
+ # straight_line = fields.Char(string="直线", required=True)
+ # x_axis = fields.Float(string="X轴", required=True)
+ # y_axis = fields.Float(string="Y轴", required=True)
+ # z_axis = fields.Float(string="Z轴", required=True)
+ # tool_radius = fields.Float(string="刀具半径", required=True)
+ # tool_length = fields.Float(string="刀具长度", required=True)
+ # tool_offset_point = fields.Float(string="刀具偏移点", required=True)
+ # tool_compensation_value = fields.Float(string="刀具补偿值", required=True)
+ # cutting_spindle_speed = fields.Float(string="切削主轴转速", required=True)
+ # cutting_feed_rate = fields.Float(string="切削进给速度", required=True)
+ # depth_of_cutting = fields.Float(string="切削深度", required=True)
+ # cutting_direction = fields.Char(string="切削方向", required=True)
+ # cnc_program_information = fields.Char(string="CNC程序信息", required=True)
+
+
+class StockRemoval(models.Model):
+ _name = 'sf.stock.removal'
+ _description = "出库"
+
+ code = fields.Char(string="功能夹具编码", size=25, required=True)
+ name = fields.Char(string="功能夹具名称", size=25, required=True)
+ type = fields.Char(string="功能夹具类型", required=True)
+ production_line = fields.Char(string="生产线", required=True)
+ machine_tool = fields.Many2one('sf.machine_tool', string="机床", required=True)
+
+
+class Assemble(models.Model):
+ _name = 'sf.assemble'
+ _description = "组合装夹"
+
+ functional_fixture_code = fields.Char(string="功能夹具编码", size=25, required=True)
+ functional_fixture_name = fields.Char(string="功能夹具名称", size=25, required=True)
+ functional_fixture_type = fields.Char(string="功能夹具类型", required=True)
+ chuck_name = fields.Char(string="卡盘名称", required=True)
+ chuck_brand_id = fields.Many2one('sf.machine.brand', string="卡盘品牌", required=True)
+ chuck_type_id = fields.Char(string="卡盘类型", required=True)
+ chuck_model_id = fields.Char(string="卡盘型号", required=True)
+ tray_name = fields.Char(string="托盘名称", required=True)
+ tray_brand_id = fields.Many2one('sf.machine.brand', string="托盘品牌", required=True)
+ tray_type_id = fields.Char(string="托盘类型", required=True)
+ tray_model_id = fields.Char(string="托盘型号", required=True)
+ real_code = fields.Char(string="真实坯料编码", size=25, required=True)
+ real_name = fields.Char(string="真实坯料名称", size=25, required=True)
+ total_wight = fields.Float(string="总重量", required=True)
+ maximum_carrying_weight = fields.Char(string="最大承载重量[kg]")
+ maximum_clamping_force = fields.Char(string="最大夹持力[n]")
+ production_line = fields.Char(string="生产线", required=True)
+ # 以下为智能工厂工单带过来的机床信息
+ machine_tool = fields.Many2one('sf.machine_tool', string="机床名称", required=True)
+ machine_tool_code = fields.Char(string="机床编码", required=True)
+ machine_tool_startime = fields.Date(string="机床开始加工时间", required=True)
+ # 以下为智能工厂工单带过来的信息
+ apply_staff = fields.Char(string="申请人", required=True)
+ apply_time = fields.Date(string="申请时间", required=True)
+ apply_reason = fields.Char(string="申请原因", required=True)
+ # 以下为装夹的信息
+ preset_staff = fields.Char(string="预调名称", required=True)
+ preset_time = fields.Date(string="预调时间", required=True)
+ material_taker = fields.Char(string="领料人", required=True)
+ material_removal_time = fields.Date(string="领料出库时间", required=True)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sf_base/views/menu_fixture_view.xml b/sf_base/views/menu_fixture_view.xml
index 7186fe35..883b6599 100644
--- a/sf_base/views/menu_fixture_view.xml
+++ b/sf_base/views/menu_fixture_view.xml
@@ -38,4 +38,11 @@
name="功能夹具"
sequence="4"
/>
+
+
\ No newline at end of file
diff --git a/sf_base/views/workpiece_clamping_view.xml b/sf_base/views/workpiece_clamping_view.xml
new file mode 100644
index 00000000..9b67a3a0
--- /dev/null
+++ b/sf_base/views/workpiece_clamping_view.xml
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ search.sf.workpiece.clamping
+ sf.workpiece.clamping
+
+
+
+
+
+
+
+
+
+
+ 工件夹具
+ sf.workpiece.clamping
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 工件夹具
+ sf.workpiece.clamping
+
+
+
+
+
+
+ 工件夹具
+ ir.actions.act_window
+ sf.workpiece.clamping
+ tree,form
+
+
+
\ No newline at end of file