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

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, "endDate": endDate,
"departmentId": departmentId, "departmentId": departmentId,
} }
time.sleep(1)
_, res = dhClient.request(**dhapis['card_update'], json=json_data) _, res = dhClient.request(**dhapis['card_update'], json=json_data)
return cardNumber return cardNumber
else: else:
@ -147,8 +146,8 @@ class HrmService:
"startDate": startDate, "startDate": startDate,
"endDate": endDate "endDate": endDate
} }
time.sleep(1)
_, res = dhClient.request(**dhapis['card_add'], json=json_data) _, res = dhClient.request(**dhapis['card_add'], json=json_data)
time.sleep(1)
cls.save(ep, data={'dh_face_card': cardNumber}) cls.save(ep, data={'dh_face_card': cardNumber})
return cardNumber return cardNumber
@ -195,16 +194,24 @@ class HrmService:
""" """
刷卡事件/用于记录考勤 刷卡事件/用于记录考勤
""" """
deviceCode = data['infoArray']['deviceCode'] from apps.vm.models import Visit
device = TDevice.objects.filter(code=deviceCode).first() from apps.rpm.models import Rpj
if device and device.is_clock: 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": if data['info']['extend']['enterOrExit'] == "1":
# 如果是进门 # 如果是进门
id_number = data['info']['extend']['paperNumber'] ep = Employee.objects.filter(id_number=id_number, type__in=["employee", "remployee"]).first()
if id_number: # 如果是内部/相关方员工创建上班打卡记录(更新)
ep = Employee.objects.filter(id_number=id_number, type="employee").first()
# 如果是内部员工创建上班打卡记录(更新)
if ep and ep.is_atwork is False: if ep and ep.is_atwork is False:
now = timezone.now() now = timezone.now()
cr_10 = ClockRecord.objects.filter( cr_10 = ClockRecord.objects.filter(
@ -230,7 +237,7 @@ class HrmService:
id_number = data['info']['extend']['paperNumber'] id_number = data['info']['extend']['paperNumber']
if id_number: if id_number:
ep = Employee.objects.filter(id_number=id_number, type="employee").first() ep = Employee.objects.filter(id_number=id_number, type="employee").first()
# 如果是内部员工创建下班打卡记录(更新) # 如果是内部/相关方员工创建下班打卡记录(更新)
if ep and ep.is_atwork: if ep and ep.is_atwork:
now = timezone.now() now = timezone.now()
cr_20 = ClockRecord.objects.filter( cr_20 = ClockRecord.objects.filter(

View File

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

View File

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