feat: wm添加route查询条件

This commit is contained in:
caoqianming 2025-01-07 13:52:31 +08:00
parent ccac1aea87
commit c8594aaa99
1 changed files with 10 additions and 0 deletions

View File

@ -1,7 +1,9 @@
from django_filters import rest_framework as filters from django_filters import rest_framework as filters
from apps.wpm.models import (SfLog, StLog, WMaterial, Mlog, from apps.wpm.models import (SfLog, StLog, WMaterial, Mlog,
Handover, Mgroup, Mlogb, Mtask, BatchSt) Handover, Mgroup, Mlogb, Mtask, BatchSt)
from apps.mtm.models import Route
from django.db.models import Q from django.db.models import Q
from rest_framework.exceptions import ParseError
class SfLogFilter(filters.FilterSet): class SfLogFilter(filters.FilterSet):
class Meta: class Meta:
@ -34,6 +36,7 @@ class StLogFilter(filters.FilterSet):
class WMaterialFilter(filters.FilterSet): class WMaterialFilter(filters.FilterSet):
mgroupx = filters.CharFilter(label='MgroupId', method='filter_mgroupx') mgroupx = filters.CharFilter(label='MgroupId', method='filter_mgroupx')
mtaskx = filters.CharFilter(label='MtaskId', method='filter_mtaskx') mtaskx = filters.CharFilter(label='MtaskId', method='filter_mtaskx')
route = filters.CharFilter(label='routeId', method='filter_route')
def filter_mgroupx(self, queryset, name, value): 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) return queryset.filter(mgroup__id=value)|queryset.filter(belong_dept=Mgroup.objects.get(id=value).belong_dept, mgroup=None)
@ -43,6 +46,13 @@ class WMaterialFilter(filters.FilterSet):
if mtask.route and mtask.route.batch_bind: if mtask.route and mtask.route.batch_bind:
return WMaterial.mat_in_qs(mtask=Mtask.objects.get(id=value), qs=queryset) return WMaterial.mat_in_qs(mtask=Mtask.objects.get(id=value), qs=queryset)
return queryset return queryset
def filter_route(self, queryset, name, value):
try:
route = Route.objects.get(id=value)
except Route.DoesNotExist:
raise ParseError('生产路线不存在!')
return queryset.filter(material=route.material_in)|queryset.filter(material__in=route.materials.all())
class Meta: class Meta:
model = WMaterial model = WMaterial