From 3b7e120eb2eb2cbd511f988613d7e418450d5b5c Mon Sep 17 00:00:00 2001 From: yuxianghui <3437689193@qq.com> Date: Fri, 15 Mar 2024 17:38:43 +0800 Subject: [PATCH 1/9] =?UTF-8?q?1=E3=80=81=E4=BC=98=E5=8C=96=E5=A4=B9?= =?UTF-8?q?=E5=85=B7=E5=9E=8B=E5=8F=B7=E9=9D=99=E6=80=81=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/models/basic_parameters_fixture.py | 427 ++++++++++-------- sf_base/models/fixture.py | 4 +- sf_base/views/fixture_view.xml | 7 + sf_mrs_connect/models/sync_common.py | 285 +++++------- .../models/functional_tool_enroll.py | 6 + 5 files changed, 381 insertions(+), 348 deletions(-) diff --git a/sf_base/models/basic_parameters_fixture.py b/sf_base/models/basic_parameters_fixture.py index 7bd69a35..362b5abf 100644 --- a/sf_base/models/basic_parameters_fixture.py +++ b/sf_base/models/basic_parameters_fixture.py @@ -67,186 +67,259 @@ class BasicParametersFixture(models.Model): mounting_hole_depth = fields.Float('安装孔深度(mm)', digits=(16, 2)) centering_diameter = fields.Float('定心直径(mm)', digits=(16, 2)) - def _json_zero_chuck_param(self, obj): - zero_chuck_param_str = (0, '', { - 'name': obj['name'], - 'length': obj['length'], - 'width': obj['width'], - 'height': obj['height'], - 'diameter': obj['diameter'], - 'weight': obj['weight'], - 'orientation_dish_diameter': obj['orientation_dish_diameter'], - 'clamping_diameter': obj['clamping_diameter'], - 'clamping_num': obj['clamping_num'], - 'chucking_power_max': obj['chucking_power_max'], - 'repeated_positioning_accuracy': obj['repeated_positioning_accuracy'], - 'boolean_transposing_hole': obj['boolean_transposing_hole'], - 'unlocking_method': obj['unlocking_method'], - 'boolean_chip_blowing_function': obj['boolean_chip_blowing_function'], - 'carrying_capacity_max': obj['carrying_capacity_max'], - 'rigidity': obj['rigidity'], - 'materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'machine_tool_type_id': self.env['sf.machine_tool.type'].sudo().search( - [('code', '=', obj['machine_tool_type_id']), ('active', '=', True)]).id, - }) - return zero_chuck_param_str + code = fields.Char('编码') - def _json_zero_tray_param(self, obj): - zero_tray_param_str = (0, '', { - 'name': obj['name'], - 'length': obj['length'], - 'width': obj['width'], - 'height': obj['height'], - 'diameter': obj['diameter'], - 'weight': obj['weight'], - 'clamping_diameter': obj['clamping_diameter'], - 'connector_diameter': obj['connector_diameter'], - 'chucking_power_max': obj['chucking_power_max'], - 'repeated_positioning_accuracy': obj['repeated_positioning_accuracy'], - 'boolean_chip_blowing_function': obj['boolean_chip_blowing_function'], - 'way_to_install': obj['way_to_install'], - 'type_of_drive': obj['type_of_drive'], - 'carrying_capacity_max': obj['carrying_capacity_max'], - 'materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'rigidity': obj['rigidity'], - }) - return zero_tray_param_str + def create_fixture_materials(self, fixture_materials_datas, fixture_model): + fixture_materials_name = fixture_model.fixture_material_id.name + if fixture_materials_name == '零点卡盘': + for fixture_materials_data in fixture_materials_datas: + self.create(self._json_zero_chuck_param(fixture_materials_data, fixture_model)) + elif fixture_materials_name == '零点托盘': + for fixture_materials_data in fixture_materials_datas: + self.create(self._json_zero_tray_param(fixture_materials_data, fixture_model)) + elif fixture_materials_name == '气动夹具': + for fixture_materials_data in fixture_materials_datas: + self.create(self._json_pneumatic_fixture_param(fixture_materials_data, fixture_model)) + elif fixture_materials_name == '虎钳夹具': + for fixture_materials_data in fixture_materials_datas: + self.create(self._json_jaw_vice_fixture_param(fixture_materials_data, fixture_model)) + elif fixture_materials_name == '磁吸夹具': + for fixture_materials_data in fixture_materials_datas: + self.create(self._json_magnet_fixture_param(fixture_materials_data, fixture_model)) + elif fixture_materials_name == '转接板(锁板)夹具': + for fixture_materials_data in fixture_materials_datas: + self.create(self._json_adapter_board_fixture_param(fixture_materials_data, fixture_model)) + elif fixture_materials_name == '三爪卡盘': + for fixture_materials_data in fixture_materials_datas: + self.create(self._json_scroll_chuck_param(fixture_materials_data, fixture_model)) - def _json_pneumatic_fixture_param(self, obj): - pneumatic_fixture_param_str = (0, '', { - 'name': obj['name'], - 'length': obj['length'], - 'width': obj['width'], - 'height': obj['height'], - 'weight': obj['weight'], - 'gripper_length_min': obj['gripper_length_min'], - 'gripper_width_min': obj['gripper_width_min'], - 'gripper_height_min': obj['gripper_height_min'], - 'gripper_diameter_min': obj['gripper_diameter_min'], - 'gripper_length_max': obj['gripper_length_max'], - 'gripper_width_max': obj['gripper_width_max'], - 'gripper_height_max': obj['gripper_height_max'], - 'gripper_diameter_max': obj['gripper_diameter_max'], - 'chucking_power_max': obj['chucking_power_max'], - 'carrying_capacity_max': obj['carrying_capacity_max'], - 'rated_air_pressure': obj['rated_air_pressure'], - 'materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'rigidity': obj['rigidity'], - 'interface_materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'type_of_drive': obj['type_of_drive'], - }) - return pneumatic_fixture_param_str + def write_fixture_materials(self, fixture_materials_datas, fixture_materials_name): + # 同步过来的cloud夹具物料的code + mrs_fixture_materials_codes = [] + for fixture_materials_data in fixture_materials_datas: + mrs_fixture_materials_codes.append(fixture_materials_data.get('code')) - def _json_jaw_vice_fixture_param(self, obj): - jaw_vice_fixture_param_str = (0, '', { - 'name': obj['name'], - 'length': obj['length'], - 'width': obj['width'], - 'height': obj['height'], - 'weight': obj['weight'], - 'gripper_length_min': obj['gripper_length_min'], - 'gripper_width_min': obj['gripper_width_min'], - 'gripper_height_min': obj['gripper_height_min'], - 'gripper_diameter_min': obj['gripper_diameter_min'], - 'gripper_length_max': obj['gripper_length_max'], - 'gripper_width_max': obj['gripper_width_max'], - 'gripper_height_max': obj['gripper_height_max'], - 'gripper_diameter_max': obj['gripper_diameter_max'], - 'chucking_power_max': obj['chucking_power_max'], - 'carrying_capacity_max': obj['carrying_capacity_max'], - 'transverse_groove': obj['transverse_groove'], - 'longitudinal_fitting_groove': obj['longitudinal_fitting_groove'], - 'materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'rigidity': obj['rigidity'], - 'interface_materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'type_of_drive': obj['type_of_drive'], - }) - return jaw_vice_fixture_param_str + for fixture_materials_data in fixture_materials_datas: + sf_materials_model_codes = [] + # 判断sf夹具型号关联的夹具物料在同步过来的mrs夹具物料中是否存在,如果存在则修改,不存在则删除 + data = self._get_fixture_materials_list(fixture_materials_data, fixture_materials_name) + for zero_chuck_id in data[1]: + code = zero_chuck_id.code + if code in mrs_fixture_materials_codes: + self.search([('code', '=', code)]).sudo().write(data[0]) + sf_materials_model_codes.append(code) + else: + self.search([('code', '=', code)]).sudo().unlink() + # 判断同步过来的mrs刀具物料在sf夹具型号关联的夹具物料中是否存在,如果不存在则创建 + for mrs_fixture_materials_code in mrs_fixture_materials_codes: + if mrs_fixture_materials_code not in sf_materials_model_codes: + self.sudo().create(data[0]) - def _json_magnet_fixture_param(self, obj): - magnet_fixture_param_str = (0, '', { - 'name': obj['name'], - 'length': obj['length'], - 'width': obj['width'], - 'height': obj['height'], - 'height_tolerance_value': obj['height_tolerance_value'], - 'weight': obj['weight'], - 'gripper_length_min': obj['gripper_length_min'], - 'gripper_width_min': obj['gripper_width_min'], - 'gripper_height_min': obj['gripper_height_min'], - 'gripper_diameter_min': obj['gripper_diameter_min'], - 'gripper_length_max': obj['gripper_length_max'], - 'gripper_width_max': obj['gripper_width_max'], - 'gripper_height_max': obj['gripper_height_max'], - 'gripper_diameter_max': obj['gripper_diameter_max'], - 'rated_adsorption_force': obj['rated_adsorption_force'], - 'magnetic_field_height': obj['magnetic_field_height'], - 'magnetic_pole_plate_grinding_allowance': obj['magnetic_pole_plate_grinding_allowance'], - 'carrying_capacity_max': obj['carrying_capacity_max'], - 'materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'rigidity': obj['rigidity'], - 'interface_materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'type_of_drive': obj['type_of_drive'], - }) - return magnet_fixture_param_str + def _get_fixture_materials_list(self, fixture_materials_data, fixture_materials_name): + fixture_model = self.env['sf.fixture.model'].sudo().search( + [('code', '=', fixture_materials_data['fixture_model_code']), ('active', '=', True)]) + if fixture_materials_name == '零点卡盘': + materials_list = self._json_zero_chuck_param(fixture_materials_data, fixture_model) + return [materials_list, fixture_model.zero_chuck_ids] + elif fixture_materials_name == '零点托盘': + materials_list = self._json_zero_tray_param(fixture_materials_data, fixture_model) + return [materials_list, fixture_model.zero_tray_ids] + elif fixture_materials_name == '气动夹具': + materials_list = self._json_pneumatic_fixture_param(fixture_materials_data, fixture_model) + return [materials_list, fixture_model.pneumatic_fixture_ids] + elif fixture_materials_name == '虎钳夹具': + materials_list = self._json_jaw_vice_fixture_param(fixture_materials_data, fixture_model) + return [materials_list, fixture_model.pneumatic_fixture_ids] + elif fixture_materials_name == '磁吸夹具': + materials_list = self._json_magnet_fixture_param(fixture_materials_data, fixture_model) + return [materials_list, fixture_model.magnet_fixture_ids] + elif fixture_materials_name == '转接板(锁板)夹具': + materials_list = self._json_adapter_board_fixture_param(fixture_materials_data, fixture_model) + return [materials_list, fixture_model.adapter_board_fixture_ids] + elif fixture_materials_name == '三爪卡盘': + materials_list = self._json_scroll_chuck_param(fixture_materials_data, fixture_model) + return [materials_list, fixture_model.scroll_chuck_ids] - def _json_adapter_board_fixture_param(self, obj): - adapter_board_fixture_param_str = (0, '', { - 'name': obj['name'], - 'length': obj['length'], - 'width': obj['width'], - 'height': obj['height'], - 'weight': obj['weight'], - 'gripper_length_min': obj['gripper_length_min'], - 'gripper_width_min': obj['gripper_width_min'], - 'gripper_height_min': obj['gripper_height_min'], - 'gripper_diameter_min': obj['gripper_diameter_min'], - 'gripper_length_max': obj['gripper_length_max'], - 'gripper_width_max': obj['gripper_width_max'], - 'gripper_height_max': obj['gripper_height_max'], - 'gripper_diameter_max': obj['gripper_diameter_max'], - 'chucking_power_max': obj['chucking_power_max'], - 'carrying_capacity_max': obj['carrying_capacity_max'], - 'materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'rigidity': obj['rigidity'], - 'screw_size': obj['screw_size'], - 'via_hole_diameter': obj['via_hole_diameter'], - 'type_of_drive': obj['type_of_drive'], - }) - return adapter_board_fixture_param_str + def _json_zero_chuck_param(self, obj, fixture_model): + """零点卡盘:将data数据转换成list数据""" + return {'code': obj['code'], + 'fixture_model_id': fixture_model.id, + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'diameter': obj['diameter'], + 'weight': obj['weight'], + 'orientation_dish_diameter': obj['orientation_dish_diameter'], + 'clamping_diameter': obj['clamping_diameter'], + 'clamping_num': obj['clamping_num'], + 'chucking_power_max': obj['chucking_power_max'], + 'repeated_positioning_accuracy': obj['repeated_positioning_accuracy'], + 'boolean_transposing_hole': obj['boolean_transposing_hole'], + 'unlocking_method': obj['unlocking_method'], + 'boolean_chip_blowing_function': obj['boolean_chip_blowing_function'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'rigidity': obj['rigidity'], + 'materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'machine_tool_type_id': self.env['sf.machine_tool.type'].sudo().search( + [('code', '=', obj['machine_tool_type_id']), ('active', '=', True)]).id} - def _json_scroll_chuck_param(self, obj): - scroll_chuck_param_str = (0, '', { - 'name': obj['name'], - 'length': obj['length'], - 'width': obj['width'], - 'height': obj['height'], - 'diameter': obj['diameter'], - 'weight': obj['weight'], - 'gripper_length_min': obj['gripper_length_min'], - 'gripper_width_min': obj['gripper_width_min'], - 'gripper_height_min': obj['gripper_height_min'], - 'gripper_diameter_min': obj['gripper_diameter_min'], - 'gripper_length_max': obj['gripper_length_max'], - 'gripper_width_max': obj['gripper_width_max'], - 'gripper_height_max': obj['gripper_height_max'], - 'gripper_diameter_max': obj['gripper_diameter_max'], - 'chucking_power_max': obj['chucking_power_max'], - 'carrying_capacity_max': obj['carrying_capacity_max'], - 'materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'rigidity': obj['rigidity'], - 'mounting_hole_depth': obj['mounting_hole_depth'], - 'centering_diameter': obj['centering_diameter'], - 'type_of_drive': obj['type_of_drive'], - }) - return scroll_chuck_param_str + def _json_zero_tray_param(self, obj, fixture_model): + """零点托盘:将data数据转换成list数据""" + return {'code': obj['code'], + 'fixture_model_id': fixture_model.id, + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'diameter': obj['diameter'], + 'weight': obj['weight'], + 'clamping_diameter': obj['clamping_diameter'], + 'connector_diameter': obj['connector_diameter'], + 'chucking_power_max': obj['chucking_power_max'], + 'repeated_positioning_accuracy': obj['repeated_positioning_accuracy'], + 'boolean_chip_blowing_function': obj['boolean_chip_blowing_function'], + 'way_to_install': obj['way_to_install'], + 'type_of_drive': obj['type_of_drive'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'rigidity': obj['rigidity']} + + def _json_pneumatic_fixture_param(self, obj, fixture_model): + """气动夹具:将data数据转换成list数据""" + return {'code': obj['code'], + 'fixture_model_id': fixture_model.id, + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'weight': obj['weight'], + 'gripper_length_min': obj['gripper_length_min'], + 'gripper_width_min': obj['gripper_width_min'], + 'gripper_height_min': obj['gripper_height_min'], + 'gripper_diameter_min': obj['gripper_diameter_min'], + 'gripper_length_max': obj['gripper_length_max'], + 'gripper_width_max': obj['gripper_width_max'], + 'gripper_height_max': obj['gripper_height_max'], + 'gripper_diameter_max': obj['gripper_diameter_max'], + 'chucking_power_max': obj['chucking_power_max'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'rated_air_pressure': obj['rated_air_pressure'], + 'materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'rigidity': obj['rigidity'], + 'interface_materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'type_of_drive': obj['type_of_drive']} + + def _json_jaw_vice_fixture_param(self, obj, fixture_model): + """虎钳夹具:将data数据转换成list数据""" + return {'code': obj['code'], + 'fixture_model_id': fixture_model.id, + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'weight': obj['weight'], + 'gripper_length_min': obj['gripper_length_min'], + 'gripper_width_min': obj['gripper_width_min'], + 'gripper_height_min': obj['gripper_height_min'], + 'gripper_diameter_min': obj['gripper_diameter_min'], + 'gripper_length_max': obj['gripper_length_max'], + 'gripper_width_max': obj['gripper_width_max'], + 'gripper_height_max': obj['gripper_height_max'], + 'gripper_diameter_max': obj['gripper_diameter_max'], + 'chucking_power_max': obj['chucking_power_max'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'transverse_groove': obj['transverse_groove'], + 'longitudinal_fitting_groove': obj['longitudinal_fitting_groove'], + 'materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'rigidity': obj['rigidity'], + 'interface_materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'type_of_drive': obj['type_of_drive']} + + def _json_magnet_fixture_param(self, obj, fixture_model): + """磁吸夹具:将data数据转换成list数据""" + return {'code': obj['code'], + 'fixture_model_id': fixture_model.id, + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'height_tolerance_value': obj['height_tolerance_value'], + 'weight': obj['weight'], + 'gripper_length_min': obj['gripper_length_min'], + 'gripper_width_min': obj['gripper_width_min'], + 'gripper_height_min': obj['gripper_height_min'], + 'gripper_diameter_min': obj['gripper_diameter_min'], + 'gripper_length_max': obj['gripper_length_max'], + 'gripper_width_max': obj['gripper_width_max'], + 'gripper_height_max': obj['gripper_height_max'], + 'gripper_diameter_max': obj['gripper_diameter_max'], + 'rated_adsorption_force': obj['rated_adsorption_force'], + 'magnetic_field_height': obj['magnetic_field_height'], + 'magnetic_pole_plate_grinding_allowance': obj['magnetic_pole_plate_grinding_allowance'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'rigidity': obj['rigidity'], + 'interface_materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'type_of_drive': obj['type_of_drive']} + + def _json_adapter_board_fixture_param(self, obj, fixture_model): + """转接板(锁板)夹具:将data数据转换成list数据""" + return {'code': obj['code'], + 'fixture_model_id': fixture_model.id, + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'weight': obj['weight'], + 'gripper_length_min': obj['gripper_length_min'], + 'gripper_width_min': obj['gripper_width_min'], + 'gripper_height_min': obj['gripper_height_min'], + 'gripper_diameter_min': obj['gripper_diameter_min'], + 'gripper_length_max': obj['gripper_length_max'], + 'gripper_width_max': obj['gripper_width_max'], + 'gripper_height_max': obj['gripper_height_max'], + 'gripper_diameter_max': obj['gripper_diameter_max'], + 'chucking_power_max': obj['chucking_power_max'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'rigidity': obj['rigidity'], + 'screw_size': obj['screw_size'], + 'via_hole_diameter': obj['via_hole_diameter'], + 'type_of_drive': obj['type_of_drive']} + + def _json_scroll_chuck_param(self, obj, fixture_model): + """转接板(锁板)夹具:将data数据转换成list数据""" + return {'code': obj['code'], + 'fixture_model_id': fixture_model.id, + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'diameter': obj['diameter'], + 'weight': obj['weight'], + 'gripper_length_min': obj['gripper_length_min'], + 'gripper_width_min': obj['gripper_width_min'], + 'gripper_height_min': obj['gripper_height_min'], + 'gripper_diameter_min': obj['gripper_diameter_min'], + 'gripper_length_max': obj['gripper_length_max'], + 'gripper_width_max': obj['gripper_width_max'], + 'gripper_height_max': obj['gripper_height_max'], + 'gripper_diameter_max': obj['gripper_diameter_max'], + 'chucking_power_max': obj['chucking_power_max'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'rigidity': obj['rigidity'], + 'mounting_hole_depth': obj['mounting_hole_depth'], + 'centering_diameter': obj['centering_diameter'], + 'type_of_drive': obj['type_of_drive']} diff --git a/sf_base/models/fixture.py b/sf_base/models/fixture.py index 52e2baf7..0102b296 100644 --- a/sf_base/models/fixture.py +++ b/sf_base/models/fixture.py @@ -27,9 +27,9 @@ class FixtureModel(models.Model): _description = "夹具型号" name = fields.Char(string="名称", size=50, required=True) - fixture_material_id = fields.Many2one('sf.fixture.material', string="夹具物料", required=True) + fixture_material_id = fields.Many2one('sf.fixture.material', string="夹具物料") fixture_material_type = fields.Char(string="夹具物料类型", related='fixture_material_id.name') - multi_mounting_type_id = fields.Many2one('sf.multi_mounting.type', string="联装类型", required=True) + multi_mounting_type_id = fields.Many2one('sf.multi_mounting.type', string="联装类型") brand_id = fields.Many2one('sf.machine.brand', string="品牌") model_file = fields.Binary(string="图片") status = fields.Boolean('状态') diff --git a/sf_base/views/fixture_view.xml b/sf_base/views/fixture_view.xml index 692c3b7f..fffa2a65 100644 --- a/sf_base/views/fixture_view.xml +++ b/sf_base/views/fixture_view.xml @@ -165,6 +165,7 @@ + @@ -190,6 +191,7 @@ + @@ -213,6 +215,7 @@ + @@ -240,6 +243,7 @@ + @@ -268,6 +272,7 @@ + @@ -297,6 +302,7 @@ + @@ -323,6 +329,7 @@ + diff --git a/sf_mrs_connect/models/sync_common.py b/sf_mrs_connect/models/sync_common.py index d9e310e0..06f73e53 100644 --- a/sf_mrs_connect/models/sync_common.py +++ b/sf_mrs_connect/models/sync_common.py @@ -827,7 +827,8 @@ class MachineToolType(models.Model): 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'])]).ids lq_image_id = self.env['maintenance.equipment.image'].search([('name', 'in', item['lq_image_id'])]).ids - category = self.env['sf.machine_tool.category'].search([('code', '=', item['machine_tool_category']), ('active', '=', True)], limit=1) + category = self.env['sf.machine_tool.category'].search( + [('code', '=', item['machine_tool_category']), ('active', '=', True)], limit=1) if not machine_tool_type: self.create({ @@ -1475,90 +1476,62 @@ class SyncFixtureModel(models.Model): for item in result['fixture_model_yesterday_list']: if item: fixture_model = self.search([("code", '=', item['code']), ('active', 'in', [True, False])]) - zero_chuck_list = [] - for zero_chuck_id in item['zero_chuck_ids']: - zero_chuck_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_zero_chuck_param(zero_chuck_id)) - zero_tray_list = [] - for zero_tray_id in item['zero_tray_ids']: - zero_tray_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_zero_tray_param(zero_tray_id)) - pneumatic_fixture_list = [] - for pneumatic_fixture_id in item['pneumatic_fixture_ids']: - pneumatic_fixture_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_pneumatic_fixture_param( - pneumatic_fixture_id)) - jaw_vice_fixture_list = [] - for jaw_vice_fixture_id in item['jaw_vice_fixture_ids']: - jaw_vice_fixture_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_jaw_vice_fixture_param( - jaw_vice_fixture_id)) - magnet_fixture_list = [] - for magnet_fixture_id in item['magnet_fixture_ids']: - magnet_fixture_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_magnet_fixture_param( - magnet_fixture_id)) - adapter_board_fixture_list = [] - for adapter_board_fixture_id in item['adapter_board_fixture_ids']: - adapter_board_fixture_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_adapter_board_fixture_param( - adapter_board_fixture_id)) - scroll_chuck_list = [] - for scroll_chuck_id in item['scroll_chuck_ids']: - scroll_chuck_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_scroll_chuck_param( - scroll_chuck_id)) + fixture_materials = self.env['sf.fixture.materials.basic.parameters'] + val = { + "name": item['name'], + "code": item['code'], + "fixture_material_id": self.env['sf.fixture.material'].search( + [('code', '=', item['fixture_material_code'])]).id, + "multi_mounting_type_id": self.env['sf.multi_mounting.type'].search( + [('code', '=', item['multi_mounting_type_code'])]).id, + "brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id, + "model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']), + "status": item['status'], + "active": item['active'], + } if not fixture_model: - self.create({ - "name": item['name'], - "code": item['code'], - "fixture_material_id": self.env['sf.fixture.material'].search( - [('code', '=', item['fixture_material_code'])]).id, - "multi_mounting_type_id": self.env['sf.multi_mounting.type'].search( - [('code', '=', item['multi_mounting_type_code'])]).id, - "brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id, - "model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']), - "zero_chuck_ids": zero_chuck_list, - "zero_tray_ids": zero_tray_list, - "pneumatic_fixture_ids": pneumatic_fixture_list, - "jaw_vice_fixture_ids": jaw_vice_fixture_list, - "magnet_fixture_ids": magnet_fixture_list, - "adapter_board_fixture_ids": adapter_board_fixture_list, - "scroll_chuck_ids": scroll_chuck_list, - "status": item['status'], - "active": item['active'], - }) + fixture_model = self.create(val) + fixture_material_name = fixture_model.fixture_material_id.name + if item['zero_chuck_ids'] and fixture_material_name == '零点卡盘': + fixture_materials.create_fixture_materials(item['zero_chuck_ids'], fixture_model) + elif item['zero_tray_ids'] and fixture_material_name == '零点托盘': + fixture_materials.create_fixture_materials(item['zero_tray_ids'], fixture_model) + elif item['pneumatic_fixture_ids'] and fixture_material_name == '气动夹具': + fixture_materials.create_fixture_materials(item['pneumatic_fixture_ids'], fixture_model) + elif item['jaw_vice_fixture_ids'] and fixture_material_name == '虎钳夹具': + fixture_materials.create_fixture_materials(item['jaw_vice_fixture_ids'], fixture_model) + elif item['magnet_fixture_ids'] and fixture_material_name == '磁吸夹具': + fixture_materials.create_fixture_materials(item['magnet_fixture_ids'], fixture_model) + elif item['adapter_board_fixture_ids'] and fixture_material_name == '转接板(锁板)夹具': + fixture_materials.create_fixture_materials(item['adapter_board_fixture_ids'], + fixture_model) + elif item['scroll_chuck_ids'] and fixture_material_name == '三爪卡盘': + fixture_materials.create_fixture_materials(item['scroll_chuck_ids'], fixture_model) else: - fixture_model.write({ - "zero_chuck_ids": [(5, 0, 0)], - "zero_tray_ids": [(5, 0, 0)], - "pneumatic_fixture_ids": [(5, 0, 0)], - "jaw_vice_fixture_ids": [(5, 0, 0)], - "magnet_fixture_ids": [(5, 0, 0)], - "adapter_board_fixture_ids": [(5, 0, 0)], - "scroll_chuck_ids": [(5, 0, 0)], - }) - self.env['sf.fixture.materials.basic.parameters'].sudo().search( - [('fixture_model_id', '=', False)]).unlink() - fixture_model.write({ - "name": item['name'], - "code": item['code'], - "fixture_material_id": self.env['sf.fixture.material'].search( - [('code', '=', item['fixture_material_code'])]).id, - "multi_mounting_type_id": self.env['sf.multi_mounting.type'].search( - [('code', '=', item['multi_mounting_type_code'])]).id, - "brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id, - "model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']), - "zero_chuck_ids": zero_chuck_list, - "zero_tray_ids": zero_tray_list, - "pneumatic_fixture_ids": pneumatic_fixture_list, - "jaw_vice_fixture_ids": jaw_vice_fixture_list, - "magnet_fixture_ids": magnet_fixture_list, - "adapter_board_fixture_ids": adapter_board_fixture_list, - "scroll_chuck_ids": scroll_chuck_list, - "status": item['status'], - "active": item['active'], - }) + fixture_model.write(val) + fixture_material_name = fixture_model.fixture_material_id.name + if item['zero_chuck_ids'] and fixture_material_name == '零点卡盘': + fixture_materials.write_fixture_materials(item['zero_chuck_ids'], fixture_material_name) + elif item['zero_tray_ids'] and fixture_material_name == '零点托盘': + fixture_materials.write_fixture_materials(item['zero_tray_ids'], fixture_material_name) + elif item['pneumatic_fixture_ids'] and fixture_material_name == '气动夹具': + fixture_materials.write_fixture_materials(item['pneumatic_fixture_ids'], + fixture_material_name) + elif item['jaw_vice_fixture_ids'] and fixture_material_name == '虎钳夹具': + fixture_materials.write_fixture_materials(item['jaw_vice_fixture_ids'], + fixture_material_name) + elif item['magnet_fixture_ids'] and fixture_material_name == '磁吸夹具': + fixture_materials.write_fixture_materials(item['magnet_fixture_ids'], + fixture_material_name) + elif item['adapter_board_fixture_ids'] and fixture_material_name == '转接板(锁板)夹具': + fixture_materials.write_fixture_materials(item['adapter_board_fixture_ids'], + fixture_material_name) + elif item['scroll_chuck_ids'] and fixture_material_name == '三爪卡盘': + fixture_materials.write_fixture_materials(item['scroll_chuck_ids'], + fixture_material_name) + else: + self.env['sf.fixture.materials.basic.parameters'].sudo().search( + [('fixture_model_id', '=', fixture_model.id)]).unlink() else: raise ValidationError("夹具型号认证未通过") @@ -1576,90 +1549,62 @@ class SyncFixtureModel(models.Model): for item in result['fixture_model_all_list']: if item: fixture_model = self.search([('code', '=', item['code']), ('active', 'in', [True, False])]) - zero_chuck_list = [] - for zero_chuck_id in item['zero_chuck_ids']: - zero_chuck_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_zero_chuck_param(zero_chuck_id)) - zero_tray_list = [] - for zero_tray_id in item['zero_tray_ids']: - zero_tray_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_zero_tray_param(zero_tray_id)) - pneumatic_fixture_list = [] - for pneumatic_fixture_id in item['pneumatic_fixture_ids']: - pneumatic_fixture_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_pneumatic_fixture_param( - pneumatic_fixture_id)) - jaw_vice_fixture_list = [] - for jaw_vice_fixture_id in item['jaw_vice_fixture_ids']: - jaw_vice_fixture_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_jaw_vice_fixture_param( - jaw_vice_fixture_id)) - magnet_fixture_list = [] - for magnet_fixture_id in item['magnet_fixture_ids']: - magnet_fixture_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_magnet_fixture_param( - magnet_fixture_id)) - adapter_board_fixture_list = [] - for adapter_board_fixture_id in item['adapter_board_fixture_ids']: - adapter_board_fixture_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_adapter_board_fixture_param( - adapter_board_fixture_id)) - scroll_chuck_list = [] - for scroll_chuck_id in item['scroll_chuck_ids']: - scroll_chuck_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_scroll_chuck_param( - scroll_chuck_id)) + fixture_materials = self.env['sf.fixture.materials.basic.parameters'] + val = { + "name": item['name'], + "code": item['code'], + "fixture_material_id": self.env['sf.fixture.material'].search( + [('code', '=', item['fixture_material_code'])]).id, + "multi_mounting_type_id": self.env['sf.multi_mounting.type'].search( + [('code', '=', item['multi_mounting_type_code'])]).id, + "brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id, + "model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']), + "status": item['status'], + "active": item['active'], + } if not fixture_model: - self.create({ - "name": item['name'], - "code": item['code'], - "fixture_material_id": self.env['sf.fixture.material'].search( - [('code', '=', item['fixture_material_code'])]).id, - "multi_mounting_type_id": self.env['sf.multi_mounting.type'].search( - [('code', '=', item['multi_mounting_type_code'])]).id, - "brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id, - "model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']), - "zero_chuck_ids": zero_chuck_list, - "zero_tray_ids": zero_tray_list, - "pneumatic_fixture_ids": pneumatic_fixture_list, - "jaw_vice_fixture_ids": jaw_vice_fixture_list, - "magnet_fixture_ids": magnet_fixture_list, - "adapter_board_fixture_ids": adapter_board_fixture_list, - "scroll_chuck_ids": scroll_chuck_list, - "status": item['status'], - "active": item['active'], - }) + fixture_model = self.create(val) + fixture_material_name = fixture_model.fixture_material_id.name + if item['zero_chuck_ids'] and fixture_material_name == '零点卡盘': + fixture_materials.create_fixture_materials(item['zero_chuck_ids'], fixture_model) + elif item['zero_tray_ids'] and fixture_material_name == '零点托盘': + fixture_materials.create_fixture_materials(item['zero_tray_ids'], fixture_model) + elif item['pneumatic_fixture_ids'] and fixture_material_name == '气动夹具': + fixture_materials.create_fixture_materials(item['pneumatic_fixture_ids'], fixture_model) + elif item['jaw_vice_fixture_ids'] and fixture_material_name == '虎钳夹具': + fixture_materials.create_fixture_materials(item['jaw_vice_fixture_ids'], fixture_model) + elif item['magnet_fixture_ids'] and fixture_material_name == '磁吸夹具': + fixture_materials.create_fixture_materials(item['magnet_fixture_ids'], fixture_model) + elif item['adapter_board_fixture_ids'] and fixture_material_name == '转接板(锁板)夹具': + fixture_materials.create_fixture_materials(item['adapter_board_fixture_ids'], + fixture_model) + elif item['scroll_chuck_ids'] and fixture_material_name == '三爪卡盘': + fixture_materials.create_fixture_materials(item['scroll_chuck_ids'], fixture_model) else: - fixture_model.write({ - "zero_chuck_ids": [(5, 0, 0)], - "zero_tray_ids": [(5, 0, 0)], - "pneumatic_fixture_ids": [(5, 0, 0)], - "jaw_vice_fixture_ids": [(5, 0, 0)], - "magnet_fixture_ids": [(5, 0, 0)], - "adapter_board_fixture_ids": [(5, 0, 0)], - "scroll_chuck_ids": [(5, 0, 0)], - }) - self.env['sf.fixture.materials.basic.parameters'].sudo().search( - [('fixture_model_id', '=', False)]).unlink() - fixture_model.write({ - "name": item['name'], - "code": item['code'], - "fixture_material_id": self.env['sf.fixture.material'].search( - [('code', '=', item['fixture_material_code'])]).id, - "multi_mounting_type_id": self.env['sf.multi_mounting.type'].search( - [('code', '=', item['multi_mounting_type_code'])]).id, - "brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id, - "model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']), - "zero_chuck_ids": zero_chuck_list, - "zero_tray_ids": zero_tray_list, - "pneumatic_fixture_ids": pneumatic_fixture_list, - "jaw_vice_fixture_ids": jaw_vice_fixture_list, - "magnet_fixture_ids": magnet_fixture_list, - "adapter_board_fixture_ids": adapter_board_fixture_list, - "scroll_chuck_ids": scroll_chuck_list, - "status": item['status'], - "active": item['active'], - }) + fixture_model.write(val) + fixture_material_name = fixture_model.fixture_material_id.name + if item['zero_chuck_ids'] and fixture_material_name == '零点卡盘': + fixture_materials.write_fixture_materials(item['zero_chuck_ids'], fixture_material_name) + elif item['zero_tray_ids'] and fixture_material_name == '零点托盘': + fixture_materials.write_fixture_materials(item['zero_tray_ids'], fixture_material_name) + elif item['pneumatic_fixture_ids'] and fixture_material_name == '气动夹具': + fixture_materials.write_fixture_materials(item['pneumatic_fixture_ids'], + fixture_material_name) + elif item['jaw_vice_fixture_ids'] and fixture_material_name == '虎钳夹具': + fixture_materials.write_fixture_materials(item['jaw_vice_fixture_ids'], + fixture_material_name) + elif item['magnet_fixture_ids'] and fixture_material_name == '磁吸夹具': + fixture_materials.write_fixture_materials(item['magnet_fixture_ids'], + fixture_material_name) + elif item['adapter_board_fixture_ids'] and fixture_material_name == '转接板(锁板)夹具': + fixture_materials.write_fixture_materials(item['adapter_board_fixture_ids'], + fixture_material_name) + elif item['scroll_chuck_ids'] and fixture_material_name == '三爪卡盘': + fixture_materials.write_fixture_materials(item['scroll_chuck_ids'], + fixture_material_name) + else: + self.env['sf.fixture.materials.basic.parameters'].sudo().search( + [('fixture_model_id', '=', fixture_model.id)]).unlink() else: raise ValidationError("夹具型号认证未通过") @@ -2457,8 +2402,9 @@ class CuttingToolBasicParameters(models.Model): 'cutting_tool_type': '整体式刀具', 'standard_library_id': self.env['sf.cutting_tool.standard.library'].search( [( - 'code', '=', integral_tool_item['standard_library_code'].replace("JKM", result[ - 'factory_short_name']))]).id, + 'code', '=', + integral_tool_item['standard_library_code'].replace("JKM", result[ + 'factory_short_name']))]).id, 'total_length': integral_tool_item['total_length'], 'blade_diameter': integral_tool_item['blade_diameter'], 'blade_length': integral_tool_item['blade_length'], @@ -2825,8 +2771,9 @@ class CuttingToolBasicParameters(models.Model): 'cutting_tool_type': '整体式刀具', 'standard_library_id': self.env['sf.cutting_tool.standard.library'].search( [( - 'code', '=', integral_tool_item['standard_library_code'].replace("JKM", result[ - 'factory_short_name']))]).id, + 'code', '=', + integral_tool_item['standard_library_code'].replace("JKM", result[ + 'factory_short_name']))]).id, 'total_length': integral_tool_item['total_length'], 'blade_diameter': integral_tool_item['blade_diameter'], 'blade_length': integral_tool_item['blade_length'], diff --git a/sf_tool_management/models/functional_tool_enroll.py b/sf_tool_management/models/functional_tool_enroll.py index 0cfac5b7..1d954ed0 100644 --- a/sf_tool_management/models/functional_tool_enroll.py +++ b/sf_tool_management/models/functional_tool_enroll.py @@ -197,6 +197,12 @@ class FunctionalCuttingToolEntity(models.Model): record.enroll_functional_tool_entity() return records + def write(self, vals): + res = super().write(vals) + if vals.get('current_location'): + self.enroll_functional_tool_entity() + return res + class FunctionalToolWarning(models.Model): _inherit = 'sf.functional.tool.warning' From 698ea31d312ae63b65bf8c0cf83a2f6c50ee14d9 Mon Sep 17 00:00:00 2001 From: yuxianghui <3437689193@qq.com> Date: Mon, 18 Mar 2024 10:28:08 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E5=A4=B9=E5=85=B7=E5=9E=8B=E5=8F=B7?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/models/basic_parameters_fixture.py | 82 +++++++++++++--------- sf_base/models/fixture.py | 2 +- sf_base/views/fixture_view.xml | 14 ++-- sf_mrs_connect/models/sync_common.py | 18 ++--- 4 files changed, 64 insertions(+), 52 deletions(-) diff --git a/sf_base/models/basic_parameters_fixture.py b/sf_base/models/basic_parameters_fixture.py index 362b5abf..1333d01f 100644 --- a/sf_base/models/basic_parameters_fixture.py +++ b/sf_base/models/basic_parameters_fixture.py @@ -93,52 +93,68 @@ class BasicParametersFixture(models.Model): for fixture_materials_data in fixture_materials_datas: self.create(self._json_scroll_chuck_param(fixture_materials_data, fixture_model)) - def write_fixture_materials(self, fixture_materials_datas, fixture_materials_name): - # 同步过来的cloud夹具物料的code + def write_fixture_materials(self, fixture_materials_datas, fixture_model): + fixture_materials_name = fixture_model.fixture_material_id.name + # cloud夹具物料的code mrs_fixture_materials_codes = [] for fixture_materials_data in fixture_materials_datas: mrs_fixture_materials_codes.append(fixture_materials_data.get('code')) + # sf夹具物料的code 判断sf夹具型号关联的夹具物料在同步过来的mrs夹具物料中是否存在,不存在则删除 + sf_materials_model_codes = self._get_sf_materials_model_codes(fixture_model) + for sf_materials_model_code in sf_materials_model_codes: + if sf_materials_model_code not in mrs_fixture_materials_codes: + self.search([('code', '=', sf_materials_model_code)]).sudo().unlink() for fixture_materials_data in fixture_materials_datas: - sf_materials_model_codes = [] - # 判断sf夹具型号关联的夹具物料在同步过来的mrs夹具物料中是否存在,如果存在则修改,不存在则删除 - data = self._get_fixture_materials_list(fixture_materials_data, fixture_materials_name) - for zero_chuck_id in data[1]: - code = zero_chuck_id.code - if code in mrs_fixture_materials_codes: - self.search([('code', '=', code)]).sudo().write(data[0]) - sf_materials_model_codes.append(code) - else: - self.search([('code', '=', code)]).sudo().unlink() - # 判断同步过来的mrs刀具物料在sf夹具型号关联的夹具物料中是否存在,如果不存在则创建 - for mrs_fixture_materials_code in mrs_fixture_materials_codes: - if mrs_fixture_materials_code not in sf_materials_model_codes: - self.sudo().create(data[0]) + fixture_materials_list = self._get_fixture_materials_list(fixture_materials_data, fixture_materials_name, + fixture_model) + fixture_materials_code = fixture_materials_list.get('code') + # 判断同步过来的mrs刀具物料在sf夹具型号关联的夹具物料中是否存在,如果存在则修改,如果不存在则创建 + if fixture_materials_code in sf_materials_model_codes: + self.search([('code', '=', fixture_materials_code)]).sudo().write(fixture_materials_list) + else: + self.sudo().create(fixture_materials_list) - def _get_fixture_materials_list(self, fixture_materials_data, fixture_materials_name): - fixture_model = self.env['sf.fixture.model'].sudo().search( - [('code', '=', fixture_materials_data['fixture_model_code']), ('active', '=', True)]) + def _get_sf_materials_model_codes(self, fixture_model): + fixture_materials_name = fixture_model.fixture_material_id.name if fixture_materials_name == '零点卡盘': - materials_list = self._json_zero_chuck_param(fixture_materials_data, fixture_model) - return [materials_list, fixture_model.zero_chuck_ids] + return self._get_sf_materials_model_code(fixture_model.zero_chuck_ids) elif fixture_materials_name == '零点托盘': - materials_list = self._json_zero_tray_param(fixture_materials_data, fixture_model) - return [materials_list, fixture_model.zero_tray_ids] + return self._get_sf_materials_model_code(fixture_model.zero_tray_ids) elif fixture_materials_name == '气动夹具': - materials_list = self._json_pneumatic_fixture_param(fixture_materials_data, fixture_model) - return [materials_list, fixture_model.pneumatic_fixture_ids] + return self._get_sf_materials_model_code(fixture_model.pneumatic_fixture_ids) elif fixture_materials_name == '虎钳夹具': - materials_list = self._json_jaw_vice_fixture_param(fixture_materials_data, fixture_model) - return [materials_list, fixture_model.pneumatic_fixture_ids] + return self._get_sf_materials_model_code(fixture_model.pneumatic_fixture_ids) elif fixture_materials_name == '磁吸夹具': - materials_list = self._json_magnet_fixture_param(fixture_materials_data, fixture_model) - return [materials_list, fixture_model.magnet_fixture_ids] + return self._get_sf_materials_model_code(fixture_model.magnet_fixture_ids) elif fixture_materials_name == '转接板(锁板)夹具': - materials_list = self._json_adapter_board_fixture_param(fixture_materials_data, fixture_model) - return [materials_list, fixture_model.adapter_board_fixture_ids] + return self._get_sf_materials_model_code(fixture_model.adapter_board_fixture_ids) elif fixture_materials_name == '三爪卡盘': - materials_list = self._json_scroll_chuck_param(fixture_materials_data, fixture_model) - return [materials_list, fixture_model.scroll_chuck_ids] + return self._get_sf_materials_model_code(fixture_model.scroll_chuck_ids) + return False + + def _get_sf_materials_model_code(self, fixture_materials_ids): + sf_materials_model_codes = [] + for fixture_materials_id in fixture_materials_ids: + sf_materials_model_codes.append(fixture_materials_id.code) + return sf_materials_model_codes + + def _get_fixture_materials_list(self, fixture_materials_data, fixture_materials_name, fixture_model): + if fixture_materials_name == '零点卡盘': + return self._json_zero_chuck_param(fixture_materials_data, fixture_model) + elif fixture_materials_name == '零点托盘': + return self._json_zero_tray_param(fixture_materials_data, fixture_model) + elif fixture_materials_name == '气动夹具': + return self._json_pneumatic_fixture_param(fixture_materials_data, fixture_model) + elif fixture_materials_name == '虎钳夹具': + return self._json_jaw_vice_fixture_param(fixture_materials_data, fixture_model) + elif fixture_materials_name == '磁吸夹具': + return self._json_magnet_fixture_param(fixture_materials_data, fixture_model) + elif fixture_materials_name == '转接板(锁板)夹具': + return self._json_adapter_board_fixture_param(fixture_materials_data, fixture_model) + elif fixture_materials_name == '三爪卡盘': + return self._json_scroll_chuck_param(fixture_materials_data, fixture_model) + return False def _json_zero_chuck_param(self, obj, fixture_model): """零点卡盘:将data数据转换成list数据""" diff --git a/sf_base/models/fixture.py b/sf_base/models/fixture.py index 0102b296..f64fe473 100644 --- a/sf_base/models/fixture.py +++ b/sf_base/models/fixture.py @@ -26,7 +26,7 @@ class FixtureModel(models.Model): _name = 'sf.fixture.model' _description = "夹具型号" - name = fields.Char(string="名称", size=50, required=True) + name = fields.Char(string="名称", size=50) fixture_material_id = fields.Many2one('sf.fixture.material', string="夹具物料") fixture_material_type = fields.Char(string="夹具物料类型", related='fixture_material_id.name') multi_mounting_type_id = fields.Many2one('sf.multi_mounting.type', string="联装类型") diff --git a/sf_base/views/fixture_view.xml b/sf_base/views/fixture_view.xml index fffa2a65..0e86738d 100644 --- a/sf_base/views/fixture_view.xml +++ b/sf_base/views/fixture_view.xml @@ -165,7 +165,7 @@ - + @@ -191,7 +191,7 @@ - + @@ -215,7 +215,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -272,7 +272,7 @@ - + @@ -302,7 +302,7 @@ - + @@ -329,7 +329,7 @@ - + diff --git a/sf_mrs_connect/models/sync_common.py b/sf_mrs_connect/models/sync_common.py index 06f73e53..210194db 100644 --- a/sf_mrs_connect/models/sync_common.py +++ b/sf_mrs_connect/models/sync_common.py @@ -1584,24 +1584,20 @@ class SyncFixtureModel(models.Model): fixture_model.write(val) fixture_material_name = fixture_model.fixture_material_id.name if item['zero_chuck_ids'] and fixture_material_name == '零点卡盘': - fixture_materials.write_fixture_materials(item['zero_chuck_ids'], fixture_material_name) + fixture_materials.write_fixture_materials(item['zero_chuck_ids'], fixture_model) elif item['zero_tray_ids'] and fixture_material_name == '零点托盘': - fixture_materials.write_fixture_materials(item['zero_tray_ids'], fixture_material_name) + fixture_materials.write_fixture_materials(item['zero_tray_ids'], fixture_model) elif item['pneumatic_fixture_ids'] and fixture_material_name == '气动夹具': - fixture_materials.write_fixture_materials(item['pneumatic_fixture_ids'], - fixture_material_name) + fixture_materials.write_fixture_materials(item['pneumatic_fixture_ids'], fixture_model) elif item['jaw_vice_fixture_ids'] and fixture_material_name == '虎钳夹具': - fixture_materials.write_fixture_materials(item['jaw_vice_fixture_ids'], - fixture_material_name) + fixture_materials.write_fixture_materials(item['jaw_vice_fixture_ids'], fixture_model) elif item['magnet_fixture_ids'] and fixture_material_name == '磁吸夹具': - fixture_materials.write_fixture_materials(item['magnet_fixture_ids'], - fixture_material_name) + fixture_materials.write_fixture_materials(item['magnet_fixture_ids'], fixture_model) elif item['adapter_board_fixture_ids'] and fixture_material_name == '转接板(锁板)夹具': fixture_materials.write_fixture_materials(item['adapter_board_fixture_ids'], - fixture_material_name) + fixture_model) elif item['scroll_chuck_ids'] and fixture_material_name == '三爪卡盘': - fixture_materials.write_fixture_materials(item['scroll_chuck_ids'], - fixture_material_name) + fixture_materials.write_fixture_materials(item['scroll_chuck_ids'], fixture_model) else: self.env['sf.fixture.materials.basic.parameters'].sudo().search( [('fixture_model_id', '=', fixture_model.id)]).unlink() From e444e27cad712e5b619124a6c3daf2b308e3dadd Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Mon, 18 Mar 2024 14:42:51 +0800 Subject: [PATCH 3/9] =?UTF-8?q?1.=E9=80=89=E6=8B=A9=E8=A7=84=E5=88=99?= =?UTF-8?q?=EF=BC=8C=E5=B8=A6=E5=87=BA=E5=AF=B9=E5=BA=94=E5=9E=8B=E5=8F=B7?= =?UTF-8?q?=E5=9B=BE=E7=89=87=202.=E8=A7=84=E6=A0=BC=E5=BC=B9=E5=87=BA?= =?UTF-8?q?=E7=9A=84=E9=A1=B5=E9=9D=A2=E9=9A=90=E8=97=8F=E5=88=80=E5=85=B7?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=203.=E5=9E=8B=E5=8F=B7=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E5=BC=B9=E5=87=BA=E7=9A=84=E9=A1=B5=E9=9D=A2=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=8E=BB=E6=8E=89option=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=EF=BC=8C=E7=BC=96=E7=A0=81=E6=94=B9=E4=B8=BA=E5=BC=BA=E5=88=B6?= =?UTF-8?q?=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/views/tool_basic_param.xml | 2 +- sf_base/views/tool_views.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sf_base/views/tool_basic_param.xml b/sf_base/views/tool_basic_param.xml index 57a4a9a4..d138eeb8 100644 --- a/sf_base/views/tool_basic_param.xml +++ b/sf_base/views/tool_basic_param.xml @@ -124,7 +124,7 @@
- + diff --git a/sf_base/views/tool_views.xml b/sf_base/views/tool_views.xml index aa0e01da..34b87a41 100644 --- a/sf_base/views/tool_views.xml +++ b/sf_base/views/tool_views.xml @@ -123,10 +123,10 @@ + required="1"/>

