feat: mlogbw变更出发mlogbdefect
This commit is contained in:
parent
fac85d17d2
commit
77f7a454a1
|
@ -729,16 +729,17 @@ class MlogbOutUpdateSerializer(CustomModelSerializer):
|
|||
with transaction.atomic():
|
||||
ins:Mlogb = super().update(instance, validated_data)
|
||||
if mlogbdefect and material_out.tracking == Material.MA_TRACKING_BATCH:
|
||||
defectIds = [item["defect"].id for item in mlogbdefect if item["count"] > 0]
|
||||
Mlogb.objects.filter(mlogb=ins).exclude(defect_id__in=defectIds).delete()
|
||||
count_notok = 0
|
||||
md_ids = []
|
||||
for item in mlogbdefect:
|
||||
defect = item["defect"]
|
||||
insb = MlogbDefect.objects.get(mlogb=ins, defect=defect)
|
||||
insb, _ = MlogbDefect.objects.get_or_create(mlogb=ins, defect=defect)
|
||||
insb.count = item["count"]
|
||||
insb.save(update_fields=["count"])
|
||||
if defect.cate == Defect.DEFECT_NOTOK:
|
||||
count_notok +=1
|
||||
md_ids.append(insb.id)
|
||||
Mlogbw.objects.filter(mlogb=ins).exclude(id__in=md_ids).delete()
|
||||
ins.count_notok = count_notok
|
||||
ins.count_ok = ins.count_real
|
||||
ins.save()
|
||||
|
|
|
@ -16,7 +16,7 @@ from apps.utils.mixins import CustomListModelMixin, BulkCreateModelMixin, BulkDe
|
|||
|
||||
from .filters import StLogFilter, SfLogFilter, WMaterialFilter, MlogFilter, HandoverFilter, MlogbFilter, BatchStFilter
|
||||
from .models import (SfLog, SfLogExp, StLog, WMaterial, Mlog, Handover, Mlogb,
|
||||
Mlogbw, AttLog, OtherLog, Fmlog, BatchSt)
|
||||
Mlogbw, AttLog, OtherLog, Fmlog, BatchSt, MlogbDefect)
|
||||
from .serializers import (SflogExpSerializer, SfLogSerializer, StLogSerializer, WMaterialSerializer,
|
||||
MlogRevertSerializer,
|
||||
MlogSerializer, MlogRelatedSerializer, DeptBatchSerializer, HandoverSerializer,
|
||||
|
@ -34,6 +34,7 @@ from apps.qm.models import QctMat, Ftest
|
|||
from apps.enm.models import EnStat
|
||||
from django.db.models import Q
|
||||
from apps.utils.tools import convert_ordereddict
|
||||
from django.db.models import Count
|
||||
|
||||
|
||||
# Create your views here.
|
||||
|
@ -678,7 +679,17 @@ class MlogbwViewSet(CustomModelViewSet):
|
|||
mlogb.count_use = count
|
||||
elif mlogb.material_out:
|
||||
mlogb.count_real = count
|
||||
mlogb.count_notok = Mlogbw.objects.filter(mlogb=mlogb, ftest__is_ok=False).count()
|
||||
count_notok = 0
|
||||
tqs = Mlogbw.objects.filter(mlogb=mlogb, ftest__is_ok=False).values("defect_main").annotate(xcount=Count('id'))
|
||||
md_ids = []
|
||||
for t in tqs:
|
||||
md, _ = MlogbDefect.objects.get_or_create(mlogb=mlogb, defect=t["defect_main"])
|
||||
md.count = t["xcount"]
|
||||
md.save()
|
||||
md_ids.append(md.id)
|
||||
count_notok += t["xcount"]
|
||||
MlogbDefect.objects.filter(mlogb=mlogb).exclude(id__in=md_ids).delete()
|
||||
mlogb.count_notok = count_notok
|
||||
mlogb.count_ok = count - mlogb.count_notok
|
||||
mlogb.save()
|
||||
|
||||
|
|
Loading…
Reference in New Issue