From 2311e1773ff5af632e593e3f58743c5e8621e9ef Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 28 Feb 2025 16:49:08 +0800 Subject: [PATCH] fix: cal_count_notok bug --- apps/wpm/models.py | 5 +++-- apps/wpm/services.py | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/wpm/models.py b/apps/wpm/models.py index 843dfad9..9db7b352 100644 --- a/apps/wpm/models.py +++ b/apps/wpm/models.py @@ -10,6 +10,7 @@ from apps.pum.models import Supplier from django.db.models import Sum, Subquery from django.utils.translation import gettext_lazy as _ from rest_framework.exceptions import ParseError +from django.db.models import Count # Create your models here. @@ -390,10 +391,10 @@ class Mlogbw(BaseModel): elif mlogb.material_out: mlogb.count_real = count count_notok = 0 - tqs = Mlogbw.objects.filter(mlogb=mlogb, ftest__is_ok=False).values("defect_main").annotate(xcount=Count('id')) + tqs = Mlogbw.objects.filter(mlogb=mlogb, ftest__is_ok=False).values("ftest__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, _ = MlogbDefect.objects.get_or_create(mlogb=mlogb, defect=t["ftest__defect_main"]) md.count = t["xcount"] md.save() md_ids.append(md.id) diff --git a/apps/wpm/services.py b/apps/wpm/services.py index 59edc78f..60a15adf 100644 --- a/apps/wpm/services.py +++ b/apps/wpm/services.py @@ -243,7 +243,7 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): if item.qct is not None: if MlogbDefect.objects.filter(mlogb=item).exists(): pass - else: + elif item.material_out.tracking == Material.MA_TRACKING_SINGLE: Mlogbw.cal_count_notok(item) for itemx in MlogbDefect.objects.filter(mlogb=item): m_outs_list.append((item.material_out, item.batch, itemx.count, 0, itemx.defect, item)) @@ -374,7 +374,7 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): if item.qct is not None: if MlogbDefect.objects.filter(mlogb=item).exists(): pass - else: + elif item.material_out.tracking == Material.MA_TRACKING_SINGLE: Mlogbw.cal_count_notok(item) for itemx in MlogbDefect.objects.filter(mlogb=item): m_outs_list.append((item.material_out, item.batch, itemx.count, 0, itemx.defect, item))