- +

From cfd2910eadcaf775dc048123f0db0556f45ee1d8 Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Mon, 18 Mar 2024 14:43:27 +0800 Subject: [PATCH 4/9] Merge branch 'develop' of https://e.coding.net/jikimo-hn/jikimo_sfs/jikimo_sf into develop --- sf_base/models/basic_parameters_fixture.py | 443 +++++++++++------- sf_base/models/fixture.py | 6 +- sf_base/views/fixture_view.xml | 7 + sf_mrs_connect/models/sync_common.py | 281 +++++------ sf_plan/models/custom_plan.py | 12 +- sf_plan/views/view.xml | 2 +- .../models/functional_tool_enroll.py | 6 + sf_warehouse/models/model.py | 8 + 8 files changed, 411 insertions(+), 354 deletions(-) diff --git a/sf_base/models/basic_parameters_fixture.py b/sf_base/models/basic_parameters_fixture.py index 7bd69a35..1333d01f 100644 --- a/sf_base/models/basic_parameters_fixture.py +++ b/sf_base/models/basic_parameters_fixture.py @@ -67,186 +67,275 @@ class BasicParametersFixture(models.Model): mounting_hole_depth = fields.Float('安装孔深度(mm)', digits=(16, 2)) centering_diameter = fields.Float('定心直径(mm)', digits=(16, 2)) - def _json_zero_chuck_param(self, obj): - zero_chuck_param_str = (0, '', { - 'name': obj['name'], - 'length': obj['length'], - 'width': obj['width'], - 'height': obj['height'], - 'diameter': obj['diameter'], - 'weight': obj['weight'], - 'orientation_dish_diameter': obj['orientation_dish_diameter'], - 'clamping_diameter': obj['clamping_diameter'], - 'clamping_num': obj['clamping_num'], - 'chucking_power_max': obj['chucking_power_max'], - 'repeated_positioning_accuracy': obj['repeated_positioning_accuracy'], - 'boolean_transposing_hole': obj['boolean_transposing_hole'], - 'unlocking_method': obj['unlocking_method'], - 'boolean_chip_blowing_function': obj['boolean_chip_blowing_function'], - 'carrying_capacity_max': obj['carrying_capacity_max'], - 'rigidity': obj['rigidity'], - 'materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'machine_tool_type_id': self.env['sf.machine_tool.type'].sudo().search( - [('code', '=', obj['machine_tool_type_id']), ('active', '=', True)]).id, - }) - return zero_chuck_param_str + code = fields.Char('编码') - def _json_zero_tray_param(self, obj): - zero_tray_param_str = (0, '', { - 'name': obj['name'], - 'length': obj['length'], - 'width': obj['width'], - 'height': obj['height'], - 'diameter': obj['diameter'], - 'weight': obj['weight'], - 'clamping_diameter': obj['clamping_diameter'], - 'connector_diameter': obj['connector_diameter'], - 'chucking_power_max': obj['chucking_power_max'], - 'repeated_positioning_accuracy': obj['repeated_positioning_accuracy'], - 'boolean_chip_blowing_function': obj['boolean_chip_blowing_function'], - 'way_to_install': obj['way_to_install'], - 'type_of_drive': obj['type_of_drive'], - 'carrying_capacity_max': obj['carrying_capacity_max'], - 'materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'rigidity': obj['rigidity'], - }) - return zero_tray_param_str + def create_fixture_materials(self, fixture_materials_datas, fixture_model): + fixture_materials_name = fixture_model.fixture_material_id.name + if fixture_materials_name == '零点卡盘': + for fixture_materials_data in fixture_materials_datas: + self.create(self._json_zero_chuck_param(fixture_materials_data, fixture_model)) + elif fixture_materials_name == '零点托盘': + for fixture_materials_data in fixture_materials_datas: + self.create(self._json_zero_tray_param(fixture_materials_data, fixture_model)) + elif fixture_materials_name == '气动夹具': + for fixture_materials_data in fixture_materials_datas: + self.create(self._json_pneumatic_fixture_param(fixture_materials_data, fixture_model)) + elif fixture_materials_name == '虎钳夹具': + for fixture_materials_data in fixture_materials_datas: + self.create(self._json_jaw_vice_fixture_param(fixture_materials_data, fixture_model)) + elif fixture_materials_name == '磁吸夹具': + for fixture_materials_data in fixture_materials_datas: + self.create(self._json_magnet_fixture_param(fixture_materials_data, fixture_model)) + elif fixture_materials_name == '转接板(锁板)夹具': + for fixture_materials_data in fixture_materials_datas: + self.create(self._json_adapter_board_fixture_param(fixture_materials_data, fixture_model)) + elif fixture_materials_name == '三爪卡盘': + for fixture_materials_data in fixture_materials_datas: + self.create(self._json_scroll_chuck_param(fixture_materials_data, fixture_model)) - def _json_pneumatic_fixture_param(self, obj): - pneumatic_fixture_param_str = (0, '', { - 'name': obj['name'], - 'length': obj['length'], - 'width': obj['width'], - 'height': obj['height'], - 'weight': obj['weight'], - 'gripper_length_min': obj['gripper_length_min'], - 'gripper_width_min': obj['gripper_width_min'], - 'gripper_height_min': obj['gripper_height_min'], - 'gripper_diameter_min': obj['gripper_diameter_min'], - 'gripper_length_max': obj['gripper_length_max'], - 'gripper_width_max': obj['gripper_width_max'], - 'gripper_height_max': obj['gripper_height_max'], - 'gripper_diameter_max': obj['gripper_diameter_max'], - 'chucking_power_max': obj['chucking_power_max'], - 'carrying_capacity_max': obj['carrying_capacity_max'], - 'rated_air_pressure': obj['rated_air_pressure'], - 'materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'rigidity': obj['rigidity'], - 'interface_materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'type_of_drive': obj['type_of_drive'], - }) - return pneumatic_fixture_param_str + def write_fixture_materials(self, fixture_materials_datas, fixture_model): + fixture_materials_name = fixture_model.fixture_material_id.name + # cloud夹具物料的code + mrs_fixture_materials_codes = [] + for fixture_materials_data in fixture_materials_datas: + mrs_fixture_materials_codes.append(fixture_materials_data.get('code')) + # sf夹具物料的code 判断sf夹具型号关联的夹具物料在同步过来的mrs夹具物料中是否存在,不存在则删除 + sf_materials_model_codes = self._get_sf_materials_model_codes(fixture_model) + for sf_materials_model_code in sf_materials_model_codes: + if sf_materials_model_code not in mrs_fixture_materials_codes: + self.search([('code', '=', sf_materials_model_code)]).sudo().unlink() - def _json_jaw_vice_fixture_param(self, obj): - jaw_vice_fixture_param_str = (0, '', { - 'name': obj['name'], - 'length': obj['length'], - 'width': obj['width'], - 'height': obj['height'], - 'weight': obj['weight'], - 'gripper_length_min': obj['gripper_length_min'], - 'gripper_width_min': obj['gripper_width_min'], - 'gripper_height_min': obj['gripper_height_min'], - 'gripper_diameter_min': obj['gripper_diameter_min'], - 'gripper_length_max': obj['gripper_length_max'], - 'gripper_width_max': obj['gripper_width_max'], - 'gripper_height_max': obj['gripper_height_max'], - 'gripper_diameter_max': obj['gripper_diameter_max'], - 'chucking_power_max': obj['chucking_power_max'], - 'carrying_capacity_max': obj['carrying_capacity_max'], - 'transverse_groove': obj['transverse_groove'], - 'longitudinal_fitting_groove': obj['longitudinal_fitting_groove'], - 'materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'rigidity': obj['rigidity'], - 'interface_materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'type_of_drive': obj['type_of_drive'], - }) - return jaw_vice_fixture_param_str + for fixture_materials_data in fixture_materials_datas: + fixture_materials_list = self._get_fixture_materials_list(fixture_materials_data, fixture_materials_name, + fixture_model) + fixture_materials_code = fixture_materials_list.get('code') + # 判断同步过来的mrs刀具物料在sf夹具型号关联的夹具物料中是否存在,如果存在则修改,如果不存在则创建 + if fixture_materials_code in sf_materials_model_codes: + self.search([('code', '=', fixture_materials_code)]).sudo().write(fixture_materials_list) + else: + self.sudo().create(fixture_materials_list) - def _json_magnet_fixture_param(self, obj): - magnet_fixture_param_str = (0, '', { - 'name': obj['name'], - 'length': obj['length'], - 'width': obj['width'], - 'height': obj['height'], - 'height_tolerance_value': obj['height_tolerance_value'], - 'weight': obj['weight'], - 'gripper_length_min': obj['gripper_length_min'], - 'gripper_width_min': obj['gripper_width_min'], - 'gripper_height_min': obj['gripper_height_min'], - 'gripper_diameter_min': obj['gripper_diameter_min'], - 'gripper_length_max': obj['gripper_length_max'], - 'gripper_width_max': obj['gripper_width_max'], - 'gripper_height_max': obj['gripper_height_max'], - 'gripper_diameter_max': obj['gripper_diameter_max'], - 'rated_adsorption_force': obj['rated_adsorption_force'], - 'magnetic_field_height': obj['magnetic_field_height'], - 'magnetic_pole_plate_grinding_allowance': obj['magnetic_pole_plate_grinding_allowance'], - 'carrying_capacity_max': obj['carrying_capacity_max'], - 'materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'rigidity': obj['rigidity'], - 'interface_materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'type_of_drive': obj['type_of_drive'], - }) - return magnet_fixture_param_str + def _get_sf_materials_model_codes(self, fixture_model): + fixture_materials_name = fixture_model.fixture_material_id.name + if fixture_materials_name == '零点卡盘': + return self._get_sf_materials_model_code(fixture_model.zero_chuck_ids) + elif fixture_materials_name == '零点托盘': + return self._get_sf_materials_model_code(fixture_model.zero_tray_ids) + elif fixture_materials_name == '气动夹具': + return self._get_sf_materials_model_code(fixture_model.pneumatic_fixture_ids) + elif fixture_materials_name == '虎钳夹具': + return self._get_sf_materials_model_code(fixture_model.pneumatic_fixture_ids) + elif fixture_materials_name == '磁吸夹具': + return self._get_sf_materials_model_code(fixture_model.magnet_fixture_ids) + elif fixture_materials_name == '转接板(锁板)夹具': + return self._get_sf_materials_model_code(fixture_model.adapter_board_fixture_ids) + elif fixture_materials_name == '三爪卡盘': + return self._get_sf_materials_model_code(fixture_model.scroll_chuck_ids) + return False - def _json_adapter_board_fixture_param(self, obj): - adapter_board_fixture_param_str = (0, '', { - 'name': obj['name'], - 'length': obj['length'], - 'width': obj['width'], - 'height': obj['height'], - 'weight': obj['weight'], - 'gripper_length_min': obj['gripper_length_min'], - 'gripper_width_min': obj['gripper_width_min'], - 'gripper_height_min': obj['gripper_height_min'], - 'gripper_diameter_min': obj['gripper_diameter_min'], - 'gripper_length_max': obj['gripper_length_max'], - 'gripper_width_max': obj['gripper_width_max'], - 'gripper_height_max': obj['gripper_height_max'], - 'gripper_diameter_max': obj['gripper_diameter_max'], - 'chucking_power_max': obj['chucking_power_max'], - 'carrying_capacity_max': obj['carrying_capacity_max'], - 'materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'rigidity': obj['rigidity'], - 'screw_size': obj['screw_size'], - 'via_hole_diameter': obj['via_hole_diameter'], - 'type_of_drive': obj['type_of_drive'], - }) - return adapter_board_fixture_param_str + def _get_sf_materials_model_code(self, fixture_materials_ids): + sf_materials_model_codes = [] + for fixture_materials_id in fixture_materials_ids: + sf_materials_model_codes.append(fixture_materials_id.code) + return sf_materials_model_codes - def _json_scroll_chuck_param(self, obj): - scroll_chuck_param_str = (0, '', { - 'name': obj['name'], - 'length': obj['length'], - 'width': obj['width'], - 'height': obj['height'], - 'diameter': obj['diameter'], - 'weight': obj['weight'], - 'gripper_length_min': obj['gripper_length_min'], - 'gripper_width_min': obj['gripper_width_min'], - 'gripper_height_min': obj['gripper_height_min'], - 'gripper_diameter_min': obj['gripper_diameter_min'], - 'gripper_length_max': obj['gripper_length_max'], - 'gripper_width_max': obj['gripper_width_max'], - 'gripper_height_max': obj['gripper_height_max'], - 'gripper_diameter_max': obj['gripper_diameter_max'], - 'chucking_power_max': obj['chucking_power_max'], - 'carrying_capacity_max': obj['carrying_capacity_max'], - 'materials_model_id': self.env['sf.materials.model'].sudo().search( - [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'rigidity': obj['rigidity'], - 'mounting_hole_depth': obj['mounting_hole_depth'], - 'centering_diameter': obj['centering_diameter'], - 'type_of_drive': obj['type_of_drive'], - }) - return scroll_chuck_param_str + def _get_fixture_materials_list(self, fixture_materials_data, fixture_materials_name, fixture_model): + if fixture_materials_name == '零点卡盘': + return self._json_zero_chuck_param(fixture_materials_data, fixture_model) + elif fixture_materials_name == '零点托盘': + return self._json_zero_tray_param(fixture_materials_data, fixture_model) + elif fixture_materials_name == '气动夹具': + return self._json_pneumatic_fixture_param(fixture_materials_data, fixture_model) + elif fixture_materials_name == '虎钳夹具': + return self._json_jaw_vice_fixture_param(fixture_materials_data, fixture_model) + elif fixture_materials_name == '磁吸夹具': + return self._json_magnet_fixture_param(fixture_materials_data, fixture_model) + elif fixture_materials_name == '转接板(锁板)夹具': + return self._json_adapter_board_fixture_param(fixture_materials_data, fixture_model) + elif fixture_materials_name == '三爪卡盘': + return self._json_scroll_chuck_param(fixture_materials_data, fixture_model) + return False + + def _json_zero_chuck_param(self, obj, fixture_model): + """零点卡盘:将data数据转换成list数据""" + return {'code': obj['code'], + 'fixture_model_id': fixture_model.id, + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'diameter': obj['diameter'], + 'weight': obj['weight'], + 'orientation_dish_diameter': obj['orientation_dish_diameter'], + 'clamping_diameter': obj['clamping_diameter'], + 'clamping_num': obj['clamping_num'], + 'chucking_power_max': obj['chucking_power_max'], + 'repeated_positioning_accuracy': obj['repeated_positioning_accuracy'], + 'boolean_transposing_hole': obj['boolean_transposing_hole'], + 'unlocking_method': obj['unlocking_method'], + 'boolean_chip_blowing_function': obj['boolean_chip_blowing_function'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'rigidity': obj['rigidity'], + 'materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'machine_tool_type_id': self.env['sf.machine_tool.type'].sudo().search( + [('code', '=', obj['machine_tool_type_id']), ('active', '=', True)]).id} + + def _json_zero_tray_param(self, obj, fixture_model): + """零点托盘:将data数据转换成list数据""" + return {'code': obj['code'], + 'fixture_model_id': fixture_model.id, + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'diameter': obj['diameter'], + 'weight': obj['weight'], + 'clamping_diameter': obj['clamping_diameter'], + 'connector_diameter': obj['connector_diameter'], + 'chucking_power_max': obj['chucking_power_max'], + 'repeated_positioning_accuracy': obj['repeated_positioning_accuracy'], + 'boolean_chip_blowing_function': obj['boolean_chip_blowing_function'], + 'way_to_install': obj['way_to_install'], + 'type_of_drive': obj['type_of_drive'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'rigidity': obj['rigidity']} + + def _json_pneumatic_fixture_param(self, obj, fixture_model): + """气动夹具:将data数据转换成list数据""" + return {'code': obj['code'], + 'fixture_model_id': fixture_model.id, + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'weight': obj['weight'], + 'gripper_length_min': obj['gripper_length_min'], + 'gripper_width_min': obj['gripper_width_min'], + 'gripper_height_min': obj['gripper_height_min'], + 'gripper_diameter_min': obj['gripper_diameter_min'], + 'gripper_length_max': obj['gripper_length_max'], + 'gripper_width_max': obj['gripper_width_max'], + 'gripper_height_max': obj['gripper_height_max'], + 'gripper_diameter_max': obj['gripper_diameter_max'], + 'chucking_power_max': obj['chucking_power_max'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'rated_air_pressure': obj['rated_air_pressure'], + 'materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'rigidity': obj['rigidity'], + 'interface_materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'type_of_drive': obj['type_of_drive']} + + def _json_jaw_vice_fixture_param(self, obj, fixture_model): + """虎钳夹具:将data数据转换成list数据""" + return {'code': obj['code'], + 'fixture_model_id': fixture_model.id, + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'weight': obj['weight'], + 'gripper_length_min': obj['gripper_length_min'], + 'gripper_width_min': obj['gripper_width_min'], + 'gripper_height_min': obj['gripper_height_min'], + 'gripper_diameter_min': obj['gripper_diameter_min'], + 'gripper_length_max': obj['gripper_length_max'], + 'gripper_width_max': obj['gripper_width_max'], + 'gripper_height_max': obj['gripper_height_max'], + 'gripper_diameter_max': obj['gripper_diameter_max'], + 'chucking_power_max': obj['chucking_power_max'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'transverse_groove': obj['transverse_groove'], + 'longitudinal_fitting_groove': obj['longitudinal_fitting_groove'], + 'materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'rigidity': obj['rigidity'], + 'interface_materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'type_of_drive': obj['type_of_drive']} + + def _json_magnet_fixture_param(self, obj, fixture_model): + """磁吸夹具:将data数据转换成list数据""" + return {'code': obj['code'], + 'fixture_model_id': fixture_model.id, + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'height_tolerance_value': obj['height_tolerance_value'], + 'weight': obj['weight'], + 'gripper_length_min': obj['gripper_length_min'], + 'gripper_width_min': obj['gripper_width_min'], + 'gripper_height_min': obj['gripper_height_min'], + 'gripper_diameter_min': obj['gripper_diameter_min'], + 'gripper_length_max': obj['gripper_length_max'], + 'gripper_width_max': obj['gripper_width_max'], + 'gripper_height_max': obj['gripper_height_max'], + 'gripper_diameter_max': obj['gripper_diameter_max'], + 'rated_adsorption_force': obj['rated_adsorption_force'], + 'magnetic_field_height': obj['magnetic_field_height'], + 'magnetic_pole_plate_grinding_allowance': obj['magnetic_pole_plate_grinding_allowance'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'rigidity': obj['rigidity'], + 'interface_materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'type_of_drive': obj['type_of_drive']} + + def _json_adapter_board_fixture_param(self, obj, fixture_model): + """转接板(锁板)夹具:将data数据转换成list数据""" + return {'code': obj['code'], + 'fixture_model_id': fixture_model.id, + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'weight': obj['weight'], + 'gripper_length_min': obj['gripper_length_min'], + 'gripper_width_min': obj['gripper_width_min'], + 'gripper_height_min': obj['gripper_height_min'], + 'gripper_diameter_min': obj['gripper_diameter_min'], + 'gripper_length_max': obj['gripper_length_max'], + 'gripper_width_max': obj['gripper_width_max'], + 'gripper_height_max': obj['gripper_height_max'], + 'gripper_diameter_max': obj['gripper_diameter_max'], + 'chucking_power_max': obj['chucking_power_max'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'rigidity': obj['rigidity'], + 'screw_size': obj['screw_size'], + 'via_hole_diameter': obj['via_hole_diameter'], + 'type_of_drive': obj['type_of_drive']} + + def _json_scroll_chuck_param(self, obj, fixture_model): + """转接板(锁板)夹具:将data数据转换成list数据""" + return {'code': obj['code'], + 'fixture_model_id': fixture_model.id, + 'name': obj['name'], + 'length': obj['length'], + 'width': obj['width'], + 'height': obj['height'], + 'diameter': obj['diameter'], + 'weight': obj['weight'], + 'gripper_length_min': obj['gripper_length_min'], + 'gripper_width_min': obj['gripper_width_min'], + 'gripper_height_min': obj['gripper_height_min'], + 'gripper_diameter_min': obj['gripper_diameter_min'], + 'gripper_length_max': obj['gripper_length_max'], + 'gripper_width_max': obj['gripper_width_max'], + 'gripper_height_max': obj['gripper_height_max'], + 'gripper_diameter_max': obj['gripper_diameter_max'], + 'chucking_power_max': obj['chucking_power_max'], + 'carrying_capacity_max': obj['carrying_capacity_max'], + 'materials_model_id': self.env['sf.materials.model'].sudo().search( + [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, + 'rigidity': obj['rigidity'], + 'mounting_hole_depth': obj['mounting_hole_depth'], + 'centering_diameter': obj['centering_diameter'], + 'type_of_drive': obj['type_of_drive']} diff --git a/sf_base/models/fixture.py b/sf_base/models/fixture.py index 52e2baf7..f64fe473 100644 --- a/sf_base/models/fixture.py +++ b/sf_base/models/fixture.py @@ -26,10 +26,10 @@ class FixtureModel(models.Model): _name = 'sf.fixture.model' _description = "夹具型号" - name = fields.Char(string="名称", size=50, required=True) - fixture_material_id = fields.Many2one('sf.fixture.material', string="夹具物料", required=True) + name = fields.Char(string="名称", size=50) + fixture_material_id = fields.Many2one('sf.fixture.material', string="夹具物料") fixture_material_type = fields.Char(string="夹具物料类型", related='fixture_material_id.name') - multi_mounting_type_id = fields.Many2one('sf.multi_mounting.type', string="联装类型", required=True) + multi_mounting_type_id = fields.Many2one('sf.multi_mounting.type', string="联装类型") brand_id = fields.Many2one('sf.machine.brand', string="品牌") model_file = fields.Binary(string="图片") status = fields.Boolean('状态') diff --git a/sf_base/views/fixture_view.xml b/sf_base/views/fixture_view.xml index 692c3b7f..0e86738d 100644 --- a/sf_base/views/fixture_view.xml +++ b/sf_base/views/fixture_view.xml @@ -165,6 +165,7 @@ + @@ -190,6 +191,7 @@ + @@ -213,6 +215,7 @@ + @@ -240,6 +243,7 @@ + @@ -268,6 +272,7 @@ + @@ -297,6 +302,7 @@ + @@ -323,6 +329,7 @@ + diff --git a/sf_mrs_connect/models/sync_common.py b/sf_mrs_connect/models/sync_common.py index d9e310e0..210194db 100644 --- a/sf_mrs_connect/models/sync_common.py +++ b/sf_mrs_connect/models/sync_common.py @@ -827,7 +827,8 @@ class MachineToolType(models.Model): 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'])]).ids lq_image_id = self.env['maintenance.equipment.image'].search([('name', 'in', item['lq_image_id'])]).ids - category = self.env['sf.machine_tool.category'].search([('code', '=', item['machine_tool_category']), ('active', '=', True)], limit=1) + category = self.env['sf.machine_tool.category'].search( + [('code', '=', item['machine_tool_category']), ('active', '=', True)], limit=1) if not machine_tool_type: self.create({ @@ -1475,90 +1476,62 @@ class SyncFixtureModel(models.Model): for item in result['fixture_model_yesterday_list']: if item: fixture_model = self.search([("code", '=', item['code']), ('active', 'in', [True, False])]) - zero_chuck_list = [] - for zero_chuck_id in item['zero_chuck_ids']: - zero_chuck_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_zero_chuck_param(zero_chuck_id)) - zero_tray_list = [] - for zero_tray_id in item['zero_tray_ids']: - zero_tray_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_zero_tray_param(zero_tray_id)) - pneumatic_fixture_list = [] - for pneumatic_fixture_id in item['pneumatic_fixture_ids']: - pneumatic_fixture_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_pneumatic_fixture_param( - pneumatic_fixture_id)) - jaw_vice_fixture_list = [] - for jaw_vice_fixture_id in item['jaw_vice_fixture_ids']: - jaw_vice_fixture_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_jaw_vice_fixture_param( - jaw_vice_fixture_id)) - magnet_fixture_list = [] - for magnet_fixture_id in item['magnet_fixture_ids']: - magnet_fixture_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_magnet_fixture_param( - magnet_fixture_id)) - adapter_board_fixture_list = [] - for adapter_board_fixture_id in item['adapter_board_fixture_ids']: - adapter_board_fixture_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_adapter_board_fixture_param( - adapter_board_fixture_id)) - scroll_chuck_list = [] - for scroll_chuck_id in item['scroll_chuck_ids']: - scroll_chuck_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_scroll_chuck_param( - scroll_chuck_id)) + fixture_materials = self.env['sf.fixture.materials.basic.parameters'] + val = { + "name": item['name'], + "code": item['code'], + "fixture_material_id": self.env['sf.fixture.material'].search( + [('code', '=', item['fixture_material_code'])]).id, + "multi_mounting_type_id": self.env['sf.multi_mounting.type'].search( + [('code', '=', item['multi_mounting_type_code'])]).id, + "brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id, + "model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']), + "status": item['status'], + "active": item['active'], + } if not fixture_model: - self.create({ - "name": item['name'], - "code": item['code'], - "fixture_material_id": self.env['sf.fixture.material'].search( - [('code', '=', item['fixture_material_code'])]).id, - "multi_mounting_type_id": self.env['sf.multi_mounting.type'].search( - [('code', '=', item['multi_mounting_type_code'])]).id, - "brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id, - "model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']), - "zero_chuck_ids": zero_chuck_list, - "zero_tray_ids": zero_tray_list, - "pneumatic_fixture_ids": pneumatic_fixture_list, - "jaw_vice_fixture_ids": jaw_vice_fixture_list, - "magnet_fixture_ids": magnet_fixture_list, - "adapter_board_fixture_ids": adapter_board_fixture_list, - "scroll_chuck_ids": scroll_chuck_list, - "status": item['status'], - "active": item['active'], - }) + fixture_model = self.create(val) + fixture_material_name = fixture_model.fixture_material_id.name + if item['zero_chuck_ids'] and fixture_material_name == '零点卡盘': + fixture_materials.create_fixture_materials(item['zero_chuck_ids'], fixture_model) + elif item['zero_tray_ids'] and fixture_material_name == '零点托盘': + fixture_materials.create_fixture_materials(item['zero_tray_ids'], fixture_model) + elif item['pneumatic_fixture_ids'] and fixture_material_name == '气动夹具': + fixture_materials.create_fixture_materials(item['pneumatic_fixture_ids'], fixture_model) + elif item['jaw_vice_fixture_ids'] and fixture_material_name == '虎钳夹具': + fixture_materials.create_fixture_materials(item['jaw_vice_fixture_ids'], fixture_model) + elif item['magnet_fixture_ids'] and fixture_material_name == '磁吸夹具': + fixture_materials.create_fixture_materials(item['magnet_fixture_ids'], fixture_model) + elif item['adapter_board_fixture_ids'] and fixture_material_name == '转接板(锁板)夹具': + fixture_materials.create_fixture_materials(item['adapter_board_fixture_ids'], + fixture_model) + elif item['scroll_chuck_ids'] and fixture_material_name == '三爪卡盘': + fixture_materials.create_fixture_materials(item['scroll_chuck_ids'], fixture_model) else: - fixture_model.write({ - "zero_chuck_ids": [(5, 0, 0)], - "zero_tray_ids": [(5, 0, 0)], - "pneumatic_fixture_ids": [(5, 0, 0)], - "jaw_vice_fixture_ids": [(5, 0, 0)], - "magnet_fixture_ids": [(5, 0, 0)], - "adapter_board_fixture_ids": [(5, 0, 0)], - "scroll_chuck_ids": [(5, 0, 0)], - }) - self.env['sf.fixture.materials.basic.parameters'].sudo().search( - [('fixture_model_id', '=', False)]).unlink() - fixture_model.write({ - "name": item['name'], - "code": item['code'], - "fixture_material_id": self.env['sf.fixture.material'].search( - [('code', '=', item['fixture_material_code'])]).id, - "multi_mounting_type_id": self.env['sf.multi_mounting.type'].search( - [('code', '=', item['multi_mounting_type_code'])]).id, - "brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id, - "model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']), - "zero_chuck_ids": zero_chuck_list, - "zero_tray_ids": zero_tray_list, - "pneumatic_fixture_ids": pneumatic_fixture_list, - "jaw_vice_fixture_ids": jaw_vice_fixture_list, - "magnet_fixture_ids": magnet_fixture_list, - "adapter_board_fixture_ids": adapter_board_fixture_list, - "scroll_chuck_ids": scroll_chuck_list, - "status": item['status'], - "active": item['active'], - }) + fixture_model.write(val) + fixture_material_name = fixture_model.fixture_material_id.name + if item['zero_chuck_ids'] and fixture_material_name == '零点卡盘': + fixture_materials.write_fixture_materials(item['zero_chuck_ids'], fixture_material_name) + elif item['zero_tray_ids'] and fixture_material_name == '零点托盘': + fixture_materials.write_fixture_materials(item['zero_tray_ids'], fixture_material_name) + elif item['pneumatic_fixture_ids'] and fixture_material_name == '气动夹具': + fixture_materials.write_fixture_materials(item['pneumatic_fixture_ids'], + fixture_material_name) + elif item['jaw_vice_fixture_ids'] and fixture_material_name == '虎钳夹具': + fixture_materials.write_fixture_materials(item['jaw_vice_fixture_ids'], + fixture_material_name) + elif item['magnet_fixture_ids'] and fixture_material_name == '磁吸夹具': + fixture_materials.write_fixture_materials(item['magnet_fixture_ids'], + fixture_material_name) + elif item['adapter_board_fixture_ids'] and fixture_material_name == '转接板(锁板)夹具': + fixture_materials.write_fixture_materials(item['adapter_board_fixture_ids'], + fixture_material_name) + elif item['scroll_chuck_ids'] and fixture_material_name == '三爪卡盘': + fixture_materials.write_fixture_materials(item['scroll_chuck_ids'], + fixture_material_name) + else: + self.env['sf.fixture.materials.basic.parameters'].sudo().search( + [('fixture_model_id', '=', fixture_model.id)]).unlink() else: raise ValidationError("夹具型号认证未通过") @@ -1576,90 +1549,58 @@ class SyncFixtureModel(models.Model): for item in result['fixture_model_all_list']: if item: fixture_model = self.search([('code', '=', item['code']), ('active', 'in', [True, False])]) - zero_chuck_list = [] - for zero_chuck_id in item['zero_chuck_ids']: - zero_chuck_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_zero_chuck_param(zero_chuck_id)) - zero_tray_list = [] - for zero_tray_id in item['zero_tray_ids']: - zero_tray_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_zero_tray_param(zero_tray_id)) - pneumatic_fixture_list = [] - for pneumatic_fixture_id in item['pneumatic_fixture_ids']: - pneumatic_fixture_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_pneumatic_fixture_param( - pneumatic_fixture_id)) - jaw_vice_fixture_list = [] - for jaw_vice_fixture_id in item['jaw_vice_fixture_ids']: - jaw_vice_fixture_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_jaw_vice_fixture_param( - jaw_vice_fixture_id)) - magnet_fixture_list = [] - for magnet_fixture_id in item['magnet_fixture_ids']: - magnet_fixture_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_magnet_fixture_param( - magnet_fixture_id)) - adapter_board_fixture_list = [] - for adapter_board_fixture_id in item['adapter_board_fixture_ids']: - adapter_board_fixture_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_adapter_board_fixture_param( - adapter_board_fixture_id)) - scroll_chuck_list = [] - for scroll_chuck_id in item['scroll_chuck_ids']: - scroll_chuck_list.append( - self.env['sf.fixture.materials.basic.parameters']._json_scroll_chuck_param( - scroll_chuck_id)) + fixture_materials = self.env['sf.fixture.materials.basic.parameters'] + val = { + "name": item['name'], + "code": item['code'], + "fixture_material_id": self.env['sf.fixture.material'].search( + [('code', '=', item['fixture_material_code'])]).id, + "multi_mounting_type_id": self.env['sf.multi_mounting.type'].search( + [('code', '=', item['multi_mounting_type_code'])]).id, + "brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id, + "model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']), + "status": item['status'], + "active": item['active'], + } if not fixture_model: - self.create({ - "name": item['name'], - "code": item['code'], - "fixture_material_id": self.env['sf.fixture.material'].search( - [('code', '=', item['fixture_material_code'])]).id, - "multi_mounting_type_id": self.env['sf.multi_mounting.type'].search( - [('code', '=', item['multi_mounting_type_code'])]).id, - "brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id, - "model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']), - "zero_chuck_ids": zero_chuck_list, - "zero_tray_ids": zero_tray_list, - "pneumatic_fixture_ids": pneumatic_fixture_list, - "jaw_vice_fixture_ids": jaw_vice_fixture_list, - "magnet_fixture_ids": magnet_fixture_list, - "adapter_board_fixture_ids": adapter_board_fixture_list, - "scroll_chuck_ids": scroll_chuck_list, - "status": item['status'], - "active": item['active'], - }) + fixture_model = self.create(val) + fixture_material_name = fixture_model.fixture_material_id.name + if item['zero_chuck_ids'] and fixture_material_name == '零点卡盘': + fixture_materials.create_fixture_materials(item['zero_chuck_ids'], fixture_model) + elif item['zero_tray_ids'] and fixture_material_name == '零点托盘': + fixture_materials.create_fixture_materials(item['zero_tray_ids'], fixture_model) + elif item['pneumatic_fixture_ids'] and fixture_material_name == '气动夹具': + fixture_materials.create_fixture_materials(item['pneumatic_fixture_ids'], fixture_model) + elif item['jaw_vice_fixture_ids'] and fixture_material_name == '虎钳夹具': + fixture_materials.create_fixture_materials(item['jaw_vice_fixture_ids'], fixture_model) + elif item['magnet_fixture_ids'] and fixture_material_name == '磁吸夹具': + fixture_materials.create_fixture_materials(item['magnet_fixture_ids'], fixture_model) + elif item['adapter_board_fixture_ids'] and fixture_material_name == '转接板(锁板)夹具': + fixture_materials.create_fixture_materials(item['adapter_board_fixture_ids'], + fixture_model) + elif item['scroll_chuck_ids'] and fixture_material_name == '三爪卡盘': + fixture_materials.create_fixture_materials(item['scroll_chuck_ids'], fixture_model) else: - fixture_model.write({ - "zero_chuck_ids": [(5, 0, 0)], - "zero_tray_ids": [(5, 0, 0)], - "pneumatic_fixture_ids": [(5, 0, 0)], - "jaw_vice_fixture_ids": [(5, 0, 0)], - "magnet_fixture_ids": [(5, 0, 0)], - "adapter_board_fixture_ids": [(5, 0, 0)], - "scroll_chuck_ids": [(5, 0, 0)], - }) - self.env['sf.fixture.materials.basic.parameters'].sudo().search( - [('fixture_model_id', '=', False)]).unlink() - fixture_model.write({ - "name": item['name'], - "code": item['code'], - "fixture_material_id": self.env['sf.fixture.material'].search( - [('code', '=', item['fixture_material_code'])]).id, - "multi_mounting_type_id": self.env['sf.multi_mounting.type'].search( - [('code', '=', item['multi_mounting_type_code'])]).id, - "brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id, - "model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']), - "zero_chuck_ids": zero_chuck_list, - "zero_tray_ids": zero_tray_list, - "pneumatic_fixture_ids": pneumatic_fixture_list, - "jaw_vice_fixture_ids": jaw_vice_fixture_list, - "magnet_fixture_ids": magnet_fixture_list, - "adapter_board_fixture_ids": adapter_board_fixture_list, - "scroll_chuck_ids": scroll_chuck_list, - "status": item['status'], - "active": item['active'], - }) + fixture_model.write(val) + fixture_material_name = fixture_model.fixture_material_id.name + if item['zero_chuck_ids'] and fixture_material_name == '零点卡盘': + fixture_materials.write_fixture_materials(item['zero_chuck_ids'], fixture_model) + elif item['zero_tray_ids'] and fixture_material_name == '零点托盘': + fixture_materials.write_fixture_materials(item['zero_tray_ids'], fixture_model) + elif item['pneumatic_fixture_ids'] and fixture_material_name == '气动夹具': + fixture_materials.write_fixture_materials(item['pneumatic_fixture_ids'], fixture_model) + elif item['jaw_vice_fixture_ids'] and fixture_material_name == '虎钳夹具': + fixture_materials.write_fixture_materials(item['jaw_vice_fixture_ids'], fixture_model) + elif item['magnet_fixture_ids'] and fixture_material_name == '磁吸夹具': + fixture_materials.write_fixture_materials(item['magnet_fixture_ids'], fixture_model) + elif item['adapter_board_fixture_ids'] and fixture_material_name == '转接板(锁板)夹具': + fixture_materials.write_fixture_materials(item['adapter_board_fixture_ids'], + fixture_model) + elif item['scroll_chuck_ids'] and fixture_material_name == '三爪卡盘': + fixture_materials.write_fixture_materials(item['scroll_chuck_ids'], fixture_model) + else: + self.env['sf.fixture.materials.basic.parameters'].sudo().search( + [('fixture_model_id', '=', fixture_model.id)]).unlink() else: raise ValidationError("夹具型号认证未通过") @@ -2457,8 +2398,9 @@ class CuttingToolBasicParameters(models.Model): 'cutting_tool_type': '整体式刀具', 'standard_library_id': self.env['sf.cutting_tool.standard.library'].search( [( - 'code', '=', integral_tool_item['standard_library_code'].replace("JKM", result[ - 'factory_short_name']))]).id, + 'code', '=', + integral_tool_item['standard_library_code'].replace("JKM", result[ + 'factory_short_name']))]).id, 'total_length': integral_tool_item['total_length'], 'blade_diameter': integral_tool_item['blade_diameter'], 'blade_length': integral_tool_item['blade_length'], @@ -2825,8 +2767,9 @@ class CuttingToolBasicParameters(models.Model): 'cutting_tool_type': '整体式刀具', 'standard_library_id': self.env['sf.cutting_tool.standard.library'].search( [( - 'code', '=', integral_tool_item['standard_library_code'].replace("JKM", result[ - 'factory_short_name']))]).id, + 'code', '=', + integral_tool_item['standard_library_code'].replace("JKM", result[ + 'factory_short_name']))]).id, 'total_length': integral_tool_item['total_length'], 'blade_diameter': integral_tool_item['blade_diameter'], 'blade_length': integral_tool_item['blade_length'], diff --git a/sf_plan/models/custom_plan.py b/sf_plan/models/custom_plan.py index d4402c98..5f0d254b 100644 --- a/sf_plan/models/custom_plan.py +++ b/sf_plan/models/custom_plan.py @@ -44,8 +44,9 @@ class sf_production_plan(models.Model): production_id = fields.Many2one('mrp.production', '关联制造订单') product_qty = fields.Float(string='数量', digits='Product Unit of Measure', required=True, default=0.0) production_line_id = fields.Many2one('sf.production.line', string='生产线') - date_planned_start = fields.Datetime(string='计划开始时间', required=True, index=True, copy=False, - default=fields.Datetime.now) + # date_planned_start = fields.Datetime(string='计划开始时间', required=True, index=True, copy=False, + # default=fields.Datetime.now) + date_planned_start = fields.Datetime(string='计划开始时间') date_planned_finished = fields.Datetime(string='计划结束时间') # 排程设置selection(倒排,顺排,默认倒排) schedule_setting = fields.Selection([ @@ -80,7 +81,7 @@ class sf_production_plan(models.Model): def _compute_production_line_id(self): for item in self: item.sudo().production_id.production_line_id = item.production_line_id.id - item.sudo().production_id.plan_start_processing_time = item.date_planned_start + # item.sudo().production_id.plan_start_processing_time = item.date_planned_start # @api.onchange('state') # def _onchange_state(self): @@ -198,7 +199,9 @@ class sf_production_plan(models.Model): for item in record.production_id.workorder_ids: if item.name == 'CNC加工': item.date_planned_finished = datetime.now() + timedelta(days=100) - item.date_planned_start = record.date_planned_start + # item.date_planned_start = record.date_planned_start + item.date_planned_start = datetime.now() + record.sudo().production_id.plan_start_processing_time = item.date_planned_start item.date_planned_finished = item.date_planned_start + timedelta( minutes=record.env['mrp.routing.workcenter'].sudo().search( [('name', '=', 'CNC加工')]).time_cycle) @@ -291,6 +294,7 @@ class sf_production_plan(models.Model): print('时间设置失败,请检查是否为工序分配工作中心,%s' % e) def cancel_production_schedule(self): + self.date_planned_start = False self.date_planned_finished = False self.state = 'draft' self.production_line_id = False diff --git a/sf_plan/views/view.xml b/sf_plan/views/view.xml index 38c7f4f8..1e7ff0f6 100644 --- a/sf_plan/views/view.xml +++ b/sf_plan/views/view.xml @@ -88,7 +88,7 @@ - + diff --git a/sf_tool_management/models/functional_tool_enroll.py b/sf_tool_management/models/functional_tool_enroll.py index 0cfac5b7..1d954ed0 100644 --- a/sf_tool_management/models/functional_tool_enroll.py +++ b/sf_tool_management/models/functional_tool_enroll.py @@ -197,6 +197,12 @@ class FunctionalCuttingToolEntity(models.Model): record.enroll_functional_tool_entity() return records + def write(self, vals): + res = super().write(vals) + if vals.get('current_location'): + self.enroll_functional_tool_entity() + return res + class FunctionalToolWarning(models.Model): _inherit = 'sf.functional.tool.warning' diff --git a/sf_warehouse/models/model.py b/sf_warehouse/models/model.py index 3e691430..8e0a3116 100644 --- a/sf_warehouse/models/model.py +++ b/sf_warehouse/models/model.py @@ -424,6 +424,14 @@ class Sf_stock_move_line(models.Model): # lot_qr_code = fields.Binary(string='二维码', compute='_compute_lot_qr_code', store=True) lot_qr_code = fields.Binary(string='二维码', compute='_compute_lot_qr_code', store=True) + def action_revert_inventory(self): + # 检查用户是否有执行操作的权限 + if not self.env.user.has_group('sf_warehouse.group_sf_stock_user'): + raise UserError(_('抱歉,只有库管人员可以执行此动作')) + + # 如果用户有权限,调用父类方法 + return super(CustomStockMoveLine, self).action_revert_inventory() + @api.depends('lot_name') def _compute_lot_qr_code(self): for record in self: From d4c786ff1ed6825ee4a013c36bdca697bb25fd5c Mon Sep 17 00:00:00 2001 From: "jinling.yang" Date: Mon, 18 Mar 2024 14:46:49 +0800 Subject: [PATCH 5/9] =?UTF-8?q?1.=E9=80=89=E6=8B=A9=E8=A7=84=E5=88=99?= =?UTF-8?q?=EF=BC=8C=E5=B8=A6=E5=87=BA=E5=AF=B9=E5=BA=94=E5=9E=8B=E5=8F=B7?= =?UTF-8?q?=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/product_template.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py index 053edafd..be0c09ae 100644 --- a/sf_manufacturing/models/product_template.py +++ b/sf_manufacturing/models/product_template.py @@ -331,6 +331,7 @@ class ResProductMo(models.Model): (6, 0, self.cutting_tool_model_id.suitable_coolant_ids.ids)] self.compaction_way_id = self.cutting_tool_model_id.compaction_way_id.id self.fit_blade_shape_id = self.cutting_tool_model_id.fit_blade_shape_id.id + self.image_1920 = self.cutting_tool_model_id.image else: self.cutting_tool_type_id = False self.brand_id = False From c470935cc5f230c16da321bf91c193309d4249e3 Mon Sep 17 00:00:00 2001 From: yuxianghui <3437689193@qq.com> Date: Mon, 18 Mar 2024 17:15:34 +0800 Subject: [PATCH 6/9] =?UTF-8?q?1=E3=80=81=E5=88=A0=E9=99=A4=E5=A4=B9?= =?UTF-8?q?=E5=85=B7=E5=9E=8B=E5=8F=B7=E5=90=8C=E6=AD=A5=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E5=A4=B9=E5=85=B7=E5=9E=8B=E5=8F=B7=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E5=8F=82=E6=95=B0=E7=9A=84=E6=95=B0=E6=8D=AE=EF=BC=9B?= =?UTF-8?q?2=E3=80=81=E6=96=B0=E5=A2=9E=E5=A4=B9=E5=85=B7=E5=9E=8B?= =?UTF-8?q?=E5=8F=B7=E5=9F=BA=E6=9C=AC=E5=8F=82=E6=95=B0=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E5=A4=B9=E5=85=B7=E5=9E=8B=E5=8F=B7=E5=9F=BA=E6=9C=AC=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E7=9A=84=E5=90=8C=E6=AD=A5=EF=BC=9B3=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=80=E5=85=B7=E7=AE=A1=E7=90=86=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E4=B8=8B=E5=AD=90=E8=8F=9C=E5=8D=95=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=EF=BC=9B4=E3=80=81=E5=85=B3=E9=97=AD=E5=88=80=E5=85=B7?= =?UTF-8?q?=E7=89=A9=E6=96=99=E6=90=9C=E7=B4=A2=E6=A8=A1=E5=9E=8Bform?= =?UTF-8?q?=E8=A7=86=E5=9B=BE=E7=9A=84=E6=B3=A8=E5=86=8C=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_base/models/basic_parameters_fixture.py | 145 +++++----------- sf_mrs_connect/models/res_config_setting.py | 2 + sf_mrs_connect/models/sync_common.py | 156 +++++++++--------- sf_tool_management/views/menu_view.xml | 8 +- .../views/tool_material_search.xml | 8 +- 5 files changed, 133 insertions(+), 186 deletions(-) diff --git a/sf_base/models/basic_parameters_fixture.py b/sf_base/models/basic_parameters_fixture.py index 1333d01f..e9469355 100644 --- a/sf_base/models/basic_parameters_fixture.py +++ b/sf_base/models/basic_parameters_fixture.py @@ -68,98 +68,30 @@ class BasicParametersFixture(models.Model): centering_diameter = fields.Float('定心直径(mm)', digits=(16, 2)) code = fields.Char('编码') + active = fields.Boolean('有效', default=True) - def create_fixture_materials(self, fixture_materials_datas, fixture_model): - fixture_materials_name = fixture_model.fixture_material_id.name + def _get_basic_parameters_list(self, fixture_materials_data, fixture_materials_name): if fixture_materials_name == '零点卡盘': - for fixture_materials_data in fixture_materials_datas: - self.create(self._json_zero_chuck_param(fixture_materials_data, fixture_model)) + return self._json_zero_chuck_param(fixture_materials_data) elif fixture_materials_name == '零点托盘': - for fixture_materials_data in fixture_materials_datas: - self.create(self._json_zero_tray_param(fixture_materials_data, fixture_model)) + return self._json_zero_tray_param(fixture_materials_data) elif fixture_materials_name == '气动夹具': - for fixture_materials_data in fixture_materials_datas: - self.create(self._json_pneumatic_fixture_param(fixture_materials_data, fixture_model)) + return self._json_pneumatic_fixture_param(fixture_materials_data) elif fixture_materials_name == '虎钳夹具': - for fixture_materials_data in fixture_materials_datas: - self.create(self._json_jaw_vice_fixture_param(fixture_materials_data, fixture_model)) + return self._json_jaw_vice_fixture_param(fixture_materials_data) elif fixture_materials_name == '磁吸夹具': - for fixture_materials_data in fixture_materials_datas: - self.create(self._json_magnet_fixture_param(fixture_materials_data, fixture_model)) + return self._json_magnet_fixture_param(fixture_materials_data) elif fixture_materials_name == '转接板(锁板)夹具': - for fixture_materials_data in fixture_materials_datas: - self.create(self._json_adapter_board_fixture_param(fixture_materials_data, fixture_model)) + return self._json_adapter_board_fixture_param(fixture_materials_data) elif fixture_materials_name == '三爪卡盘': - for fixture_materials_data in fixture_materials_datas: - self.create(self._json_scroll_chuck_param(fixture_materials_data, fixture_model)) + return self._json_scroll_chuck_param(fixture_materials_data) + return {} - def write_fixture_materials(self, fixture_materials_datas, fixture_model): - fixture_materials_name = fixture_model.fixture_material_id.name - # cloud夹具物料的code - mrs_fixture_materials_codes = [] - for fixture_materials_data in fixture_materials_datas: - mrs_fixture_materials_codes.append(fixture_materials_data.get('code')) - # sf夹具物料的code 判断sf夹具型号关联的夹具物料在同步过来的mrs夹具物料中是否存在,不存在则删除 - sf_materials_model_codes = self._get_sf_materials_model_codes(fixture_model) - for sf_materials_model_code in sf_materials_model_codes: - if sf_materials_model_code not in mrs_fixture_materials_codes: - self.search([('code', '=', sf_materials_model_code)]).sudo().unlink() - - for fixture_materials_data in fixture_materials_datas: - fixture_materials_list = self._get_fixture_materials_list(fixture_materials_data, fixture_materials_name, - fixture_model) - fixture_materials_code = fixture_materials_list.get('code') - # 判断同步过来的mrs刀具物料在sf夹具型号关联的夹具物料中是否存在,如果存在则修改,如果不存在则创建 - if fixture_materials_code in sf_materials_model_codes: - self.search([('code', '=', fixture_materials_code)]).sudo().write(fixture_materials_list) - else: - self.sudo().create(fixture_materials_list) - - def _get_sf_materials_model_codes(self, fixture_model): - fixture_materials_name = fixture_model.fixture_material_id.name - if fixture_materials_name == '零点卡盘': - return self._get_sf_materials_model_code(fixture_model.zero_chuck_ids) - elif fixture_materials_name == '零点托盘': - return self._get_sf_materials_model_code(fixture_model.zero_tray_ids) - elif fixture_materials_name == '气动夹具': - return self._get_sf_materials_model_code(fixture_model.pneumatic_fixture_ids) - elif fixture_materials_name == '虎钳夹具': - return self._get_sf_materials_model_code(fixture_model.pneumatic_fixture_ids) - elif fixture_materials_name == '磁吸夹具': - return self._get_sf_materials_model_code(fixture_model.magnet_fixture_ids) - elif fixture_materials_name == '转接板(锁板)夹具': - return self._get_sf_materials_model_code(fixture_model.adapter_board_fixture_ids) - elif fixture_materials_name == '三爪卡盘': - return self._get_sf_materials_model_code(fixture_model.scroll_chuck_ids) - return False - - def _get_sf_materials_model_code(self, fixture_materials_ids): - sf_materials_model_codes = [] - for fixture_materials_id in fixture_materials_ids: - sf_materials_model_codes.append(fixture_materials_id.code) - return sf_materials_model_codes - - def _get_fixture_materials_list(self, fixture_materials_data, fixture_materials_name, fixture_model): - if fixture_materials_name == '零点卡盘': - return self._json_zero_chuck_param(fixture_materials_data, fixture_model) - elif fixture_materials_name == '零点托盘': - return self._json_zero_tray_param(fixture_materials_data, fixture_model) - elif fixture_materials_name == '气动夹具': - return self._json_pneumatic_fixture_param(fixture_materials_data, fixture_model) - elif fixture_materials_name == '虎钳夹具': - return self._json_jaw_vice_fixture_param(fixture_materials_data, fixture_model) - elif fixture_materials_name == '磁吸夹具': - return self._json_magnet_fixture_param(fixture_materials_data, fixture_model) - elif fixture_materials_name == '转接板(锁板)夹具': - return self._json_adapter_board_fixture_param(fixture_materials_data, fixture_model) - elif fixture_materials_name == '三爪卡盘': - return self._json_scroll_chuck_param(fixture_materials_data, fixture_model) - return False - - def _json_zero_chuck_param(self, obj, fixture_model): + def _json_zero_chuck_param(self, obj): """零点卡盘:将data数据转换成list数据""" return {'code': obj['code'], - 'fixture_model_id': fixture_model.id, + 'fixture_model_id': self.env['sf.fixture.model'].sudo().search( + [('code', '=', obj.get('fixture_model_code'))]).id, 'name': obj['name'], 'length': obj['length'], 'width': obj['width'], @@ -179,12 +111,14 @@ class BasicParametersFixture(models.Model): 'materials_model_id': self.env['sf.materials.model'].sudo().search( [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, 'machine_tool_type_id': self.env['sf.machine_tool.type'].sudo().search( - [('code', '=', obj['machine_tool_type_id']), ('active', '=', True)]).id} + [('code', '=', obj['machine_tool_type_id']), ('active', '=', True)]).id, + 'active': obj['active']} - def _json_zero_tray_param(self, obj, fixture_model): + def _json_zero_tray_param(self, obj): """零点托盘:将data数据转换成list数据""" return {'code': obj['code'], - 'fixture_model_id': fixture_model.id, + 'fixture_model_id': self.env['sf.fixture.model'].sudo().search( + [('code', '=', obj.get('fixture_model_code'))]).id, 'name': obj['name'], 'length': obj['length'], 'width': obj['width'], @@ -201,12 +135,14 @@ class BasicParametersFixture(models.Model): 'carrying_capacity_max': obj['carrying_capacity_max'], 'materials_model_id': self.env['sf.materials.model'].sudo().search( [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'rigidity': obj['rigidity']} + 'rigidity': obj['rigidity'], + 'active': obj['active']} - def _json_pneumatic_fixture_param(self, obj, fixture_model): + def _json_pneumatic_fixture_param(self, obj): """气动夹具:将data数据转换成list数据""" return {'code': obj['code'], - 'fixture_model_id': fixture_model.id, + 'fixture_model_id': self.env['sf.fixture.model'].sudo().search( + [('code', '=', obj.get('fixture_model_code'))]).id, 'name': obj['name'], 'length': obj['length'], 'width': obj['width'], @@ -228,12 +164,14 @@ class BasicParametersFixture(models.Model): 'rigidity': obj['rigidity'], 'interface_materials_model_id': self.env['sf.materials.model'].sudo().search( [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'type_of_drive': obj['type_of_drive']} + 'type_of_drive': obj['type_of_drive'], + 'active': obj['active']} - def _json_jaw_vice_fixture_param(self, obj, fixture_model): + def _json_jaw_vice_fixture_param(self, obj): """虎钳夹具:将data数据转换成list数据""" return {'code': obj['code'], - 'fixture_model_id': fixture_model.id, + 'fixture_model_id': self.env['sf.fixture.model'].sudo().search( + [('code', '=', obj.get('fixture_model_code'))]).id, 'name': obj['name'], 'length': obj['length'], 'width': obj['width'], @@ -256,12 +194,14 @@ class BasicParametersFixture(models.Model): 'rigidity': obj['rigidity'], 'interface_materials_model_id': self.env['sf.materials.model'].sudo().search( [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'type_of_drive': obj['type_of_drive']} + 'type_of_drive': obj['type_of_drive'], + 'active': obj['active']} - def _json_magnet_fixture_param(self, obj, fixture_model): + def _json_magnet_fixture_param(self, obj): """磁吸夹具:将data数据转换成list数据""" return {'code': obj['code'], - 'fixture_model_id': fixture_model.id, + 'fixture_model_id': self.env['sf.fixture.model'].sudo().search( + [('code', '=', obj.get('fixture_model_code'))]).id, 'name': obj['name'], 'length': obj['length'], 'width': obj['width'], @@ -285,12 +225,14 @@ class BasicParametersFixture(models.Model): 'rigidity': obj['rigidity'], 'interface_materials_model_id': self.env['sf.materials.model'].sudo().search( [('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, - 'type_of_drive': obj['type_of_drive']} + 'type_of_drive': obj['type_of_drive'], + 'active': obj['active']} - def _json_adapter_board_fixture_param(self, obj, fixture_model): + def _json_adapter_board_fixture_param(self, obj): """转接板(锁板)夹具:将data数据转换成list数据""" return {'code': obj['code'], - 'fixture_model_id': fixture_model.id, + 'fixture_model_id': self.env['sf.fixture.model'].sudo().search( + [('code', '=', obj.get('fixture_model_code'))]).id, 'name': obj['name'], 'length': obj['length'], 'width': obj['width'], @@ -311,12 +253,14 @@ class BasicParametersFixture(models.Model): 'rigidity': obj['rigidity'], 'screw_size': obj['screw_size'], 'via_hole_diameter': obj['via_hole_diameter'], - 'type_of_drive': obj['type_of_drive']} + 'type_of_drive': obj['type_of_drive'], + 'active': obj['active']} - def _json_scroll_chuck_param(self, obj, fixture_model): + def _json_scroll_chuck_param(self, obj): """转接板(锁板)夹具:将data数据转换成list数据""" return {'code': obj['code'], - 'fixture_model_id': fixture_model.id, + 'fixture_model_id': self.env['sf.fixture.model'].sudo().search( + [('code', '=', obj.get('fixture_model_code'))]).id, 'name': obj['name'], 'length': obj['length'], 'width': obj['width'], @@ -338,4 +282,5 @@ class BasicParametersFixture(models.Model): 'rigidity': obj['rigidity'], 'mounting_hole_depth': obj['mounting_hole_depth'], 'centering_diameter': obj['centering_diameter'], - 'type_of_drive': obj['type_of_drive']} + 'type_of_drive': obj['type_of_drive'], + 'active': obj['active']} diff --git a/sf_mrs_connect/models/res_config_setting.py b/sf_mrs_connect/models/res_config_setting.py index 5919e5c7..7c10f8b1 100644 --- a/sf_mrs_connect/models/res_config_setting.py +++ b/sf_mrs_connect/models/res_config_setting.py @@ -60,6 +60,8 @@ class ResConfigSettings(models.TransientModel): _logger.info("同步联装类型完成") self.env['sf.fixture.model'].sync_all_fixture_model() _logger.info("同步夹具型号完成") + self.env['sf.fixture.materials.basic.parameters'].sync_all_fixture_materials_basic_parameters() + _logger.info("同步夹具型号基本信息完成") self.env['sf.functional.fixture.type'].sync_all_functional_fixture_type() _logger.info("同步夹具型号类型完成") self.env['sf.machine_tool.type'].sync_all_machine_tool_type() diff --git a/sf_mrs_connect/models/sync_common.py b/sf_mrs_connect/models/sync_common.py index 210194db..5cbfa8ec 100644 --- a/sf_mrs_connect/models/sync_common.py +++ b/sf_mrs_connect/models/sync_common.py @@ -50,6 +50,10 @@ class MrStaticResourceDataSync(models.Model): logging.info("联装类型已每日同步成功") self.env['sf.fixture.model'].sync_fixture_model_yesterday() logging.info("夹具型号已每日同步成功") + self.env['sf.fixture.materials.basic.parameters'].sync_fixture_materials_basic_parameters_yesterday() + logging.info("夹具型号基本参数已每日同步成功") + self.env['sf.functional.fixture.type'].sync_fixture_materials_basic_parameters_yesterday() + logging.info("夹具型号基本参数已每日同步成功") self.env['sf.functional.fixture.type'].sync_functional_fixture_type_yesterday() logging.info("功能夹具类型已每日同步成功") self.env['sf.cutting.tool.material'].sync_cutting_tool_material_yesterday() @@ -1476,7 +1480,6 @@ class SyncFixtureModel(models.Model): for item in result['fixture_model_yesterday_list']: if item: fixture_model = self.search([("code", '=', item['code']), ('active', 'in', [True, False])]) - fixture_materials = self.env['sf.fixture.materials.basic.parameters'] val = { "name": item['name'], "code": item['code'], @@ -1490,48 +1493,10 @@ class SyncFixtureModel(models.Model): "active": item['active'], } if not fixture_model: - fixture_model = self.create(val) - fixture_material_name = fixture_model.fixture_material_id.name - if item['zero_chuck_ids'] and fixture_material_name == '零点卡盘': - fixture_materials.create_fixture_materials(item['zero_chuck_ids'], fixture_model) - elif item['zero_tray_ids'] and fixture_material_name == '零点托盘': - fixture_materials.create_fixture_materials(item['zero_tray_ids'], fixture_model) - elif item['pneumatic_fixture_ids'] and fixture_material_name == '气动夹具': - fixture_materials.create_fixture_materials(item['pneumatic_fixture_ids'], fixture_model) - elif item['jaw_vice_fixture_ids'] and fixture_material_name == '虎钳夹具': - fixture_materials.create_fixture_materials(item['jaw_vice_fixture_ids'], fixture_model) - elif item['magnet_fixture_ids'] and fixture_material_name == '磁吸夹具': - fixture_materials.create_fixture_materials(item['magnet_fixture_ids'], fixture_model) - elif item['adapter_board_fixture_ids'] and fixture_material_name == '转接板(锁板)夹具': - fixture_materials.create_fixture_materials(item['adapter_board_fixture_ids'], - fixture_model) - elif item['scroll_chuck_ids'] and fixture_material_name == '三爪卡盘': - fixture_materials.create_fixture_materials(item['scroll_chuck_ids'], fixture_model) + self.create(val) else: fixture_model.write(val) - fixture_material_name = fixture_model.fixture_material_id.name - if item['zero_chuck_ids'] and fixture_material_name == '零点卡盘': - fixture_materials.write_fixture_materials(item['zero_chuck_ids'], fixture_material_name) - elif item['zero_tray_ids'] and fixture_material_name == '零点托盘': - fixture_materials.write_fixture_materials(item['zero_tray_ids'], fixture_material_name) - elif item['pneumatic_fixture_ids'] and fixture_material_name == '气动夹具': - fixture_materials.write_fixture_materials(item['pneumatic_fixture_ids'], - fixture_material_name) - elif item['jaw_vice_fixture_ids'] and fixture_material_name == '虎钳夹具': - fixture_materials.write_fixture_materials(item['jaw_vice_fixture_ids'], - fixture_material_name) - elif item['magnet_fixture_ids'] and fixture_material_name == '磁吸夹具': - fixture_materials.write_fixture_materials(item['magnet_fixture_ids'], - fixture_material_name) - elif item['adapter_board_fixture_ids'] and fixture_material_name == '转接板(锁板)夹具': - fixture_materials.write_fixture_materials(item['adapter_board_fixture_ids'], - fixture_material_name) - elif item['scroll_chuck_ids'] and fixture_material_name == '三爪卡盘': - fixture_materials.write_fixture_materials(item['scroll_chuck_ids'], - fixture_material_name) - else: - self.env['sf.fixture.materials.basic.parameters'].sudo().search( - [('fixture_model_id', '=', fixture_model.id)]).unlink() + else: raise ValidationError("夹具型号认证未通过") @@ -1549,7 +1514,6 @@ class SyncFixtureModel(models.Model): for item in result['fixture_model_all_list']: if item: fixture_model = self.search([('code', '=', item['code']), ('active', 'in', [True, False])]) - fixture_materials = self.env['sf.fixture.materials.basic.parameters'] val = { "name": item['name'], "code": item['code'], @@ -1563,48 +1527,84 @@ class SyncFixtureModel(models.Model): "active": item['active'], } if not fixture_model: - fixture_model = self.create(val) - fixture_material_name = fixture_model.fixture_material_id.name - if item['zero_chuck_ids'] and fixture_material_name == '零点卡盘': - fixture_materials.create_fixture_materials(item['zero_chuck_ids'], fixture_model) - elif item['zero_tray_ids'] and fixture_material_name == '零点托盘': - fixture_materials.create_fixture_materials(item['zero_tray_ids'], fixture_model) - elif item['pneumatic_fixture_ids'] and fixture_material_name == '气动夹具': - fixture_materials.create_fixture_materials(item['pneumatic_fixture_ids'], fixture_model) - elif item['jaw_vice_fixture_ids'] and fixture_material_name == '虎钳夹具': - fixture_materials.create_fixture_materials(item['jaw_vice_fixture_ids'], fixture_model) - elif item['magnet_fixture_ids'] and fixture_material_name == '磁吸夹具': - fixture_materials.create_fixture_materials(item['magnet_fixture_ids'], fixture_model) - elif item['adapter_board_fixture_ids'] and fixture_material_name == '转接板(锁板)夹具': - fixture_materials.create_fixture_materials(item['adapter_board_fixture_ids'], - fixture_model) - elif item['scroll_chuck_ids'] and fixture_material_name == '三爪卡盘': - fixture_materials.create_fixture_materials(item['scroll_chuck_ids'], fixture_model) + self.create(val) else: fixture_model.write(val) - fixture_material_name = fixture_model.fixture_material_id.name - if item['zero_chuck_ids'] and fixture_material_name == '零点卡盘': - fixture_materials.write_fixture_materials(item['zero_chuck_ids'], fixture_model) - elif item['zero_tray_ids'] and fixture_material_name == '零点托盘': - fixture_materials.write_fixture_materials(item['zero_tray_ids'], fixture_model) - elif item['pneumatic_fixture_ids'] and fixture_material_name == '气动夹具': - fixture_materials.write_fixture_materials(item['pneumatic_fixture_ids'], fixture_model) - elif item['jaw_vice_fixture_ids'] and fixture_material_name == '虎钳夹具': - fixture_materials.write_fixture_materials(item['jaw_vice_fixture_ids'], fixture_model) - elif item['magnet_fixture_ids'] and fixture_material_name == '磁吸夹具': - fixture_materials.write_fixture_materials(item['magnet_fixture_ids'], fixture_model) - elif item['adapter_board_fixture_ids'] and fixture_material_name == '转接板(锁板)夹具': - fixture_materials.write_fixture_materials(item['adapter_board_fixture_ids'], - fixture_model) - elif item['scroll_chuck_ids'] and fixture_material_name == '三爪卡盘': - fixture_materials.write_fixture_materials(item['scroll_chuck_ids'], fixture_model) - else: - self.env['sf.fixture.materials.basic.parameters'].sudo().search( - [('fixture_model_id', '=', fixture_model.id)]).unlink() else: raise ValidationError("夹具型号认证未通过") +class SyncfixtureMaterialsBasicParameters(models.Model): + _inherit = 'sf.fixture.materials.basic.parameters' + _description = '同步夹具型号基本参数列表' + + url = '/api/fixture_parameters/list' + + # 定时同步夹具型号基本信息 + def sync_fixture_materials_basic_parameters_yesterday(self): + config = self.env['res.config.settings'].get_values() + headers = Common.get_headers(self, config['token'], config['sf_secret_key']) + strUrl = config['sf_url'] + self.url + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + if result['status'] == 1: + if result.get('fixture_parameters_yesterday_list'): + all_list = result.get('fixture_parameters_yesterday_list') + if all_list.get('zero_chuck_all_list'): + self._write_or_create(all_list.get('zero_chuck_yesterday_list'), '零点卡盘') + if all_list.get('zero_tray_all_list'): + self._write_or_create(all_list.get('zero_tray_yesterday_list'), '零点托盘') + if all_list.get('pneumatic_fixture_all_list'): + self._write_or_create(all_list.get('pneumatic_fixture_yesterday_list'), '气动夹具') + if all_list.get('jaw_vice_all_list'): + self._write_or_create(all_list.get('jaw_vice_yesterday_list'), '虎钳夹具') + if all_list.get('magnet_fixture_all_list'): + self._write_or_create(all_list.get('magnet_fixture_yesterday_list'), '磁吸夹具') + if all_list.get('adapter_board_all_list'): + self._write_or_create(all_list.get('adapter_board_yesterday_list'), '转接板(锁板)夹具') + if all_list.get('scroll_chuck_all_list'): + self._write_or_create(all_list.get('scroll_chuck_yesterday_list'), '三爪卡盘') + else: + raise ValidationError("夹具型号基本参数认证未通过") + + # 定时同步所有夹具型号基本信息 + def sync_all_fixture_materials_basic_parameters(self): + config = self.env['res.config.settings'].get_values() + headers = Common.get_headers(self, config['token'], config['sf_secret_key']) + strUrl = config['sf_url'] + self.url + r = requests.post(strUrl, json={}, data=None, headers=headers) + r = r.json() + result = json.loads(r['result']) + if result['status'] == 1: + if result.get('fixture_parameters_all_list'): + all_list = result.get('fixture_parameters_all_list') + if all_list.get('zero_chuck_all_list'): + self._write_or_create(all_list.get('zero_chuck_all_list'), '零点卡盘') + if all_list.get('zero_tray_all_list'): + self._write_or_create(all_list.get('zero_tray_all_list'), '零点托盘') + if all_list.get('pneumatic_fixture_all_list'): + self._write_or_create(all_list.get('pneumatic_fixture_all_list'), '气动夹具') + if all_list.get('jaw_vice_all_list'): + self._write_or_create(all_list.get('jaw_vice_all_list'), '虎钳夹具') + if all_list.get('magnet_fixture_all_list'): + self._write_or_create(all_list.get('magnet_fixture_all_list'), '磁吸夹具') + if all_list.get('adapter_board_all_list'): + self._write_or_create(all_list.get('adapter_board_all_list'), '转接板(锁板)夹具') + if all_list.get('scroll_chuck_all_list'): + self._write_or_create(all_list.get('scroll_chuck_all_list'), '三爪卡盘') + else: + raise ValidationError("夹具型号基本参数认证未通过") + + def _write_or_create(self, fixture_parameters_list, material_name): + for item in fixture_parameters_list: + if item: + basic_parameters = self.search([('code', '=', item.get('code')), ('active', 'in', [True, False])]) + if not basic_parameters: + self.create(self._get_basic_parameters_list(item, material_name)) + else: + basic_parameters.write(self._get_basic_parameters_list(item, material_name)) + class SyncFunctionalFixtureType(models.Model): _inherit = 'sf.functional.fixture.type' _description = '同步功能夹具类型列表' diff --git a/sf_tool_management/views/menu_view.xml b/sf_tool_management/views/menu_view.xml index c1fc939b..ea2e0fbd 100644 --- a/sf_tool_management/views/menu_view.xml +++ b/sf_tool_management/views/menu_view.xml @@ -10,8 +10,8 @@ @@ -34,7 +34,7 @@ sf.tool.material.search -
-
+ + +

@@ -62,7 +62,7 @@ -