diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 81580db7..89510ae0 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -974,16 +974,24 @@ class WorkPieceDelivery(models.Model): # 配送至avg小车 def _delivery_avg(self): - res = {'reqCode': urllib.parse.quote(self.production_id.name), 'reqTime': '', 'clientCode': '', 'tokenCode': '', - 'taskTyp': 'F01', 'ctnrTyp': '', 'ctnrCode': '', 'wbCode': '006848AB006774', 'positionCodePath': [], + config = self.env['res.config.settings'].get_values() + agv_site = self.env['res.agv.site'].search([]) + positionCode_Arr = [] + if agv_site: + for item in agv_site: + positionCode_Arr.append({ + 'positionCode': item.content, + 'code': item.type + }) + res = {'reqCode': self.production_id.name, 'reqTime': '', 'clientCode': '', 'tokenCode': '', + 'taskTyp': config['task_type_no'], 'ctnrTyp': '', 'ctnrCode': '', 'wbCode': config['wbcode'], + 'positionCodePath': positionCode_Arr, 'podCode': '', 'podDir': '', 'materialLot': '', 'priority': '', 'taskCode': '', 'agvCode': '', 'materialLot': '', 'data': ''} - config = self.env['res.config.settings'].get_values() try: logging.info('AGV请求路径:%s' % config['agv_rcs_url']) logging.info('AGV-json:%s' % res) - headers = {'Content-Type': 'application/json'} ret = requests.post((config['agv_rcs_url']), json=res, headers=headers) ret = ret.json() diff --git a/sf_mrs_connect/models/res_config_setting.py b/sf_mrs_connect/models/res_config_setting.py index f34ab06f..7aa46639 100644 --- a/sf_mrs_connect/models/res_config_setting.py +++ b/sf_mrs_connect/models/res_config_setting.py @@ -97,6 +97,7 @@ class ResConfigSettings(models.TransientModel): sf_secret_key = config.get_param('sf_secret_key', default='') sf_url = config.get_param('sf_url', default='') agv_rcs_url = config.get_param('agv_rcs_url', default='') + wbcode = config.get_param('wbcode', default='') agv_code = config.get_param('agv_code', default='') task_type_no = config.get_param('task_type_no', default='') ftp_host = config.get_param('ftp_host', default='') @@ -109,6 +110,7 @@ class ResConfigSettings(models.TransientModel): sf_secret_key=sf_secret_key, sf_url=sf_url, agv_rcs_url=agv_rcs_url, + wbcode=wbcode, agv_code=agv_code, task_type_no=task_type_no, ftp_host=ftp_host, @@ -125,6 +127,7 @@ class ResConfigSettings(models.TransientModel): ir_config.set_param("sf_secret_key", self.sf_secret_key or "") ir_config.set_param("sf_url", self.sf_url or "") ir_config.set_param("agv_rcs_url", self.agv_rcs_url or "") + ir_config.set_param("wbcode", self.wbcode or "") ir_config.set_param("agv_code", self.agv_code or "") ir_config.set_param("task_type_no", self.task_type_no or "") ir_config.set_param("ftp_host", self.ftp_host or "") diff --git a/sf_mrs_connect/models/sync_common.py b/sf_mrs_connect/models/sync_common.py index 3ee916e7..0a44f130 100644 --- a/sf_mrs_connect/models/sync_common.py +++ b/sf_mrs_connect/models/sync_common.py @@ -1952,24 +1952,22 @@ class CuttingSpeed(models.Model): 'active': item['active'], }) else: - if item['active'] is False: - item.write({'active': False}) - else: - self.write({ - 'execution_standard_id': self.env['sf.international.standards'].search( - [('code', '=', item['execution_standard_code'])]).id, - 'material_name_id': self.env['sf.materials.model'].search( - [('materials_no', '=', item['material_name'])]).id, - 'cutting_width_depth_id': self.env['sf.cutting.width.depth'].search( - [('name', '=', item['cutting_width_depth'])]).id, - 'ability_feature_library': self.env['maintenance.equipment.image'].search( - [('name', '=', item['ability_feature_library']), ('type', '=', '加工能力')]).id, - 'material_code': item['material_code'], - 'material_grade': item['material_grade'], - 'tensile_strength': item['tensile_strength'], - 'hardness': item['hardness'], - 'cutting_speed': item['cutting_speed'], - 'application': item['application'], }) + cutting_speed.write({ + 'execution_standard_id': self.env['sf.international.standards'].search( + [('code', '=', item['execution_standard_code'])]).id, + 'material_name_id': self.env['sf.materials.model'].search( + [('materials_no', '=', item['material_name'])]).id, + 'cutting_width_depth_id': self.env['sf.cutting.width.depth'].search( + [('name', '=', item['cutting_width_depth'])]).id, + 'ability_feature_library': self.env['maintenance.equipment.image'].search( + [('name', '=', item['ability_feature_library']), ('type', '=', '加工能力')]).id, + 'material_code': item['material_code'], + 'material_grade': item['material_grade'], + 'tensile_strength': item['tensile_strength'], + 'hardness': item['hardness'], + 'cutting_speed': item['cutting_speed'], + 'application': item['application'], + 'active': item['active']}) else: raise ValidationError("切削速度认证未通过") @@ -2006,24 +2004,22 @@ class CuttingSpeed(models.Model): 'active': item['active'], }) else: - if item['active'] is False: - item.write({'active': False}) - else: - self.write({ - 'execution_standard_id': self.env['sf.international.standards'].search( - [('code', '=', item['execution_standard_code'])]).id, - 'material_name_id': self.env['sf.materials.model'].search( - [('materials_no', '=', item['material_name'])]).id, - 'cutting_width_depth_id': self.env['sf.cutting.width.depth'].search( - [('name', '=', item['cutting_width_depth'])]).id, - 'ability_feature_library': self.env['maintenance.equipment.image'].search( - [('name', '=', item['ability_feature_library']), ('type', '=', '加工能力')]).id, - 'material_code': item['material_code'], - 'material_grade': item['material_grade'], - 'tensile_strength': item['tensile_strength'], - 'hardness': item['hardness'], - 'cutting_speed': item['cutting_speed'], - 'application': item['application'], }) + cutting_speed.write({ + 'execution_standard_id': self.env['sf.international.standards'].search( + [('code', '=', item['execution_standard_code'])]).id, + 'material_name_id': self.env['sf.materials.model'].search( + [('materials_no', '=', item['material_name'])]).id, + 'cutting_width_depth_id': self.env['sf.cutting.width.depth'].search( + [('name', '=', item['cutting_width_depth'])]).id, + 'ability_feature_library': self.env['maintenance.equipment.image'].search( + [('name', '=', item['ability_feature_library']), ('type', '=', '加工能力')]).id, + 'material_code': item['material_code'], + 'material_grade': item['material_grade'], + 'tensile_strength': item['tensile_strength'], + 'hardness': item['hardness'], + 'cutting_speed': item['cutting_speed'], + 'application': item['application'], + 'active': item['active']}) else: raise ValidationError("切削速度认证未通过") @@ -2098,16 +2094,14 @@ class CuttingSpeed(models.Model): 'active': item['active'], }) else: - if item['active'] is False: - item.write({'active': False}) - else: - self.write({ - 'materials_type_id': self.env['sf.materials.model'].search( - [('materials_no', '=', item['materials_type_code'])]).id, - 'cutting_width_depth_id': self.env['sf.cutting.width.depth'].search( - [('name', '=', item['cutting_width_depth'])]).id, - 'blade_diameter': item['blade_diameter'], - 'feed_per_tooth': item['feed_per_tooth'], }) + feed_per_tooth.write({ + 'materials_type_id': self.env['sf.materials.model'].search( + [('materials_no', '=', item['materials_type_code'])]).id, + 'cutting_width_depth_id': self.env['sf.cutting.width.depth'].search( + [('name', '=', item['cutting_width_depth'])]).id, + 'blade_diameter': item['blade_diameter'], + 'feed_per_tooth': item['feed_per_tooth'], + 'active': item['active']}) else: raise ValidationError("每齿走刀量认证未通过") @@ -2136,16 +2130,14 @@ class CuttingSpeed(models.Model): 'active': item['active'], }) else: - if item['active'] is False: - item.write({'active': False}) - else: - self.write({ - 'materials_type_id': self.env['sf.materials.model'].search( - [('materials_no', '=', item['materials_type_code'])]).id, - 'cutting_width_depth_id': self.env['sf.cutting.width.depth'].search( - [('name', '=', item['cutting_width_depth'])]).id, - 'blade_diameter': item['blade_diameter'], - 'feed_per_tooth': item['feed_per_tooth'], }) + feed_per_tooth.write({ + 'materials_type_id': self.env['sf.materials.model'].search( + [('materials_no', '=', item['materials_type_code'])]).id, + 'cutting_width_depth_id': self.env['sf.cutting.width.depth'].search( + [('name', '=', item['cutting_width_depth'])]).id, + 'blade_diameter': item['blade_diameter'], + 'feed_per_tooth': item['feed_per_tooth'], + 'active': item['active']}) else: raise ValidationError("每齿走刀量认证未通过") @@ -2771,29 +2763,26 @@ class CuttingToolBasicParameters(models.Model): 'active': integral_tool_item['active'], }) else: - if integral_tool_item['active'] is False: - integral_tool.write({'active': False}) - else: - self.write({ - 'name': integral_tool_item['name'], - 'total_length': integral_tool_item['total_length'], - 'blade_diameter': integral_tool_item['blade_diameter'], - 'blade_length': integral_tool_item['blade_length'], - 'blade_number': integral_tool_item['blade_number'], - 'neck_length': integral_tool_item['neck_length'], - 'neck_diameter': integral_tool_item['neck_diameter'], - 'handle_diameter': integral_tool_item['shank_diameter'], - 'handle_length': integral_tool_item['shank_length'], - 'blade_tip_diameter': integral_tool_item['tip_diameter'], - 'blade_tip_working_size': integral_tool_item['tip_handling_size'], - 'blade_tip_taper': integral_tool_item['knife_tip_taper'], - 'blade_helix_angle': integral_tool_item['blade_helix_angle'], - 'blade_width': integral_tool_item['blade_width'], - 'blade_depth': integral_tool_item['blade_depth'], - 'pitch': integral_tool_item['pitch'], - 'cutting_depth': integral_tool_item['cutting_depth_max'], - 'active': integral_tool_item['active'], - }) + integral_tool.write({ + 'name': integral_tool_item['name'], + 'total_length': integral_tool_item['total_length'], + 'blade_diameter': integral_tool_item['blade_diameter'], + 'blade_length': integral_tool_item['blade_length'], + 'blade_number': integral_tool_item['blade_number'], + 'neck_length': integral_tool_item['neck_length'], + 'neck_diameter': integral_tool_item['neck_diameter'], + 'handle_diameter': integral_tool_item['shank_diameter'], + 'handle_length': integral_tool_item['shank_length'], + 'blade_tip_diameter': integral_tool_item['tip_diameter'], + 'blade_tip_working_size': integral_tool_item['tip_handling_size'], + 'blade_tip_taper': integral_tool_item['knife_tip_taper'], + 'blade_helix_angle': integral_tool_item['blade_helix_angle'], + 'blade_width': integral_tool_item['blade_width'], + 'blade_depth': integral_tool_item['blade_depth'], + 'pitch': integral_tool_item['pitch'], + 'cutting_depth': integral_tool_item['cutting_depth_max'], + 'active': integral_tool_item['active'], + }) if 'basic_parameters_blade' in result['cutting_tool_basic_parameters_yesterday_list']: if result['cutting_tool_basic_parameters_yesterday_list']['basic_parameters_blade']: basic_parameters_blade_list = json.loads( @@ -2835,35 +2824,33 @@ class CuttingToolBasicParameters(models.Model): 'active': blade_item['active'], }) else: - if blade_item['active'] is False: - blade.write({'active': False}) - else: - self.write({ - 'name': blade_item['name'], - 'length': blade_item['length'], - 'thickness': blade_item['thickness'], - 'cutting_blade_length': blade_item['cutting_blade_length'], - 'relief_angle': blade_item['relief_angle'], - 'blade_tip_circular_arc_radius': blade_item['radius_tip_re'], - 'inscribed_circle_diameter': blade_item['diameter_inner_circle'], - 'install_aperture_diameter': blade_item['diameter_mounting_hole'], - 'pitch': blade_item['pitch'], - 'chip_breaker_groove': blade_item['is_chip_breaker'], - 'chip_breaker_type_code': blade_item['chip_breaker_type_code'], - 'blade_teeth_model': '无' if not blade_item['blade_profile'] else blade_item[ - 'blade_profile'], - 'blade_blade_number': blade_item['blade_number'], - 'cutting_depth': blade_item['cutting_depth_max'], - 'blade_width': blade_item['blade_width'], - 'main_included_angle': blade_item['edge_angle'], - 'top_angle': blade_item['top_angle'], - 'thread_model': '无' if not blade_item['thread_type'] else blade_item[ - 'thread_type'], - 'thread_num': blade_item['threads_per_inch'], - 'blade_tip_height_tolerance': blade_item['tip_height_tolerance'], - 'inscribed_circle_tolerance': blade_item['internal_circle_tolerance'], - 'thickness_tolerance': blade_item['thickness_tolerance'], - }) + blade.write({ + 'name': blade_item['name'], + 'length': blade_item['length'], + 'thickness': blade_item['thickness'], + 'cutting_blade_length': blade_item['cutting_blade_length'], + 'relief_angle': blade_item['relief_angle'], + 'blade_tip_circular_arc_radius': blade_item['radius_tip_re'], + 'inscribed_circle_diameter': blade_item['diameter_inner_circle'], + 'install_aperture_diameter': blade_item['diameter_mounting_hole'], + 'pitch': blade_item['pitch'], + 'chip_breaker_groove': blade_item['is_chip_breaker'], + 'chip_breaker_type_code': blade_item['chip_breaker_type_code'], + 'blade_teeth_model': '无' if not blade_item['blade_profile'] else blade_item[ + 'blade_profile'], + 'blade_blade_number': blade_item['blade_number'], + 'cutting_depth': blade_item['cutting_depth_max'], + 'blade_width': blade_item['blade_width'], + 'main_included_angle': blade_item['edge_angle'], + 'top_angle': blade_item['top_angle'], + 'thread_model': '无' if not blade_item['thread_type'] else blade_item[ + 'thread_type'], + 'thread_num': blade_item['threads_per_inch'], + 'blade_tip_height_tolerance': blade_item['tip_height_tolerance'], + 'inscribed_circle_tolerance': blade_item['internal_circle_tolerance'], + 'thickness_tolerance': blade_item['thickness_tolerance'], + 'active': blade_item['active'] + }) if 'basic_parameters_chuck' in result['cutting_tool_basic_parameters_yesterday_list']: if result['cutting_tool_basic_parameters_yesterday_list']['basic_parameters_chuck']: basic_parameters_chuck_list = json.loads( @@ -2894,24 +2881,22 @@ class CuttingToolBasicParameters(models.Model): 'active': chuck_item['active'], }) else: - if chuck_item['active'] is False: - chuck.write({'active': False}) - else: - self.write({ - 'name': chuck_item['name'], - 'er_size_model': chuck_item['size_model'], - 'min_clamping_diameter': chuck_item['clamping_diameter_min'], - 'max_clamping_diameter': chuck_item['clamping_diameter_max'], - 'outer_diameter': chuck_item['outer_diameter'], - 'inner_diameter': chuck_item['inner_diameter'], - 'run_out_accuracy': chuck_item['run_out_accuracy'], - 'total_length': chuck_item['total_length'], - 'taper': chuck_item['taper'], - 'top_diameter': chuck_item['top_diameter'], - 'weight': chuck_item['weight'], - 'max_load_capacity': chuck_item['load_capacity_max'], - 'cooling_jacket': chuck_item['cooling_sleeve_model'], - }) + chuck.write({ + 'name': chuck_item['name'], + 'er_size_model': chuck_item['size_model'], + 'min_clamping_diameter': chuck_item['clamping_diameter_min'], + 'max_clamping_diameter': chuck_item['clamping_diameter_max'], + 'outer_diameter': chuck_item['outer_diameter'], + 'inner_diameter': chuck_item['inner_diameter'], + 'run_out_accuracy': chuck_item['run_out_accuracy'], + 'total_length': chuck_item['total_length'], + 'taper': chuck_item['taper'], + 'top_diameter': chuck_item['top_diameter'], + 'weight': chuck_item['weight'], + 'max_load_capacity': chuck_item['load_capacity_max'], + 'cooling_jacket': chuck_item['cooling_sleeve_model'], + 'active': chuck_item['active'] + }) if 'basic_parameters_cutter_arbor' in result['cutting_tool_basic_parameters_yesterday_list']: if result['cutting_tool_basic_parameters_yesterday_list']['basic_parameters_cutter_arbor']: basic_parameters_cutter_arbor_list = json.loads( @@ -2955,38 +2940,36 @@ class CuttingToolBasicParameters(models.Model): 'active': cutter_arbor_item['active'], }) else: - if cutter_arbor_item['active'] is False: - cutter_arbor.write({'active': False}) - else: - self.write({ - 'name': cutter_arbor_item['name'], - 'height': cutter_arbor_item['height'], - 'width': cutter_arbor_item['width'], - 'total_length': cutter_arbor_item['total_length'], - 'knife_head_height': cutter_arbor_item['head_length'], - 'knife_head_width': cutter_arbor_item['head_width'], - 'knife_head_length': cutter_arbor_item['head_length'], - 'cutter_arbor_diameter': cutter_arbor_item['arbor_diameter'], - 'main_included_angle': cutter_arbor_item['edge_angle'], - 'relief_angle': cutter_arbor_item['relief_angle'], - 'cutting_depth': cutter_arbor_item['cutting_depth_max'], - 'min_machining_aperture': cutter_arbor_item['machining_aperture_min'], - 'install_blade_tip_num': cutter_arbor_item['number_blade_installed'], - 'is_cooling_hole': cutter_arbor_item['is_cooling_hole'], - 'locating_slot_code': cutter_arbor_item['locator_slot_code'], - 'installing_structure': cutter_arbor_item['mounting_structure'], - 'blade_id': False if not cutter_arbor_item['fit_blade_model_code'] else - self.env[ - 'sf.cutting_tool.standard.library'].search( - [('code', '=', - cutter_arbor_item['fit_blade_model_code'].replace("JKM", result[ - 'factory_short_name']))]).id, - 'tool_shim': cutter_arbor_item['fit_knife_pad_model'], - 'cotter_pin': cutter_arbor_item['fit_pin_model'], - 'pressing_plate': cutter_arbor_item['fit_plate_model'], - 'screw': cutter_arbor_item['fit_screw_model'], - 'spanner': cutter_arbor_item['fit_wrench_model'], - }) + cutter_arbor.write({ + 'name': cutter_arbor_item['name'], + 'height': cutter_arbor_item['height'], + 'width': cutter_arbor_item['width'], + 'total_length': cutter_arbor_item['total_length'], + 'knife_head_height': cutter_arbor_item['head_length'], + 'knife_head_width': cutter_arbor_item['head_width'], + 'knife_head_length': cutter_arbor_item['head_length'], + 'cutter_arbor_diameter': cutter_arbor_item['arbor_diameter'], + 'main_included_angle': cutter_arbor_item['edge_angle'], + 'relief_angle': cutter_arbor_item['relief_angle'], + 'cutting_depth': cutter_arbor_item['cutting_depth_max'], + 'min_machining_aperture': cutter_arbor_item['machining_aperture_min'], + 'install_blade_tip_num': cutter_arbor_item['number_blade_installed'], + 'is_cooling_hole': cutter_arbor_item['is_cooling_hole'], + 'locating_slot_code': cutter_arbor_item['locator_slot_code'], + 'installing_structure': cutter_arbor_item['mounting_structure'], + 'blade_id': False if not cutter_arbor_item['fit_blade_model_code'] else + self.env[ + 'sf.cutting_tool.standard.library'].search( + [('code', '=', + cutter_arbor_item['fit_blade_model_code'].replace("JKM", result[ + 'factory_short_name']))]).id, + 'tool_shim': cutter_arbor_item['fit_knife_pad_model'], + 'cotter_pin': cutter_arbor_item['fit_pin_model'], + 'pressing_plate': cutter_arbor_item['fit_plate_model'], + 'screw': cutter_arbor_item['fit_screw_model'], + 'spanner': cutter_arbor_item['fit_wrench_model'], + 'active': cutter_arbor_item['active'] + }) if 'basic_parameters_cutter_head' in result['cutting_tool_basic_parameters_yesterday_list']: if result['cutting_tool_basic_parameters_yesterday_list']['basic_parameters_cutter_head']: basic_parameters_cutter_head_list = json.loads( @@ -3023,30 +3006,28 @@ class CuttingToolBasicParameters(models.Model): 'active': cutter_head_item['active'], }) else: - if cutter_head_item['active'] is False: - cutter_head.write({'active': False}) - else: - self.write({ - 'name': cutter_head_item['name'], - 'install_blade_tip_num': cutter_head_item['number_blade_installed'], - 'blade_diameter': cutter_head_item['blade_diameter'], - 'cutter_head_diameter': cutter_head_item['cutter_diameter'], - 'interface_diameter': cutter_head_item['interface_diameter'], - 'total_length': cutter_head_item['total_length'], - 'blade_length': cutter_head_item['blade_length'], - 'cutting_depth': cutter_head_item['cutting_depth_max'], - 'main_included_angle': cutter_head_item['edge_angle'], - 'installing_structure': cutter_head_item['mounting_structure'], - 'blade_id': False if not cutter_head_item['fit_blade_model_code'] else self.env[ - 'sf.cutting_tool.standard.library'].search( - [('code', '=', - cutter_head_item['fit_blade_model_code'].replace("JKM", result[ - 'factory_short_name']))]).id, - 'screw': cutter_head_item['fit_screw_model'], - 'spanner': cutter_head_item['fit_wrench_model'], - 'is_cooling_hole': cutter_head_item['is_cooling_hole'], - 'locating_slot_code': cutter_head_item['locator_slot_code'], - }) + cutter_head.write({ + 'name': cutter_head_item['name'], + 'install_blade_tip_num': cutter_head_item['number_blade_installed'], + 'blade_diameter': cutter_head_item['blade_diameter'], + 'cutter_head_diameter': cutter_head_item['cutter_diameter'], + 'interface_diameter': cutter_head_item['interface_diameter'], + 'total_length': cutter_head_item['total_length'], + 'blade_length': cutter_head_item['blade_length'], + 'cutting_depth': cutter_head_item['cutting_depth_max'], + 'main_included_angle': cutter_head_item['edge_angle'], + 'installing_structure': cutter_head_item['mounting_structure'], + 'blade_id': False if not cutter_head_item['fit_blade_model_code'] else self.env[ + 'sf.cutting_tool.standard.library'].search( + [('code', '=', + cutter_head_item['fit_blade_model_code'].replace("JKM", result[ + 'factory_short_name']))]).id, + 'screw': cutter_head_item['fit_screw_model'], + 'spanner': cutter_head_item['fit_wrench_model'], + 'is_cooling_hole': cutter_head_item['is_cooling_hole'], + 'locating_slot_code': cutter_head_item['locator_slot_code'], + 'active': cutter_head_item['active'] + }) if 'basic_parameters_knife_handle' in result['cutting_tool_basic_parameters_yesterday_list']: if result['cutting_tool_basic_parameters_yesterday_list']['basic_parameters_knife_handle']: basic_parameters_knife_handle_list = json.loads( @@ -3085,30 +3066,28 @@ class CuttingToolBasicParameters(models.Model): 'active': knife_handle_item['active'], }) else: - if knife_handle_item['active'] is False: - knife_handle.write({'active': False}) - else: - self.write({ - 'name': knife_handle_item['name'], - 'total_length': knife_handle_item['total_length'], - 'taper_shank_model': knife_handle_item['taper_shank_model'], - 'flange_shank_length': knife_handle_item['flange_length'], - 'flange_diameter': knife_handle_item['flange_diameter'], - 'shank_length': knife_handle_item['shank_length'], - 'shank_diameter': knife_handle_item['shank_diameter'], - 'min_clamping_diameter': knife_handle_item['clamping_diameter_min'], - 'max_clamping_diameter': knife_handle_item['clamping_diameter_max'], - 'clamping_mode': knife_handle_item['clamping_way'], - 'tool_changing_time': knife_handle_item['tool_changing_time'], - 'max_rotate_speed': knife_handle_item['rotate_speed_max'], - 'diameter_slip_accuracy': knife_handle_item['diameter_slip_accuracy'], - 'cooling_model': knife_handle_item['cooling_model'], - 'fit_chuck_size': knife_handle_item['fit_chuck_size'], - 'is_quick_cutting': knife_handle_item['is_quick_cutting'], - 'is_safe_lock': knife_handle_item['is_safe_lock'], - 'screw': knife_handle_item['fit_wrench_model'], - 'nut': knife_handle_item['fit_nut_model'], - 'dynamic_balance_class': knife_handle_item['dynamic_balance_class'], - }) + knife_handle.write({ + 'name': knife_handle_item['name'], + 'total_length': knife_handle_item['total_length'], + 'taper_shank_model': knife_handle_item['taper_shank_model'], + 'flange_shank_length': knife_handle_item['flange_length'], + 'flange_diameter': knife_handle_item['flange_diameter'], + 'shank_length': knife_handle_item['shank_length'], + 'shank_diameter': knife_handle_item['shank_diameter'], + 'min_clamping_diameter': knife_handle_item['clamping_diameter_min'], + 'max_clamping_diameter': knife_handle_item['clamping_diameter_max'], + 'clamping_mode': knife_handle_item['clamping_way'], + 'tool_changing_time': knife_handle_item['tool_changing_time'], + 'max_rotate_speed': knife_handle_item['rotate_speed_max'], + 'diameter_slip_accuracy': knife_handle_item['diameter_slip_accuracy'], + 'cooling_model': knife_handle_item['cooling_model'], + 'fit_chuck_size': knife_handle_item['fit_chuck_size'], + 'is_quick_cutting': knife_handle_item['is_quick_cutting'], + 'is_safe_lock': knife_handle_item['is_safe_lock'], + 'screw': knife_handle_item['fit_wrench_model'], + 'nut': knife_handle_item['fit_nut_model'], + 'dynamic_balance_class': knife_handle_item['dynamic_balance_class'], + 'active': knife_handle_item['active'] + }) else: raise ValidationError("刀具物料基本参数认证未通过")