From d7c3e92f9e4dfab4dd9919e16f9bfa5c9fb6c378 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 22 Dec 2025 14:22:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20wmaterial=E6=B7=BB=E5=8A=A0mlog=5Fdate?= =?UTF-8?q?=5Fstart=E7=AD=9B=E9=80=89=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/filters.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/apps/wpm/filters.py b/apps/wpm/filters.py index f571f29d..ee9d2c5a 100644 --- a/apps/wpm/filters.py +++ b/apps/wpm/filters.py @@ -4,6 +4,7 @@ from apps.wpm.models import (SfLog, StLog, WMaterial, Mlog, Mlogbw, from apps.mtm.models import Route, Material from django.db.models import Q from rest_framework.exceptions import ParseError +from datetime import datetime class SfLogFilter(filters.FilterSet): class Meta: @@ -40,6 +41,27 @@ class WMaterialFilter(filters.FilterSet): 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) + mlog_date_start = filters.DateFilter(label="产出开始", method="filter_mlog_date_start") + mlog_date_end = filters.DateFilter(label="产出结束", method="filter_mlog_date_end") + + def filter_mlog_date_start(self, queryset, name, value): + mgroupId = self.data.get("mgroup", None) + mgroupxId = self.data.get("mgroupx", None) + mgroupId = mgroupId if mgroupId else mgroupxId + if mgroupId: + pass + else: + raise ParseError("请提供工段查询条件") + if value: + mlog_date_start = value + mlog_date_end = self.data.get("mlog_date_end", datetime.now().date()) + return queryset.filter(batch__in= + Mlogb.objects.filter(mlog__mgroup__id=mgroupId, material_out__isnull=False, + mlog__handle_date__range=(mlog_date_start, mlog_date_end)).values_list("batch", flat=True)) + return queryset + + def filter_mlog_date_end(self, queryset, name, value): + pass def filter_mgroupx(self, queryset, name, value): return WMaterial.ava_qs(mgroup=Mgroup.objects.get(id=value), qs=queryset)