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'