diff --git a/apps/hrm/serializers.py b/apps/hrm/serializers.py index 044c284c..8f484b28 100755 --- a/apps/hrm/serializers.py +++ b/apps/hrm/serializers.py @@ -204,3 +204,8 @@ class CertificateSerializer(CustomModelSerializer): class Meta: model = Certificate fields = '__all__' + + +class CorrectSerializer(serializers.Serializer): + start_time = serializers.DateTimeField() + end_time = serializers.DateTimeField() \ No newline at end of file diff --git a/apps/hrm/tasks.py b/apps/hrm/tasks.py index 0b6103af..a91e5d2a 100755 --- a/apps/hrm/tasks.py +++ b/apps/hrm/tasks.py @@ -10,3 +10,11 @@ def update_all_employee_not_atwork(): 将所有员工设为非在岗状态 """ Employee.objects.all().update(is_atwork=False, last_check_time=None, not_work_remark=None) + +@shared_task +def correct_swip_task(start_time, end_time): + from apps.monitor.models import DrfRequestLog + from apps.hrm.services import HrmService + lgs = DrfRequestLog.objects.filter(path='/api/third/dahua/c_swip/', requested_at__gte=start_time, requested_at__lte=end_time) + for i in lgs: + HrmService.swipe(data=eval(i.data)) \ No newline at end of file diff --git a/apps/hrm/views.py b/apps/hrm/views.py index a75d3c18..6b44dd10 100755 --- a/apps/hrm/views.py +++ b/apps/hrm/views.py @@ -18,7 +18,7 @@ from apps.hrm.serializers import (CertificateCreateUpdateSerializer, Certificate EmployeeCreateUpdateSerializer, EmployeeDetailSerializer, EmployeeImproveSerializer, EmployeeNotWorkRemarkSerializer, EmployeeSerializer, - NotWorkRemarkListSerializer) + NotWorkRemarkListSerializer, CorrectSerializer) from apps.hrm.services import HrmService from apps.third.dahua import dhClient @@ -254,6 +254,20 @@ class ClockRecordViewSet(ListModelMixin, CustomGenericViewSet): ) return Response({'path': export_excel(field_data, data, '打卡记录')}) + @action(methods=['post'], detail=False, perms_map={'post': '*'}, + serializer_class=CorrectSerializer) + def correct_swip(self, request, pk=None): + """ + 重跑一段时间的打卡记录 + + 重跑一段时间的打卡记录 + """ + sr = CorrectSerializer(data=request.data) + sr.is_valid(raise_exception=True) + vdata = sr.validated_data + from apps.hrm.tasks import correct_swip_task + correct_swip_task.delay(vdata['start_time'], vdata['start_time']) + return Response() class NotWorkRemarkViewSet(ListModelMixin, CustomGenericViewSet): """