49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
# Create your tasks here
|
|
from __future__ import absolute_import, unicode_literals
|
|
from apps.rpm.models import Rpj, Rpjmember
|
|
from apps.rpm.services import rpj_member_leave
|
|
from apps.utils.tasks import CustomTask
|
|
from celery import shared_task
|
|
from django.utils import timezone
|
|
from datetime import datetime
|
|
|
|
|
|
@shared_task(base=CustomTask)
|
|
def close_rpj_by_leave_time():
|
|
"""
|
|
定时关闭相关方入厂项目
|
|
"""
|
|
now = timezone.now()
|
|
# 正常结束/其他关闭
|
|
rpjs = Rpj.objects.filter(leave_time__lt=now).exclude(state__in=[Rpj.RPJ_DONE, Rpj.RPJ_CLOSE])
|
|
for i in rpjs:
|
|
if i.state == Rpj.RPJ_WORKING:
|
|
i.state = Rpj.RPJ_DONE
|
|
i.save()
|
|
else:
|
|
i.state = Rpj.RPJ_CLOSE
|
|
i.save()
|
|
# 工单审批如果还未结束,直接关闭
|
|
from apps.wf.models import Ticket
|
|
from apps.wf.services import WfService
|
|
if i.ticket and i.ticket.state != Ticket.TICKET_ACT_STATE_FINISH:
|
|
WfService.close_by_task(i.ticket, '相关方入厂时间到期')
|
|
|
|
for m in Rpjmember.objects.filter(rpj__in=rpjs):
|
|
rpj_member_leave(m)
|
|
|
|
@shared_task(base=CustomTask)
|
|
def check_remployee_leave():
|
|
"""
|
|
检查相关方是否已经离开
|
|
"""
|
|
now = datetime.now()
|
|
now_str = now.strftime('%Y-%m-%d %H:%M:%S')
|
|
from apps.hrm.models import Employee
|
|
eobjs = Employee.objects.filter(type='remployee', third_info__dh_face_card_end__lte=now_str)
|
|
Employee.objects.filter(type='remployee', third_info__dh_face_card_end__lte=now_str).update(job_state=Employee.JOB_OFF)
|
|
for e in eobjs:
|
|
if e.user:
|
|
e.user.is_deleted = True
|
|
e.user.save()
|