29 lines
1005 B
Python
29 lines
1005 B
Python
# Create your tasks here
|
|
from __future__ import absolute_import, unicode_literals
|
|
from apps.vm.models import Visit
|
|
from apps.utils.tasks import CustomTask
|
|
from celery import shared_task
|
|
from django.utils import timezone
|
|
|
|
|
|
@shared_task(base=CustomTask)
|
|
def close_visit_by_leave_time():
|
|
"""
|
|
定时关闭访客入厂项目
|
|
"""
|
|
now = timezone.now()
|
|
# 正常结束/其他关闭
|
|
vs = Visit.objects.filter(leave_time__lt=now).exclude(state__in=[Visit.V_DONE, Visit.V_CLOSE])
|
|
for i in vs:
|
|
if i.state in [Visit.V_WORKING, Visit.V_ENTER]:
|
|
i.state = Visit.V_DONE
|
|
i.save()
|
|
else:
|
|
i.state = Visit.V_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, '访客入厂时间到期')
|