新增工单字段

This commit is contained in:
gqh
2022-11-03 15:09:36 +08:00
parent d375787160
commit 3dfbd7a1e4
4 changed files with 240 additions and 87 deletions

View File

@@ -247,3 +247,20 @@ class CuttingToolType(models.Model):
brand_id = fields.Many2one('mrs.machine.brand', string='品牌')
remark = fields.Text('备注')
active = fields.Boolean('有效', default=True)
class CNCprocessing(models.Model):
_name = 'cnc.processing'
_description = "CNC加工"
FNo = fields.Char(string="序号")
FPGName = fields.Char(string="程序名")
FKnifeName = fields.Char(string="刀具名称")
FDNo = fields.Char(string="刀号")
FWorkType = fields.Char(string="加工类型")
FXY = fields.Char(string="余量_X/Y")
FZ = fields.Char(string="余量_Z")
FJGSD = fields.Char(string="加工深度(Z)")
FSCCD = fields.Char(string="刀具伸出长度")
FDJSpec = fields.Char(string="刀柄型号")
FJGDate = fields.Char(string="预计加工时间")
FComment = fields.Char(string="备注")

View File

@@ -13,6 +13,7 @@ access_mrs_production_materials,mrs_production_materials,model_mrs_production_ma
access_mrs_materials_model,mrs_materials_model,model_mrs_materials_model,base.group_user,1,1,1,1
access_mrs_processing_technology,mrs_processing_technology,model_mrs_processing_technology,base.group_user,1,1,1,1
access_sf_tray,sf_tray,model_sf_tray,base.group_user,1,1,1,1
access_cnc_processing,cnc_processing,model_cnc_processing,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
13 access_mrs_processing_technology mrs_processing_technology model_mrs_processing_technology base.group_user 1 1 1 1
14 access_sf_tray sf_tray model_sf_tray base.group_user 1 1 1 1
15 access_cnc_processing cnc_processing model_cnc_processing base.group_user 1 1 1 1
16
17
18
19

View File

