Merge branch 'feature/刀具注册' into feature/夹具型号同步优化

This commit is contained in:
yuxianghui
2024-03-18 10:29:22 +08:00
5 changed files with 394 additions and 349 deletions

View File

@@ -67,186 +67,275 @@ class BasicParametersFixture(models.Model):
mounting_hole_depth = fields.Float('安装孔深度(mm)', digits=(16, 2)) mounting_hole_depth = fields.Float('安装孔深度(mm)', digits=(16, 2))
centering_diameter = fields.Float('定心直径(mm)', digits=(16, 2)) centering_diameter = fields.Float('定心直径(mm)', digits=(16, 2))
def _json_zero_chuck_param(self, obj): code = fields.Char('编码')
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
def _json_zero_tray_param(self, obj): def create_fixture_materials(self, fixture_materials_datas, fixture_model):
zero_tray_param_str = (0, '', { fixture_materials_name = fixture_model.fixture_material_id.name
'name': obj['name'], if fixture_materials_name == '零点卡盘':
'length': obj['length'], for fixture_materials_data in fixture_materials_datas:
'width': obj['width'], self.create(self._json_zero_chuck_param(fixture_materials_data, fixture_model))
'height': obj['height'], elif fixture_materials_name == '零点托盘':
'diameter': obj['diameter'], for fixture_materials_data in fixture_materials_datas:
'weight': obj['weight'], self.create(self._json_zero_tray_param(fixture_materials_data, fixture_model))
'clamping_diameter': obj['clamping_diameter'], elif fixture_materials_name == '气动夹具':
'connector_diameter': obj['connector_diameter'], for fixture_materials_data in fixture_materials_datas:
'chucking_power_max': obj['chucking_power_max'], self.create(self._json_pneumatic_fixture_param(fixture_materials_data, fixture_model))
'repeated_positioning_accuracy': obj['repeated_positioning_accuracy'], elif fixture_materials_name == '虎钳夹具':
'boolean_chip_blowing_function': obj['boolean_chip_blowing_function'], for fixture_materials_data in fixture_materials_datas:
'way_to_install': obj['way_to_install'], self.create(self._json_jaw_vice_fixture_param(fixture_materials_data, fixture_model))
'type_of_drive': obj['type_of_drive'], elif fixture_materials_name == '磁吸夹具':
'carrying_capacity_max': obj['carrying_capacity_max'], for fixture_materials_data in fixture_materials_datas:
'materials_model_id': self.env['sf.materials.model'].sudo().search( self.create(self._json_magnet_fixture_param(fixture_materials_data, fixture_model))
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, elif fixture_materials_name == '转接板(锁板)夹具':
'rigidity': obj['rigidity'], for fixture_materials_data in fixture_materials_datas:
}) self.create(self._json_adapter_board_fixture_param(fixture_materials_data, fixture_model))
return zero_tray_param_str 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): def write_fixture_materials(self, fixture_materials_datas, fixture_model):
pneumatic_fixture_param_str = (0, '', { fixture_materials_name = fixture_model.fixture_material_id.name
'name': obj['name'], # cloud夹具物料的code
'length': obj['length'], mrs_fixture_materials_codes = []
'width': obj['width'], for fixture_materials_data in fixture_materials_datas:
'height': obj['height'], mrs_fixture_materials_codes.append(fixture_materials_data.get('code'))
'weight': obj['weight'], # sf夹具物料的code 判断sf夹具型号关联的夹具物料在同步过来的mrs夹具物料中是否存在不存在则删除
'gripper_length_min': obj['gripper_length_min'], sf_materials_model_codes = self._get_sf_materials_model_codes(fixture_model)
'gripper_width_min': obj['gripper_width_min'], for sf_materials_model_code in sf_materials_model_codes:
'gripper_height_min': obj['gripper_height_min'], if sf_materials_model_code not in mrs_fixture_materials_codes:
'gripper_diameter_min': obj['gripper_diameter_min'], self.search([('code', '=', sf_materials_model_code)]).sudo().unlink()
'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 _json_jaw_vice_fixture_param(self, obj): for fixture_materials_data in fixture_materials_datas:
jaw_vice_fixture_param_str = (0, '', { fixture_materials_list = self._get_fixture_materials_list(fixture_materials_data, fixture_materials_name,
'name': obj['name'], fixture_model)
'length': obj['length'], fixture_materials_code = fixture_materials_list.get('code')
'width': obj['width'], # 判断同步过来的mrs刀具物料在sf夹具型号关联的夹具物料中是否存在如果存在则修改如果不存在则创建
'height': obj['height'], if fixture_materials_code in sf_materials_model_codes:
'weight': obj['weight'], self.search([('code', '=', fixture_materials_code)]).sudo().write(fixture_materials_list)
'gripper_length_min': obj['gripper_length_min'], else:
'gripper_width_min': obj['gripper_width_min'], self.sudo().create(fixture_materials_list)
'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
def _json_magnet_fixture_param(self, obj): def _get_sf_materials_model_codes(self, fixture_model):
magnet_fixture_param_str = (0, '', { fixture_materials_name = fixture_model.fixture_material_id.name
'name': obj['name'], if fixture_materials_name == '零点卡盘':
'length': obj['length'], return self._get_sf_materials_model_code(fixture_model.zero_chuck_ids)
'width': obj['width'], elif fixture_materials_name == '零点托盘':
'height': obj['height'], return self._get_sf_materials_model_code(fixture_model.zero_tray_ids)
'height_tolerance_value': obj['height_tolerance_value'], elif fixture_materials_name == '气动夹具':
'weight': obj['weight'], return self._get_sf_materials_model_code(fixture_model.pneumatic_fixture_ids)
'gripper_length_min': obj['gripper_length_min'], elif fixture_materials_name == '虎钳夹具':
'gripper_width_min': obj['gripper_width_min'], return self._get_sf_materials_model_code(fixture_model.pneumatic_fixture_ids)
'gripper_height_min': obj['gripper_height_min'], elif fixture_materials_name == '磁吸夹具':
'gripper_diameter_min': obj['gripper_diameter_min'], return self._get_sf_materials_model_code(fixture_model.magnet_fixture_ids)
'gripper_length_max': obj['gripper_length_max'], elif fixture_materials_name == '转接板(锁板)夹具':
'gripper_width_max': obj['gripper_width_max'], return self._get_sf_materials_model_code(fixture_model.adapter_board_fixture_ids)
'gripper_height_max': obj['gripper_height_max'], elif fixture_materials_name == '三爪卡盘':
'gripper_diameter_max': obj['gripper_diameter_max'], return self._get_sf_materials_model_code(fixture_model.scroll_chuck_ids)
'rated_adsorption_force': obj['rated_adsorption_force'], return False
'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 _json_adapter_board_fixture_param(self, obj): def _get_sf_materials_model_code(self, fixture_materials_ids):
adapter_board_fixture_param_str = (0, '', { sf_materials_model_codes = []
'name': obj['name'], for fixture_materials_id in fixture_materials_ids:
'length': obj['length'], sf_materials_model_codes.append(fixture_materials_id.code)
'width': obj['width'], return sf_materials_model_codes
'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_scroll_chuck_param(self, obj): def _get_fixture_materials_list(self, fixture_materials_data, fixture_materials_name, fixture_model):
scroll_chuck_param_str = (0, '', { if fixture_materials_name == '零点卡盘':
'name': obj['name'], return self._json_zero_chuck_param(fixture_materials_data, fixture_model)
'length': obj['length'], elif fixture_materials_name == '零点托盘':
'width': obj['width'], return self._json_zero_tray_param(fixture_materials_data, fixture_model)
'height': obj['height'], elif fixture_materials_name == '气动夹具':
'diameter': obj['diameter'], return self._json_pneumatic_fixture_param(fixture_materials_data, fixture_model)
'weight': obj['weight'], elif fixture_materials_name == '虎钳夹具':
'gripper_length_min': obj['gripper_length_min'], return self._json_jaw_vice_fixture_param(fixture_materials_data, fixture_model)
'gripper_width_min': obj['gripper_width_min'], elif fixture_materials_name == '磁吸夹具':
'gripper_height_min': obj['gripper_height_min'], return self._json_magnet_fixture_param(fixture_materials_data, fixture_model)
'gripper_diameter_min': obj['gripper_diameter_min'], elif fixture_materials_name == '转接板(锁板)夹具':
'gripper_length_max': obj['gripper_length_max'], return self._json_adapter_board_fixture_param(fixture_materials_data, fixture_model)
'gripper_width_max': obj['gripper_width_max'], elif fixture_materials_name == '三爪卡盘':
'gripper_height_max': obj['gripper_height_max'], return self._json_scroll_chuck_param(fixture_materials_data, fixture_model)
'gripper_diameter_max': obj['gripper_diameter_max'], return False
'chucking_power_max': obj['chucking_power_max'],
'carrying_capacity_max': obj['carrying_capacity_max'], def _json_zero_chuck_param(self, obj, fixture_model):
'materials_model_id': self.env['sf.materials.model'].sudo().search( """零点卡盘将data数据转换成list数据"""
[('materials_no', '=', obj['materials_model_id']), ('active', '=', True)]).id, return {'code': obj['code'],
'rigidity': obj['rigidity'], 'fixture_model_id': fixture_model.id,
'mounting_hole_depth': obj['mounting_hole_depth'], 'name': obj['name'],
'centering_diameter': obj['centering_diameter'], 'length': obj['length'],
'type_of_drive': obj['type_of_drive'], 'width': obj['width'],
}) 'height': obj['height'],
return scroll_chuck_param_str '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']}

View File

@@ -26,10 +26,10 @@ class FixtureModel(models.Model):
_name = 'sf.fixture.model' _name = 'sf.fixture.model'
_description = "夹具型号" _description = "夹具型号"
name = fields.Char(string="名称", size=50, required=True) name = fields.Char(string="名称", size=50)
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') 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="品牌") brand_id = fields.Many2one('sf.machine.brand', string="品牌")
model_file = fields.Binary(string="图片") model_file = fields.Binary(string="图片")
status = fields.Boolean('状态') status = fields.Boolean('状态')

View File

@@ -165,6 +165,7 @@
<field name="zero_chuck_ids" <field name="zero_chuck_ids"
attrs="{'invisible': [('fixture_material_type', '!=', '零点卡盘')]}"> attrs="{'invisible': [('fixture_material_type', '!=', '零点卡盘')]}">
<tree editable="bottom" class="center" delete="0"> <tree editable="bottom" class="center" delete="0">
<field name="code" invisible="1"/>
<field name="name"/> <field name="name"/>
<field name="length"/> <field name="length"/>
<field name="width"/> <field name="width"/>
@@ -190,6 +191,7 @@
<field name="zero_tray_ids" <field name="zero_tray_ids"
attrs="{'invisible': [('fixture_material_type', '!=', '零点托盘')]}"> attrs="{'invisible': [('fixture_material_type', '!=', '零点托盘')]}">
<tree editable="bottom" class="center" delete="0"> <tree editable="bottom" class="center" delete="0">
<field name="code" invisible="1"/>
<field name="name"/> <field name="name"/>
<field name="length"/> <field name="length"/>
<field name="width"/> <field name="width"/>
@@ -213,6 +215,7 @@
<field name="pneumatic_fixture_ids" <field name="pneumatic_fixture_ids"
attrs="{'invisible': [('fixture_material_type', '!=', '气动夹具')]}"> attrs="{'invisible': [('fixture_material_type', '!=', '气动夹具')]}">
<tree editable="bottom" class="center" delete="0"> <tree editable="bottom" class="center" delete="0">
<field name="code" invisible="1"/>
<field name="name"/> <field name="name"/>
<field name="length"/> <field name="length"/>
<field name="width"/> <field name="width"/>
@@ -240,6 +243,7 @@
<field name="jaw_vice_fixture_ids" <field name="jaw_vice_fixture_ids"
attrs="{'invisible': [('fixture_material_type', '!=', '虎钳夹具')]}"> attrs="{'invisible': [('fixture_material_type', '!=', '虎钳夹具')]}">
<tree editable="bottom" class="center" delete="0"> <tree editable="bottom" class="center" delete="0">
<field name="code" invisible="1"/>
<field name="name"/> <field name="name"/>
<field name="length"/> <field name="length"/>
<field name="width"/> <field name="width"/>
@@ -268,6 +272,7 @@
<field name="magnet_fixture_ids" <field name="magnet_fixture_ids"
attrs="{'invisible': [('fixture_material_type', '!=', '磁吸夹具')]}"> attrs="{'invisible': [('fixture_material_type', '!=', '磁吸夹具')]}">
<tree editable="bottom" class="center" delete="0"> <tree editable="bottom" class="center" delete="0">
<field name="code" invisible="1"/>
<field name="name"/> <field name="name"/>
<field name="length"/> <field name="length"/>
<field name="width"/> <field name="width"/>
@@ -297,6 +302,7 @@
<field name="adapter_board_fixture_ids" <field name="adapter_board_fixture_ids"
attrs="{'invisible': [('fixture_material_type', '!=', '转接板(锁板)夹具')]}"> attrs="{'invisible': [('fixture_material_type', '!=', '转接板(锁板)夹具')]}">
<tree editable="bottom" class="center" delete="0"> <tree editable="bottom" class="center" delete="0">
<field name="code" invisible="1"/>
<field name="name"/> <field name="name"/>
<field name="length"/> <field name="length"/>
<field name="width"/> <field name="width"/>
@@ -323,6 +329,7 @@
<field name="scroll_chuck_ids" <field name="scroll_chuck_ids"
attrs="{'invisible': [('fixture_material_type', '!=', '三爪卡盘')]}"> attrs="{'invisible': [('fixture_material_type', '!=', '三爪卡盘')]}">
<tree editable="bottom" class="center" delete="0"> <tree editable="bottom" class="center" delete="0">
<field name="code" invisible="1"/>
<field name="name"/> <field name="name"/>
<field name="length"/> <field name="length"/>
<field name="width"/> <field name="width"/>

View File

@@ -827,7 +827,8 @@ class MachineToolType(models.Model):
brand = self.env['sf.machine.brand'].search([('code', '=', item['brand_id'])]) 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 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 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: if not machine_tool_type:
self.create({ self.create({
@@ -1475,90 +1476,62 @@ class SyncFixtureModel(models.Model):
for item in result['fixture_model_yesterday_list']: for item in result['fixture_model_yesterday_list']:
if item: if item:
fixture_model = self.search([("code", '=', item['code']), ('active', 'in', [True, False])]) fixture_model = self.search([("code", '=', item['code']), ('active', 'in', [True, False])])
zero_chuck_list = [] fixture_materials = self.env['sf.fixture.materials.basic.parameters']
for zero_chuck_id in item['zero_chuck_ids']: val = {
zero_chuck_list.append( "name": item['name'],
self.env['sf.fixture.materials.basic.parameters']._json_zero_chuck_param(zero_chuck_id)) "code": item['code'],
zero_tray_list = [] "fixture_material_id": self.env['sf.fixture.material'].search(
for zero_tray_id in item['zero_tray_ids']: [('code', '=', item['fixture_material_code'])]).id,
zero_tray_list.append( "multi_mounting_type_id": self.env['sf.multi_mounting.type'].search(
self.env['sf.fixture.materials.basic.parameters']._json_zero_tray_param(zero_tray_id)) [('code', '=', item['multi_mounting_type_code'])]).id,
pneumatic_fixture_list = [] "brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id,
for pneumatic_fixture_id in item['pneumatic_fixture_ids']: "model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']),
pneumatic_fixture_list.append( "status": item['status'],
self.env['sf.fixture.materials.basic.parameters']._json_pneumatic_fixture_param( "active": item['active'],
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))
if not fixture_model: if not fixture_model:
self.create({ fixture_model = self.create(val)
"name": item['name'], fixture_material_name = fixture_model.fixture_material_id.name
"code": item['code'], if item['zero_chuck_ids'] and fixture_material_name == '零点卡盘':
"fixture_material_id": self.env['sf.fixture.material'].search( fixture_materials.create_fixture_materials(item['zero_chuck_ids'], fixture_model)
[('code', '=', item['fixture_material_code'])]).id, elif item['zero_tray_ids'] and fixture_material_name == '零点托盘':
"multi_mounting_type_id": self.env['sf.multi_mounting.type'].search( fixture_materials.create_fixture_materials(item['zero_tray_ids'], fixture_model)
[('code', '=', item['multi_mounting_type_code'])]).id, elif item['pneumatic_fixture_ids'] and fixture_material_name == '气动夹具':
"brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id, fixture_materials.create_fixture_materials(item['pneumatic_fixture_ids'], fixture_model)
"model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']), elif item['jaw_vice_fixture_ids'] and fixture_material_name == '虎钳夹具':
"zero_chuck_ids": zero_chuck_list, fixture_materials.create_fixture_materials(item['jaw_vice_fixture_ids'], fixture_model)
"zero_tray_ids": zero_tray_list, elif item['magnet_fixture_ids'] and fixture_material_name == '磁吸夹具':
"pneumatic_fixture_ids": pneumatic_fixture_list, fixture_materials.create_fixture_materials(item['magnet_fixture_ids'], fixture_model)
"jaw_vice_fixture_ids": jaw_vice_fixture_list, elif item['adapter_board_fixture_ids'] and fixture_material_name == '转接板(锁板)夹具':
"magnet_fixture_ids": magnet_fixture_list, fixture_materials.create_fixture_materials(item['adapter_board_fixture_ids'],
"adapter_board_fixture_ids": adapter_board_fixture_list, fixture_model)
"scroll_chuck_ids": scroll_chuck_list, elif item['scroll_chuck_ids'] and fixture_material_name == '三爪卡盘':
"status": item['status'], fixture_materials.create_fixture_materials(item['scroll_chuck_ids'], fixture_model)
"active": item['active'],
})
else: else:
fixture_model.write({ fixture_model.write(val)
"zero_chuck_ids": [(5, 0, 0)], fixture_material_name = fixture_model.fixture_material_id.name
"zero_tray_ids": [(5, 0, 0)], if item['zero_chuck_ids'] and fixture_material_name == '零点卡盘':
"pneumatic_fixture_ids": [(5, 0, 0)], fixture_materials.write_fixture_materials(item['zero_chuck_ids'], fixture_material_name)
"jaw_vice_fixture_ids": [(5, 0, 0)], elif item['zero_tray_ids'] and fixture_material_name == '零点托盘':
"magnet_fixture_ids": [(5, 0, 0)], fixture_materials.write_fixture_materials(item['zero_tray_ids'], fixture_material_name)
"adapter_board_fixture_ids": [(5, 0, 0)], elif item['pneumatic_fixture_ids'] and fixture_material_name == '气动夹具':
"scroll_chuck_ids": [(5, 0, 0)], fixture_materials.write_fixture_materials(item['pneumatic_fixture_ids'],
}) fixture_material_name)
self.env['sf.fixture.materials.basic.parameters'].sudo().search( elif item['jaw_vice_fixture_ids'] and fixture_material_name == '虎钳夹具':
[('fixture_model_id', '=', False)]).unlink() fixture_materials.write_fixture_materials(item['jaw_vice_fixture_ids'],
fixture_model.write({ fixture_material_name)
"name": item['name'], elif item['magnet_fixture_ids'] and fixture_material_name == '磁吸夹具':
"code": item['code'], fixture_materials.write_fixture_materials(item['magnet_fixture_ids'],
"fixture_material_id": self.env['sf.fixture.material'].search( fixture_material_name)
[('code', '=', item['fixture_material_code'])]).id, elif item['adapter_board_fixture_ids'] and fixture_material_name == '转接板(锁板)夹具':
"multi_mounting_type_id": self.env['sf.multi_mounting.type'].search( fixture_materials.write_fixture_materials(item['adapter_board_fixture_ids'],
[('code', '=', item['multi_mounting_type_code'])]).id, fixture_material_name)
"brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id, elif item['scroll_chuck_ids'] and fixture_material_name == '三爪卡盘':
"model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']), fixture_materials.write_fixture_materials(item['scroll_chuck_ids'],
"zero_chuck_ids": zero_chuck_list, fixture_material_name)
"zero_tray_ids": zero_tray_list, else:
"pneumatic_fixture_ids": pneumatic_fixture_list, self.env['sf.fixture.materials.basic.parameters'].sudo().search(
"jaw_vice_fixture_ids": jaw_vice_fixture_list, [('fixture_model_id', '=', fixture_model.id)]).unlink()
"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'],
})
else: else:
raise ValidationError("夹具型号认证未通过") raise ValidationError("夹具型号认证未通过")
@@ -1576,90 +1549,58 @@ class SyncFixtureModel(models.Model):
for item in result['fixture_model_all_list']: for item in result['fixture_model_all_list']:
if item: if item:
fixture_model = self.search([('code', '=', item['code']), ('active', 'in', [True, False])]) fixture_model = self.search([('code', '=', item['code']), ('active', 'in', [True, False])])
zero_chuck_list = [] fixture_materials = self.env['sf.fixture.materials.basic.parameters']
for zero_chuck_id in item['zero_chuck_ids']: val = {
zero_chuck_list.append( "name": item['name'],
self.env['sf.fixture.materials.basic.parameters']._json_zero_chuck_param(zero_chuck_id)) "code": item['code'],
zero_tray_list = [] "fixture_material_id": self.env['sf.fixture.material'].search(
for zero_tray_id in item['zero_tray_ids']: [('code', '=', item['fixture_material_code'])]).id,
zero_tray_list.append( "multi_mounting_type_id": self.env['sf.multi_mounting.type'].search(
self.env['sf.fixture.materials.basic.parameters']._json_zero_tray_param(zero_tray_id)) [('code', '=', item['multi_mounting_type_code'])]).id,
pneumatic_fixture_list = [] "brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id,
for pneumatic_fixture_id in item['pneumatic_fixture_ids']: "model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']),
pneumatic_fixture_list.append( "status": item['status'],
self.env['sf.fixture.materials.basic.parameters']._json_pneumatic_fixture_param( "active": item['active'],
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))
if not fixture_model: if not fixture_model:
self.create({ fixture_model = self.create(val)
"name": item['name'], fixture_material_name = fixture_model.fixture_material_id.name
"code": item['code'], if item['zero_chuck_ids'] and fixture_material_name == '零点卡盘':
"fixture_material_id": self.env['sf.fixture.material'].search( fixture_materials.create_fixture_materials(item['zero_chuck_ids'], fixture_model)
[('code', '=', item['fixture_material_code'])]).id, elif item['zero_tray_ids'] and fixture_material_name == '零点托盘':
"multi_mounting_type_id": self.env['sf.multi_mounting.type'].search( fixture_materials.create_fixture_materials(item['zero_tray_ids'], fixture_model)
[('code', '=', item['multi_mounting_type_code'])]).id, elif item['pneumatic_fixture_ids'] and fixture_material_name == '气动夹具':
"brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id, fixture_materials.create_fixture_materials(item['pneumatic_fixture_ids'], fixture_model)
"model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']), elif item['jaw_vice_fixture_ids'] and fixture_material_name == '虎钳夹具':
"zero_chuck_ids": zero_chuck_list, fixture_materials.create_fixture_materials(item['jaw_vice_fixture_ids'], fixture_model)
"zero_tray_ids": zero_tray_list, elif item['magnet_fixture_ids'] and fixture_material_name == '磁吸夹具':
"pneumatic_fixture_ids": pneumatic_fixture_list, fixture_materials.create_fixture_materials(item['magnet_fixture_ids'], fixture_model)
"jaw_vice_fixture_ids": jaw_vice_fixture_list, elif item['adapter_board_fixture_ids'] and fixture_material_name == '转接板(锁板)夹具':
"magnet_fixture_ids": magnet_fixture_list, fixture_materials.create_fixture_materials(item['adapter_board_fixture_ids'],
"adapter_board_fixture_ids": adapter_board_fixture_list, fixture_model)
"scroll_chuck_ids": scroll_chuck_list, elif item['scroll_chuck_ids'] and fixture_material_name == '三爪卡盘':
"status": item['status'], fixture_materials.create_fixture_materials(item['scroll_chuck_ids'], fixture_model)
"active": item['active'],
})
else: else:
fixture_model.write({ fixture_model.write(val)
"zero_chuck_ids": [(5, 0, 0)], fixture_material_name = fixture_model.fixture_material_id.name
"zero_tray_ids": [(5, 0, 0)], if item['zero_chuck_ids'] and fixture_material_name == '零点卡盘':
"pneumatic_fixture_ids": [(5, 0, 0)], fixture_materials.write_fixture_materials(item['zero_chuck_ids'], fixture_model)
"jaw_vice_fixture_ids": [(5, 0, 0)], elif item['zero_tray_ids'] and fixture_material_name == '零点托盘':
"magnet_fixture_ids": [(5, 0, 0)], fixture_materials.write_fixture_materials(item['zero_tray_ids'], fixture_model)
"adapter_board_fixture_ids": [(5, 0, 0)], elif item['pneumatic_fixture_ids'] and fixture_material_name == '气动夹具':
"scroll_chuck_ids": [(5, 0, 0)], fixture_materials.write_fixture_materials(item['pneumatic_fixture_ids'], fixture_model)
}) elif item['jaw_vice_fixture_ids'] and fixture_material_name == '虎钳夹具':
self.env['sf.fixture.materials.basic.parameters'].sudo().search( fixture_materials.write_fixture_materials(item['jaw_vice_fixture_ids'], fixture_model)
[('fixture_model_id', '=', False)]).unlink() elif item['magnet_fixture_ids'] and fixture_material_name == '磁吸夹具':
fixture_model.write({ fixture_materials.write_fixture_materials(item['magnet_fixture_ids'], fixture_model)
"name": item['name'], elif item['adapter_board_fixture_ids'] and fixture_material_name == '转接板(锁板)夹具':
"code": item['code'], fixture_materials.write_fixture_materials(item['adapter_board_fixture_ids'],
"fixture_material_id": self.env['sf.fixture.material'].search( fixture_model)
[('code', '=', item['fixture_material_code'])]).id, elif item['scroll_chuck_ids'] and fixture_material_name == '三爪卡盘':
"multi_mounting_type_id": self.env['sf.multi_mounting.type'].search( fixture_materials.write_fixture_materials(item['scroll_chuck_ids'], fixture_model)
[('code', '=', item['multi_mounting_type_code'])]).id, else:
"brand_id": self.env['sf.machine.brand'].search([('code', '=', item['brand_code'])]).id, self.env['sf.fixture.materials.basic.parameters'].sudo().search(
"model_file": '' if not item['model_file'] else base64.b64decode(item['model_file']), [('fixture_model_id', '=', fixture_model.id)]).unlink()
"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'],
})
else: else:
raise ValidationError("夹具型号认证未通过") raise ValidationError("夹具型号认证未通过")
@@ -2457,8 +2398,9 @@ class CuttingToolBasicParameters(models.Model):
'cutting_tool_type': '整体式刀具', 'cutting_tool_type': '整体式刀具',
'standard_library_id': self.env['sf.cutting_tool.standard.library'].search( 'standard_library_id': self.env['sf.cutting_tool.standard.library'].search(
[( [(
'code', '=', integral_tool_item['standard_library_code'].replace("JKM", result[ 'code', '=',
'factory_short_name']))]).id, integral_tool_item['standard_library_code'].replace("JKM", result[
'factory_short_name']))]).id,
'total_length': integral_tool_item['total_length'], 'total_length': integral_tool_item['total_length'],
'blade_diameter': integral_tool_item['blade_diameter'], 'blade_diameter': integral_tool_item['blade_diameter'],
'blade_length': integral_tool_item['blade_length'], 'blade_length': integral_tool_item['blade_length'],
@@ -2825,8 +2767,9 @@ class CuttingToolBasicParameters(models.Model):
'cutting_tool_type': '整体式刀具', 'cutting_tool_type': '整体式刀具',
'standard_library_id': self.env['sf.cutting_tool.standard.library'].search( 'standard_library_id': self.env['sf.cutting_tool.standard.library'].search(
[( [(
'code', '=', integral_tool_item['standard_library_code'].replace("JKM", result[ 'code', '=',
'factory_short_name']))]).id, integral_tool_item['standard_library_code'].replace("JKM", result[
'factory_short_name']))]).id,
'total_length': integral_tool_item['total_length'], 'total_length': integral_tool_item['total_length'],
'blade_diameter': integral_tool_item['blade_diameter'], 'blade_diameter': integral_tool_item['blade_diameter'],
'blade_length': integral_tool_item['blade_length'], 'blade_length': integral_tool_item['blade_length'],

View File

@@ -197,6 +197,12 @@ class FunctionalCuttingToolEntity(models.Model):
record.enroll_functional_tool_entity() record.enroll_functional_tool_entity()
return records 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): class FunctionalToolWarning(models.Model):
_inherit = 'sf.functional.tool.warning' _inherit = 'sf.functional.tool.warning'