feat: mtask增加submit_time
This commit is contained in:
parent
3e041ec93b
commit
cc0a2719de
|
@ -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='提交人'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -75,6 +75,10 @@ class Mtask(CommonADModel):
|
||||||
Utask, verbose_name='关联大任务', on_delete=models.CASCADE, related_name='mtask_utask', null=True, blank=True)
|
Utask, verbose_name='关联大任务', on_delete=models.CASCADE, related_name='mtask_utask', null=True, blank=True)
|
||||||
peifen_kg = models.FloatField('配粉料数', default=0)
|
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
|
@property
|
||||||
def related(self):
|
def related(self):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -251,14 +251,14 @@ class PmService:
|
||||||
change_order_state_when_schedue(orderitemIds)
|
change_order_state_when_schedue(orderitemIds)
|
||||||
|
|
||||||
@classmethod
|
@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.models import Mlog
|
||||||
from apps.wpm.services import mlog_submit, update_mtask
|
from apps.wpm.services import mlog_submit, update_mtask
|
||||||
now = timezone.now()
|
now = timezone.now()
|
||||||
for mtask in mtasks:
|
if mtask.state == Mtask.MTASK_ASSGINED:
|
||||||
mlogs = Mlog.objects.filter(mtask=mtask)
|
mlogs = Mlog.objects.filter(mtask=mtask)
|
||||||
if mlogs.count() == 0:
|
if mlogs.count() == 0:
|
||||||
raise ParseError(f'{mtask.mgroup.name}_未填写日志')
|
raise ParseError(f'{mtask.mgroup.name}_未填写日志')
|
||||||
|
@ -266,4 +266,8 @@ class PmService:
|
||||||
mlog_submit(mlog, user, now)
|
mlog_submit(mlog, user, now)
|
||||||
update_mtask(mtask)
|
update_mtask(mtask)
|
||||||
mtask.state = Mtask.MTASK_DONE
|
mtask.state = Mtask.MTASK_DONE
|
||||||
|
mtask.submit_time = now
|
||||||
|
mtask.submit_user = user
|
||||||
mtask.save()
|
mtask.save()
|
||||||
|
else:
|
||||||
|
raise ParseError('该任务状态不可提交')
|
||||||
|
|
|
@ -167,10 +167,7 @@ class MtaskViewSet(CustomModelViewSet):
|
||||||
"""
|
"""
|
||||||
mtask: Mtask = self.get_object()
|
mtask: Mtask = self.get_object()
|
||||||
user = request.user
|
user = request.user
|
||||||
if mtask.state == Mtask.MTASK_ASSGINED:
|
PmService.mtask_submit(mtask, user)
|
||||||
PmService.mtasks_submit(Mtask.objects.filter(id=mtask.id), user)
|
|
||||||
else:
|
|
||||||
raise ParseError('该任务状态不可提交')
|
|
||||||
return Response()
|
return Response()
|
||||||
|
|
||||||
@action(methods=['post'], detail=True, perms_map={'post': 'mtask.submit'}, serializer_class=Serializer)
|
@action(methods=['post'], detail=True, perms_map={'post': 'mtask.submit'}, serializer_class=Serializer)
|
||||||
|
@ -182,5 +179,6 @@ class MtaskViewSet(CustomModelViewSet):
|
||||||
"""
|
"""
|
||||||
mtask = self.get_object()
|
mtask = self.get_object()
|
||||||
mtasks = mtask.related
|
mtasks = mtask.related
|
||||||
PmService.mtasks_submit(mtasks)
|
for mtask in mtasks:
|
||||||
|
PmService.mtask_submit(mtask, self.request.user)
|
||||||
return Response()
|
return Response()
|
||||||
|
|
|
@ -187,7 +187,7 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
|
||||||
|
|
||||||
def update_mtask(mtask: Mtask):
|
def update_mtask(mtask: Mtask):
|
||||||
from apps.pm.models import Utask
|
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'))
|
'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_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
|
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:
|
if utask.count_ok > 0 and utask.state == Utask.UTASK_ASSGINED:
|
||||||
utask.state = Utask.UTASK_WORKING
|
utask.state = Utask.UTASK_WORKING
|
||||||
if Mtask.objects.filter(utask=utask).exclude(state=Mtask.MTASK_DONE).count() == 0:
|
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()
|
utask.save()
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue