刷卡事件生成考勤及修改访客和相关方项目

This commit is contained in:
曹前明 2022-08-24 10:37:58 +08:00
parent 93a4fa7a8e
commit 1c5e7f3366
3 changed files with 64 additions and 55 deletions

View File

@ -122,7 +122,6 @@ class HrmService:
"endDate": endDate,
"departmentId": departmentId,
}
time.sleep(1)
_, res = dhClient.request(**dhapis['card_update'], json=json_data)
return cardNumber
else:
@ -147,8 +146,8 @@ class HrmService:
"startDate": startDate,
"endDate": endDate
}
time.sleep(1)
_, res = dhClient.request(**dhapis['card_add'], json=json_data)
time.sleep(1)
cls.save(ep, data={'dh_face_card': cardNumber})
return cardNumber
@ -195,59 +194,67 @@ class HrmService:
"""
刷卡事件/用于记录考勤
"""
deviceCode = data['infoArray']['deviceCode']
device = TDevice.objects.filter(code=deviceCode).first()
if device and device.is_clock:
# 如果设置为关联考勤
if data['info']['extend']['enterOrExit'] == "1":
# 如果是进门
id_number = data['info']['extend']['paperNumber']
if id_number:
ep = Employee.objects.filter(id_number=id_number, type="employee").first()
# 如果是内部员工创建上班打卡记录(更新)
if ep and ep.is_atwork is False:
now = timezone.now()
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()
if cr_10:
if now < cr_10.create_by:
cr_10.create_by = now
from apps.vm.models import Visit
from apps.rpm.models import Rpj
nodeCode = data['info']['nodeCode']
device = TDevice.objects.filter(code=nodeCode).first()
if device:
id_number = data['info']['extend'].get('paperNumber', None)
if id_number: # 如果有身份证号
# 先进行相关方/访客项目更新
Visit.objects.filter(type=Visit.V_ENTER, visitors__employee__id_number=id_number).update(
type=Visit.V_WORKING)
Rpj.objects.filter(type=Rpj.RPJ_ENTER, remployees__employee__id_number=id_number).update(
type=Rpj.RPJ_WORKING)
if device.is_clock:
# 如果设置为关联考勤
if data['info']['extend']['enterOrExit'] == "1":
# 如果是进门
ep = Employee.objects.filter(id_number=id_number, type__in=["employee", "remployee"]).first()
# 如果是内部/相关方员工创建上班打卡记录(更新)
if ep and ep.is_atwork is False:
now = timezone.now()
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()
if cr_10:
if now < cr_10.create_by:
cr_10.create_by = now
cr_10.trigger = 'door'
cr_10.detail = data['info']['extend']
cr_10.save()
else:
cr_10 = ClockRecord()
cr_10.type = 10
cr_10.employee = ep
cr_10.trigger = 'door'
cr_10.detail = data['info']['extend']
cr_10.save()
else:
cr_10 = ClockRecord()
cr_10.type = 10
cr_10.employee = ep
cr_10.trigger = 'door'
cr_10.detail = data['info']['extend']
cr_10.save()
ep.is_atwork = True
ep.last_check_time = now
ep.save()
elif data['info']['extend']['enterOrExit'] == "2":
# 如果是出门
id_number = data['info']['extend']['paperNumber']
if id_number:
ep = Employee.objects.filter(id_number=id_number, type="employee").first()
# 如果是内部员工创建下班打卡记录(更新)
if ep and ep.is_atwork:
now = timezone.now()
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()
if cr_20:
if now > cr_20.create_by:
cr_20.create_by = now
cr_20.trigger = 'door'
cr_20.detail = data['info']['extend']
cr_20.save()
else:
cr_20 = ClockRecord()
cr_20.type = 20
cr_20.employee = ep
cr_20.trigger = 'door'
cr_20.detail = data['info']['extend']
cr_20.save()
ep.is_atwork = False
ep.last_check_time = now
ep.save()
ep.is_atwork = True
ep.last_check_time = now
ep.save()
elif data['info']['extend']['enterOrExit'] == "2":
# 如果是出门
id_number = data['info']['extend']['paperNumber']
if id_number:
ep = Employee.objects.filter(id_number=id_number, type="employee").first()
# 如果是内部/相关方员工创建下班打卡记录(更新)
if ep and ep.is_atwork:
now = timezone.now()
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()
if cr_20:
if now > cr_20.create_by:
cr_20.create_by = now
cr_20.trigger = 'door'
cr_20.detail = data['info']['extend']
cr_20.save()
else:
cr_20 = ClockRecord()
cr_20.type = 20
cr_20.employee = ep
cr_20.trigger = 'door'
cr_20.detail = data['info']['extend']
cr_20.save()
ep.is_atwork = False
ep.last_check_time = now
ep.save()

View File

@ -63,6 +63,7 @@ class Rpj(CommonBDModel):
leave_time = models.DateTimeField('离厂时间')
state = models.PositiveSmallIntegerField('状态', default=10)
rparty = models.ForeignKey(Rparty, verbose_name='关联相关方', on_delete=models.CASCADE)
remployees = models.ManyToManyField('rpm.remployee', through='rpm.rpjmember')
# belong_dept是业务部门可以带过来
ticket = models.ForeignKey(Ticket, verbose_name='关联工单',
on_delete=models.SET_NULL, null=True, blank=True)

View File

@ -1,3 +1,4 @@
from django.db import models
from apps.hrm.models import Employee
from apps.utils.models import CommonAModel, CommonBModel, BaseModel