refector: hrm clockrecord 从大华侧请求带my_info数据
This commit is contained in:
parent
ecbe077e55
commit
5dc43246e2
|
@ -10,7 +10,13 @@ class ClockRecordFilterSet(filters.FilterSet):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ClockRecord
|
model = ClockRecord
|
||||||
fields = ['employee', 'start_create', 'end_create', 'year', 'month', 'type', 'employee__type', 'employee__belong_dept']
|
fields = {
|
||||||
|
'employee': ['exact'],
|
||||||
|
'type': ['exact', 'in'],
|
||||||
|
'employee__type': ['exact', 'in'],
|
||||||
|
'employee__belong_dept': ['exact'],
|
||||||
|
}
|
||||||
|
# fields = ['employee', 'start_create', 'end_create', 'year', 'month', 'type', 'employee__type', 'employee__belong_dept']
|
||||||
|
|
||||||
def filter_year(self, queryset, name, value):
|
def filter_year(self, queryset, name, value):
|
||||||
return queryset.filter(create_time__year=value)
|
return queryset.filter(create_time__year=value)
|
||||||
|
|
|
@ -98,7 +98,7 @@ class ClockRecord(BaseModel):
|
||||||
type = models.PositiveSmallIntegerField('打卡类型', choices=type_choice, default=ClOCK_ON)
|
type = models.PositiveSmallIntegerField('打卡类型', choices=type_choice, default=ClOCK_ON)
|
||||||
employee = models.ForeignKey(Employee, verbose_name='对应人员', on_delete=models.CASCADE)
|
employee = models.ForeignKey(Employee, verbose_name='对应人员', on_delete=models.CASCADE)
|
||||||
trigger = models.CharField('触发', max_length=20)
|
trigger = models.CharField('触发', max_length=20)
|
||||||
detail = models.JSONField('相关记录', default=dict, null=False, blank=True)
|
detail = models.JSONField('相关记录', default=dict, null=False, blank=True) # 里面主要有对应的ID值
|
||||||
exception_type = models.PositiveSmallIntegerField('异常类型', choices=E_TYPE_CHOISE, null=True, blank=True)
|
exception_type = models.PositiveSmallIntegerField('异常类型', choices=E_TYPE_CHOISE, null=True, blank=True)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -183,6 +183,11 @@ class ClockRecordListSerializer(serializers.ModelSerializer):
|
||||||
model = ClockRecord
|
model = ClockRecord
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
|
class ClockRecordSimpleSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = ClockRecord
|
||||||
|
fields = ['id', 'type', 'exception_type', 'detail']
|
||||||
|
|
||||||
|
|
||||||
class NotWorkRemarkListSerializer(serializers.ModelSerializer):
|
class NotWorkRemarkListSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
@ -8,6 +8,7 @@ from apps.third.dahua import dhClient
|
||||||
from apps.third.tapis import dhapis
|
from apps.third.tapis import dhapis
|
||||||
from apps.hrm.services import HrmService
|
from apps.hrm.services import HrmService
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
from apps.utils.tasks import CustomTask
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,7 +19,7 @@ def update_all_employee_not_atwork():
|
||||||
"""
|
"""
|
||||||
Employee.objects.all().update(is_atwork=False, last_check_time=None, not_work_remark=None)
|
Employee.objects.all().update(is_atwork=False, last_check_time=None, not_work_remark=None)
|
||||||
|
|
||||||
@shared_task
|
@shared_task(base=CustomTask)
|
||||||
def correct_swip_task(start_time="", end_time=""):
|
def correct_swip_task(start_time="", end_time=""):
|
||||||
# from apps.monitor.models import DrfRequestLog
|
# from apps.monitor.models import DrfRequestLog
|
||||||
# from apps.hrm.services import HrmService
|
# from apps.hrm.services import HrmService
|
||||||
|
|
|
@ -18,6 +18,7 @@ from apps.hrm.serializers import (CertificateCreateUpdateSerializer, Certificate
|
||||||
EmployeeCreateUpdateSerializer, EmployeeDetailSerializer, EmployeeImproveSerializer,
|
EmployeeCreateUpdateSerializer, EmployeeDetailSerializer, EmployeeImproveSerializer,
|
||||||
EmployeeNotWorkRemarkSerializer,
|
EmployeeNotWorkRemarkSerializer,
|
||||||
EmployeeSerializer,
|
EmployeeSerializer,
|
||||||
|
ClockRecordSimpleSerializer,
|
||||||
NotWorkRemarkListSerializer, CorrectSerializer)
|
NotWorkRemarkListSerializer, CorrectSerializer)
|
||||||
from apps.hrm.services import HrmService
|
from apps.hrm.services import HrmService
|
||||||
|
|
||||||
|
@ -254,40 +255,68 @@ class ClockRecordViewSet(ListModelMixin, CustomGenericViewSet):
|
||||||
)
|
)
|
||||||
return Response({'path': export_excel(field_data, data, '打卡记录')})
|
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['end_time'])
|
|
||||||
return Response()
|
|
||||||
|
|
||||||
@action(methods=['post'], detail=False, perms_map={'post': '*'},
|
@action(methods=['post'], detail=False, perms_map={'post': '*'},
|
||||||
serializer_class=CorrectSerializer)
|
serializer_class=serializers.Serializer, logging_methods=[])
|
||||||
def correct_enter_or_exit(self, request, pk=None):
|
def dahua(self, request):
|
||||||
"""
|
"""
|
||||||
变更一段时间日志刷脸类型
|
大华刷脸分页带my_info
|
||||||
|
|
||||||
变更一段时间日志刷脸类型
|
大华刷脸分页带my_info
|
||||||
"""
|
"""
|
||||||
from apps.monitor.models import DrfRequestLog
|
request.data.update({
|
||||||
sr = CorrectSerializer(data=request.data)
|
"openType":"61",
|
||||||
sr.is_valid(raise_exception=True)
|
})
|
||||||
vdata = sr.validated_data
|
_, res = dhClient.request(**dhapis['swipe_list'], json=request.data)
|
||||||
for i in DrfRequestLog.objects.filter(path='/api/third/dahua/c_swip/', data__contains='办公楼考勤面板'
|
ids = []
|
||||||
, create_time__gte=vdata['start_time']
|
if res.get('pageData', None):
|
||||||
, create_time__lte=vdata['end_time']).filter(data__contains = "'enterOrExit': 1" ):
|
for i in res['pageData']:
|
||||||
data = i.data
|
ids.append(i['id'])
|
||||||
i.data = data.replace("'enterOrExit': 1", "'enterOrExit': 3")
|
crs_info = ClockRecordSimpleSerializer(instance=ClockRecord.objects.filter(detail__id__in=ids), many=True).data
|
||||||
i.save()
|
crs_dict = {}
|
||||||
return Response()
|
for i in crs_info:
|
||||||
|
crs_dict[i['detail']['id']] = i
|
||||||
|
for i in res['pageData']:
|
||||||
|
i['my_info'] = {}
|
||||||
|
if i['id'] in crs_dict:
|
||||||
|
i['my_info'] = crs_dict[i['id']]
|
||||||
|
return Response(res)
|
||||||
|
|
||||||
|
|
||||||
|
# @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['end_time'])
|
||||||
|
# return Response()
|
||||||
|
|
||||||
|
# @action(methods=['post'], detail=False, perms_map={'post': '*'},
|
||||||
|
# serializer_class=CorrectSerializer)
|
||||||
|
# def correct_enter_or_exit(self, request, pk=None):
|
||||||
|
# """
|
||||||
|
# 变更一段时间日志刷脸类型
|
||||||
|
|
||||||
|
# 变更一段时间日志刷脸类型
|
||||||
|
# """
|
||||||
|
# from apps.monitor.models import DrfRequestLog
|
||||||
|
# sr = CorrectSerializer(data=request.data)
|
||||||
|
# sr.is_valid(raise_exception=True)
|
||||||
|
# vdata = sr.validated_data
|
||||||
|
# for i in DrfRequestLog.objects.filter(path='/api/third/dahua/c_swip/', data__contains='办公楼考勤面板'
|
||||||
|
# , create_time__gte=vdata['start_time']
|
||||||
|
# , create_time__lte=vdata['end_time']).filter(data__contains = "'enterOrExit': 1" ):
|
||||||
|
# data = i.data
|
||||||
|
# i.data = data.replace("'enterOrExit': 1", "'enterOrExit': 3")
|
||||||
|
# i.save()
|
||||||
|
# return Response()
|
||||||
|
|
||||||
class NotWorkRemarkViewSet(ListModelMixin, CustomGenericViewSet):
|
class NotWorkRemarkViewSet(ListModelMixin, CustomGenericViewSet):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue