iproduct增加need_to_order筛选;pm增加near_done筛选

This commit is contained in:
caoqianming 2022-01-26 10:27:22 +08:00
parent 850c18ba5f
commit c6080849d7
3 changed files with 17 additions and 4 deletions

View File

@ -23,9 +23,11 @@ class MbFilterSet(filters.FilterSet):
class IProductFilterSet(DynamicFieldsFilterMixin, filters.FilterSet): class IProductFilterSet(DynamicFieldsFilterMixin, filters.FilterSet):
order = filters.NumberFilter(field_name="wproduct__subproduction_plan__production_plan__order") order = filters.NumberFilter(field_name="wproduct__subproduction_plan__production_plan__order")
to_order = filters.NumberFilter(field_name="wproduct__to_order") to_order = filters.NumberFilter(field_name="wproduct__to_order")
need_to_order = filters.BooleanFilter()
update_time_start = filters.DateFilter(field_name="update_time", lookup_expr='gte') update_time_start = filters.DateFilter(field_name="update_time", lookup_expr='gte')
update_time_end = filters.DateFilter(field_name="update_time", lookup_expr='lte') update_time_end = filters.DateFilter(field_name="update_time", lookup_expr='lte')
class Meta: class Meta:
model = IProduct model = IProduct
fields = ['material', 'warehouse', 'batch', 'order', 'material__type', fields = ['material', 'warehouse', 'batch', 'order', 'material__type',
'is_saled', 'update_time_start', 'update_time_end', 'to_order'] 'is_saled', 'update_time_start', 'update_time_end',
'to_order', 'need_to_order']

View File

@ -2,8 +2,9 @@ from django_filters import rest_framework as filters
from apps.mtm.models import Material, Step from apps.mtm.models import Material, Step
from apps.pm.models import ProductionPlan, SubProductionProgress from apps.pm.models import ProductionPlan, SubProductionProgress
from apps.wpm.models import Operation, WProduct from apps.wpm.models import Operation, WProduct
from datetime import *
from apps.wpm.services import WpmServies from apps.wpm.services import WpmServies
from django.db.models import F
class PlanFilterSet(filters.FilterSet): class PlanFilterSet(filters.FilterSet):
create_time_start = filters.DateFilter(field_name="create_time", lookup_expr='gte') create_time_start = filters.DateFilter(field_name="create_time", lookup_expr='gte')
@ -15,10 +16,19 @@ class PlanFilterSet(filters.FilterSet):
fields = ['product', 'order', 'create_time_start', 'create_time_end'] fields = ['product', 'order', 'create_time_start', 'create_time_end']
def filter_tag(self, queryset, name, value): def filter_tag(self, queryset, name, value):
now = datetime.now()
day7_after = now + timedelta(days=7)
if value == 'planed': if value == 'planed':
queryset = queryset.filter(is_planed=True) queryset = queryset.filter(is_planed=True)
elif value == 'working': elif value == 'working':
queryset = queryset.exclude(state__in=[ProductionPlan.PLAN_STATE_DONE, ProductionPlan.PLAN_MTEST_DONE]) queryset = queryset.exclude(state__in=[ProductionPlan.PLAN_STATE_DONE,
ProductionPlan.PLAN_MTEST_DONE])
elif value == 'near_done':
queryset = queryset.filter(count_ok__lt=F('count'),
end_date__lte = datetime.date(day7_after))
elif value == 'out_done':
queryset = queryset.filter(count_ok__lt=F('count'),
end_date__gt = datetime.date(now))
return queryset return queryset
def filter_material(self, queryset, name, value): def filter_material(self, queryset, name, value):

View File

@ -23,8 +23,9 @@ class OrderFilterSet(filters.FilterSet):
plan_order__subplan_plan__progress_subplan__material__id=value).distinct() plan_order__subplan_plan__progress_subplan__material__id=value).distinct()
def filter_tag(self, queryset, name, value): def filter_tag(self, queryset, name, value):
now = datetime.now()
day7_after = now + timedelta(days=7)
if value == 'near_delivery': if value == 'near_delivery':
day7_after = datetime.now() + timedelta(days=7)
queryset = queryset.filter(delivered_count__lt=F('count'), queryset = queryset.filter(delivered_count__lt=F('count'),
delivery_date__lte = datetime.date(day7_after)) delivery_date__lte = datetime.date(day7_after))
elif value == 'out_delivery': elif value == 'out_delivery':