diff --git a/hb_server/apps/hrm/filters.py b/hb_server/apps/hrm/filters.py index 8ec72fe..faf7aad 100644 --- a/hb_server/apps/hrm/filters.py +++ b/hb_server/apps/hrm/filters.py @@ -1,16 +1,26 @@ from django_filters import rest_framework as filters -from apps.hrm.models import ClockRecord, Employee +from apps.hrm.models import ClockRecord, Employee, NotWorkRemark 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') + year = filters.DateFilter(field_name="create_time_date__year") + month = filters.DateFilter(field_name="create_time_date__month") class Meta: model = ClockRecord - fields = ['create_by', 'create_time_start', 'create_time_end'] + fields = ['create_by', 'create_time_start', 'create_time_end', 'year', 'month'] class EmployeeFilterSet(DynamicFieldsFilterMixin, filters.FilterSet): class Meta: model = Employee - fields = ['job_state'] \ No newline at end of file + fields = ['job_state'] + + +class NotWorkRemarkFilterSet(filters.FilterSet): + year = filters.DateFilter(field_name="not_work_date__year") + month = filters.DateFilter(field_name="not_work_date__month") + class Meta: + model = NotWorkRemark + fields = ['year', 'month', 'user'] \ No newline at end of file diff --git a/hb_server/apps/hrm/migrations/0008_auto_20220222_1112.py b/hb_server/apps/hrm/migrations/0008_auto_20220222_1112.py new file mode 100644 index 0000000..406a088 --- /dev/null +++ b/hb_server/apps/hrm/migrations/0008_auto_20220222_1112.py @@ -0,0 +1,32 @@ +# Generated by Django 3.2.9 on 2022-02-22 03:12 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('hrm', '0007_auto_20220218_0843'), + ] + + operations = [ + migrations.RemoveField( + model_name='notworkremark', + name='day', + ), + migrations.RemoveField( + model_name='notworkremark', + name='month', + ), + migrations.RemoveField( + model_name='notworkremark', + name='year', + ), + migrations.AddField( + model_name='notworkremark', + name='not_work_date', + field=models.DateField(default=django.utils.timezone.now, verbose_name='未打卡日期'), + preserve_default=False, + ), + ] diff --git a/hb_server/apps/hrm/models.py b/hb_server/apps/hrm/models.py index fb202be..091c2b1 100644 --- a/hb_server/apps/hrm/models.py +++ b/hb_server/apps/hrm/models.py @@ -44,9 +44,7 @@ class NotWorkRemark(CommonAModel): """ 离岗说明 """ - year = models.PositiveSmallIntegerField('年', default=2022) - month = models.PositiveSmallIntegerField('月', default=2) - day = models.PositiveSmallIntegerField('日', default=1) + not_work_date = models.DateField('未打卡日期') user = models.ForeignKey(User, verbose_name='用户', on_delete=models.CASCADE) remark = models.CharField('未打卡说明', null=True, blank=True, max_length=200) @@ -58,4 +56,6 @@ class ClockRecord(CommonADModel): type_choice = ( (ClOCK_WORK1, '上班打卡'), ) - type = models.PositiveSmallIntegerField('打卡类型', choices=type_choice, default=ClOCK_WORK1) \ No newline at end of file + type = models.PositiveSmallIntegerField('打卡类型', choices=type_choice, default=ClOCK_WORK1) + + diff --git a/hb_server/apps/hrm/serializers.py b/hb_server/apps/hrm/serializers.py index 1aaf018..56a91ae 100644 --- a/hb_server/apps/hrm/serializers.py +++ b/hb_server/apps/hrm/serializers.py @@ -3,7 +3,7 @@ from rest_framework.serializers import ModelSerializer from rest_framework import serializers from utils.mixins import DynamicFieldsSerializerMixin -from .models import ClockRecord, Employee +from .models import ClockRecord, Employee, NotWorkRemark from apps.system.serializers import OrganizationSimpleSerializer, UserListSerializer, UserSimpleSerializer from django.db.models.query import Prefetch @@ -30,3 +30,8 @@ class ClockRecordListSerializer(serializers.ModelSerializer): class Meta: model = ClockRecord fields = '__all__' + +class NotWorkRemarkListSerializer(serializers.ModelSerializer): + class Meta: + model = NotWorkRemark + fields = '__all__' \ No newline at end of file diff --git a/hb_server/apps/hrm/urls.py b/hb_server/apps/hrm/urls.py index 55c2e55..9db9637 100644 --- a/hb_server/apps/hrm/urls.py +++ b/hb_server/apps/hrm/urls.py @@ -1,12 +1,13 @@ from django.db.models import base from rest_framework import urlpatterns -from apps.hrm.views import ClockRecordViewSet, EmployeeViewSet, FaceLogin +from apps.hrm.views import ClockRecordViewSet, EmployeeViewSet, FaceLogin, NotWorkRemarkViewSet from django.urls import path, include from rest_framework.routers import DefaultRouter router = DefaultRouter() router.register('employee', EmployeeViewSet, basename='employee') router.register('clock_record', ClockRecordViewSet, basename='clock_record') +router.register('not_work_remark', NotWorkRemarkViewSet, basename='not_work_reamrk') urlpatterns = [ path('facelogin/', FaceLogin.as_view()), path('', include(router.urls)), diff --git a/hb_server/apps/hrm/views.py b/hb_server/apps/hrm/views.py index 8313ad4..8ec8d87 100644 --- a/hb_server/apps/hrm/views.py +++ b/hb_server/apps/hrm/views.py @@ -5,12 +5,12 @@ 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, EmployeeFilterSet +from apps.hrm.filters import ClockRecordFilterSet, EmployeeFilterSet, NotWorkRemarkFilterSet from apps.hrm.services import HRMService from apps.hrm.tasks import update_all_user_facedata_cache from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin from apps.hrm.models import ClockRecord, Employee, NotWorkRemark -from apps.hrm.serializers import ClockRecordListSerializer, EmployeeNotWorkRemarkSerializer, EmployeeSerializer, FaceClockCreateSerializer, FaceLoginSerializer +from apps.hrm.serializers import ClockRecordListSerializer, EmployeeNotWorkRemarkSerializer, EmployeeSerializer, FaceClockCreateSerializer, FaceLoginSerializer, NotWorkRemarkListSerializer @@ -67,16 +67,12 @@ class EmployeeViewSet(CreateUpdateModelAMixin, OptimizationMixin, UpdateModelMix remark = request.data.get('not_work_remark', '') obj.not_work_remark = remark obj.save() - now_local = timezone.localtime() + now = timezone.now() instance, created = NotWorkRemark.objects.get_or_create( - year = now_local.year, - month = now_local.month, - day = now_local.day, + notwork_date = now.date(), user = obj.user, defaults={ - "year":now_local.year, - "month":now_local.month, - "day":now_local.day, + "notwork_date":now.date(), "user":obj.user, "remark":remark, "create_by":request.user, @@ -134,7 +130,15 @@ class ClockRecordViewSet(CreateModelMixin, ListModelMixin, GenericViewSet): return Response('非打卡时间范围', status=status.HTTP_400_BAD_REQUEST) - +class NotWorkRemarkViewSet(ListModelMixin, GenericViewSet): + """ + 离岗说明 + """ + perms_map = {'get':'*'} + queryset = NotWorkRemark.objects.select_related('user').all() + serializer_class = NotWorkRemarkListSerializer + filterset_class = NotWorkRemarkFilterSet + ordering = ['-pk'] import base64