feat: mtask增加submit_time

This commit is contained in:
caoqianming 2023-11-30 16:30:07 +08:00
parent 3e041ec93b
commit cc0a2719de
5 changed files with 41 additions and 9 deletions

View File

@ -0,0 +1,26 @@
# Generated by Django 3.2.12 on 2023-11-30 08:28
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('pm', '0015_utask_count_day'),
]
operations = [
migrations.AddField(
model_name='mtask',
name='submit_time',
field=models.DateTimeField(blank=True, null=True, verbose_name='提交时间'),
),
migrations.AddField(
model_name='mtask',
name='submit_user',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='mtask_submit_user', to=settings.AUTH_USER_MODEL, verbose_name='提交人'),
),
]

View File

@ -75,6 +75,10 @@ class Mtask(CommonADModel):
Utask, verbose_name='关联大任务', on_delete=models.CASCADE, related_name='mtask_utask', null=True, blank=True)
peifen_kg = models.FloatField('配粉料数', default=0)
submit_time = models.DateTimeField('提交时间', null=True, blank=True)
submit_user = models.ForeignKey(
'system.user', verbose_name='提交人', on_delete=models.CASCADE, null=True, blank=True, related_name='mtask_submit_user')
@property
def related(self):
"""

View File

@ -251,14 +251,14 @@ class PmService:
change_order_state_when_schedue(orderitemIds)
@classmethod
def mtasks_submit(cls, mtasks: QuerySet[Mtask], user: User):
def mtask_submit(cls, mtask: Mtask, user: User):
"""
锁定生产任务
"""
from apps.wpm.models import Mlog
from apps.wpm.services import mlog_submit, update_mtask
now = timezone.now()
for mtask in mtasks:
if mtask.state == Mtask.MTASK_ASSGINED:
mlogs = Mlog.objects.filter(mtask=mtask)
if mlogs.count() == 0:
raise ParseError(f'{mtask.mgroup.name}_未填写日志')
@ -266,4 +266,8 @@ class PmService:
mlog_submit(mlog, user, now)
update_mtask(mtask)
mtask.state = Mtask.MTASK_DONE
mtask.submit_time = now
mtask.submit_user = user
mtask.save()
else:
raise ParseError('该任务状态不可提交')

View File

@ -167,10 +167,7 @@ class MtaskViewSet(CustomModelViewSet):
"""
mtask: Mtask = self.get_object()
user = request.user
if mtask.state == Mtask.MTASK_ASSGINED:
PmService.mtasks_submit(Mtask.objects.filter(id=mtask.id), user)
else:
raise ParseError('该任务状态不可提交')
PmService.mtask_submit(mtask, user)
return Response()
@action(methods=['post'], detail=True, perms_map={'post': 'mtask.submit'}, serializer_class=Serializer)
@ -182,5 +179,6 @@ class MtaskViewSet(CustomModelViewSet):
"""
mtask = self.get_object()
mtasks = mtask.related
PmService.mtasks_submit(mtasks)
for mtask in mtasks:
PmService.mtask_submit(mtask, self.request.user)
return Response()

View File

@ -187,7 +187,7 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
def update_mtask(mtask: Mtask):
from apps.pm.models import Utask
res = Mlog.objects.filter(mtask=mtask).aggregate(sum_count_real=Sum(
res = Mlog.objects.filter(mtask=mtask).exclude(submit_time=None).aggregate(sum_count_real=Sum(
'count_real'), sum_count_ok=Sum('count_ok'), sum_count_notok=Sum('count_notok'))
mtask.count_real = res['sum_count_real'] if res['sum_count_real'] else 0
mtask.count_ok = res['sum_count_ok'] if res['sum_count_ok'] else 0
@ -203,7 +203,7 @@ def update_mtask(mtask: Mtask):
if utask.count_ok > 0 and utask.state == Utask.UTASK_ASSGINED:
utask.state = Utask.UTASK_WORKING
if Mtask.objects.filter(utask=utask).exclude(state=Mtask.MTASK_DONE).count() == 0:
utask.state = Mtask.MTASK_DONE
utask.state = Utask.UTASK_DONE
utask.save()