From 0cf04c50b3775f3d8cd1ac30427bbd3b6a1745d3 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 20 Aug 2025 17:39:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=BF=87=E6=BB=A4=E6=9D=A5=E6=96=99?= =?UTF-8?q?=E6=9C=AA=E5=AE=8C=E6=88=90=E7=9A=84=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/mtm/models.py | 6 ++++++ apps/wpm/filters.py | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/apps/mtm/models.py b/apps/mtm/models.py index 00339e8d..0c57aaf5 100644 --- a/apps/mtm/models.py +++ b/apps/mtm/models.py @@ -42,6 +42,12 @@ class Process(CommonBModel): """获取可产出的materialIds """ return list(Route.objects.filter(process=self).values_list("material_out__id", flat=True).distinct()) + + def get_canin_mat_ids(self): + """获取可输入的materialIds + """ + return list(RouteMat.objects.filter(route__process=self).values_list("material__id", flat=True).distinct()) + \ + list(Route.objects.filter(process=self).values_list("material_in__id", flat=True).distinct()) # Create your models here. class Material(CommonAModel): diff --git a/apps/wpm/filters.py b/apps/wpm/filters.py index c6237732..bf8064f2 100644 --- a/apps/wpm/filters.py +++ b/apps/wpm/filters.py @@ -50,14 +50,17 @@ class WMaterialFilter(filters.FilterSet): mgroupId = mgroupId if mgroupId else mgroupxId if mgroupId: process = Mgroup.objects.get(id=mgroupId).process - matoutIds = process.get_canout_mat_ids() + queryset = queryset.filter(material__type__in=[Material.MA_TYPE_MAINSO, Material.MA_TYPE_HALFGOOD, Material.MA_TYPE_GOOD]) if value == "todo": - qs = queryset.exclude(material__id__in=matoutIds).exclude(state=WMaterial.WM_REPAIRED)|queryset.filter(state=WMaterial.WM_REPAIR, mgroup__id=mgroupId) + matIds = process.get_canin_mat_ids() + qs = queryset.filter(material__id__in=matIds).exclude(state=WMaterial.WM_REPAIRED)|queryset.filter(state=WMaterial.WM_REPAIR, mgroup__id=mgroupId) return qs elif value == "done": + matoutIds = process.get_canout_mat_ids() qs = queryset.filter(material__id__in=matoutIds).exclude(state=WMaterial.WM_REPAIR)|queryset.filter(state=WMaterial.WM_REPAIRED, mgroup__id=mgroupId) elif value == "canfix": + matoutIds = process.get_canout_mat_ids() qs = queryset.filter(state=WMaterial.WM_REPAIR, mgroup__id=mgroupId)| queryset.filter(material__id__in=matoutIds, state=WMaterial.WM_NOTOK).exclude( state=WMaterial.WM_REPAIR).exclude(state=WMaterial.WM_REPAIRED) return qs