From 1d778dbdf027e96af408c9d6958ac96befabc366 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 14 Aug 2025 09:48:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=20=E6=B7=BB=E5=8A=A0wamterial=20ava=5F?= =?UTF-8?q?qs=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/filters.py | 2 +- apps/wpm/models.py | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/apps/wpm/filters.py b/apps/wpm/filters.py index 38f16c4b..6044c34a 100644 --- a/apps/wpm/filters.py +++ b/apps/wpm/filters.py @@ -42,7 +42,7 @@ class WMaterialFilter(filters.FilterSet): material__process__exclude = filters.CharFilter(field_name="material__process", lookup_expr="exact", exclude=True) def filter_mgroupx(self, queryset, name, value): - return queryset.filter(mgroup__id=value)|queryset.filter(belong_dept=Mgroup.objects.get(id=value).belong_dept, mgroup=None)|queryset.filter(mgroup=None, belong_dept=None) + return WMaterial.ava_qs(mgroup=Mgroup.objects.get(id=value), qs=queryset) def filter_tag(self, queryset, name, value): mgroupId = self.data.get("mgroup", None) diff --git a/apps/wpm/models.py b/apps/wpm/models.py index f6b9349a..90aa4f44 100644 --- a/apps/wpm/models.py +++ b/apps/wpm/models.py @@ -130,6 +130,15 @@ class WMaterial(CommonBDModel): def count_handovering(self): return Handoverb.objects.filter(wm=self, handover__submit_time__isnull=True).aggregate(count=Sum('count'))['count'] or 0 + @classmethod + def ava_qs(cls, mgroup:Mgroup, qs=None): + """ + 可用的queryset + """ + if qs is None: + qs = cls.objects + return qs.filter(Q(mgroup=mgroup)|Q(mgroup=None, belong_dept=mgroup.belong_dept)|Q(mgroup=None, belong_dept=None)) + @classmethod def mat_in_qs(cls, mtask: Mtask, qs=None): """ @@ -137,7 +146,7 @@ class WMaterial(CommonBDModel): """ if qs is None: qs = cls.objects - return qs.filter( + return WMaterial.ava_qs(mgroup=mtask.mgroup, qs=qs).filter( mgroup=mtask.mgroup, material=mtask.material_in, batch__in=Subquery(