diff --git a/apps/wpm/models.py b/apps/wpm/models.py index 56cfe1f2..bfd47df2 100644 --- a/apps/wpm/models.py +++ b/apps/wpm/models.py @@ -506,10 +506,10 @@ class Mlogbw(BaseModel): if mlogb.material_in: mlogb.count_use = count mlogb.save(update_fields=["count_use"]) - mlogb.cal_count_notok(cal_mlog=True) elif mlogb.material_out: mlogb.count_real = count count_notok = 0 + count_notok_full = 0 tqs = Mlogbw.objects.filter(mlogb=mlogb, ftest__is_ok=False) tqs_a = Mlogbw.objects.filter(mlogb=mlogb, ftest__is_ok=False).values("ftest__defect_main").annotate(xcount=Count('id')) defects = {defect.id: defect for defect in Defect.objects.filter(id__in=tqs.values_list("ftest__defect_main", flat=True))} @@ -520,11 +520,13 @@ class Mlogbw(BaseModel): md.save() md_ids.append(md.id) count_notok += t["xcount"] + if defects[t["ftest__defect_main"]].okcate != 10: + count_notok_full += 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.count_ok_full = count - count_notok_full mlogb.save() - mlogb.cal_count_notok(cal_mlog=True) class Handover(CommonADModel): """ diff --git a/apps/wpm/views.py b/apps/wpm/views.py index 67c4e71d..3f0c107d 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -808,12 +808,13 @@ class MlogbwViewSet(CustomModelViewSet): @transaction.atomic def perform_create(self, serializer): ins:Mlogbw = serializer.save() + mlog = ins.mlogb.mlog if isinstance(ins, list): insx = ins else: insx = [ins] for ins in insx: - route:Route = ins.mlogb.mlog.route + route:Route = ins.mlogb.route mlogb:Mlogb = ins.mlogb Mlogbw.cal_count_notok(mlogb) # 如果是输入且输出追踪到个,需同步创建 @@ -859,11 +860,14 @@ class MlogbwViewSet(CustomModelViewSet): for i in range(route.div_number): Mlogbw.objects.get_or_create(mlogb=mlogb, number=f'{ins.number}-{i+1}', defaults={"mlogbw_from": ins}) Mlogbw.cal_count_notok(mlogb) + mlog.cal_mlog_count_from_mlogb() @transaction.atomic def perform_update(self, serializer): mlogbw = serializer.save() Mlogbw.cal_count_notok(mlogbw.mlogb) + mlog = mlogbw.mlogb.mlog + mlog.cal_mlog_count_from_mlogb() @transaction.atomic def perform_destroy(self, instance:Mlogbw): @@ -891,6 +895,9 @@ class MlogbwViewSet(CustomModelViewSet): mlogb_qs = Mlogb.objects.filter(id__in=mlogbIds) for mlogb in mlogb_qs: Mlogbw.cal_count_notok(mlogb) + + mlog = mlogb.mlog + mlog.cal_mlog_count_from_mlogb() class MlogUserViewSet(BulkCreateModelMixin, ListModelMixin, DestroyModelMixin, CustomGenericViewSet): perms_map = {"get": "*", "post": "mlog.update", "delete": "mlog.update"}