diff --git a/apps/pm/tasks.py b/apps/pm/tasks.py new file mode 100644 index 00000000..95a9533f --- /dev/null +++ b/apps/pm/tasks.py @@ -0,0 +1,24 @@ +# Create your tasks here +from __future__ import absolute_import, unicode_literals +from apps.pm.models import Mtask, Utask +from apps.utils.tasks import CustomTask +from celery import shared_task +from datetime import datetime, timedelta +from django.db.models import F +from apps.pm.services import PmService + +@shared_task(base=CustomTask) +def complete_mtask(): + """ + 将2天前未提交的任务且数量已达标的任务标记为已完成 + """ + now = datetime.now().date() + mtasks = Mtask.objects.filter(state=Mtask.MTASK_ASSGINED, + end_date__lte=now-timedelta(days=2), + count_ok__gte=F('count')) + mtasks.update(state=Mtask.MTASK_SUBMIT) + + utasks = Utask.objects.filter(id__in=mtasks.values_list("utask__id", flat=True)) + + for utask in utasks: + PmService.utask_submit(utask=utask, raise_e=False) \ No newline at end of file