From aec8841ba6861ee7eb04e838e5c7e1c08f0ace6a Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 24 Jan 2022 13:47:08 +0800 Subject: [PATCH] =?UTF-8?q?sam=20order=E5=A2=9E=E5=8A=A0=E8=BF=87=E6=9C=9F?= =?UTF-8?q?=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/sam/filters.py | 18 ++++++++++++++++-- hb_server/apps/sam/models.py | 1 + 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/hb_server/apps/sam/filters.py b/hb_server/apps/sam/filters.py index 779e7b4..a0c3626 100644 --- a/hb_server/apps/sam/filters.py +++ b/hb_server/apps/sam/filters.py @@ -1,22 +1,36 @@ from django_filters import rest_framework as filters from apps.sam.models import Order +from django.db.models import F +from datetime import datetime, timedelta class OrderFilterSet(filters.FilterSet): create_time_start = filters.DateFilter(field_name="create_time", lookup_expr='gte') create_time_end = filters.DateFilter(field_name="create_time", lookup_expr='lte') material = filters.NumberFilter(method='filter_material') + tag = filters.CharFilter(method='filter_tag') class Meta: model = Order - fields = ['product', 'contract', 'customer', 'create_time_start', 'create_time_end'] + fields = ['product', 'contract', 'customer', 'create_time_start', + 'create_time_end', 'tag'] def filter_material(self, queryset, name, value): """ 按物料筛选 """ - return queryset.filter(plan_order__subplan_plan__progress_subplan__material__id=value).distinct() + return queryset.filter( + plan_order__subplan_plan__progress_subplan__material__id=value).distinct() + def filter_tag(self, queryset, name, value): + 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': + queryset = queryset.filter(delivered_count__lt=F('count'), + delivery_date__gt = datetime.date(datetime.now())) + return queryset class ContractFilterSet(filters.FilterSet): create_time_start = filters.DateFilter(field_name="create_time", lookup_expr='gte') diff --git a/hb_server/apps/sam/models.py b/hb_server/apps/sam/models.py index 3e51a97..bceb63c 100644 --- a/hb_server/apps/sam/models.py +++ b/hb_server/apps/sam/models.py @@ -66,6 +66,7 @@ class Order(CommonAModel): planed_count = models.PositiveIntegerField('已排数量', default=0) delivered_count = models.PositiveIntegerField('已交货数量', default=0) delivery_date = models.DateField('交货日期') + need_mtest = models.BooleanField('是否需要军检', default=False) class Meta: verbose_name = '订单信息' verbose_name_plural = verbose_name