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] =?UTF-8?q?=E5=A4=B9=E5=85=B7=E5=9E=8B=E5=8F=B7=E5=90=8C?= =?UTF-8?q?=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()