diff --git a/hb_server/apps/hrm/views.py b/hb_server/apps/hrm/views.py index 61fb2f4..8755b18 100644 --- a/hb_server/apps/hrm/views.py +++ b/hb_server/apps/hrm/views.py @@ -20,7 +20,7 @@ from rest_framework import exceptions from apps.system.models import User from apps.system.serializers import UserSimpleSerializer from rest_framework.permissions import AllowAny - +from rest_framework.decorators import action # Create your views here. @@ -79,9 +79,9 @@ class ClockRecordViewSet(CreateModelMixin, ListModelMixin, GenericViewSet): user, msg = HRMService.face_compare_from_base64(base64_data) if user: ins, created = ClockRecord.objects.get_or_create( - create_by=request.user, create_time__hour__range = [8,18], - create_time__year=now.year, create_time__month=now.month, - create_time__day=now.day, + create_by = user, create_time__hour__range = [8,18], + create_time__year=now_local.year, create_time__month=now_local.month, + create_time__day=now_local.day, defaults={ 'type':ClockRecord.ClOCK_WORK1, 'create_by':user, diff --git a/hb_server/apps/srm/serializers.py b/hb_server/apps/srm/serializers.py index 10e2b94..2a4e11f 100644 --- a/hb_server/apps/srm/serializers.py +++ b/hb_server/apps/srm/serializers.py @@ -23,4 +23,9 @@ class PlanGanttSerializer(serializers.ModelSerializer): class ProcessYieldSerializer(serializers.Serializer): datetime_start = serializers.DateField(label='开始时间', required=False, allow_null=True) - datetime_end = serializers.DateField(label='结束时间', required=False, allow_null=True) \ No newline at end of file + datetime_end = serializers.DateField(label='结束时间', required=False, allow_null=True) + + +class AtWorkCountSerializer(serializers.Serializer): + year = serializers.IntegerField(label='年') + month = serializers.IntegerField(label='月') \ No newline at end of file diff --git a/hb_server/apps/srm/urls.py b/hb_server/apps/srm/urls.py index 0d8a992..2b53153 100644 --- a/hb_server/apps/srm/urls.py +++ b/hb_server/apps/srm/urls.py @@ -3,12 +3,13 @@ from rest_framework import urlpatterns from django.urls import path, include from rest_framework.routers import DefaultRouter -from apps.srm.views import GanttPlan, ProcessYieldView +from apps.srm.views import AtWorkCountView, GanttPlan, ProcessYieldView router = DefaultRouter() urlpatterns = [ path('gantt/plan/', GanttPlan.as_view()), path('process/yield/', ProcessYieldView.as_view()), + path('at_work/', AtWorkCountView.as_view()), path('', include(router.urls)), ] diff --git a/hb_server/apps/srm/views.py b/hb_server/apps/srm/views.py index ec7a398..9dd73cc 100644 --- a/hb_server/apps/srm/views.py +++ b/hb_server/apps/srm/views.py @@ -4,11 +4,12 @@ from rest_framework import serializers from rest_framework.generics import ListAPIView, CreateAPIView from rest_framework.views import APIView from rest_framework.response import Response +from apps.hrm.models import ClockRecord from apps.mtm.models import Process, Step from apps.pm.models import ProductionPlan, SubProductionPlan -from apps.srm.serializers import PlanGanttSerializer, ProcessYieldSerializer +from apps.srm.serializers import AtWorkCountSerializer, PlanGanttSerializer, ProcessYieldSerializer from apps.wpm.models import WProduct, WproductFlow -from django.db.models import Count +from django.db.models import Count, F # Create your views here. class GanttPlan(ListAPIView): @@ -65,3 +66,26 @@ class ProcessYieldView(CreateAPIView): return Response(ret) +class AtWorkCountView(CreateAPIView): + """ + 到岗天数统计 + """ + perms_map = {'get':'*'} + serializer_class = AtWorkCountSerializer + + def create(self, request, *args, **kwargs): + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + vdata = serializer.validated_data + ret = ClockRecord.objects.filter( + create_time__year = vdata['year'], + create_time__month = vdata['month'] + ).values( + user_id = F('create_by'), + username = F('create_by__username'), + name = F('create_by__name'), + dept_name = F('create_by__dept__name')).annotate( + count = Count('id') + ) + return Response(list(ret)) +