This commit is contained in:
TianyangZhang 2025-12-22 14:27:58 +08:00
commit aad329061b
1 changed files with 22 additions and 0 deletions

View File

@ -4,6 +4,7 @@ from apps.wpm.models import (SfLog, StLog, WMaterial, Mlog, Mlogbw,
from apps.mtm.models import Route, Material from apps.mtm.models import Route, Material
from django.db.models import Q from django.db.models import Q
from rest_framework.exceptions import ParseError from rest_framework.exceptions import ParseError
from datetime import datetime
class SfLogFilter(filters.FilterSet): class SfLogFilter(filters.FilterSet):
class Meta: class Meta:
@ -40,6 +41,27 @@ class WMaterialFilter(filters.FilterSet):
mtaskx = filters.CharFilter(label='MtaskId', method='filter_mtaskx') mtaskx = filters.CharFilter(label='MtaskId', method='filter_mtaskx')
route = filters.CharFilter(label='routeId', method='filter_route') route = filters.CharFilter(label='routeId', method='filter_route')
material__process__exclude = filters.CharFilter(field_name="material__process", lookup_expr="exact", exclude=True) 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):
return queryset
def filter_mgroupx(self, queryset, name, value): def filter_mgroupx(self, queryset, name, value):
return WMaterial.ava_qs(mgroup=Mgroup.objects.get(id=value), qs=queryset) return WMaterial.ava_qs(mgroup=Mgroup.objects.get(id=value), qs=queryset)