@@ -2,6 +2,7 @@
# Part of SmartGo. See LICENSE file for full copyright and licensing details.
import base64
import logging
import math
import qrcode
@@ -15,6 +16,13 @@ from odoo.exceptions import UserError
_logger = logging.getLogger(__name__)
class CNCprocessing(models.Model):
_inherit = 'cnc.processing'
_description = "CNC加工"
workorder_id = fields.Many2one('mrp.workorder' ,string="工单")
class Tray(models.Model):
_inherit = 'sf.tray'
_description = '托盘'
@@ -87,32 +95,90 @@ class MrpWorkOrder(models.Model):
related='tray_id.state')
# def get_tray_info(self):
@api.onchange('X_axis', 'Y_axis', 'Z_axis')
def get_center_point(self):
return 'X:%s,Y:%s,Z:%s' % (self.X_axis, self.Y_axis, self.Z_axis)
# @api.onchange('X_axis', 'Y_axis', 'Z_axis')
# def get_center_point(self):
# return 'X:%s,Y:%s,Z:%s' % (self.X_axis, self.Y_axis, self.Z_axis)
# 加工面
surface = fields.Selection([("前面", "前面"), ("后面", "后面"), ("左面", "左面"), ("右面", "右面"),
("上面", "上面")], required=True, default="顶面", string="加工面")
material_center_point = fields.Char(string='配料中心点')
X1_axis = fields.Float(string='Lx1', default=0)
Y1_axis = fields.Float(string='Ly1', default=0)
Z1_axis = fields.Float(string='Lz1', default=0)
X2_axis = fields.Float(string='Lx2', default=0)
Y2_axis = fields.Float(string='Ly2', default=0)
Z2_axis = fields.Float(string='Lz2', default=0)
X3_axis = fields.Float(string='Fx3', default=0)
Y3_axis = fields.Float(string='Fy3', default=0)
Z3_axis = fields.Float(string='Fz3', default=0)
X4_axis = fields.Float(string='Fx4', default=0)
Y4_axis = fields.Float(string='Fy4', default=0)
Z4_axis = fields.Float(string='Fz4', default=0)
X5_axis = fields.Float(string='Rx5', default=0)
Y5_axis = fields.Float(string='Ry5', default=0)
Z5_axis = fields.Float(string='Rz5', default=0)
X6_axis = fields.Float(string='Rx6', default=0)
Y6_axis = fields.Float(string='Ry6', default=0)
Z6_axis = fields.Float(string='Rz6', default=0)
X7_axis = fields.Float(string='Bx7', default=0)
Y7_axis = fields.Float(string='By7', default=0)
Z7_axis = fields.Float(string='Bz7', default=0)
X8_axis = fields.Float(string='Bx8', default=0)
Y8_axis = fields.Float(string='By8', default=0)
Z8_axis = fields.Float(string='Bz8', default=0)
X9_axis = fields.Float(string='Uz9', default=0)
Y9_axis = fields.Float(string='Uz9', default=0)
Z9_axis = fields.Float(string='Uz9', default=0)
X10_axis = fields.Float(string='Uz10', default=0)
Y10_axis = fields.Float(string='Uz10', default=0)
Z10_axis = fields.Float(string='Uz10', default=0)
surface = fields.Selection([("上面", "上面"), ("下面", "下面"), ("左面", "左面"), ("右面", "右面"),
("顶面", "顶面")], required=True, default="顶面")
material_center_point = fields.Char(string='配料中心点', default=get_center_point)
X1_axis = fields.Integer(string='x1', default=0)
Y1_axis = fields.Integer(string='y1', default=0)
X2_axis = fields.Integer(string='x2', default=0)
Y2_axis = fields.Integer(string='y2', default=0)
X3_axis = fields.Integer(string='x3', default=0)
Y3_axis = fields.Integer(string='y3', default=0)
X4_axis = fields.Integer(string='x4', default=0)
Y4_axis = fields.Integer(string='y4', default=0)
X5_axis = fields.Integer(string='x5', default=0)
Y5_axis = fields.Integer(string='y5', default=0)
X6_axis = fields.Integer(string='x6', default=0)
Y6_axis = fields.Integer(string='y6', default=0)
X7_axis = fields.Integer(string='x7', default=0)
Y7_axis = fields.Integer(string='y7', default=0)
X8_axis = fields.Integer(string='x8', default=0)
Y8_axis = fields.Integer(string='y8', default=0)
# 扫码绑定托盘方法
def gettray(self):
return ""
# 计算配料中心点和与x轴倾斜度方法
def getcenter(self):
x1 = self.X1_axis
x2 = self.X2_axis
x3 = self.X3_axis
x4 = self.X4_axis
x5 = self.X5_axis
x6 = self.X6_axis
x7 = self.X7_axis
x8 = self.X8_axis
y1 = self.Y1_axis
y2 = self.Y2_axis
y3 = self.Y3_axis
y4 = self.Y4_axis
y5 = self.Y5_axis
y6 = self.Y6_axis
y7 = self.Y7_axis
y8 = self.Y8_axis
z1 = self.Z9_axis
x0 = ((x3 - x4) * (x2 * y1 - x1 * y2) - (x1 - x2) * (x4 * y3 - x3 * y4)) / (
(x3 - x4) * (y1 - y2) - (x1 - x2) * (y3 - y4))
y0 = ((y3 - y4) * (y2 * x1 - y1 * x2) - (y1 - y2) * (y4 * x3 - y3 * x4)) / (
(y3 - y4) * (x1 - x2) - (y1 - y2) * (x3 - x4))
x1 = ((x7 - x8) * (x6 * y5 - x5 * y7) - (x5 - x6) * (x8 * y7 - x7 * y8)) / (
(x7 - x8) * (y5 - y6) - (x5 - x6) * (y7 - y8));
y1 = ((y7 - y8) * (y6 * x5 - y5 * x7) - (y5 - y6) * (y8 * x7 - y7 * x8)) / (
(y7 - y8) * (x5 - x6) - (y5 - y6) * (x7 - x8))
x = (x0 + x1) / 2
y = (y0 + y1) / 2
z = z1 / 2
jd = math.atan2((x7 - x8), (y7 - y8))
jdz = jd * 180 / math.pi
print("(%s,%s)" % (x, y))
self.material_center_point = ("(%s,%s,%s)" % (x, y, z))
self.X_deviation_angle = jdz
X_deviation_angle = fields.Integer(string="X轴偏差度", default=0)
test_results = fields.Selection([("合格", "合格"), ("返工", "返工"), ("报废", "报废")], string="检测结果")
cnc_ids = fields.One2many("cnc.processing",'workorder_id', string="CNC加工")
# @api.depends('tray_id')
# def updateTrayState(self):
#

