diff --git a/hb_server/apps/inm/filters.py b/hb_server/apps/inm/filters.py index 3209136..cba2735 100644 --- a/hb_server/apps/inm/filters.py +++ b/hb_server/apps/inm/filters.py @@ -23,9 +23,11 @@ class MbFilterSet(filters.FilterSet): class IProductFilterSet(DynamicFieldsFilterMixin, filters.FilterSet): order = filters.NumberFilter(field_name="wproduct__subproduction_plan__production_plan__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_end = filters.DateFilter(field_name="update_time", lookup_expr='lte') class Meta: model = IProduct 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'] diff --git a/hb_server/apps/pm/filters.py b/hb_server/apps/pm/filters.py index f530238..fb5367b 100644 --- a/hb_server/apps/pm/filters.py +++ b/hb_server/apps/pm/filters.py @@ -2,8 +2,9 @@ from django_filters import rest_framework as filters from apps.mtm.models import Material, Step from apps.pm.models import ProductionPlan, SubProductionProgress from apps.wpm.models import Operation, WProduct - +from datetime import * from apps.wpm.services import WpmServies +from django.db.models import F class PlanFilterSet(filters.FilterSet): 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'] def filter_tag(self, queryset, name, value): + now = datetime.now() + day7_after = now + timedelta(days=7) if value == 'planed': queryset = queryset.filter(is_planed=True) 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 def filter_material(self, queryset, name, value): diff --git a/hb_server/apps/sam/filters.py b/hb_server/apps/sam/filters.py index a0c3626..5af1a57 100644 --- a/hb_server/apps/sam/filters.py +++ b/hb_server/apps/sam/filters.py @@ -23,8 +23,9 @@ class OrderFilterSet(filters.FilterSet): plan_order__subplan_plan__progress_subplan__material__id=value).distinct() def filter_tag(self, queryset, name, value): + now = datetime.now() + day7_after = now + timedelta(days=7) if value == 'near_delivery': - day7_after = datetime.now() + timedelta(days=7) queryset = queryset.filter(delivered_count__lt=F('count'), delivery_date__lte = datetime.date(day7_after)) elif value == 'out_delivery':