diff --git a/apps/hrm/views.py b/apps/hrm/views.py index 8c9dc02e..9b9cc201 100755 --- a/apps/hrm/views.py +++ b/apps/hrm/views.py @@ -419,13 +419,12 @@ class EmployeeViewSet(CustomModelViewSet): data['type'] = TYPE_MAPPING[excel_type] else: raise ParseError(f'第{row_num}行,人员类型"{excel_type}"无效,有效类型:{", ".join(TYPE_MAPPING.keys())}') - # 处理部门外键(所属部门必填) + # 处理部门外键:填了就校验是否存在并赋值;为空时不动(新增场景的必填在下方创建处校验) dept_name = data.pop('belong_dept', None) - if not dept_name: - raise ParseError(f'第{row_num}行,所属部门为空') - if dept_name not in dept_map: - raise ParseError(f'第{row_num}行,部门"{dept_name}"不存在') - data['belong_dept_id'] = dept_map[dept_name] + if dept_name: + if dept_name not in dept_map: + raise ParseError(f'第{row_num}行,部门"{dept_name}"不存在') + data['belong_dept_id'] = dept_map[dept_name] # 数据验证 if data.get('phone'): @@ -470,6 +469,9 @@ class EmployeeViewSet(CustomModelViewSet): myLogger.info(f"⏭️ 第{row_num}行无变化:{name}") created = False else: + # 新增人员时所属部门必填 + if 'belong_dept_id' not in data: + raise ParseError(f'第{row_num}行,新增人员时所属部门不能为空') Employee.objects.create(**data) created = True except Exception as e: