Merge branch 'master' of http://gitea.xxhhcty.xyz:8080/zcdsj/factory
This commit is contained in:
commit
f66e5bd9df
|
|
@ -343,14 +343,6 @@ class Ftest(CommonBDModel):
|
||||||
FtestWork, verbose_name='关联检验工作', on_delete=models.CASCADE, null=True, blank=True)
|
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)
|
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
|
@classmethod
|
||||||
def init_by_qct(cls, qct, test_user, test_date):
|
def init_by_qct(cls, qct, test_user, test_date):
|
||||||
ftest = Ftest.objects.create(qct=qct, test_user=test_user, test_date=test_date)
|
ftest = Ftest.objects.create(qct=qct, test_user=test_user, test_date=test_date)
|
||||||
|
|
@ -385,7 +377,7 @@ class FtestItem(BaseModel):
|
||||||
TN:检测明细
|
TN:检测明细
|
||||||
"""
|
"""
|
||||||
ftest = models.ForeignKey(
|
ftest = models.ForeignKey(
|
||||||
Ftest, verbose_name='关联检验', on_delete=models.CASCADE)
|
Ftest, verbose_name='关联检验', on_delete=models.CASCADE, related_name='items_ftest')
|
||||||
testitem = models.ForeignKey(
|
testitem = models.ForeignKey(
|
||||||
TestItem, verbose_name='质检项目', on_delete=models.CASCADE)
|
TestItem, verbose_name='质检项目', on_delete=models.CASCADE)
|
||||||
test_equip = models.ForeignKey(Equipment, verbose_name='检测设备', on_delete=models.SET_NULL, null=True, blank=True)
|
test_equip = models.ForeignKey(Equipment, verbose_name='检测设备', on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
|
|
|
||||||
|
|
@ -347,8 +347,8 @@ class FtestItemProcessSerializer(CustomModelSerializer):
|
||||||
class FtestProcessSerializer(CustomModelSerializer):
|
class FtestProcessSerializer(CustomModelSerializer):
|
||||||
test_user_name = serializers.CharField(
|
test_user_name = serializers.CharField(
|
||||||
source='test_user.name', read_only=True)
|
source='test_user.name', read_only=True)
|
||||||
ftestitems = FtestItemProcessSerializer(label='检验明细', many=True)
|
ftestitems = FtestItemProcessSerializer(source='items_ftest', many=True)
|
||||||
ftestdefects = FtestDefectSerializer(label='缺陷明细', many=True)
|
ftestdefects = FtestDefectSerializer(source='defects_ftest', many=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Ftest
|
model = Ftest
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ from drf_yasg.utils import swagger_auto_schema
|
||||||
from drf_yasg import openapi
|
from drf_yasg import openapi
|
||||||
from django.db import connection
|
from django.db import connection
|
||||||
from django.db.models.functions import Substr, Length
|
from django.db.models.functions import Substr, Length
|
||||||
|
from apps.qm.models import FtestDefect, FtestItem
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
||||||
|
|
@ -1076,14 +1076,26 @@ class MlogbwViewSet(CustomModelViewSet):
|
||||||
serializer_class = MlogbwCreateUpdateSerializer
|
serializer_class = MlogbwCreateUpdateSerializer
|
||||||
filterset_class = MlogbwFilter
|
filterset_class = MlogbwFilter
|
||||||
select_related_fields = ["ftest", "equip", "wpr", "mlogb"]
|
select_related_fields = ["ftest", "equip", "wpr", "mlogb"]
|
||||||
|
prefetch_related_fields = [
|
||||||
|
Prefetch(
|
||||||
|
"ftest__items_ftest",
|
||||||
|
queryset=FtestItem.objects.select_related(
|
||||||
|
"testitem",
|
||||||
|
"test_user",
|
||||||
|
"test_equip",
|
||||||
|
)
|
||||||
|
),
|
||||||
|
Prefetch(
|
||||||
|
"ftest__defects_ftest",
|
||||||
|
queryset=FtestDefect.objects.select_related(
|
||||||
|
"defect",
|
||||||
|
"test_user",
|
||||||
|
)
|
||||||
|
),
|
||||||
|
]
|
||||||
ordering = ["mlogb", "number", "create_time"]
|
ordering = ["mlogb", "number", "create_time"]
|
||||||
ordering_fields = ["number", "create_time", "mlogb"]
|
ordering_fields = ["number", "create_time", "mlogb"]
|
||||||
|
|
||||||
# def filter_queryset(self, queryset):
|
|
||||||
# if not self.detail and not self.request.query_params.get('mlogb', None):
|
|
||||||
# raise ParseError('请指定所属消耗/产出明细')
|
|
||||||
# return super().filter_queryset(queryset)
|
|
||||||
|
|
||||||
def perform_create(self, serializer):
|
def perform_create(self, serializer):
|
||||||
ins: Mlogbw = serializer.save()
|
ins: Mlogbw = serializer.save()
|
||||||
mlog: Mlog = None
|
mlog: Mlog = None
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue