feat: wmaterial根据current_merged查询
This commit is contained in:
parent
dc26c7cc46
commit
4bbae8b7df
|
|
@ -1,8 +1,8 @@
|
|||
from django_filters import rest_framework as filters
|
||||
from apps.wpm.models import (SfLog, StLog, WMaterial, Mlog, Mlogbw,
|
||||
Handover, Mgroup, Mlogb, Mtask, BatchSt)
|
||||
Handover, Mgroup, Mlogb, Mtask, BatchSt, Handoverb)
|
||||
from apps.mtm.models import Route, Material
|
||||
from django.db.models import Q
|
||||
from django.db.models import Q, Exists, OuterRef
|
||||
from rest_framework.exceptions import ParseError
|
||||
from datetime import datetime
|
||||
|
||||
|
|
@ -43,6 +43,7 @@ class WMaterialFilter(filters.FilterSet):
|
|||
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")
|
||||
current_merged = filters.BooleanFilter(label="是否在本工段合批", method="filter_current_merged")
|
||||
|
||||
def filter_mlog_date_start(self, queryset, name, value):
|
||||
mgroupId = self.data.get("mgroup", None)
|
||||
|
|
@ -101,6 +102,23 @@ class WMaterialFilter(filters.FilterSet):
|
|||
raise ParseError('生产路线不存在!')
|
||||
return queryset.filter(material=route.material_in)|queryset.filter(material__in=route.materials.all())
|
||||
|
||||
def filter_current_merged(self, queryset, name, value):
|
||||
mgroupxId = self.data.get("mgroupx", None)
|
||||
if mgroupxId:
|
||||
pass
|
||||
else:
|
||||
raise ParseError("请提供工段查询条件")
|
||||
sub_qs = Handoverb.objects.filter(
|
||||
wm=OuterRef("pk"),
|
||||
handover__mtype=Handover.H_MERGE,
|
||||
handover__recive_mgroup__id=mgroupxId,
|
||||
)
|
||||
if value is True:
|
||||
return queryset.annotate(_has_merge=Exists(sub_qs)).filter(_has_merge=True)
|
||||
elif value is False:
|
||||
return queryset.annotate(_has_merge=Exists(sub_qs)).filter(_has_merge=False)
|
||||
return queryset
|
||||
|
||||
class Meta:
|
||||
model = WMaterial
|
||||
fields = {
|
||||
|
|
|
|||
Loading…
Reference in New Issue