From a591abab8a283225734b3e0ac7d63238be34d604 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 14 Nov 2023 13:47:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20mtask=20serializer=E5=A2=9E=E5=8A=A0mlo?= =?UTF-8?q?gs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/pm/models.py | 5 +++++ apps/pm/serializers.py | 18 +++++++++++++++--- apps/pm/views.py | 1 + apps/wpm/migrations/0031_alter_mlog_mtask.py | 20 ++++++++++++++++++++ apps/wpm/models.py | 2 +- 5 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 apps/wpm/migrations/0031_alter_mlog_mtask.py diff --git a/apps/pm/models.py b/apps/pm/models.py index 60b3f41b..42d5e148 100644 --- a/apps/pm/models.py +++ b/apps/pm/models.py @@ -85,3 +85,8 @@ class Mtask(CommonADModel): 'utask', 'mgroup__process__sort', 'create_time' ) return Mtask.objects.none() + + @property + def mlogs(self): + from apps.wpm.models import Mlog + return Mlog.objects.filter(mtask=self) diff --git a/apps/pm/serializers.py b/apps/pm/serializers.py index a238be34..10721915 100644 --- a/apps/pm/serializers.py +++ b/apps/pm/serializers.py @@ -1,15 +1,16 @@ from rest_framework import serializers from rest_framework.exceptions import ValidationError -from apps.mtm.serializers import MaterialSerializer +from apps.mtm.serializers import MaterialSimpleSerializer from apps.pm.models import Mtask, Utask from apps.sam.models import OrderItem from apps.utils.serializers import CustomModelSerializer from apps.system.models import Dept +from apps.wpm.models import Mlog class UtaskSerializer(CustomModelSerializer): - material_ = MaterialSerializer(source='material', read_only=True) + material_ = MaterialSimpleSerializer(source='material', read_only=True) belong_dept = serializers.PrimaryKeyRelatedField( queryset=Dept.objects.all(), required=False) @@ -30,9 +31,20 @@ class UtaskSerializer(CustomModelSerializer): return super().update(instance, new_data) +class MlogSimpleSerializer(CustomModelSerializer): + shift_name = serializers.CharField(source='shift.name', read_only=True) + + class Meta: + model = Mlog + fields = ['id', 'shift_name', 'count_use', + 'count_ok', 'count_real', 'submit_time'] + + class MtaskSerializer(CustomModelSerializer): - material_out_ = MaterialSerializer(source='material_out', read_only=True) + material_out_ = MaterialSimpleSerializer( + source='material_out', read_only=True) mgroup_name = serializers.CharField(source='mgroup.name', read_only=True) + mlogs = MlogSimpleSerializer(label='日志信息', many=True, required=False) class Meta: model = Mtask diff --git a/apps/pm/views.py b/apps/pm/views.py index 4f4c48c4..8811ac96 100644 --- a/apps/pm/views.py +++ b/apps/pm/views.py @@ -120,6 +120,7 @@ class MtaskViewSet(CustomModelViewSet): serializer_class = MtaskSerializer filterset_class = MtaskFilter select_related_fields = ['material_in', 'material_out', 'mgroup'] + prefetch_related_fields = ['mlog_mtask'] ordering_fields = ['start_date', 'mgroup__process__sort'] ordering = ['-start_date', 'mgroup__process__sort', '-create_time'] diff --git a/apps/wpm/migrations/0031_alter_mlog_mtask.py b/apps/wpm/migrations/0031_alter_mlog_mtask.py new file mode 100644 index 00000000..16b6f59d --- /dev/null +++ b/apps/wpm/migrations/0031_alter_mlog_mtask.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.12 on 2023-11-14 05:46 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('pm', '0014_mtask_peifen_kg'), + ('wpm', '0030_alter_mlogb_mlog'), + ] + + operations = [ + migrations.AlterField( + model_name='mlog', + name='mtask', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='mlog_mtask', to='pm.mtask', verbose_name='关联任务'), + ), + ] diff --git a/apps/wpm/models.py b/apps/wpm/models.py index 824ed964..1c45d8c0 100644 --- a/apps/wpm/models.py +++ b/apps/wpm/models.py @@ -87,7 +87,7 @@ class Mlog(CommonADModel): 生产日志 """ mtask = models.ForeignKey( - Mtask, verbose_name='关联任务', on_delete=models.CASCADE, null=True, blank=True) + Mtask, verbose_name='关联任务', on_delete=models.CASCADE, null=True, blank=True, related_name='mlog_mtask') mgroup = models.ForeignKey( Mgroup, verbose_name='工段', on_delete=models.CASCADE, null=True, blank=True) material_in = models.ForeignKey(