View File

@@ -6,82 +6,151 @@
<field name="model">mrp.workorder</field>
<field name="inherit_id" ref="mrp.mrp_production_workorder_form_view_inherit"/>
<field name="arch" type="xml">
<xpath expr="//page[last()]" position="after">
<page string="托盘参数" >
<xpath expr="//page[last()]" position="after">
<page string="装夹托盘">
<group>
<field name="tray_id" domain="[('state', '!=', '占用'),('state', '!=', '报损')]"/>
<field name="tray_code"/>
<field name="tray_state"/>
<field name="surface" widget="radio"/>
<div class="col-12 col-lg-6 o_setting_box">
<button type="object" class="oe_highlight" name="gettray" string="扫描托盘"
/>
</div>
</group>
</page>
</xpath>
<xpath expr="//page[last()]" position="after">
</xpath>
<xpath expr="//page[last()]" position="after">
<page string="三元前置检测定位参数" >
<page string="三元前置检测定位参数">
<group>
<field name="surface" widget="radio"/>
<!-- <field name = 'X_axis'/>-->
<!-- <field name = 'Y_axis'/>-->
<!-- <field name = 'Z_axis'/>-->
<field name="material_center_point"/>
<field name ='X_deviation_angle' />
</group>
<group>
<div class="o_address_format">
<label for="X1_axis" string="x1"/>
<field name = 'X1_axis' class="o_address_city"/>
<label for="Y1_axis" string="y1"/>
<field name = 'Y1_axis' class="o_address_city"/>
</div>
<div class="o_address_format">
<label for="X2_axis" string="x2"/>
<field name = 'X2_axis' class="o_address_city"/>
<label for="Y2_axis" string="y2"/>
<field name = 'Y2_axis' class="o_address_city"/>
</div>
<div class="o_address_format">
<label for="X3_axis" string="x3"/>
<field name = 'X3_axis' class="o_address_city"/>
<label for="Y3_axis" string="y3"/>
<field name = 'Y3_axis' class="o_address_city"/>
</div>
<div class="o_address_format">
<label for="X4_axis" string="x4"/>
<field name = 'X4_axis' class="o_address_city"/>
<label for="Y4_axis" string="y4"/>
<field name = 'Y4_axis' class="o_address_city"/>
</div>
<div class="o_address_format">
<label for="X5_axis" string="x5"/>
<field name = 'X5_axis' class="o_address_city"/>
<label for="Y5_axis" string="y5"/>
<field name = 'Y5_axis' class="o_address_city"/>
</div>
<div class="o_address_format">
<label for="X6_axis" string="x6"/>
<field name = 'X6_axis' class="o_address_city"/>
<label for="Y6_axis" string="y6"/>
<field name = 'Y6_axis' class="o_address_city"/>
</div>
<div class="o_address_format">
<label for="X7_axis" string="x7"/>
<field name = 'X7_axis' class="o_address_city"/>
<label for="Y7_axis" string="y7"/>
<field name = 'Y7_axis' class="o_address_city"/>
</div>
<div class="o_address_format">
<label for="X8_axis" string="x8"/>
<field name = 'X8_axis' class="o_address_city"/>
<label for="Y8_axis" string="y8"/>
<field name = 'Y8_axis' class="o_address_city"/>
</div>
<field name="surface" widget="radio"/>
</group>
</group>
<group>
<div class="o_address_city">
<label for="X1_axis" string="Lx1"/>
<field name='X1_axis' class="o_address_city"/>
<label for="Y1_axis" string="Ly1"/>
<field name='Y1_axis' class="o_address_city"/>
<label for="Z1_axis" string="Lz1"/>
<field name='Z1_axis' class="o_address_city"/>
</div>
<div class="o_address_city">
<label for="X2_axis" string="Lx2"/>
<field name='X2_axis' class="o_address_city"/>
<label for="Y2_axis" string="Ly2"/>
<field name='Y2_axis' class="o_address_city"/>
<label for="Z2_axis" string="Lz2"/>
<field name='Z2_axis' class="o_address_city"/>
</div>
<div class="o_address_city">
<label for="X3_axis" string="Fx3"/>
<field name='X3_axis' class="o_address_city"/>
<label for="Y3_axis" string="Fy3"/>
<field name='Y3_axis' class="o_address_city"/>
<label for="Z3_axis" string="Fz3"/>
<field name='Z3_axis' class="o_address_city"/>
</div>
<div class="o_address_city">
<label for="X4_axis" string="Fx4"/>
<field name='X4_axis' class="o_address_city"/>
<label for="Y4_axis" string="Fy4"/>
<field name='Y4_axis' class="o_address_city"/>
<label for="Z4_axis" string="Fz4"/>
<field name='Z4_axis' class="o_address_city"/>
</div>
<div class="o_address_city">
<label for="X5_axis" string="Rx5"/>
<field name='X5_axis' class="o_address_city"/>
<label for="Y5_axis" string="Ry5"/>
<field name='Y5_axis' class="o_address_city"/>
<label for="Z5_axis" string="Rz5"/>
<field name='Z5_axis' class="o_address_city"/>
</div>
<div class="o_address_city">
<label for="X6_axis" string="Rx6"/>
<field name='X6_axis' class="o_address_city"/>
<label for="Y6_axis" string="Ry6"/>
<field name='Y6_axis' class="o_address_city"/>
<label for="Z6_axis" string="Rz6"/>
<field name='Z6_axis' class="o_address_city"/>
</div>
<div class="o_address_city">
<label for="X7_axis" string="Bx7"/>
<field name='X7_axis' class="o_address_city"/>
<label for="Y7_axis" string="By7"/>
<field name='Y7_axis' class="o_address_city"/>
<label for="Z7_axis" string="Bz7"/>
<field name='Z7_axis' class="o_address_city"/>
</div>
<div class="o_address_city">
<label for="X8_axis" string="Bx8"/>
<field name='X8_axis' class="o_address_city"/>
<label for="Y8_axis" string="By8"/>
<field name='Y8_axis' class="o_address_city"/>
<label for="Z8_axis" string="Bz8"/>
<field name='Z8_axis' class="o_address_city"/>
</div>
<div class="o_address_city">
<label for="X9_axis" string="Ux9"/>
<field name='X9_axis' class="o_address_city"/>
<label for="Y9_axis" string="Uy9"/>
<field name='Y9_axis' class="o_address_city"/>
<label for="Z9_axis" string="Uz9"/>
<field name='Z9_axis' class="o_address_city"/>
</div>
<div class="o_address_city">
<label for="X10_axis" string="Ux10"/>
<field name='X10_axis' class="o_address_city"/>
<label for="Y10_axis" string="Uy10"/>
<field name='Y10_axis' class="o_address_city"/>
<label for="Z10_axis" string="Uz10"/>
<field name='Z10_axis' class="o_address_city"/>
</div>
<div class="col-12 col-lg-6 o_setting_box">
<button type="object" class="oe_highlight" name="getcenter" string="中心定位"
/>
</div>
</group>
<group>
<field name="material_center_point"/>
<field name='X_deviation_angle'/>
</group>
</page>
</xpath>
</xpath>
<xpath expr="//page[last()]" position="after">
<page string="CNC加工">
<group>
<field name="cnc_ids" widget="one2many"/>
</group>
</page>
</xpath>
<xpath expr="//page[last()]" position="after">
<page string="后置三元检测">
<group>
<field name="test_results" widget="radio"/>
</group>
</page>
</xpath>
</field>
</record>