feat: 优化mlogbw list接口速度2

This commit is contained in:
caoqianming 2025-11-25 16:17:37 +08:00
parent 57330e6ac6
commit 8970d5b04e
4 changed files with 22 additions and 4 deletions

View File

@ -343,6 +343,14 @@ class Ftest(CommonBDModel):
FtestWork, verbose_name='关联检验工作', on_delete=models.CASCADE, null=True, blank=True)
defect_main = models.ForeignKey(Defect, verbose_name='主要缺陷', on_delete=models.SET_NULL, null=True, blank=True)
@property
def ftestitems(self):
return FtestItem.objects.filter(ftest=self)
@property
def ftestdefects(self):
return FtestDefect.objects.filter(ftest=self)
@classmethod
def init_by_qct(cls, qct, test_user, test_date):
ftest = Ftest.objects.create(qct=qct, test_user=test_user, test_date=test_date)

View File

@ -347,8 +347,8 @@ class FtestItemProcessSerializer(CustomModelSerializer):
class FtestProcessSerializer(CustomModelSerializer):
test_user_name = serializers.CharField(
source='test_user.name', read_only=True)
ftestitems = FtestItemProcessSerializer(source='items_ftest', many=True)
ftestdefects = FtestDefectSerializer(source='defects_ftest', many=True)
ftestitems = FtestItemProcessSerializer(many=True)
ftestdefects = FtestDefectSerializer(many=True)
class Meta:
model = Ftest
@ -431,3 +431,7 @@ class FtestProcessSerializer(CustomModelSerializer):
instance.is_ok = is_ok
instance.save()
return instance
class FtestProcessListSerializer(FtestProcessSerializer):
ftestitems = FtestItemProcessSerializer(source='items_ftest', many=True)
ftestdefects = FtestDefectSerializer(source='defects_ftest', many=True)

View File

@ -21,7 +21,7 @@ from django.utils.timezone import localdate
from apps.qm.models import NotOkOption, Qct
from apps.wf.serializers import TicketSimpleSerializer
from apps.wpmw.models import Wpr
from apps.qm.serializers import FtestProcessSerializer
from apps.qm.serializers import FtestProcessSerializer, FtestProcessListSerializer
import logging
from apps.qm.models import Defect
from apps.utils.snowflake import idWorker
@ -911,6 +911,9 @@ class MlogbwCreateUpdateSerializer(CustomModelSerializer):
return mlogbw
class MlogbwListSerializer(MlogbwCreateUpdateSerializer):
ftest = FtestProcessListSerializer(read_only=True)
class MlogbwStartTestSerializer(serializers.Serializer):
mlogbw_ids = serializers.ListField(child=serializers.CharField(), label="mlogbwId列表")
test_equip = serializers.CharField(label="测试设备", allow_null=True, required=False, allow_blank=True)

View File

@ -41,6 +41,7 @@ from .serializers import (
FmlogUpdateSerializer,
BatchStSerializer,
MlogbwCreateUpdateSerializer,
MlogbwListSerializer,
HandoverMgroupSerializer,
MlogListSerializer,
MlogbSerializer,
@ -1074,6 +1075,8 @@ class MlogbwViewSet(CustomModelViewSet):
perms_map = {"get": "*", "post": "mlog.update", "put": "mlog.update", "delete": "mlog.update"}
queryset = Mlogbw.objects.all()
serializer_class = MlogbwCreateUpdateSerializer
list_serializer_class = MlogbwListSerializer
retrieve_serializer_class = MlogbwListSerializer
filterset_class = MlogbwFilter
select_related_fields = ["ftest", "equip", "wpr", "mlogb"]
prefetch_related_fields = [