考勤天数统计
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.models import User
|
||||||
from apps.system.serializers import UserSimpleSerializer
|
from apps.system.serializers import UserSimpleSerializer
|
||||||
from rest_framework.permissions import AllowAny
|
from rest_framework.permissions import AllowAny
|
||||||
|
from rest_framework.decorators import action
|
||||||
|
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
@ -79,9 +79,9 @@ class ClockRecordViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
|
||||||
user, msg = HRMService.face_compare_from_base64(base64_data)
|
user, msg = HRMService.face_compare_from_base64(base64_data)
|
||||||
if user:
|
if user:
|
||||||
ins, created = ClockRecord.objects.get_or_create(
|
ins, created = ClockRecord.objects.get_or_create(
|
||||||
create_by=request.user, create_time__hour__range = [8,18],
|
create_by = user, create_time__hour__range = [8,18],
|
||||||
create_time__year=now.year, create_time__month=now.month,
|
create_time__year=now_local.year, create_time__month=now_local.month,
|
||||||
create_time__day=now.day,
|
create_time__day=now_local.day,
|
||||||
defaults={
|
defaults={
|
||||||
'type':ClockRecord.ClOCK_WORK1,
|
'type':ClockRecord.ClOCK_WORK1,
|
||||||
'create_by':user,
|
'create_by':user,
|
||||||
|
|
|
@ -24,3 +24,8 @@ class PlanGanttSerializer(serializers.ModelSerializer):
|
||||||
class ProcessYieldSerializer(serializers.Serializer):
|
class ProcessYieldSerializer(serializers.Serializer):
|
||||||
datetime_start = serializers.DateField(label='开始时间', required=False, allow_null=True)
|
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 django.urls import path, include
|
||||||
from rest_framework.routers import DefaultRouter
|
from rest_framework.routers import DefaultRouter
|
||||||
|
|
||||||
from apps.srm.views import GanttPlan, ProcessYieldView
|
from apps.srm.views import AtWorkCountView, GanttPlan, ProcessYieldView
|
||||||
|
|
||||||
router = DefaultRouter()
|
router = DefaultRouter()
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('gantt/plan/', GanttPlan.as_view()),
|
path('gantt/plan/', GanttPlan.as_view()),
|
||||||
path('process/yield/', ProcessYieldView.as_view()),
|
path('process/yield/', ProcessYieldView.as_view()),
|
||||||
|
path('at_work/', AtWorkCountView.as_view()),
|
||||||
path('', include(router.urls)),
|
path('', include(router.urls)),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -4,11 +4,12 @@ from rest_framework import serializers
|
||||||
from rest_framework.generics import ListAPIView, CreateAPIView
|
from rest_framework.generics import ListAPIView, CreateAPIView
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
from apps.hrm.models import ClockRecord
|
||||||
from apps.mtm.models import Process, Step
|
from apps.mtm.models import Process, Step
|
||||||
from apps.pm.models import ProductionPlan, SubProductionPlan
|
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 apps.wpm.models import WProduct, WproductFlow
|
||||||
from django.db.models import Count
|
from django.db.models import Count, F
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
||||||
class GanttPlan(ListAPIView):
|
class GanttPlan(ListAPIView):
|
||||||
|
@ -65,3 +66,26 @@ class ProcessYieldView(CreateAPIView):
|
||||||
return Response(ret)
|
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