This commit is contained in:
gqh
2022-10-13 16:43:36 +08:00
parent fcea2e25ab
commit 7e98d35f14
7 changed files with 199 additions and 110 deletions

View File

@@ -1,7 +1,13 @@
# -*- coding: utf-8 -*-
import logging
from datetime import datetime
import requests
import json
from odoo import fields, models, api
from odoo.exceptions import ValidationError
from odoo.http import request
from odoo.addons.sf_base.commons.common import Common
_logger = logging.getLogger(__name__)
@@ -39,8 +45,8 @@ class MachineBrand(models.Model):
class MachineTool(models.Model):
_name = 'mrs.machine_tool'
_description = '机床'
code = fields.Char('编码')
MTcode = fields.Char("编码")
code = fields.Char('行业编码')
name = fields.Char('名称')
knife_type = fields.Selection(
[("BT40", "BT40"), ("BT30", "BT30")],
@@ -61,12 +67,11 @@ class MachineTool(models.Model):
control_system_id = fields.Many2one('mrs.machine.control_system',
string="控制系统")
# 多个机床型号对应一个机床
type_id = fields.Many2one('mrs.machine_tool.type', '型号',
compute='_compute_type_id')
type_id = fields.Many2one('mrs.machine_tool.type', '型号')
brand_id = fields.Many2one('mrs.machine.brand', string='品牌')
state = fields.Selection(
[("正常", "正常"), ("故障", "故障"), ("不可用", "不可用")],
default="", string="状态")
default='正常', string="状态")
# 一个机床对应一個加工工厂,一个加工工厂对应多个机床
factory_id = fields.Many2one('res.partner', string='所属工厂',
@@ -78,7 +83,108 @@ class MachineTool(models.Model):
active = fields.Boolean('有效', default=True)
@api.constrains('rotate_speed')
def _check_rotate_speed(self):
if self.rotate_speed <= 0:
raise ValidationError("转速不能为0")
@api.constrains('precision')
def _check_precision(self):
if self.precision <= 0.00:
raise ValidationError("加工精度不能为0")
@api.constrains('number_of_knife_library')
def _check_number_of_knife_library(self):
if self.number_of_knife_library <= 0:
raise ValidationError("刀库数量不能为0")
@api.constrains('x_axis')
def _check_x_axis(self):
if self.x_axis <= 0:
raise ValidationError("加工行程里x轴不能为0")
@api.constrains('y_axis')
def _check_y_axis(self):
if self.y_axis <= 0:
raise ValidationError("加工行程里y轴不能为0")
@api.constrains('z_axis')
def _check_z_axis(self):
if self.z_axis <= 0:
raise ValidationError("加工行程里z轴不能为0")
@api.constrains('b_axis')
def _check_b_axis(self):
if self.number_of_axles == '四轴':
print(self.number_of_axles)
if self.b_axis <= 0:
raise ValidationError("加工行程里b轴不能为0")
@api.constrains('c_axis')
def _check_c_axis(self):
if self.number_of_axles == '五轴':
if self.c_axis <= 0:
raise ValidationError("加工行程里c轴不能为0")
@api.onchange('type_id')
def get_type_info(self):
for item in self:
item.knife_type = item.type_id.knife_type
item.number_of_knife_library = item.type_id.number_of_knife_library
item.number_of_axles = item.type_id.number_of_axles
item.rotate_speed = item.type_id.rotate_speed
item.precision = item.type_id.precision
item.control_system_id = item.type_id.control_system_id
item.x_axis = item.type_id.x_axis
item.y_axis = item.type_id.y_axis
item.z_axis = item.type_id.z_axis
item.b_axis = item.type_id.b_axis
item.c_axis = item.type_id.c_axis
# 注册同步机床
def enroll_machine_tool(self):
sf_sync_config = self.env['res.config.settings'].get_values()
token = sf_sync_config['token']
mrs_secret_key = sf_sync_config['mrs_secret_key']
headers = Common.get_headers(self, token, mrs_secret_key)
strurl = sf_sync_config['mrs_url'] + self.crea_url
objs_all = request.env['mrs.machine_tool'].sudo().search([])
machine_tool_list = []
if objs_all:
for item in objs_all:
val = {
'factory_token': token,
'id': item.id,
'name': item.name,
'code': item.code,
'precision': item.precision,
'knife_type': item.knife_type,
'number_of_knife_library': item.number_of_knife_library,
'rotate_speed': item.rotate_speed,
'number_of_axles': item.number_of_axles,
'control_system_id': self.env['mrs.machine.control_system'].search(
[('id', '=', item.control_system_id.id)]).code,
'type_id': self.env['mrs.machine_tool.type'].search([('id', '=', item.type_id.id)]).code,
'brand_id': self.env['mrs.machine.brand'].search([('id', '=', item.brand_id.id)]).code,
'supplier_id': item.supplier_id.id,
'x_axis': item.x_axis,
'y_axis': item.y_axis,
'z_axis': item.z_axis,
'b_axis': item.b_axis,
'c_axis': item.c_axis,
'state': item.state,
'active': item.active,
}
machine_tool_list.append(val)
# kw = machine_tool_list
kw = json.dumps(machine_tool_list, ensure_ascii=False)
r = requests.post(strurl, json={}, data={'kw': kw}, headers=headers)
print(r)
if r == 200:
raise ValidationError("机床注册成功")
else:
raise ValidationError("没有注册机床信息")
class MachineToolType(models.Model):