diff --git a/hb_server/apps/hrm/filters.py b/hb_server/apps/hrm/filters.py index 40c9b45..8ec72fe 100644 --- a/hb_server/apps/hrm/filters.py +++ b/hb_server/apps/hrm/filters.py @@ -1,9 +1,16 @@ from django_filters import rest_framework as filters -from apps.hrm.models import ClockRecord +from apps.hrm.models import ClockRecord, Employee +from utils.mixins import DynamicFieldsFilterMixin class ClockRecordFilterSet(filters.FilterSet): create_time_start = filters.DateFilter(field_name="create_time", lookup_expr='gte') create_time_end = filters.DateFilter(field_name="create_time", lookup_expr='lte') class Meta: model = ClockRecord - fields = ['create_by', 'create_time_start', 'create_time_end'] \ No newline at end of file + fields = ['create_by', 'create_time_start', 'create_time_end'] + +class EmployeeFilterSet(DynamicFieldsFilterMixin, filters.FilterSet): + + class Meta: + model = Employee + fields = ['job_state'] \ No newline at end of file diff --git a/hb_server/apps/hrm/migrations/0005_auto_20220126_1351.py b/hb_server/apps/hrm/migrations/0005_auto_20220126_1351.py new file mode 100644 index 0000000..d6bd2c3 --- /dev/null +++ b/hb_server/apps/hrm/migrations/0005_auto_20220126_1351.py @@ -0,0 +1,37 @@ +# Generated by Django 3.2.9 on 2022-01-26 05:51 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('hrm', '0004_clockrecord'), + ] + + operations = [ + migrations.RenameField( + model_name='employee', + old_name='birthdate', + new_name='birthday', + ), + migrations.RenameField( + model_name='employee', + old_name='ID_number', + new_name='id_number', + ), + migrations.RenameField( + model_name='employee', + old_name='jobstate', + new_name='job_state', + ), + migrations.RenameField( + model_name='employee', + old_name='academic', + new_name='qualification', + ), + migrations.RemoveField( + model_name='employee', + name='job', + ), + ] diff --git a/hb_server/apps/hrm/models.py b/hb_server/apps/hrm/models.py index 490237e..219caea 100644 --- a/hb_server/apps/hrm/models.py +++ b/hb_server/apps/hrm/models.py @@ -14,20 +14,21 @@ class Employee(CommonAModel): """ 员工信息 """ + JOB_ON = 1 + JOB_OFF = 2 jobstate_choices = ( - (1, '在职'), - (2, '离职'), + (JOB_ON, '在职'), + (JOB_OFF, '离职'), ) user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='employee_user') number = models.CharField('人员编号', max_length=50,null=True, blank=True, unique=True) photo = models.CharField('证件照', max_length=1000, null=True, blank=True) - ID_number = models.CharField('身份证号', max_length=100, null=True, blank=True) + id_number = models.CharField('身份证号', max_length=100, null=True, blank=True) gender = models.CharField('性别', max_length=10, default='男') signature = models.CharField('签名图片', max_length=200, null=True, blank=True) - birthdate = models.DateField('出生年月', null=True, blank=True) - academic = models.CharField('学历', max_length=50, null=True, blank=True) - jobstate = models.IntegerField('在职状态', choices=jobstate_choices, default=1) - job = models.ForeignKey(Position, null=True, blank=True, on_delete=models.SET_NULL, verbose_name='岗位') + birthday = models.DateField('出生年月', null=True, blank=True) + qualification = models.CharField('学历', max_length=50, null=True, blank=True) + job_state = models.IntegerField('在职状态', choices=jobstate_choices, default=1) face_data = models.JSONField('人脸识别数据', null=True, blank=True) class Meta: verbose_name = '员工补充信息' diff --git a/hb_server/apps/hrm/serializers.py b/hb_server/apps/hrm/serializers.py index 31eb30d..4f70427 100644 --- a/hb_server/apps/hrm/serializers.py +++ b/hb_server/apps/hrm/serializers.py @@ -1,11 +1,15 @@ from apps.system.models import User from rest_framework.serializers import ModelSerializer from rest_framework import serializers + +from utils.mixins import DynamicFieldsSerializerMixin from .models import ClockRecord, Employee -from apps.system.serializers import UserListSerializer, UserSimpleSerializer +from apps.system.serializers import OrganizationSimpleSerializer, UserListSerializer, UserSimpleSerializer from django.db.models.query import Prefetch -class EmployeeSerializer(ModelSerializer): +class EmployeeSerializer(DynamicFieldsSerializerMixin, ModelSerializer): + name = serializers.CharField(source='user.name', read_only=True) + dept_ = OrganizationSimpleSerializer(source='user.dept_', read_only=True) class Meta: model = Employee exclude = ['face_data'] diff --git a/hb_server/apps/hrm/views.py b/hb_server/apps/hrm/views.py index e3d86b5..61fb2f4 100644 --- a/hb_server/apps/hrm/views.py +++ b/hb_server/apps/hrm/views.py @@ -4,7 +4,7 @@ from django.utils import timezone from rest_framework.response import Response from rest_framework.viewsets import ModelViewSet, GenericViewSet from rest_framework.mixins import UpdateModelMixin, RetrieveModelMixin, CreateModelMixin, ListModelMixin -from apps.hrm.filters import ClockRecordFilterSet +from apps.hrm.filters import ClockRecordFilterSet, EmployeeFilterSet from apps.hrm.services import HRMService from apps.hrm.tasks import update_all_user_facedata_cache from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin @@ -30,6 +30,7 @@ class EmployeeViewSet(CreateUpdateModelAMixin, OptimizationMixin, UpdateModelMix """ perms_map = {'get': '*', 'put': 'employee_update'} queryset = Employee.objects.all() + filterset_class = EmployeeFilterSet serializer_class = EmployeeSerializer ordering = ['-pk']