diff --git a/apps/pm/migrations/0015_utask_count_day.py b/apps/pm/migrations/0015_utask_count_day.py new file mode 100644 index 00000000..3a077f2f --- /dev/null +++ b/apps/pm/migrations/0015_utask_count_day.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2023-11-27 07:37 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('pm', '0014_mtask_peifen_kg'), + ] + + operations = [ + migrations.AddField( + model_name='utask', + name='count_day', + field=models.PositiveIntegerField(default=0, verbose_name='日均任务数'), + ), + ] diff --git a/apps/pm/models.py b/apps/pm/models.py index 42d5e148..770ffca2 100644 --- a/apps/pm/models.py +++ b/apps/pm/models.py @@ -34,6 +34,7 @@ class Utask(CommonBDModel): Material, verbose_name='领用物', on_delete=models.CASCADE, related_name='utask_material_in', null=True, blank=True) count = models.PositiveIntegerField('任务数', default=1) count_real = models.PositiveIntegerField('实际生产数', default=0) + count_day = models.PositiveIntegerField('日均任务数', default=0) count_ok = models.PositiveIntegerField('合格数', default=0) count_notok = models.PositiveIntegerField('不合格数', default=0) start_date = models.DateField('计划开工日期') diff --git a/apps/pm/serializers.py b/apps/pm/serializers.py index 10721915..2fa97378 100644 --- a/apps/pm/serializers.py +++ b/apps/pm/serializers.py @@ -1,5 +1,6 @@ from rest_framework import serializers -from rest_framework.exceptions import ValidationError +from rest_framework.exceptions import ValidationError, ParseError +import math from apps.mtm.serializers import MaterialSimpleSerializer from apps.pm.models import Mtask, Utask @@ -19,8 +20,15 @@ class UtaskSerializer(CustomModelSerializer): fields = '__all__' def validate(self, attrs): + end_date = attrs['end_date'] + start_date = attrs['start_date'] if 'mgroup' in attrs and attrs['mgroup']: attrs['belong_dept'] = attrs['mgroup'].belong_dept + try: + rela_days = (end_date - start_date).days + 1 + attrs['count_day'] = math.ceil(attrs['count']/rela_days) + except Exception: + raise ParseError('日均任务数计划失败') return attrs def update(self, instance, validated_data):