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 django_filters import rest_framework as filters
|
||||||
from apps.wpm.models import (SfLog, StLog, WMaterial, Mlog, Mlogbw,
|
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 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 rest_framework.exceptions import ParseError
|
||||||
from datetime import datetime
|
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)
|
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_start = filters.DateFilter(label="产出开始", method="filter_mlog_date_start")
|
||||||
mlog_date_end = filters.DateFilter(label="产出结束", method="filter_mlog_date_end")
|
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):
|
def filter_mlog_date_start(self, queryset, name, value):
|
||||||
mgroupId = self.data.get("mgroup", None)
|
mgroupId = self.data.get("mgroup", None)
|
||||||
|
|
@ -101,6 +102,23 @@ class WMaterialFilter(filters.FilterSet):
|
||||||
raise ParseError('生产路线不存在!')
|
raise ParseError('生产路线不存在!')
|
||||||
return queryset.filter(material=route.material_in)|queryset.filter(material__in=route.materials.all())
|
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:
|
class Meta:
|
||||||
model = WMaterial
|
model = WMaterial
|
||||||
fields = {
|
fields = {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue