feat: mtask serializer增加mlogs

This commit is contained in:
caoqianming 2023-11-14 13:47:49 +08:00
parent 53ca8f1742
commit a591abab8a
5 changed files with 42 additions and 4 deletions

View File

@ -85,3 +85,8 @@ class Mtask(CommonADModel):
'utask', 'mgroup__process__sort', 'create_time' 'utask', 'mgroup__process__sort', 'create_time'
) )
return Mtask.objects.none() return Mtask.objects.none()
@property
def mlogs(self):
from apps.wpm.models import Mlog
return Mlog.objects.filter(mtask=self)

View File

@ -1,15 +1,16 @@
from rest_framework import serializers from rest_framework import serializers
from rest_framework.exceptions import ValidationError 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.pm.models import Mtask, Utask
from apps.sam.models import OrderItem from apps.sam.models import OrderItem
from apps.utils.serializers import CustomModelSerializer from apps.utils.serializers import CustomModelSerializer
from apps.system.models import Dept from apps.system.models import Dept
from apps.wpm.models import Mlog
class UtaskSerializer(CustomModelSerializer): class UtaskSerializer(CustomModelSerializer):
material_ = MaterialSerializer(source='material', read_only=True) material_ = MaterialSimpleSerializer(source='material', read_only=True)
belong_dept = serializers.PrimaryKeyRelatedField( belong_dept = serializers.PrimaryKeyRelatedField(
queryset=Dept.objects.all(), required=False) queryset=Dept.objects.all(), required=False)
@ -30,9 +31,20 @@ class UtaskSerializer(CustomModelSerializer):
return super().update(instance, new_data) 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): 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) mgroup_name = serializers.CharField(source='mgroup.name', read_only=True)
mlogs = MlogSimpleSerializer(label='日志信息', many=True, required=False)
class Meta: class Meta:
model = Mtask model = Mtask

View File

@ -120,6 +120,7 @@ class MtaskViewSet(CustomModelViewSet):
serializer_class = MtaskSerializer serializer_class = MtaskSerializer
filterset_class = MtaskFilter filterset_class = MtaskFilter
select_related_fields = ['material_in', 'material_out', 'mgroup'] select_related_fields = ['material_in', 'material_out', 'mgroup']
prefetch_related_fields = ['mlog_mtask']
ordering_fields = ['start_date', 'mgroup__process__sort'] ordering_fields = ['start_date', 'mgroup__process__sort']
ordering = ['-start_date', 'mgroup__process__sort', '-create_time'] ordering = ['-start_date', 'mgroup__process__sort', '-create_time']

View File

@ -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='关联任务'),
),
]

View File

@ -87,7 +87,7 @@ class Mlog(CommonADModel):
生产日志 生产日志
""" """
mtask = models.ForeignKey( 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 = models.ForeignKey(
Mgroup, verbose_name='工段', on_delete=models.CASCADE, null=True, blank=True) Mgroup, verbose_name='工段', on_delete=models.CASCADE, null=True, blank=True)
material_in = models.ForeignKey( material_in = models.ForeignKey(