diff --git a/apps/hrm/tasks.py b/apps/hrm/tasks.py index c599a004..005f291d 100755 --- a/apps/hrm/tasks.py +++ b/apps/hrm/tasks.py @@ -7,6 +7,8 @@ from datetime import datetime, timedelta from apps.third.dahua import dhClient from apps.third.tapis import dhapis from apps.hrm.services import HrmService +from django.utils import timezone +from datetime import timedelta import time @@ -18,12 +20,28 @@ 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)) +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)) + # 从大华历史记录校正打卡记录 + now = timezone.now() + if start_time == "": + start_time = (now - timedelta(days=1)).strftime("%Y-%m-%d %H:%M:%S") + elif end_time == "": + end_time = now.strftime("%Y-%m-%d %H:%M:%S") + data = { + "pageNum":1, + "pageSize":"400", + "startSwingTime":start_time, + "endSwingTime":end_time, + "openType":"61" + } + _, res = dhClient.request(**dhapis['swipe_list'], json=data) + for i in res['pageData']: + HrmService.swipe_next(i['channelCode'], i['paperNumber'], i['swingTime'], i['enterOrExit'], i) @shared_task def correct_card_time(): diff --git a/apps/third/tapis.py b/apps/third/tapis.py index ab779e52..45a51500 100755 --- a/apps/third/tapis.py +++ b/apps/third/tapis.py @@ -108,6 +108,10 @@ dhapis = { "url": "/evo-apigw/evo-event/1.2.0/alarm-record/detail?alarmCode={alarmCode}&dbType={dbType}&alarmDate={alarmDate}", "method": "get" }, + "swipe_list": { + "url": "/evo-apigw/evo-accesscontrol/1.2.0/card/accessControl/swingCardRecord/bycondition/combined", + "method": "post" + }, "dev_snap": { "url": "/evo-apigw/admin/API/EVO/invoke/DMS", "method": "post"