diff --git a/sf_base/models/sf_base.py b/sf_base/models/sf_base.py index 453f6eb0..d10f190e 100644 --- a/sf_base/models/sf_base.py +++ b/sf_base/models/sf_base.py @@ -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="备注") diff --git a/sf_base/security/ir.model.access.csv b/sf_base/security/ir.model.access.csv index 5b4aa249..930fcd07 100644 --- a/sf_base/security/ir.model.access.csv +++ b/sf_base/security/ir.model.access.csv @@ -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 diff --git a/sf_route_workcenter/models/workcenter.py b/sf_route_workcenter/models/workcenter.py index feccccb4..4340b465 100644 --- a/sf_route_workcenter/models/workcenter.py +++ b/sf_route_workcenter/models/workcenter.py @@ -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): # diff --git a/sf_route_workcenter/views/sf_workorder.xml b/sf_route_workcenter/views/sf_workorder.xml index a12db9f0..daa77756 100644 --- a/sf_route_workcenter/views/sf_workorder.xml +++ b/sf_route_workcenter/views/sf_workorder.xml @@ -6,82 +6,151 @@ mrp.workorder - - + + - - - + +
+
-
- + + - + - - - - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ +
+ + + +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ + +
+
+ + +
+ + + + +
-
+
+ + + + + + + + + + + + + + + + + + + +