refector: hrm clockrecord 从大华侧请求带my_info数据
This commit is contained in:
parent
ecbe077e55
commit
5dc43246e2
|
@ -10,7 +10,13 @@ class ClockRecordFilterSet(filters.FilterSet):
|
|||
|
||||
class Meta:
|
||||
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):
|
||||
return queryset.filter(create_time__year=value)
|
||||
|
|
|
@ -98,7 +98,7 @@ class ClockRecord(BaseModel):
|
|||
type = models.PositiveSmallIntegerField('打卡类型', choices=type_choice, default=ClOCK_ON)
|
||||
employee = models.ForeignKey(Employee, verbose_name='对应人员', on_delete=models.CASCADE)
|
||||
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)
|
||||
|
||||
|
||||
|
|
|
@ -183,6 +183,11 @@ class ClockRecordListSerializer(serializers.ModelSerializer):
|
|||
model = ClockRecord
|
||||
fields = '__all__'
|
||||
|
||||
class ClockRecordSimpleSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = ClockRecord
|
||||
fields = ['id', 'type', 'exception_type', 'detail']
|
||||
|
||||
|
||||
class NotWorkRemarkListSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
|
|
|
@ -8,6 +8,7 @@ from apps.third.dahua import dhClient
|
|||
from apps.third.tapis import dhapis
|
||||
from apps.hrm.services import HrmService
|
||||
from django.utils import timezone
|
||||
from apps.utils.tasks import CustomTask
|
||||
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)
|
||||
|
||||
@shared_task
|
||||
@shared_task(base=CustomTask)
|
||||
def correct_swip_task(start_time="", end_time=""):
|
||||
# from apps.monitor.models import DrfRequestLog
|
||||
# from apps.hrm.services import HrmService
|
||||
|
|
|
@ -18,6 +18,7 @@ from apps.hrm.serializers import (CertificateCreateUpdateSerializer, Certificate
|
|||
EmployeeCreateUpdateSerializer, EmployeeDetailSerializer, EmployeeImproveSerializer,
|
||||
EmployeeNotWorkRemarkSerializer,
|
||||
EmployeeSerializer,
|
||||
ClockRecordSimpleSerializer,
|
||||
NotWorkRemarkListSerializer, CorrectSerializer)
|
||||
from apps.hrm.services import HrmService
|
||||
|
||||
|
@ -254,40 +255,68 @@ 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['end_time'])
|
||||
return Response()
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': '*'},
|
||||
serializer_class=CorrectSerializer)
|
||||
def correct_enter_or_exit(self, request, pk=None):
|
||||
serializer_class=serializers.Serializer, logging_methods=[])
|
||||
def dahua(self, request):
|
||||
"""
|
||||
变更一段时间日志刷脸类型
|
||||
大华刷脸分页带my_info
|
||||
|
||||
变更一段时间日志刷脸类型
|
||||
大华刷脸分页带my_info
|
||||
"""
|
||||
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()
|
||||
request.data.update({
|
||||
"openType":"61",
|
||||
})
|
||||
_, res = dhClient.request(**dhapis['swipe_list'], json=request.data)
|
||||
ids = []
|
||||
if res.get('pageData', None):
|
||||
for i in res['pageData']:
|
||||
ids.append(i['id'])
|
||||
crs_info = ClockRecordSimpleSerializer(instance=ClockRecord.objects.filter(detail__id__in=ids), many=True).data
|
||||
crs_dict = {}
|
||||
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):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue