刷卡事件生成考勤及修改访客和相关方项目
This commit is contained in:
parent
93a4fa7a8e
commit
1c5e7f3366
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
from django.db import models
|
||||
from apps.hrm.models import Employee
|
||||
from apps.utils.models import CommonAModel, CommonBModel, BaseModel
|
||||
|
|
Loading…
Reference in New Issue