diff --git a/jikimo_frontend/static/src/js/custom_form_status_indicator.js b/jikimo_frontend/static/src/js/custom_form_status_indicator.js index c1ba8248..a5ca68f1 100644 --- a/jikimo_frontend/static/src/js/custom_form_status_indicator.js +++ b/jikimo_frontend/static/src/js/custom_form_status_indicator.js @@ -47,4 +47,16 @@ patch(FormStatusIndicator.prototype, 'jikimo_frontend.FormStatusIndicator', { } ); - +$(function (){ + document.addEventListener('click', function () { + const dom = $('.o_form_status_indicator_buttons ') + if(dom) { + const dom1 = dom.children().eq(0) + const dom2 = dom.children().eq(1) + if(!dom1.text()) { + dom1.append('保存') + dom2.append('取消') + } + } + }) +}) diff --git a/jikimo_frontend/static/src/scss/custom_style.scss b/jikimo_frontend/static/src/scss/custom_style.scss index 5c632e96..766cca31 100644 --- a/jikimo_frontend/static/src/scss/custom_style.scss +++ b/jikimo_frontend/static/src/scss/custom_style.scss @@ -328,19 +328,19 @@ div:has(.o_required_modifier) > label::before { left: -3px; } -.o_form_view .o_form_label { - position: relative; - width: 9rem; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - padding-left: 1rem; -} - -.o_form_view .o_form_label:hover { - white-space: normal; - overflow: visible; -} +//.o_form_view .o_form_label { +// position: relative; +// width: 9rem; +// overflow: hidden; +// text-overflow: ellipsis; +// white-space: nowrap; +// padding-left: 1rem; +//} +// +//.o_form_view .o_form_label:hover { +// white-space: normal; +// overflow: visible; +//} .o_form_view { .o_form_sheet_bg .o_form_sheet { @@ -382,4 +382,22 @@ div:has(.o_required_modifier) > label::before { margin-right: 10px; } } +} + +.o_stock_kanban .o_kanban_card_content { + .row { + align-items: center; + + .o_kanban_primary_left, .o_kanban_primary_right { + display: block; + } + + .o_kanban_primary_right { + position: unset; + } + } +} +// 机床换刀申请表格宽度设置 +.o_list_table_ungrouped { + min-width: 1089px; } \ No newline at end of file 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..e8769b80 100644 --- a/sf_base/models/tool_base_new.py +++ b/sf_base/models/tool_base_new.py @@ -77,32 +77,32 @@ class CuttingToolModel(models.Model): integral_run_out_accuracy_min = fields.Char('整体式刀具端跳精度min') fit_blade_shape_id = fields.Many2one('maintenance.equipment.image', - '适配刀片形状', domain=[('type', '=', '刀片形状')]) + '适配刀片形状', domain=[('type', '=', '刀片形状')]) suitable_machining_method_ids = fields.Many2many('maintenance.equipment.image', 'suitable_machining_method_library_rel', '适合加工方式', domain=[('type', '=', '加工能力')]) blade_tip_characteristics_id = fields.Many2one('maintenance.equipment.image', - '刀尖特征', domain=[('type', '=', '刀尖特征')]) + '刀尖特征', domain=[('type', '=', '刀尖特征')]) handle_type_id = fields.Many2one('maintenance.equipment.image', - '柄部类型', domain=[('type', '=', '柄部类型')]) + '柄部类型', domain=[('type', '=', '柄部类型')]) cutting_direction_ids = fields.Many2many('maintenance.equipment.image', 'cutting_direction_library_rel', '走刀方向', domain=[('type', '=', '走刀方向')]) suitable_coolant_ids = fields.Many2many('maintenance.equipment.image', 'suitable_coolant_library_rel', '适合冷却液', domain=[('type', '=', '冷却液')]) compaction_way_id = fields.Many2one('maintenance.equipment.image', - '压紧方式', domain=[('type', '=', '压紧方式')]) + '压紧方式', domain=[('type', '=', '压紧方式')]) integral_tool_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters', - 'standard_library_id', string='整体式刀具基本参数') + 'standard_library_id', string='整体式刀具基本参数') blade_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters', - 'standard_library_id', string='刀片基本参数') + 'standard_library_id', string='刀片基本参数') cutter_bar_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters', - 'standard_library_id', string='刀杆基本参数') + 'standard_library_id', string='刀杆基本参数') cutter_head_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters', - 'standard_library_id', string='刀盘基本参数') + 'standard_library_id', string='刀盘基本参数') knife_handle_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters', - 'standard_library_id', string='刀柄基本参数') + 'standard_library_id', string='刀柄基本参数') chuck_basic_parameters_ids = fields.One2many('sf.tool.materials.basic.parameters', - 'standard_library_id', string='夹头基本参数') + 'standard_library_id', string='夹头基本参数') cutting_speed_ids = fields.One2many('sf.cutting.speed', 'standard_library_id', string='切削速度Vc') feed_per_tooth_ids = fields.One2many('sf.feed.per.tooth', 'standard_library_id', '每齿走刀量fz', domain=[('cutting_speed', '!=', False)]) @@ -175,9 +175,12 @@ class MaintenanceStandardImage(models.Model): image = fields.Binary(string='图文') type = fields.Selection( [('加工能力', '加工能力'), ('刀尖特征', '刀尖特征'), ('柄部类型', '柄部类型'), ('走刀方向', '走刀方向'), - ('冷却液', '冷却液'), ('压紧方式', '压紧方式'), ('刀片形状', '刀片形状')], + ('冷却液', '冷却液'), ('压紧方式', '压紧方式'), ('刀片形状', '刀片形状'), ('冷却方式', '冷却方式')], string='特征') equipment_id = fields.Many2many('maintenance.equipment', 'image_id', string='设备') + equipment_lq_id = fields.Many2many('maintenance.equipment', 'image_lq_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 c07cc8c6..1767871b 100644 --- a/sf_base/security/ir.model.access.csv +++ b/sf_base/security/ir.model.access.csv @@ -34,10 +34,12 @@ 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 access_purchase_order,purchase.order,purchase.model_purchase_order,sf_base.group_plan_dispatch,1,0,0,0 +access_res_partner,res.partner,base.model_res_partner,sf_base.group_plan_dispatch,1,0,0,0 access_purchase_order_line,purchase.order.line,purchase.model_purchase_order_line,sf_base.group_plan_dispatch,1,0,0,0 access_account_move_line,account.move.line,account.model_account_move_line,sf_base.group_plan_dispatch,1,0,0,0 diff --git a/sf_base/static/src/scss/test.scss b/sf_base/static/src/scss/test.scss index a2992e1a..fdc5821e 100644 --- a/sf_base/static/src/scss/test.scss +++ b/sf_base/static/src/scss/test.scss @@ -34,8 +34,14 @@ div:has(.o_required_modifier) > label::before { .o_kanban_renderer .o_kanban_record .o_kanban_record_has_image_fill .o_kanban_image_fill_left { flex: unset !important; + min-width: 100px; +} +.o_kanban_renderer .o_kanban_record .o_kanban_record_title { + font-weight: bold; +} +.o_kanban_renderer .o_kanban_record .oe_kanban_details ul { + margin-top: calc(var(--KanbanRecord-gap-v) * 0.5); } - .o_kanban_renderer .o_kanban_record .o_kanban_record_bottom { margin-top: 5px; display: inline !important; 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_dlm_management/__manifest__.py b/sf_dlm_management/__manifest__.py index a32ecf81..a5c894d4 100644 --- a/sf_dlm_management/__manifest__.py +++ b/sf_dlm_management/__manifest__.py @@ -11,6 +11,7 @@ 'website': 'https://www.sf.jikimo.com', 'depends': ['sf_sale', 'sf_dlm', 'sf_manufacturing'], 'data': [ + 'data/stock_data.xml', 'views/product_template_management_view.xml', ], 'demo': [ diff --git a/sf_dlm_management/data/stock_data.xml b/sf_dlm_management/data/stock_data.xml new file mode 100644 index 00000000..d6067cdf --- /dev/null +++ b/sf_dlm_management/data/stock_data.xml @@ -0,0 +1,29 @@ + + + + + 刀具房 + internal + 库区 + 存货区 + DJF + true + + + + + + + 刀具组装入库 + internal + + true + + ZR + + + + + \ No newline at end of file diff --git a/sf_maintenance/__manifest__.py b/sf_maintenance/__manifest__.py index 297bd31b..cec0b7e3 100644 --- a/sf_maintenance/__manifest__.py +++ b/sf_maintenance/__manifest__.py @@ -14,6 +14,7 @@ 'views/maintenance_views.xml', 'views/equipment_maintenance_standards_views.xml', 'views/maintenance_request_views.xml', + 'views/maintenance_equipment_category_views.xml', ], 'installable': True, 'application': False, diff --git a/sf_maintenance/models/sf_maintenance.py b/sf_maintenance/models/sf_maintenance.py index d7eb3d55..b09fb373 100644 --- a/sf_maintenance/models/sf_maintenance.py +++ b/sf_maintenance/models/sf_maintenance.py @@ -14,6 +14,7 @@ class SfMaintenanceEquipmentCategory(models.Model): equipment_type = fields.Selection([('机床', '机床'), ('机器人', '机器人'), ('AGV小车', 'AGV小车'), ('检测设备', '检测设备')], string='类型', default='机床') + equipment_type_code = fields.Char('简写') class SfMaintenanceEquipment(models.Model): @@ -22,6 +23,69 @@ class SfMaintenanceEquipment(models.Model): crea_url = "/api/machine_tool/create" + # 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)') + + # 待删除字段 + 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_no(self): partner = self.env['maintenance.equipment'].sudo().search( [('MTcode', '!=', '')], @@ -81,9 +145,6 @@ class SfMaintenanceEquipment(models.Model): 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轴') @@ -92,8 +153,6 @@ class SfMaintenanceEquipment(models.Model): c_axis = fields.Integer('C轴') remark = fields.Char('备注') is_binding = fields.Boolean('是否绑定机床', default=False) - 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="控制系统") # 多个机床型号对应一个机床 @@ -111,24 +170,15 @@ class SfMaintenanceEquipment(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='机床类型') # 一个机床对应一個加工工厂,一个加工工厂对应多个机床 factory_id = fields.Many2one('res.partner', string='所属工厂', @@ -247,6 +297,48 @@ class SfMaintenanceEquipment(models.Model): item.tool_diameter_min = item.type_id.tool_diameter_min item.machine_tool_category = item.type_id.machine_tool_category.id item.brand_id = item.type_id.brand_id.id + #新增修改字段 + item.taper_type_id = item.type_id.taper_type_id.id + item.function_type = item.type_id.function_type + item.a_axis = item.type_id.a_axis + item.T_trough_num = item.type_id.T_trough_num + item.T_trough_wide = item.type_id.T_trough_wide + item.T_trough_distance = item.type_id.T_trough_distance + item.spindle_center_distance = item.type_id.spindle_center_distance + item.spindle_continuous_power = item.type_id.spindle_continuous_power + item.spindle_peak_power = item.type_id.spindle_peak_power + item.spindle_sustained_torque = item.type_id.spindle_sustained_torque + item.spindle_peak_torque = item.type_id.spindle_peak_torque + item.linear_axis_guides_type = item.type_id.linear_axis_guides_type + item.axis_driven_type = item.type_id.axis_driven_type + item.X_axis_rapid_traverse_speed = item.type_id.X_axis_rapid_traverse_speed + item.Y_axis_rapid_traverse_speed = item.type_id.Y_axis_rapid_traverse_speed + item.Z_axis_rapid_traverse_speed = item.type_id.Z_axis_rapid_traverse_speed + item.a_axis_rapid_traverse_speed = item.type_id.a_axis_rapid_traverse_speed + item.b_axis_rapid_traverse_speed = item.type_id.b_axis_rapid_traverse_speed + item.c_axis_rapid_traverse_speed = item.type_id.c_axis_rapid_traverse_speed + item.straight_cutting_feed_rate = item.type_id.straight_cutting_feed_rate + item.rotary_cutting_feed_rate = item.type_id.rotary_cutting_feed_rate + item.X_precision = item.type_id.X_precision + item.X_precision_repeat = item.type_id.X_precision_repeat + item.Y_precision = item.type_id.Y_precision + item.Y_precision_repeat = item.type_id.Y_precision_repeat + item.Z_precision = item.type_id.Z_precision + item.Z_precision_repeat = item.type_id.Z_precision_repeat + item.a_precision = item.type_id.a_precision + item.a_precision_repeat = item.type_id.a_precision_repeat + item.b_precision = item.type_id.b_precision + item.b_precision_repeat = item.type_id.b_precision_repeat + item.c_precision = item.type_id.c_precision + item.c_precision_repeat = item.type_id.c_precision_repeat + item.tool_full_diameter_max = item.type_id.tool_full_diameter_max + item.tool_perimeter_diameter_max = item.type_id.tool_perimeter_diameter_max + item.T_tool_time = item.type_id.T_tool_time + item.C_tool_time = item.type_id.C_tool_time + item.C_tool_time = item.type_id.C_tool_time + item.image_id = item.type_id.jg_image_id.ids + item.image_lq_id = item.type_id.lq_image_id.ids + # AGV小车设备参数 AGV_L = fields.Char('AGV尺寸(长)') @@ -415,7 +507,45 @@ class SfMaintenanceEquipment(models.Model): 'distance_max': item.distance_max, 'tool_diameter_min': item.tool_diameter_min, 'machine_tool_category': item.machine_tool_category.code, - 'image_id': images_ids_names + 'image_id': images_ids_names, + 'taper_type_id': item.taper_type_id.name, + '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.X_precision, + 'Y_precision_repeat': item.X_precision_repeat, + 'Z_precision': item.X_precision, + 'Z_precision_repeat': item.X_precision_repeat, + 'a_precision': item.X_precision, + 'a_precision_repeat': item.X_precision_repeat, + 'b_precision': item.X_precision, + 'b_precision_repeat': item.X_precision_repeat, + 'c_precision': item.X_precision, + 'c_precision_repeat': item.X_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, + 'jiancheng': item.category_id.equipment_type_code } machine_tool_list.append(val) # kw = machine_tool_list @@ -598,8 +728,10 @@ class SfMaintenanceEquipment(models.Model): if not next_requests: equipment._create_new_request1(equipment.overhaul_date) - image_id = fields.Many2many('maintenance.equipment.image', 'equipment_id', string='加工能力', + image_id = fields.Many2many('maintenance.equipment.image', 'equipment_id', domain="[('type', '=', '加工能力')]") + image_lq_id = fields.Many2many('maintenance.equipment.image', 'equipment_lq_id', string='冷却方式', + domain="[('type', '=', '冷却方式')]") class SfRobotAxisNum(models.Model): diff --git a/sf_maintenance/security/ir.model.access.csv b/sf_maintenance/security/ir.model.access.csv index 3396ae59..4f693af2 100644 --- a/sf_maintenance/security/ir.model.access.csv +++ b/sf_maintenance/security/ir.model.access.csv @@ -7,6 +7,8 @@ access_maintenance_standard_image,maintenance_standard_image,model_maintenance_s access_sf_robot_axis_num,sf_robot_axis_num,model_sf_robot_axis_num,sf_group_equipment_user,1,1,1,1 -access_maintenance_request,maintenance_request,model_maintenance_request,sf_base.group_plan_dispatch,1,0,0,0 +access_maintenance_request,maintenance.request,maintenance.model_maintenance_request,sf_base.group_plan_dispatch,1,0,0,0 +access_maintenance_equipment,maintenance_equipment,model_maintenance_equipment,sf_base.group_plan_dispatch,1,0,0,0 access_sf_maintenance_logs,sf_maintenance_logs,model_sf_maintenance_logs,sf_base.group_plan_dispatch,1,0,0,0 +access_maintenance_standard_image,maintenance_standard_image,model_maintenance_standard_image,sf_base.group_plan_dispatch,1,0,0,0 access_equipment_maintenance_standards,equipment_maintenance_standards,model_equipment_maintenance_standards,sf_base.group_plan_dispatch,1,0,0,0 \ No newline at end of file diff --git a/sf_maintenance/views/maintenance_equipment_category_views.xml b/sf_maintenance/views/maintenance_equipment_category_views.xml new file mode 100644 index 00000000..15138d3d --- /dev/null +++ b/sf_maintenance/views/maintenance_equipment_category_views.xml @@ -0,0 +1,14 @@ + + + + + sf.maintenance.equipment.category + maintenance.equipment.category + + + + + + + + \ No newline at end of file diff --git a/sf_maintenance/views/maintenance_views.xml b/sf_maintenance/views/maintenance_views.xml index b7cb707e..f3f69214 100644 --- a/sf_maintenance/views/maintenance_views.xml +++ b/sf_maintenance/views/maintenance_views.xml @@ -8,6 +8,7 @@ + @@ -55,8 +56,8 @@ groups="sf_maintenance.sf_group_equipment_manager"/> - - + + @@ -72,175 +73,171 @@ -
- - - -
-
- - - - - - - -
- - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
@@ -923,22 +920,34 @@ - - +
+ + + +
+ - +
+
+ +
+ - - - - + + + + + +
+
@@ -1185,13 +1194,12 @@ sequence="2"/> - + id="maintenance.menu_m_dashboard" + name="设备清单" + parent="maintenance.menu_maintenance_title" + groups="maintenance.group_equipment_manager,base.group_user" + action="hr_equipment_action1" + sequence="0"/> \ No newline at end of file diff --git a/sf_manufacturing/data/stock_data.xml b/sf_manufacturing/data/stock_data.xml index b65b2235..74d02b4a 100644 --- a/sf_manufacturing/data/stock_data.xml +++ b/sf_manufacturing/data/stock_data.xml @@ -13,6 +13,12 @@ 5 + + My Company 刀具组装入库 + ZR/ + 5 + + 外协 @@ -31,15 +37,6 @@ - - - - - - - - - 外协入库 internal @@ -63,17 +60,5 @@ search="[('barcode','=','WH-PREPRODUCTION')]"/> - - - 刀具组装入库 - internal - true - - ZR - - - - diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index d1fae8e6..1edbb62f 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -105,6 +105,11 @@ class ResMrpWorkOrder(models.Model): picking_out_id = fields.Many2one('stock.picking', string='外协出库单') supplier_id = fields.Many2one('res.partner', string='外协供应商') equipment_id = fields.Many2one('maintenance.equipment', string='加工设备') + is_ok = fields.Boolean(string='是否合格') + # 加工人 + processing_user_id = fields.Many2one('res.users', string='加工人') + # 检测人 + inspection_user_id = fields.Many2one('res.users', string='检测人') schedule_state = fields.Selection(related='production_id.schedule_state', store=True) # 工件装夹信息 functional_fixture_code = fields.Char(string="功能夹具编码", readonly=True) @@ -127,6 +132,13 @@ class ResMrpWorkOrder(models.Model): production_line = fields.Char(string="生产线") preset_program_information = fields.Char(string="预调程序信息") + @api.onchange('is_ok') + def _onchange_inspection_user_id(self): + """ + 检测is_ok(是否合格)被修改的话,就将当前用户赋值给inspection_user_id + """ + self.inspection_user_id = self.env.user.id + @api.onchange('functional_fixture_id') def _onchange_functional_fixture_id(self): if self.functional_fixture_id: diff --git a/sf_manufacturing/security/ir.model.access.csv b/sf_manufacturing/security/ir.model.access.csv index f4f8948a..25948a97 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 @@ -101,6 +102,7 @@ access_sf_product_model_type_routing_sort,sf.product.model.type.routing.sort,mod access_sf_embryo_model_type_routing_sort,sf.embryo.model.type.routing.sort,model_sf_embryo_model_type_routing_sort,sf_base.group_plan_dispatch,1,0,0,0 access_sf_surface_technics_model_type_routing_sort,sf.surface_technics.model.type.routing.sort,model_sf_surface_technics_model_type_routing_sort,sf_base.group_plan_dispatch,1,0,0,0 access_mrp_workcenter_capacity,mrp.workcenter.capacity,mrp.model_mrp_workcenter_capacity,sf_base.group_plan_dispatch,1,0,0,0 +access_sf_cnc_processing,sf.cnc.processing,model_sf_cnc_processing,sf_base.group_plan_dispatch,1,0,0,0 diff --git a/sf_manufacturing/views/mrp_production_addional_change.xml b/sf_manufacturing/views/mrp_production_addional_change.xml index 8f183857..3727bb10 100644 --- a/sf_manufacturing/views/mrp_production_addional_change.xml +++ b/sf_manufacturing/views/mrp_production_addional_change.xml @@ -61,10 +61,10 @@ -