feat: mlogbw变更出发mlogbdefect

This commit is contained in:
caoqianming 2025-02-28 11:28:40 +08:00
parent fac85d17d2
commit 77f7a454a1
2 changed files with 17 additions and 5 deletions

View File

@ -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()

View File

@ -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()