From 5b1d347fd42e13916f98bf2bc0e056dd62bb886d Mon Sep 17 00:00:00 2001 From: "qihao.gong@jikimo.com" Date: Tue, 28 Nov 2023 17:23:49 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=9D=83=E9=99=90=E8=A7=92=E8=89=B2=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96coding=E4=BB=A3=E7=A0=81=E6=89=AB=E6=8F=8F?= =?UTF-8?q?=E8=AD=A6=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/models/base.py | 410 +++++++++---------- sf_maintenance/security/group_security.xml | 15 +- sf_maintenance/security/ir.model.access.csv | 12 +- sf_manufacturing/security/group_security.xml | 17 - 4 files changed, 225 insertions(+), 229 deletions(-) diff --git a/sf_base/models/base.py b/sf_base/models/base.py index 29e37630..f35b03e2 100644 --- a/sf_base/models/base.py +++ b/sf_base/models/base.py @@ -41,211 +41,211 @@ class MachineBrand(models.Model): # 机床 -class MachineTool(models.Model): - _name = 'sf.machine_tool' - _description = '机床' - - def get_no(self): - partner = self.env['sf.machine_tool'].sudo().search( - [('MTcode', '!=', '')], - limit=1, - order="id desc") - if not partner: - num = "%04d" % 1 - - else: - m = int(partner.MTcode) + 1 - num = "%04d" % m - return num - - MTcode = fields.Char("编码", default=get_no) - code = fields.Char('行业编码') - name = fields.Char('名称') - knife_type = fields.Selection( - [("BT40", "BT40"), ("BT30", "BT30")], - default="", string="刀把类型") - number_of_knife_library = fields.Integer('刀库数量(把)') - rotate_speed = fields.Integer('转速') - number_of_axles = fields.Selection( - [("三轴", "三轴"), ("四轴", "四轴"), ("五轴", "五轴")], - default="", string="轴数") - # 加工进程 - x_axis = fields.Integer('X轴') - y_axis = fields.Integer('Y轴') - z_axis = fields.Integer('Z轴') - b_axis = fields.Integer('B轴') - c_axis = fields.Integer('C轴') - remark = fields.Char('备注') - is_binding = fields.Boolean('是否绑定机床', default=False) - precision = fields.Float('加工精度') - control_system_id = fields.Many2one('sf.machine.control_system', - string="控制系统") - # 多个机床型号对应一个机床 - type_id = fields.Many2one('sf.machine_tool.type', '型号') - brand_id = fields.Many2one('sf.machine.brand', string='品牌') - state = fields.Selection( - [("正常", "正常"), ("故障", "故障"), ("不可用", "不可用")], - default='正常', string="机床状态") - # 0606新增字段 - machine_tool_picture = fields.Binary('图片') - heightened_way = fields.Selection([ - ('sifudianji', '伺服电机驱动'), - ('youyagang', '油压缸驱动'), - ('chilunjia', '齿轮架驱动') - ], string="主轴加高方式", default='sifudianji') - workpiece_load = fields.Char('工件负载') - lead_screw = fields.Char('丝杆') - workbench_L = fields.Char('工作台长度(mm)') - workbench_W = fields.Char('工作台宽度(mm)') - guide_rail = fields.Char('导轨') - machine_tool_L = fields.Char('机床长度(mm)') - machine_tool_W = fields.Char('机床宽度(mm)') - machine_tool_H = fields.Char('机床高度(mm)') - feed_speed = fields.Char('进给速度(mm/min)') - tool_speed = fields.Char('刀具速度') - distance = fields.Char('主轴端面至工作台面距离(mm)') - taper = fields.Char('主轴锥度(°)') - torque = fields.Char('主轴点击扭矩(n/m)') - motor_power = fields.Char('主轴电机功率(kw)') - tool_quality_max = fields.Char('刀具最大质量') - tool_long_max = fields.Char('刀具最大长度') - tool_diameter_max = fields.Char('刀具最大刀径') - machine_tool_category = fields.Many2one('sf.machine_tool.category', string='机床类型') - # 一个机床对应一個加工工厂,一个加工工厂对应多个机床 - factory_id = fields.Many2one('res.partner', string='所属工厂', - domain="[('is_factory', '=', True)]") - # 一个机床对应一个供应商,一个供应商对应多个机床 - supplier_id = fields.Many2one('res.partner', string='制造商', - domain="[('is_vendor', '=', True)]") - registration_date = fields.Date('注册日期') - state_zc = fields.Selection([("已注册", "已注册"), ("未注册", "未注册")], string="注册状态", default='未注册') - 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 - item.machine_tool_picture = item.type_id.machine_tool_picture - item.heightened_way = item.type_id.heightened_way - item.workpiece_load = item.type_id.workpiece_load - item.lead_screw = item.type_id.lead_screw - item.workbench_L = item.type_id.workbench_L - item.workbench_W = item.type_id.workbench_W - item.guide_rail = item.type_id.guide_rail - item.machine_tool_L = item.type_id.machine_tool_L - item.machine_tool_W = item.type_id.machine_tool_W - item.machine_tool_H = item.type_id.machine_tool_H - item.feed_speed = item.type_id.feed_speed - item.tool_speed = item.type_id.tool_speed - item.distance = item.type_id.distance - item.taper = item.type_id.taper - item.torque = item.type_id.torque - item.motor_power = item.type_id.motor_power - item.tool_quality_max = item.type_id.tool_quality_max - item.tool_long_max = item.type_id.tool_long_max - item.tool_diameter_max = item.type_id.tool_diameter_max - item.machine_tool_category = item.type_id.machine_tool_category.id - - # 注册同步机床 - def enroll_machine_tool(self): - sf_sync_config = self.env['res.config.settings'].get_values() - token = sf_sync_config['token'] - sf_secret_key = sf_sync_config['sf_secret_key'] - headers = Common.get_headers(self, token, sf_secret_key) - strurl = sf_sync_config['sf_url'] + self.crea_url - objs_all = self.env['sf.machine_tool'].search([('MTcode', '=', self.MTcode)]) - machine_tool_list = [] - if objs_all: - for item in objs_all: - val = { - 'MTcode': item.MTcode, - '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['sf.machine.control_system'].search( - [('id', '=', item.control_system_id.id)]).code, - 'type_id': self.env['sf.machine_tool.type'].search([('id', '=', item.type_id.id)]).code, - 'brand_id': self.env['sf.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, 'token': token}, headers=headers) - ret = r.json() - self.code = ret['message'] - self.state_zc = "已注册" - if r == 200: - return "机床注册成功" - else: - raise ValidationError("没有注册机床信息") +# class MachineTool(models.Model): +# _name = 'sf.machine_tool' +# _description = '机床' +# +# def get_no(self): +# partner = self.env['sf.machine_tool'].sudo().search( +# [('MTcode', '!=', '')], +# limit=1, +# order="id desc") +# if not partner: +# num = "%04d" % 1 +# +# else: +# m = int(partner.MTcode) + 1 +# num = "%04d" % m +# return num +# +# MTcode = fields.Char("编码", default=get_no) +# code = fields.Char('行业编码') +# name = fields.Char('名称') +# knife_type = fields.Selection( +# [("BT40", "BT40"), ("BT30", "BT30")], +# default="", string="刀把类型") +# number_of_knife_library = fields.Integer('刀库数量(把)') +# rotate_speed = fields.Integer('转速') +# number_of_axles = fields.Selection( +# [("三轴", "三轴"), ("四轴", "四轴"), ("五轴", "五轴")], +# default="", string="轴数") +# # 加工进程 +# x_axis = fields.Integer('X轴') +# y_axis = fields.Integer('Y轴') +# z_axis = fields.Integer('Z轴') +# b_axis = fields.Integer('B轴') +# c_axis = fields.Integer('C轴') +# remark = fields.Char('备注') +# is_binding = fields.Boolean('是否绑定机床', default=False) +# precision = fields.Float('加工精度') +# control_system_id = fields.Many2one('sf.machine.control_system', +# string="控制系统") +# # 多个机床型号对应一个机床 +# type_id = fields.Many2one('sf.machine_tool.type', '型号') +# brand_id = fields.Many2one('sf.machine.brand', string='品牌') +# state = fields.Selection( +# [("正常", "正常"), ("故障", "故障"), ("不可用", "不可用")], +# default='正常', string="机床状态") +# # 0606新增字段 +# machine_tool_picture = fields.Binary('图片') +# heightened_way = fields.Selection([ +# ('sifudianji', '伺服电机驱动'), +# ('youyagang', '油压缸驱动'), +# ('chilunjia', '齿轮架驱动') +# ], string="主轴加高方式", default='sifudianji') +# workpiece_load = fields.Char('工件负载') +# lead_screw = fields.Char('丝杆') +# workbench_L = fields.Char('工作台长度(mm)') +# workbench_W = fields.Char('工作台宽度(mm)') +# guide_rail = fields.Char('导轨') +# machine_tool_L = fields.Char('机床长度(mm)') +# machine_tool_W = fields.Char('机床宽度(mm)') +# machine_tool_H = fields.Char('机床高度(mm)') +# feed_speed = fields.Char('进给速度(mm/min)') +# tool_speed = fields.Char('刀具速度') +# distance = fields.Char('主轴端面至工作台面距离(mm)') +# taper = fields.Char('主轴锥度(°)') +# torque = fields.Char('主轴点击扭矩(n/m)') +# motor_power = fields.Char('主轴电机功率(kw)') +# tool_quality_max = fields.Char('刀具最大质量') +# tool_long_max = fields.Char('刀具最大长度') +# tool_diameter_max = fields.Char('刀具最大刀径') +# machine_tool_category = fields.Many2one('sf.machine_tool.category', string='机床类型') +# # 一个机床对应一個加工工厂,一个加工工厂对应多个机床 +# factory_id = fields.Many2one('res.partner', string='所属工厂', +# domain="[('is_factory', '=', True)]") +# # 一个机床对应一个供应商,一个供应商对应多个机床 +# supplier_id = fields.Many2one('res.partner', string='制造商', +# domain="[('is_vendor', '=', True)]") +# registration_date = fields.Date('注册日期') +# state_zc = fields.Selection([("已注册", "已注册"), ("未注册", "未注册")], string="注册状态", default='未注册') +# 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 +# item.machine_tool_picture = item.type_id.machine_tool_picture +# item.heightened_way = item.type_id.heightened_way +# item.workpiece_load = item.type_id.workpiece_load +# item.lead_screw = item.type_id.lead_screw +# item.workbench_L = item.type_id.workbench_L +# item.workbench_W = item.type_id.workbench_W +# item.guide_rail = item.type_id.guide_rail +# item.machine_tool_L = item.type_id.machine_tool_L +# item.machine_tool_W = item.type_id.machine_tool_W +# item.machine_tool_H = item.type_id.machine_tool_H +# item.feed_speed = item.type_id.feed_speed +# item.tool_speed = item.type_id.tool_speed +# item.distance = item.type_id.distance +# item.taper = item.type_id.taper +# item.torque = item.type_id.torque +# item.motor_power = item.type_id.motor_power +# item.tool_quality_max = item.type_id.tool_quality_max +# item.tool_long_max = item.type_id.tool_long_max +# item.tool_diameter_max = item.type_id.tool_diameter_max +# item.machine_tool_category = item.type_id.machine_tool_category.id +# +# # 注册同步机床 +# def enroll_machine_tool(self): +# sf_sync_config = self.env['res.config.settings'].get_values() +# token = sf_sync_config['token'] +# sf_secret_key = sf_sync_config['sf_secret_key'] +# headers = Common.get_headers(self, token, sf_secret_key) +# strurl = sf_sync_config['sf_url'] + self.crea_url +# objs_all = self.env['sf.machine_tool'].search([('MTcode', '=', self.MTcode)]) +# machine_tool_list = [] +# if objs_all: +# for item in objs_all: +# val = { +# 'MTcode': item.MTcode, +# '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['sf.machine.control_system'].search( +# [('id', '=', item.control_system_id.id)]).code, +# 'type_id': self.env['sf.machine_tool.type'].search([('id', '=', item.type_id.id)]).code, +# 'brand_id': self.env['sf.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, 'token': token}, headers=headers) +# ret = r.json() +# self.code = ret['message'] +# self.state_zc = "已注册" +# if r == 200: +# return "机床注册成功" +# else: +# raise ValidationError("没有注册机床信息") class MachineToolType(models.Model): diff --git a/sf_maintenance/security/group_security.xml b/sf_maintenance/security/group_security.xml index b8668782..e5a90368 100644 --- a/sf_maintenance/security/group_security.xml +++ b/sf_maintenance/security/group_security.xml @@ -1,4 +1,17 @@ - + + 维保岗 + + + + + + 设备总监 + + + + + + \ No newline at end of file diff --git a/sf_maintenance/security/ir.model.access.csv b/sf_maintenance/security/ir.model.access.csv index 5a022f14..e8f2ab32 100644 --- a/sf_maintenance/security/ir.model.access.csv +++ b/sf_maintenance/security/ir.model.access.csv @@ -1,10 +1,10 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_equipment_maintenance_standards,equipment_maintenance_standards,model_equipment_maintenance_standards,base.group_user,1,1,1,1 -access_sf_maintenance_logs,sf_maintenance_logs,model_sf_maintenance_logs,base.group_user,1,1,1,1 -access_maintenance_equipment,maintenance_equipment,model_maintenance_equipment,base.group_user,1,1,1,1 -access_maintenance_standards,maintenance_standards,model_maintenance_standards,base.group_user,1,1,1,1 -access_maintenance_standard_image,maintenance_standard_image,model_maintenance_standard_image,base.group_user,1,1,1,1 -access_sf_robot_axis_num,sf_robot_axis_num,model_sf_robot_axis_num,base.group_user,1,1,1,1 +access_equipment_maintenance_standards,equipment_maintenance_standards,model_equipment_maintenance_standards,sf_group_equipment_user,1,1,1,1 +access_sf_maintenance_logs,sf_maintenance_logs,model_sf_maintenance_logs,sf_group_equipment_user,1,1,1,1 +access_maintenance_equipment,maintenance_equipment,model_maintenance_equipment,sf_group_equipment_user,1,1,1,1 +access_maintenance_standards,maintenance_standards,model_maintenance_standards,sf_group_equipment_user,1,1,1,1 +access_maintenance_standard_image,maintenance_standard_image,model_maintenance_standard_image,sf_group_equipment_user,1,1,1,1 +access_sf_robot_axis_num,sf_robot_axis_num,model_sf_robot_axis_num,sf_group_equipment_user,1,1,1,1 diff --git a/sf_manufacturing/security/group_security.xml b/sf_manufacturing/security/group_security.xml index c32538c7..236a0375 100644 --- a/sf_manufacturing/security/group_security.xml +++ b/sf_manufacturing/security/group_security.xml @@ -1,27 +1,10 @@ - - 员工 - 1 - - - - 管理 - 2 - - - - - - - - - \ No newline at end of file From 893aa2111caf9b75c6cf6a4e1516f5dfec06f6b6 Mon Sep 17 00:00:00 2001 From: "qihao.gong@jikimo.com" Date: Wed, 29 Nov 2023 17:34:15 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E5=A4=84=E7=90=86coding=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mrp_workorder/views/mrp_workorder_views.xml | 6 +- sf_base/models/base.py | 412 ++++++++++---------- sf_manufacturing/models/mrp_workorder.py | 2 +- 3 files changed, 210 insertions(+), 210 deletions(-) diff --git a/mrp_workorder/views/mrp_workorder_views.xml b/mrp_workorder/views/mrp_workorder_views.xml index 61491d4c..37702c00 100644 --- a/mrp_workorder/views/mrp_workorder_views.xml +++ b/mrp_workorder/views/mrp_workorder_views.xml @@ -38,9 +38,9 @@ - -