From f7843621dfef2b78daecffd98178cf852f6e6448 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 6 Mar 2025 16:15:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20wm=20=E5=A2=9E=E5=8A=A0=20=E6=9D=A5?= =?UTF-8?q?=E6=96=99/=E5=AE=8C=E6=88=90=20=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/filters.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/apps/wpm/filters.py b/apps/wpm/filters.py index c283492d..61cc7d9a 100644 --- a/apps/wpm/filters.py +++ b/apps/wpm/filters.py @@ -36,6 +36,7 @@ class StLogFilter(filters.FilterSet): class WMaterialFilter(filters.FilterSet): mgroupx = filters.CharFilter(label='MgroupId', method='filter_mgroupx') + tag = filters.CharFilter(label="todo/done", method="filter_tag") mtaskx = filters.CharFilter(label='MtaskId', method='filter_mtaskx') route = filters.CharFilter(label='routeId', method='filter_route') material__process__exclude = filters.CharFilter(field_name="material__process", lookup_expr="exact", exclude=True) @@ -43,6 +44,19 @@ class WMaterialFilter(filters.FilterSet): 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) + def filter_tag(self, queryset, name, value): + mgroup = self.data.get("mgroupx", None) + if mgroup: + process = Mgroup.objects.get(id=mgroup).process + if value == "todo": + qs = queryset.filter(material__process=process)|queryset.filter(state=WMaterial.WM_REPAIR) + return qs + elif value == "done": + qs = queryset.exclude(material__process=process)|queryset.filter(state=WMaterial.WM_REPAIRED) + return qs + else: + raise ParseError("请提供工段查询条件") + def filter_mtaskx(self, queryset, name, value): mtask = Mtask.objects.get(id=value) if mtask.route and mtask.route.batch_bind: