diff --git a/sf_base/__manifest__.py b/sf_base/__manifest__.py index 0e23a23a..77165cde 100644 --- a/sf_base/__manifest__.py +++ b/sf_base/__manifest__.py @@ -10,13 +10,13 @@ """, 'category': 'YZ', 'website': 'https://www.sf.jikimo.com', - 'depends': ['account', 'base'], + 'depends': ['account', 'base', 'mrp'], 'data': [ 'security/group_security.xml', 'security/ir.model.access.csv', 'views/mrs_base_view.xml', 'views/mrs_common_view.xml', - 'views/menu_view.xml' + "views/menu_view.xml" ], 'demo': [ diff --git a/sf_base/models/sf_base.py b/sf_base/models/sf_base.py index da60ccf2..453f6eb0 100644 --- a/sf_base/models/sf_base.py +++ b/sf_base/models/sf_base.py @@ -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): diff --git a/sf_base/views/menu_view.xml b/sf_base/views/menu_view.xml index 863aa6f6..65ffadf6 100644 --- a/sf_base/views/menu_view.xml +++ b/sf_base/views/menu_view.xml @@ -17,9 +17,9 @@ groups="base.group_system"/>--> diff --git a/sf_base/views/mrs_base_view.xml b/sf_base/views/mrs_base_view.xml index 08e6c095..1d6aeaf3 100644 --- a/sf_base/views/mrs_base_view.xml +++ b/sf_base/views/mrs_base_view.xml @@ -108,7 +108,7 @@ + options="{'no_create': True}"/> @@ -121,25 +121,27 @@
- + @@ -275,24 +277,24 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -314,16 +316,21 @@ - #------------------机床注册------------------ + #------------------机床注册------------------ search.mrs.machine_tool mrs.machine_tool - + + + + + + + @@ -335,55 +342,71 @@ - + + + - + form.mrs.machine_tool mrs.machine_tool
+
+
- - + + + - + + + + + + - + - - - + + + + @@ -394,20 +417,21 @@ - 机床注册 + 机床 ir.actions.act_window mrs.machine_tool tree,form +

- [机床注册] + [机床] 还没有哦!点左上角的[创建]按钮,沙发归你了!

- #------------------控制系统------------------ + #------------------控制系统------------------ search.mrs.machine.control_system diff --git a/sf_mrs_sync/data/sf_cron.xml b/sf_mrs_sync/data/sf_cron.xml index 484c7f47..1d41776b 100644 --- a/sf_mrs_sync/data/sf_cron.xml +++ b/sf_mrs_sync/data/sf_cron.xml @@ -80,16 +80,16 @@ - - 同步注册机床 - - code - model.enroll_machine_tool() - 1 - days - -1 - - + + + + + + + + + + 同步资源库机床型号 diff --git a/sf_mrs_sync/models/sf_sync_common.py b/sf_mrs_sync/models/sf_sync_common.py index 079e31de..2520f6fa 100644 --- a/sf_mrs_sync/models/sf_sync_common.py +++ b/sf_mrs_sync/models/sf_sync_common.py @@ -517,49 +517,7 @@ class MachineTool(models.Model): url = '/api/machine_tool/list' crea_url = '/api/machine_tool/create' - # 注册同步机床 - 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 = { - 'id': item.id, - 'name': item.name, - 'code': item.code, - 'precision': item.precision, - 'knife_type': item.knife_type, - 'registration_date': str(item.registration_date), - 'number_of_knife_library': item.number_of_knife_library, - 'rotate_speed': item.rotate_speed, - 'number_of_axles': item.number_of_axles, - # 'control_system_id': item.control_system_id.id, - # 'type_id': item.type_id.id, - # 'brand_id': item.brand_id.id, - 'factory_id': item.factory_id.id, - '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) - print(type(kw)) - r = requests.post(strurl, json={}, data={'kw': kw}, headers=headers) - - else: - raise ValidationError("没有机床信息") # 定时同步机床 def sync_machine_tool(self): diff --git a/sf_mrs_sync/views/sf_sync_config_settings_views.xml b/sf_mrs_sync/views/sf_sync_config_settings_views.xml index f584b6a3..4f488a33 100644 --- a/sf_mrs_sync/views/sf_sync_config_settings_views.xml +++ b/sf_mrs_sync/views/sf_sync_config_settings_views.xml @@ -28,7 +28,8 @@
-