From 0955a208cfe6d55ce0bbd2e0f7177213a621ec4e Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 26 Jan 2022 11:06:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E9=9C=80=E8=A6=81=E7=9A=84list?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0=E5=8A=A8=E6=80=81=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/em/filters.py | 24 ++++++++++++++++++++++++ hb_server/apps/em/serializers.py | 4 +++- hb_server/apps/em/views.py | 3 ++- hb_server/apps/inm/filters.py | 2 +- hb_server/apps/inm/serializers.py | 2 +- hb_server/apps/mtm/filters.py | 3 ++- hb_server/apps/mtm/serializers.py | 4 +++- hb_server/apps/pm/filters.py | 4 +++- hb_server/apps/pm/serializers.py | 3 ++- hb_server/apps/sam/filters.py | 4 +++- hb_server/apps/sam/serializers.py | 4 +++- 11 files changed, 47 insertions(+), 10 deletions(-) diff --git a/hb_server/apps/em/filters.py b/hb_server/apps/em/filters.py index e69de29..39fd93c 100644 --- a/hb_server/apps/em/filters.py +++ b/hb_server/apps/em/filters.py @@ -0,0 +1,24 @@ +from django_filters import rest_framework as filters + +from apps.em.models import Equipment +from datetime import * + +from utils.mixins import DynamicFieldsFilterMixin + + +class EquipFilterSet(DynamicFieldsFilterMixin, filters.FilterSet): + tag = filters.CharFilter(method='filter_tag') + class Meta: + model = Equipment + fields = ['keeper', 'type', 'tag'] + + def filter_tag(self, queryset, name, value): + now = datetime.now() + day7_after = now + timedelta(days=7) + if value == 'near_check': + queryset = queryset.filter( + next_check_date__lte = datetime.date(day7_after)) + elif value == 'out_check': + queryset = queryset.filter( + next_check_date__gt = datetime.date(now)) + return queryset \ No newline at end of file diff --git a/hb_server/apps/em/serializers.py b/hb_server/apps/em/serializers.py index 5398909..614528f 100644 --- a/hb_server/apps/em/serializers.py +++ b/hb_server/apps/em/serializers.py @@ -2,11 +2,13 @@ from apps.mtm.models import Step from rest_framework import serializers from rest_framework.serializers import ModelSerializer from rest_framework import exceptions + +from utils.mixins import DynamicFieldsSerializerMixin from .models import Equipment, ECheckRecord from apps.system.serializers import OrganizationSimpleSerializer, UserSimpleSerializer -class EquipmentListSerializer(ModelSerializer): +class EquipmentListSerializer(DynamicFieldsSerializerMixin, ModelSerializer): keeper_ = UserSimpleSerializer(source='keeper', read_only=True) step_ = serializers.SerializerMethodField() class Meta: diff --git a/hb_server/apps/em/views.py b/hb_server/apps/em/views.py index aec05f7..4357479 100644 --- a/hb_server/apps/em/views.py +++ b/hb_server/apps/em/views.py @@ -7,6 +7,7 @@ from rest_framework.viewsets import ModelViewSet, GenericViewSet from rest_framework.mixins import CreateModelMixin, RetrieveModelMixin, ListModelMixin, DestroyModelMixin from rest_framework import serializers, status from rest_framework.response import Response +from apps.em.filters import EquipFilterSet from apps.em.models import Equipment, ECheckRecord from apps.em.serializers import DaqCreateSerializer, EChcekRecordCreateSerializer, ECheckRecordListSerializer, \ EquipmentCreateUpdateSerializer, EquipmentListSerializer @@ -26,7 +27,7 @@ class EquipmentViewSet(CreateUpdateModelAMixin, OptimizationMixin, ModelViewSet) queryset = Equipment.objects.all() serializer_class = EquipmentListSerializer search_fields = ['number', 'name','description'] - filterset_fields = ['keeper', 'type'] + filterset_class = EquipFilterSet ordering_fields = ['create_time'] ordering = ['-create_time'] diff --git a/hb_server/apps/inm/filters.py b/hb_server/apps/inm/filters.py index 50c1548..7f16ac4 100644 --- a/hb_server/apps/inm/filters.py +++ b/hb_server/apps/inm/filters.py @@ -5,7 +5,7 @@ from .models import IProduct, MaterialBatch from django.utils import timezone from utils.mixins import DynamicFieldsFilterMixin -class MbFilterSet(filters.FilterSet): +class MbFilterSet(DynamicFieldsFilterMixin, filters.FilterSet): material = filters.ModelMultipleChoiceFilter(field_name="material", queryset=Material.objects.all()) tag = filters.CharFilter(method="filter_tag") diff --git a/hb_server/apps/inm/serializers.py b/hb_server/apps/inm/serializers.py index 6f4b97a..858c06d 100644 --- a/hb_server/apps/inm/serializers.py +++ b/hb_server/apps/inm/serializers.py @@ -42,7 +42,7 @@ class InventorySerializer(serializers.ModelSerializer): fields = '__all__' -class MaterialBatchSerializer(serializers.ModelSerializer): +class MaterialBatchSerializer(DynamicFieldsSerializerMixin, serializers.ModelSerializer): material_ = MaterialSimpleSerializer(source='material', read_only=True) warehouse_ = WareHouseSimpleSerializer(source='warehouse', read_only=True) diff --git a/hb_server/apps/mtm/filters.py b/hb_server/apps/mtm/filters.py index 8eb6b52..723345a 100644 --- a/hb_server/apps/mtm/filters.py +++ b/hb_server/apps/mtm/filters.py @@ -1,6 +1,7 @@ from django.db.models.expressions import F from django_filters import rest_framework as filters from apps.mtm.models import Material, TechDoc +from utils.mixins import DynamicFieldsFilterMixin @@ -15,7 +16,7 @@ class TechDocFilterset(filters.FilterSet): def filter_operation(self, queryset, name, value): return queryset.filter(subproduction__subplan_subprod__ow_subplan__operation=value).distinct() -class MaterialFilterSet(filters.FilterSet): +class MaterialFilterSet(DynamicFieldsFilterMixin, filters.FilterSet): tag = filters.CharFilter(method='filter_tag') class Meta: model = Material diff --git a/hb_server/apps/mtm/serializers.py b/hb_server/apps/mtm/serializers.py index 99cdfb6..538e70f 100644 --- a/hb_server/apps/mtm/serializers.py +++ b/hb_server/apps/mtm/serializers.py @@ -1,11 +1,13 @@ from apps.em.serializers import EquipmentSimpleSerializer from rest_framework import serializers from rest_framework.exceptions import ParseError, ValidationError + +from utils.mixins import DynamicFieldsSerializerMixin from .models import Material, Process, RecordForm, RecordFormField, Step, SubprodctionMaterial, TechDoc, UsedStep, SubProduction from apps.system.serializers import FileSimpleSerializer, OrganizationSimpleSerializer -class MaterialSerializer(serializers.ModelSerializer): +class MaterialSerializer(DynamicFieldsSerializerMixin, serializers.ModelSerializer): class Meta: model = Material fields = '__all__' diff --git a/hb_server/apps/pm/filters.py b/hb_server/apps/pm/filters.py index fb5367b..aa9c6da 100644 --- a/hb_server/apps/pm/filters.py +++ b/hb_server/apps/pm/filters.py @@ -6,7 +6,9 @@ from datetime import * from apps.wpm.services import WpmServies from django.db.models import F -class PlanFilterSet(filters.FilterSet): +from utils.mixins import DynamicFieldsFilterMixin + +class PlanFilterSet(DynamicFieldsFilterMixin, 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') tag = filters.CharFilter(method='filter_tag') diff --git a/hb_server/apps/pm/serializers.py b/hb_server/apps/pm/serializers.py index b3bfb7a..a77694f 100644 --- a/hb_server/apps/pm/serializers.py +++ b/hb_server/apps/pm/serializers.py @@ -3,6 +3,7 @@ from rest_framework import serializers from apps.sam.serializers import OrderSerializer, OrderSimpleSerializer from apps.mtm.serializers import MaterialSimpleSerializer, ProcessSimpleSerializer, SubProductionSimpleSerializer from apps.system.serializers import OrganizationSimpleSerializer +from utils.mixins import DynamicFieldsSerializerMixin class ProductionPlanCreateFromOrderSerializer(serializers.ModelSerializer): @@ -10,7 +11,7 @@ class ProductionPlanCreateFromOrderSerializer(serializers.ModelSerializer): model = ProductionPlan fields = ['order', 'count', 'start_date', 'end_date'] -class ProductionPlanSerializer(serializers.ModelSerializer): +class ProductionPlanSerializer(DynamicFieldsSerializerMixin, serializers.ModelSerializer): order_ = OrderSimpleSerializer(source='order', read_only=True) product_ = MaterialSimpleSerializer(source='product', read_only=True) class Meta: diff --git a/hb_server/apps/sam/filters.py b/hb_server/apps/sam/filters.py index 5af1a57..c1b7607 100644 --- a/hb_server/apps/sam/filters.py +++ b/hb_server/apps/sam/filters.py @@ -4,8 +4,10 @@ from apps.sam.models import Order from django.db.models import F from datetime import datetime, timedelta +from utils.mixins import DynamicFieldsFilterMixin -class OrderFilterSet(filters.FilterSet): + +class OrderFilterSet(DynamicFieldsFilterMixin, 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') diff --git a/hb_server/apps/sam/serializers.py b/hb_server/apps/sam/serializers.py index ac0e9a6..4aeaeb9 100644 --- a/hb_server/apps/sam/serializers.py +++ b/hb_server/apps/sam/serializers.py @@ -1,6 +1,8 @@ from rest_framework import serializers +from utils.mixins import DynamicFieldsSerializerMixin + from .models import Contract, Customer, Order from apps.mtm.serializers import MaterialSimpleSerializer @@ -47,7 +49,7 @@ class OrderCreateUpdateSerializer(serializers.ModelSerializer): validated_data['number'] = 'DD' + ranstr(7) return super().create(validated_data) -class OrderSerializer(serializers.ModelSerializer): +class OrderSerializer(DynamicFieldsSerializerMixin, serializers.ModelSerializer): contract_ = ContractSimpleSerializer(source='contract', read_only=True) customer_ = CustomerSimpleSerializer(source='customer', read_only=True) product_ = MaterialSimpleSerializer(source='product', read_only=True)