考勤天数统计
This commit is contained in:
parent
e3e623c5e1
commit
f0fd992f18
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
datetime_end = serializers.DateField(label='结束时间', required=False, allow_null=True)
|
||||
|
||||
|
||||
class AtWorkCountSerializer(serializers.Serializer):
|
||||
year = serializers.IntegerField(label='年')
|
||||
month = serializers.IntegerField(label='月')
|
|
@ -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)),
|
||||
]
|
||||
|
||||
|
|
|
@ -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))
|
||||
|
||||
|
|
Loading…
Reference in New Issue