打卡bug修复
This commit is contained in:
parent
7f1e6f0c56
commit
de8ae9d740
|
@ -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',
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue