From 2391c0848527c56a76f8c80f82b39cd0b8a7b42a Mon Sep 17 00:00:00 2001 From: "qihao.gong@jikimo.com" Date: Thu, 14 Dec 2023 17:33:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9i=E6=9C=BA=E5=BA=8A=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=90=8C=E6=AD=A5=E4=BB=A5=E5=8F=8A=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/models/base.py | 91 ++++++-- sf_base/models/tool_base_new.py | 4 +- sf_base/security/ir.model.access.csv | 1 + sf_base/views/base_view.xml | 212 +++++++++++++----- sf_manufacturing/models/product_template.py | 4 +- sf_manufacturing/security/ir.model.access.csv | 1 + sf_mrs_connect/models/sync_common.py | 130 +++++++++-- sf_quality/__manifest__.py | 2 +- sf_sale/models/auto_quatotion_common.py | 2 +- sf_sale/models/quick_easy_order.py | 4 +- 10 files changed, 344 insertions(+), 107 deletions(-) diff --git a/sf_base/models/base.py b/sf_base/models/base.py index d9dc1691..36a39f49 100644 --- a/sf_base/models/base.py +++ b/sf_base/models/base.py @@ -9,6 +9,14 @@ from odoo.addons.sf_base.commons.common import Common _logger = logging.getLogger(__name__) +class SpindleTaperType(models.Model): + _name = 'spindle.taper.type' + _description = '主轴锥孔型号' + + name = fields.Char('名称') + active = fields.Boolean('有效', default=True) + + class MachineBrandTags(models.Model): _name = 'sf.machine.brand.tags' _description = '标签' @@ -269,31 +277,19 @@ class MachineToolType(models.Model): ('chilunjia', '齿轮架驱动') ], string="主轴加高方式", default='sifudianji') workpiece_load = fields.Char('工件最大负载(kg)') - 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('刀具速度(m/min)') distance_min = fields.Char('主轴端面至工作台面距离MIN(mm)') distance_max = fields.Char('主轴端面至工作台面距离MAX(mm)') - taper = fields.Char('主轴锥度(°)') - torque = fields.Char('主轴电机扭矩(n/m)') - motor_power = fields.Char('主轴电机功率(kw)') tool_quality_max = fields.Char('刀具最大质量(kg)') tool_long_max = fields.Char('刀具最大长度(mm)') - tool_diameter_max = fields.Char('刀具刀径max(mm)') - tool_diameter_min = fields.Char('刀具刀径min(mm)') machine_tool_category = fields.Many2one('sf.machine_tool.category', string='机床类型') # 多个型号对应一个机床 machine_tool_id = fields.Many2one('sf.machine_tool', '机床') - number_of_axles = fields.Selection( - [("三轴", "三轴"), ("四轴", "四轴"), ("五轴", "五轴")], - default="", string="轴数") # 加工进程 x_axis = fields.Integer('X轴') y_axis = fields.Integer('Y轴') @@ -301,13 +297,80 @@ class MachineToolType(models.Model): b_axis = fields.Integer('B轴') c_axis = fields.Integer('C轴') remark = fields.Char('备注') - precision_min = fields.Float('X轴定位精度min(mm)', digits=(12, 3)) - precision_max = fields.Float('X轴定位精度max(mm)', digits=(12, 3)) control_system_id = fields.Many2one('sf.machine.control_system', string="控制系统") active = fields.Boolean('有效', default=True) code = fields.Char('编码') + # 1212修改后的字段 + number_of_axles = fields.Selection( + [("三轴", "三轴"), ("四轴", "四轴"), ("五轴", "五轴"), ("六轴", "六轴")], + default="", string="轴数") + + # 1212新增字段 + a_axis = fields.Integer('a轴') + function_type = fields.Selection( + [("ZXJGZX", "钻铣加工中心"), ("CXJGZX", "车削加工中心"), ("FHJGZX", "复合加工中心")], + default="", string="功能类型") + T_trough_num = fields.Integer('槽数') + T_trough_wide = fields.Float('槽宽(mm)') + T_trough_distance = fields.Float('槽距(mm)') + + taper_type_id = fields.Many2one('spindle.taper.type', string='主轴锥孔型号') + spindle_center_distance = fields.Float('主轴中心至立柱滑轨面距离(mm)') + spindle_continuous_power = fields.Float('主轴持续功率(kw)') + spindle_peak_power = fields.Float('主轴峰值功率(kw)') + spindle_sustained_torque = fields.Float('主轴持续扭矩(n/m)') + spindle_peak_torque = fields.Float('主轴峰值扭矩(n/m)') + linear_axis_guides_type = fields.Char('直线轴导轨类型') + axis_driven_type = fields.Char('坐标轴驱动类型') + + X_axis_rapid_traverse_speed = fields.Char('X轴快速进给速度(mm/min)') + Y_axis_rapid_traverse_speed = fields.Char('Y轴快速进给速度(mm/min)') + Z_axis_rapid_traverse_speed = fields.Char('Z轴快速进给速度(mm/min)') + a_axis_rapid_traverse_speed = fields.Char('a轴快速进给速度(mm/min)') + b_axis_rapid_traverse_speed = fields.Char('b轴快速进给速度(mm/min)') + c_axis_rapid_traverse_speed = fields.Char('c轴快速进给速度(mm/min)') + straight_cutting_feed_rate = fields.Char('直线切削进给速度(mm/min)') + rotary_cutting_feed_rate = fields.Char('回转切削进给速度(mm/min)') + + X_precision = fields.Float('X轴定位精度(mm)', digits=(12, 3)) + X_precision_repeat = fields.Float('X轴重复定位精度(mm)', digits=(12, 3)) + Y_precision = fields.Float('Y轴定位精度(mm)', digits=(12, 3)) + Y_precision_repeat = fields.Float('Y轴重复定位精度(mm)', digits=(12, 3)) + Z_precision = fields.Float('Z轴定位精度(mm)', digits=(12, 3)) + Z_precision_repeat = fields.Float('Z轴重复定位精度(mm)', digits=(12, 3)) + a_precision = fields.Float('a轴定位精度(mm)', digits=(12, 3)) + a_precision_repeat = fields.Float('a轴重复定位精度(mm)', digits=(12, 3)) + b_precision = fields.Float('b轴定位精度(mm)', digits=(12, 3)) + b_precision_repeat = fields.Float('b轴重复定位精度(mm)', digits=(12, 3)) + c_precision = fields.Float('c轴定位精度(mm)', digits=(12, 3)) + c_precision_repeat = fields.Float('c轴重复定位精度(mm)', digits=(12, 3)) + + tool_full_diameter_max = fields.Float('刀具满刀最大直径(mm)') + tool_perimeter_diameter_max = fields.Float('刀具邻空刀最大直径(mm)') + T_tool_time = fields.Integer('T-T换刀时间(s)') + C_tool_time = fields.Integer('C-C换刀时间(s)') + + jg_image_id = fields.Many2many('maintenance.equipment.image', 'jg_equipment_id', string='加工能力', + domain="[('type', '=', '加工能力')]") + lq_image_id = fields.Many2many('maintenance.equipment.image', 'lq_equipment_id', string='冷却方式', + domain="[('type', '=', '冷却方式')]") + + + #待删除字段 + precision_min = fields.Float('X轴定位精度min(mm)', digits=(12, 3)) + precision_max = fields.Float('X轴定位精度max(mm)', digits=(12, 3)) + lead_screw = fields.Char('丝杆') + guide_rail = fields.Char('导轨') + feed_speed = fields.Char('进给速度(mm/min)') + tool_speed = fields.Char('刀具速度(m/min)') + torque = fields.Char('主轴点击扭矩(n/m)') + motor_power = fields.Char('主轴电机功率(kw)') + taper = fields.Char('主轴锥度(°)') + tool_diameter_max = fields.Char('刀具刀径max(mm)') + tool_diameter_min = fields.Char('刀具刀径min(mm)') + def _get_ids(self, machine_tool_type_code): machine_tool_type_ids = [] for item in machine_tool_type_code: diff --git a/sf_base/models/tool_base_new.py b/sf_base/models/tool_base_new.py index c619ea9f..400ed60f 100644 --- a/sf_base/models/tool_base_new.py +++ b/sf_base/models/tool_base_new.py @@ -175,9 +175,11 @@ class MaintenanceStandardImage(models.Model): image = fields.Binary(string='图文') type = fields.Selection( [('加工能力', '加工能力'), ('刀尖特征', '刀尖特征'), ('柄部类型', '柄部类型'), ('走刀方向', '走刀方向'), - ('冷却液', '冷却液'), ('压紧方式', '压紧方式'), ('刀片形状', '刀片形状')], + ('冷却液', '冷却液'), ('压紧方式', '压紧方式'), ('刀片形状', '刀片形状'), ('冷却方式', '冷却方式')], string='特征') equipment_id = fields.Many2many('maintenance.equipment', 'image_id', string='设备') + jg_equipment_id = fields.Many2many('sf.machine_tool.type', 'jg_image_id', string='机床型号') + lq_equipment_id = fields.Many2many('sf.machine_tool.type', 'lq_image_id', string='机床型号') def _get_ids(self, name_arr): ability_feature_ids = [] diff --git a/sf_base/security/ir.model.access.csv b/sf_base/security/ir.model.access.csv index 6ff1f8a8..7ddab55b 100644 --- a/sf_base/security/ir.model.access.csv +++ b/sf_base/security/ir.model.access.csv @@ -34,6 +34,7 @@ access_purchase_order_group_purchase,access_purchase_order_group_purchase,purcha access_purchase_order_group_purchase_director,access_purchase_order_group_purchase_director,purchase.model_purchase_order,sf_base.group_purchase_director,1,1,1,0 access_purchase_order_line_group_purchase,access_purchase_order_line_group_purchase,purchase.model_purchase_order_line,sf_base.group_purchase,1,1,1,0 access_purchase_order_line_group_purchase_director,access_purchase_order_line_group_purchase_director,purchase.model_purchase_order_line,sf_base.group_purchase_director,1,1,1,0 +access_spindle_taper_type,spindle_taper_type,model_spindle_taper_type,base.group_user,1,1,1,1 diff --git a/sf_base/views/base_view.xml b/sf_base/views/base_view.xml index 8c8e1632..3c4b0618 100644 --- a/sf_base/views/base_view.xml +++ b/sf_base/views/base_view.xml @@ -81,7 +81,10 @@ - + + + + @@ -90,7 +93,7 @@ tree.sf.machine_tool.type sf.machine_tool.type - + @@ -105,20 +108,16 @@ form.sf.machine_tool.type sf.machine_tool.type -
+

