夹具型号同步优化
This commit is contained in:
@@ -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数据"""
|
||||
|
||||
@@ -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="联装类型")
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
<field name="zero_chuck_ids"
|
||||
attrs="{'invisible': [('fixture_material_type', '!=', '零点卡盘')]}">
|
||||
<tree editable="bottom" class="center" delete="0">
|
||||
<field name="code"/>
|
||||
<field name="code" invisible="1"/>
|
||||
<field name="name"/>
|
||||
<field name="length"/>
|
||||
<field name="width"/>
|
||||
@@ -191,7 +191,7 @@
|
||||
<field name="zero_tray_ids"
|
||||
attrs="{'invisible': [('fixture_material_type', '!=', '零点托盘')]}">
|
||||
<tree editable="bottom" class="center" delete="0">
|
||||
<field name="code"/>
|
||||
<field name="code" invisible="1"/>
|
||||
<field name="name"/>
|
||||
<field name="length"/>
|
||||
<field name="width"/>
|
||||
@@ -215,7 +215,7 @@
|
||||
<field name="pneumatic_fixture_ids"
|
||||
attrs="{'invisible': [('fixture_material_type', '!=', '气动夹具')]}">
|
||||
<tree editable="bottom" class="center" delete="0">
|
||||
<field name="code"/>
|
||||
<field name="code" invisible="1"/>
|
||||
<field name="name"/>
|
||||
<field name="length"/>
|
||||
<field name="width"/>
|
||||
@@ -243,7 +243,7 @@
|
||||
<field name="jaw_vice_fixture_ids"
|
||||
attrs="{'invisible': [('fixture_material_type', '!=', '虎钳夹具')]}">
|
||||
<tree editable="bottom" class="center" delete="0">
|
||||
<field name="code"/>
|
||||
<field name="code" invisible="1"/>
|
||||
<field name="name"/>
|
||||
<field name="length"/>
|
||||
<field name="width"/>
|
||||
@@ -272,7 +272,7 @@
|
||||
<field name="magnet_fixture_ids"
|
||||
attrs="{'invisible': [('fixture_material_type', '!=', '磁吸夹具')]}">
|
||||
<tree editable="bottom" class="center" delete="0">
|
||||
<field name="code"/>
|
||||
<field name="code" invisible="1"/>
|
||||
<field name="name"/>
|
||||
<field name="length"/>
|
||||
<field name="width"/>
|
||||
@@ -302,7 +302,7 @@
|
||||
<field name="adapter_board_fixture_ids"
|
||||
attrs="{'invisible': [('fixture_material_type', '!=', '转接板(锁板)夹具')]}">
|
||||
<tree editable="bottom" class="center" delete="0">
|
||||
<field name="code"/>
|
||||
<field name="code" invisible="1"/>
|
||||
<field name="name"/>
|
||||
<field name="length"/>
|
||||
<field name="width"/>
|
||||
@@ -329,7 +329,7 @@
|
||||
<field name="scroll_chuck_ids"
|
||||
attrs="{'invisible': [('fixture_material_type', '!=', '三爪卡盘')]}">
|
||||
<tree editable="bottom" class="center" delete="0">
|
||||
<field name="code"/>
|
||||
<field name="code" invisible="1"/>
|
||||
<field name="name"/>
|
||||
<field name="length"/>
|
||||
<field name="width"/>
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user