打卡bug修复

This commit is contained in:
caoqianming 2022-11-03 10:41:57 +08:00
parent 7f1e6f0c56
commit de8ae9d740
2 changed files with 42 additions and 17 deletions

View File

@ -171,7 +171,8 @@ class TestViewSet(CustomGenericViewSet):
""" """
from apps.ecm.models import Event from apps.ecm.models import Event
event = Event.objects.get(id='1562718567894487040') event = Event.objects.get(id='1562718567894487040')
create_remind(event, params={'area': '生产车间', 'employee': '访客石非凡', 'event': '未带安全帽'}) create_remind(event, params={'area': '生产车间',
'employee': '访客石非凡', 'event': '未带安全帽'})
return Response() return Response()
@action(methods=['post'], detail=False, serializer_class=Serializer) @action(methods=['post'], detail=False, serializer_class=Serializer)
@ -182,6 +183,18 @@ class TestViewSet(CustomGenericViewSet):
""" """
return Response(dhClient.snap(request.data['code'])) return Response(dhClient.snap(request.data['code']))
@action(methods=['post'], detail=False, serializer_class=Serializer)
def test_swip(self, request):
"""
测试刷脸打卡事件
测试刷脸打卡事件
"""
from apps.hrm.services import HrmService
HrmService.swipe(data={'id': 44371, 'category': 'alarm', 'method': 'alarm.msg', 'info': {'orgName': '河北省', 'nodeCode': '1000134$7$0$0', 'deviceCode': '1000134', 'alarmCode': 'f4a2912b6f4849a183c37cca878e2c98', 'alarmPicture': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20221102/1/dsf_441b02c1-5a84-11ed-b23a-e4246c7d1635_30716404_30732676.jpg', 'nodeType': '2', 'alarmDate': 1667430199, 'alarmGrade': 2, 'isSave': False, 'unitType': 7, 'extend': {'deptName': '生产运行部', 'deptIdList': [26], 'acsChannelCode': '1000134$7$0$0', 'maskState': 0, 'enterOrExit': 1, 'openTypeStr': '人脸刷门', 'swingTime': '2022-11-03 07:03:19', 'deviceName': '公司门入口', 'personCode': '13383626061', 'openType': '61', 'isOverTemp': False, 'orgCode': '001', 'paperNumber': '130602198409200659', 'errorDetail': '', 'from': 'evo-accesscontrol', 'id': 1037622985747468288, 'beginTime': 1667430199000, 'acsChannelName': '公司门入口_门禁通道_1', 'cardStatus': '0', 'faceImageUrl': [
'http://10.99.5.24:8927/6ad010cf-ce45-11ec-9715-e4246c7d1635/20221102/1/dsf_441b02c1-5a84-11ed-b23a-e4246c7d1635_30716404_30732676.jpg'], 'orgName': '河北省', 'openFailedCode': 0, 'sex': 1, 'deptId': '26', 'cardType': 0, 'curTemp': 35.0, 'deviceCode': '1000134', 'personName': '吕晓宾', 'personImg': '6ae577ee-ce45-11ec-bb54-e4246c7d1635/20220907/1/880a1f27-2e68-11ed-b073-e4246c7d1635.jpg', 'openResult': 1, 'personId': 263, 'recordImage1': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20221102/1/dsf_441b02c1-5a84-11ed-b23a-e4246c7d1635_30716404_30732676.jpg', 'category': '0', 'cardNumber': '6973273125', 'rfidType': 0, 'age': 0}, 'alarmType': 61, 'channelSeq': 0, 'orgCode': '001', 'channelName': '公司门入口_门禁通道_1', 'alarmStat': 1, 'isEvent': True}, 'subsystem': 'evo-accesscontrol', 'userIds': None, 'sid': None, 'domainId': None, 'infoArray': None, 'protocol': None})
return Response()
@action(methods=['post'], detail=False, serializer_class=TestAlgoSerializer) @action(methods=['post'], detail=False, serializer_class=TestAlgoSerializer)
def test_algo(self, request, pk=None): def test_algo(self, request, pk=None):
"""测试算法 """测试算法
@ -227,7 +240,8 @@ class TestViewSet(CustomGenericViewSet):
""" """
code = request.data['code'] code = request.data['code']
vc = TDevice.objects.get(code=code) vc = TDevice.objects.get(code=code)
snap_and_analyse(vc, ['fire1', 'helmet'], Opl.objects.get(id='1572195171456651264')) snap_and_analyse(vc, ['fire1', 'helmet'],
Opl.objects.get(id='1572195171456651264'))
return Response() return Response()
@action(methods=['post'], detail=False, serializer_class=Serializer) @action(methods=['post'], detail=False, serializer_class=Serializer)
@ -406,25 +420,33 @@ class TestViewSet(CustomGenericViewSet):
Visit.objects.get_queryset(all=True).delete(soft=False) Visit.objects.get_queryset(all=True).delete(soft=False)
Visitor.objects.get_queryset(all=True).delete(soft=False) Visitor.objects.get_queryset(all=True).delete(soft=False)
Ticket.objects.get_queryset(all=True).filter(workflow__key='visit').delete(soft=False) Ticket.objects.get_queryset(all=True).filter(
workflow__key='visit').delete(soft=False)
Employee.objects.get_queryset(all=True).filter(type='visitor').delete(soft=False) Employee.objects.get_queryset(all=True).filter(
type='visitor').delete(soft=False)
User.objects.get_queryset(all=True).filter(type='visitor').delete(soft=False) User.objects.get_queryset(all=True).filter(
type='visitor').delete(soft=False)
if 'rpm' in datas: if 'rpm' in datas:
from apps.rpm.models import Rparty from apps.rpm.models import Rparty
Rparty.objects.get_queryset(all=True).delete(soft=False) Rparty.objects.get_queryset(all=True).delete(soft=False)
Ticket.objects.get_queryset(all=True).filter(workflow__key='rpj').delete(soft=False) Ticket.objects.get_queryset(all=True).filter(
Employee.objects.get_queryset(all=True).filter(type='remployee').delete(soft=False) workflow__key='rpj').delete(soft=False)
User.objects.get_queryset(all=True).filter(type='remployee').delete(soft=False) Employee.objects.get_queryset(all=True).filter(
Dept.objects.get_queryset(all=True).filter(type='rparty').delete(soft=False) type='remployee').delete(soft=False)
User.objects.get_queryset(all=True).filter(
type='remployee').delete(soft=False)
Dept.objects.get_queryset(all=True).filter(
type='rparty').delete(soft=False)
if 'event' in datas: if 'event' in datas:
from apps.ecm.models import Event from apps.ecm.models import Event
Event.objects.all().delete() Event.objects.all().delete()
if 'opm' in datas: if 'opm' in datas:
from apps.opm.models import Operation from apps.opm.models import Operation
Operation.objects.all().delete() Operation.objects.all().delete()
Ticket.objects.get_queryset(all=True).filter(workflow__key__contains='opl_').delete(soft=False) Ticket.objects.get_queryset(all=True).filter(
workflow__key__contains='opl_').delete(soft=False)
if 'ptask' in datas: if 'ptask' in datas:
from django_celery_results.models import TaskResult from django_celery_results.models import TaskResult
TaskResult.objects.filter(task_name__in=['apps.vm.tasks.close_visit_by_leave_time', TaskResult.objects.filter(task_name__in=['apps.vm.tasks.close_visit_by_leave_time',

View File

@ -9,6 +9,7 @@ from apps.third.dahua import dhClient
from apps.utils.tools import rannum, ranstr from apps.utils.tools import rannum, ranstr
from datetime import datetime, timedelta from datetime import datetime, timedelta
from django.utils import timezone from django.utils import timezone
from dateutil import tz
myLogger = logging.getLogger('log') myLogger = logging.getLogger('log')
@ -212,6 +213,10 @@ class HrmService:
if device: if device:
id_number = data['info']['extend'].get('paperNumber', None) id_number = data['info']['extend'].get('paperNumber', None)
if id_number: # 如果有身份证号 if id_number: # 如果有身份证号
tzinfo = tz.gettz('Asia/Shanghai')
now = datetime.now(tz=tzinfo)
first_time = datetime(year=now.year, month=now.month, day=now.day, hour=0, minute=0, second=0, tzinfo=tzinfo)
end_time = datetime(year=now.year, month=now.month, day=now.day, hour=23, minute=59, second=59, tzinfo=tzinfo)
if device.is_clock: if device.is_clock:
# 如果设置为关联考勤 # 如果设置为关联考勤
# myLogger.info(data['info']['extend']) # myLogger.info(data['info']['extend'])
@ -220,9 +225,8 @@ class HrmService:
ep = Employee.objects.filter(id_number=id_number, type__in=["employee", "remployee"]).first() ep = Employee.objects.filter(id_number=id_number, type__in=["employee", "remployee"]).first()
# 如果是内部/相关方员工创建上班打卡记录(更新) # 如果是内部/相关方员工创建上班打卡记录(更新)
if ep: if ep:
now = timezone.now()
cr_10 = ClockRecord.objects.filter( cr_10 = ClockRecord.objects.filter(
type=10, employee=ep, create_time__year=now.year, create_time__month=now.month, create_time__day=now.day).first() type=10, employee=ep, create_time__gte=first_time, create_time__lte=end_time).first()
if cr_10: if cr_10:
if now < cr_10.create_time: if now < cr_10.create_time:
cr_10.create_time = now cr_10.create_time = now
@ -246,9 +250,8 @@ class HrmService:
ep = Employee.objects.filter(id_number=id_number, type__in=["employee", "remployee"]).first() ep = Employee.objects.filter(id_number=id_number, type__in=["employee", "remployee"]).first()
# 如果是内部/相关方员工创建下班打卡记录(更新) # 如果是内部/相关方员工创建下班打卡记录(更新)
if ep: if ep:
now = timezone.now()
cr_20 = ClockRecord.objects.filter( cr_20 = ClockRecord.objects.filter(
type=20, employee=ep, create_time__year=now.year, create_time__month=now.month, create_time__day=now.day).first() type=20, employee=ep, create_time__gte=first_time, create_time__lte=end_time).first()
if cr_20: if cr_20:
if now > cr_20.create_time: if now > cr_20.create_time:
cr_20.create_time = now cr_20.create_time = now