- +

- - - - - + @@ -128,10 +127,40 @@ + +
+ + + + + + + + +
+ +
+ +
+ + + + + + + + +
+ +
+ + - + - - + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py index 285d43f0..8d9ce216 100644 --- a/sf_manufacturing/models/product_template.py +++ b/sf_manufacturing/models/product_template.py @@ -6,8 +6,8 @@ import os from odoo import models, fields, api, _ from odoo.exceptions import ValidationError from odoo.modules import get_resource_path -from OCC.Extend.DataExchange import read_step_file -from OCC.Extend.DataExchange import write_stl_file +#from OCC.Extend.DataExchange import read_step_file +#from OCC.Extend.DataExchange import write_stl_file class ResProductMo(models.Model): diff --git a/sf_manufacturing/security/ir.model.access.csv b/sf_manufacturing/security/ir.model.access.csv index 0c620608..94b15afa 100644 --- a/sf_manufacturing/security/ir.model.access.csv +++ b/sf_manufacturing/security/ir.model.access.csv @@ -13,6 +13,7 @@ access_sf_production_line,sf.production.line,model_sf_production_line,sf_base.gr access_sf_production_line_manager,sf.production.line,model_sf_production_line,sf_base.group_sf_mrp_manager,1,1,1,0 access_maintenance_equipment_tool,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_base.group_sf_mrp_user,1,0,0,0 access_maintenance_equipment_tool_manager,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_base.group_sf_mrp_manager,1,1,1,0 +access_maintenance_equipment_tool_equipment_manager,maintenance_equipment_tool,model_maintenance_equipment_tool,sf_maintenance.sf_group_equipment_user,1,1,1,0 access_mrp_production,mrp_production,model_mrp_production,sf_base.group_sf_mrp_user,1,0,0,0 access_mrp_production_manager,mrp_production,model_mrp_production,sf_base.group_sf_mrp_manager,1,1,1,0 access_mrp_workorder,mrp_workorder,model_mrp_workorder,sf_base.group_sf_mrp_user,1,0,0,0 diff --git a/sf_mrs_connect/models/sync_common.py b/sf_mrs_connect/models/sync_common.py index 7babb3a4..4657bbc5 100644 --- a/sf_mrs_connect/models/sync_common.py +++ b/sf_mrs_connect/models/sync_common.py @@ -726,11 +726,13 @@ class MachineToolType(models.Model): control_system = self.env['sf.machine.control_system'].search( [('code', '=', item['control_system_id'])]) brand = self.env['sf.machine.brand'].search([('code', '=', item['brand_id'])]) + jg_image_id = self.env['maintenance.equipment.image'].search([('name', 'in', item['jg_image_id'])]) + lq_image_id = self.env['maintenance.equipment.image'].search([('name', 'in', item['lq_image_id'])]) category = self.env['sf.machine_tool.category'].search([('code', '=', item['machine_tool_category'])]) + taper_type_id = self.env['spindle.taper.type'].search([('name', '=', item['taper_type_id'])]) if not machine_tool_type: self.create({ "name": item['name'], - "code": item['code'], "number_of_knife_library": item['number_of_knife_library'], "rotate_speed": item['rotate_speed'], "number_of_axles": item['number_of_axles'], @@ -738,36 +740,76 @@ class MachineToolType(models.Model): "y_axis": item['y_axis'], "z_axis": item['z_axis'], "b_axis": item['b_axis'], - "c_axis": item['c_axis'], "knife_type": item['knife_type'], + "c_axis": item['c_axis'], "remark": item['remark'], - "precision_min": item['precision_min'], - "precision_max": item['precision_max'], + # "precision_min": item['precision_min'], + # "precision_max": item['precision_max'], 'control_system_id': control_system.id, "active": item['active'], 'brand_id': brand.id, 'machine_tool_picture': image, "heightened_way": item['heightened_way'], "workpiece_load": item['workpiece_load'], - "lead_screw": item['lead_screw'], + #"lead_screw": item['lead_screw'], "workbench_L": item['workbench_L'], "workbench_W": item['workbench_W'], - "guide_rail": item['guide_rail'], + #"guide_rail": item['guide_rail'], "machine_tool_L": item['machine_tool_L'], "machine_tool_W": item['machine_tool_W'], "machine_tool_H": item['machine_tool_H'], - "feed_speed": item['feed_speed'], - "tool_speed": item['tool_speed'], + #"feed_speed": item['feed_speed'], + #"tool_speed": item['tool_speed'], "distance_min": item['distance_min'], "distance_max": item['distance_max'], - "taper": item['taper'], - "torque": item['torque'], - "motor_power": item['motor_power'], + #"taper": item['taper'], + #"torque": item['torque'], + #"motor_power": item['motor_power'], "tool_quality_max": item['tool_quality_max'], "tool_long_max": item['tool_long_max'], - "tool_diameter_max": item['tool_diameter_max'], - "tool_diameter_min": item['tool_diameter_min'], + #"tool_diameter_max": item['tool_diameter_max'], + #"tool_diameter_min": item['tool_diameter_min'], "machine_tool_category": category.id, + 'taper_type_id': taper_type_id.id, + "function_type": item['function_type'], + "a_axis": item['a_axis'], + "T_trough_num": item['T_trough_num'], + "T_trough_wide": item['T_trough_wide'], + "T_trough_distance": item['T_trough_distance'], + "spindle_center_distance": item['spindle_center_distance'], + "spindle_continuous_power": item['spindle_continuous_power'], + "spindle_peak_power": item['spindle_peak_power'], + "spindle_sustained_torque": item['spindle_sustained_torque'], + "spindle_peak_torque": item['spindle_peak_torque'], + "linear_axis_guides_type": item['linear_axis_guides_type'], + "axis_driven_type": item['axis_driven_type'], + "X_axis_rapid_traverse_speed": item['X_axis_rapid_traverse_speed'], + "Y_axis_rapid_traverse_speed": item['Y_axis_rapid_traverse_speed'], + "Z_axis_rapid_traverse_speed": item['Z_axis_rapid_traverse_speed'], + "a_axis_rapid_traverse_speed": item['a_axis_rapid_traverse_speed'], + "b_axis_rapid_traverse_speed": item['b_axis_rapid_traverse_speed'], + "c_axis_rapid_traverse_speed": item['c_axis_rapid_traverse_speed'], + "straight_cutting_feed_rate": item['straight_cutting_feed_rate'], + "rotary_cutting_feed_rate": item['rotary_cutting_feed_rate'], + "X_precision": item['X_precision'], + "X_precision_repeat": item['X_precision_repeat'], + "Y_precision": item['Y_precision'], + "Y_precision_repeat": item['Y_precision_repeat'], + "Z_precision": item['Z_precision'], + "Z_precision_repeat": item['Z_precision_repeat'], + "a_precision": item['a_precision'], + "a_precision_repeat": item['a_precision_repeat'], + "b_precision": item['b_precision'], + "b_precision_repeat": item['b_precision_repeat'], + "c_precision": item['c_precision'], + "c_precision_repeat": item['c_precision_repeat'], + "tool_full_diameter_max": item['tool_full_diameter_max'], + "tool_perimeter_diameter_max": item['tool_perimeter_diameter_max'], + "T_tool_time": item['T_tool_time'], + "C_tool_time": item['C_tool_time'], + "jg_image_id": jg_image_id.ids, + "lq_image_id": lq_image_id.ids, + }) else: machine_tool_type.write({ @@ -782,33 +824,73 @@ class MachineToolType(models.Model): "knife_type": item['knife_type'], "c_axis": item['c_axis'], "remark": item['remark'], - "precision_min": item['precision_min'], - "precision_max": item['precision_max'], + # "precision_min": item['precision_min'], + # "precision_max": item['precision_max'], 'control_system_id': control_system.id, "active": item['active'], 'brand_id': brand.id, 'machine_tool_picture': image, "heightened_way": item['heightened_way'], "workpiece_load": item['workpiece_load'], - "lead_screw": item['lead_screw'], + #"lead_screw": item['lead_screw'], "workbench_L": item['workbench_L'], "workbench_W": item['workbench_W'], - "guide_rail": item['guide_rail'], + #"guide_rail": item['guide_rail'], "machine_tool_L": item['machine_tool_L'], "machine_tool_W": item['machine_tool_W'], "machine_tool_H": item['machine_tool_H'], - "feed_speed": item['feed_speed'], - "tool_speed": item['tool_speed'], + #"feed_speed": item['feed_speed'], + #"tool_speed": item['tool_speed'], "distance_min": item['distance_min'], "distance_max": item['distance_max'], - "taper": item['taper'], - "torque": item['torque'], - "motor_power": item['motor_power'], + #"taper": item['taper'], + #"torque": item['torque'], + #"motor_power": item['motor_power'], "tool_quality_max": item['tool_quality_max'], "tool_long_max": item['tool_long_max'], - "tool_diameter_max": item['tool_diameter_max'], - "tool_diameter_min": item['tool_diameter_min'], + #"tool_diameter_max": item['tool_diameter_max'], + #"tool_diameter_min": item['tool_diameter_min'], "machine_tool_category": category.id, + 'taper_type_id': taper_type_id.id, + "function_type": item['function_type'], + "a_axis": item['a_axis'], + "T_trough_num": item['T_trough_num'], + "T_trough_wide": item['T_trough_wide'], + "T_trough_distance": item['T_trough_distance'], + "spindle_center_distance": item['spindle_center_distance'], + "spindle_continuous_power": item['spindle_continuous_power'], + "spindle_peak_power": item['spindle_peak_power'], + "spindle_sustained_torque": item['spindle_sustained_torque'], + "spindle_peak_torque": item['spindle_peak_torque'], + "linear_axis_guides_type": item['linear_axis_guides_type'], + "axis_driven_type": item['axis_driven_type'], + "X_axis_rapid_traverse_speed": item['X_axis_rapid_traverse_speed'], + "Y_axis_rapid_traverse_speed": item['Y_axis_rapid_traverse_speed'], + "Z_axis_rapid_traverse_speed": item['Z_axis_rapid_traverse_speed'], + "a_axis_rapid_traverse_speed": item['a_axis_rapid_traverse_speed'], + "b_axis_rapid_traverse_speed": item['b_axis_rapid_traverse_speed'], + "c_axis_rapid_traverse_speed": item['c_axis_rapid_traverse_speed'], + "straight_cutting_feed_rate": item['straight_cutting_feed_rate'], + "rotary_cutting_feed_rate": item['rotary_cutting_feed_rate'], + "X_precision": item['X_precision'], + "X_precision_repeat": item['X_precision_repeat'], + "Y_precision": item['Y_precision'], + "Y_precision_repeat": item['Y_precision_repeat'], + "Z_precision": item['Z_precision'], + "Z_precision_repeat": item['Z_precision_repeat'], + "a_precision": item['a_precision'], + "a_precision_repeat": item['a_precision_repeat'], + "b_precision": item['b_precision'], + "b_precision_repeat": item['b_precision_repeat'], + "c_precision": item['c_precision'], + "c_precision_repeat": item['c_precision_repeat'], + "tool_full_diameter_max": item['tool_full_diameter_max'], + "tool_perimeter_diameter_max": item['tool_perimeter_diameter_max'], + "T_tool_time": item['T_tool_time'], + "C_tool_time": item['C_tool_time'], + "jg_image_id": jg_image_id.ids, + "lq_image_id": lq_image_id.ids, + }) else: raise ValidationError("机床型号认证未通过") diff --git a/sf_quality/__manifest__.py b/sf_quality/__manifest__.py index 7f50a93d..c41e1a24 100644 --- a/sf_quality/__manifest__.py +++ b/sf_quality/__manifest__.py @@ -13,7 +13,7 @@ 'author': 'jikimo', 'website': 'https://sf.cs.jikimo.com', # 此处依赖sf_manufacturing是因为我要重写其中的一个字段operation_id的string,故需要sf_manufacturing先安装 - 'depends': ['quality_control', 'sf_maintenance'], + 'depends': ['quality_control'], 'data': [ 'security/ir.model.access.csv', 'views/view.xml' diff --git a/sf_sale/models/auto_quatotion_common.py b/sf_sale/models/auto_quatotion_common.py index 09ea3f0f..1b29c6d2 100644 --- a/sf_sale/models/auto_quatotion_common.py +++ b/sf_sale/models/auto_quatotion_common.py @@ -2,7 +2,7 @@ import logging from odoo.modules import get_resource_path from odoo import fields, models, api -from quatotion import readSql, feature_recognize, auto_quatotion +#from quatotion import readSql, feature_recognize, auto_quatotion __author__ = 'jinling.yang' _logger = logging.getLogger(__name__) diff --git a/sf_sale/models/quick_easy_order.py b/sf_sale/models/quick_easy_order.py index 1e5f274c..5ec1fd52 100644 --- a/sf_sale/models/quick_easy_order.py +++ b/sf_sale/models/quick_easy_order.py @@ -5,8 +5,8 @@ import os import json from datetime import datetime import requests -from OCC.Extend.DataExchange import read_step_file -from OCC.Extend.DataExchange import write_stl_file +#from OCC.Extend.DataExchange import read_step_file +#from OCC.Extend.DataExchange import write_stl_file from odoo import models, fields, api from odoo.modules import get_resource_path from odoo.exceptions import ValidationError, UserError