在需要的list接口增加动态字段
This commit is contained in:
parent
a2c025cdf2
commit
0955a208cf
|
@ -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
|
|
@ -2,11 +2,13 @@ from apps.mtm.models import Step
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from rest_framework.serializers import ModelSerializer
|
from rest_framework.serializers import ModelSerializer
|
||||||
from rest_framework import exceptions
|
from rest_framework import exceptions
|
||||||
|
|
||||||
|
from utils.mixins import DynamicFieldsSerializerMixin
|
||||||
from .models import Equipment, ECheckRecord
|
from .models import Equipment, ECheckRecord
|
||||||
from apps.system.serializers import OrganizationSimpleSerializer, UserSimpleSerializer
|
from apps.system.serializers import OrganizationSimpleSerializer, UserSimpleSerializer
|
||||||
|
|
||||||
|
|
||||||
class EquipmentListSerializer(ModelSerializer):
|
class EquipmentListSerializer(DynamicFieldsSerializerMixin, ModelSerializer):
|
||||||
keeper_ = UserSimpleSerializer(source='keeper', read_only=True)
|
keeper_ = UserSimpleSerializer(source='keeper', read_only=True)
|
||||||
step_ = serializers.SerializerMethodField()
|
step_ = serializers.SerializerMethodField()
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
@ -7,6 +7,7 @@ from rest_framework.viewsets import ModelViewSet, GenericViewSet
|
||||||
from rest_framework.mixins import CreateModelMixin, RetrieveModelMixin, ListModelMixin, DestroyModelMixin
|
from rest_framework.mixins import CreateModelMixin, RetrieveModelMixin, ListModelMixin, DestroyModelMixin
|
||||||
from rest_framework import serializers, status
|
from rest_framework import serializers, status
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
from apps.em.filters import EquipFilterSet
|
||||||
from apps.em.models import Equipment, ECheckRecord
|
from apps.em.models import Equipment, ECheckRecord
|
||||||
from apps.em.serializers import DaqCreateSerializer, EChcekRecordCreateSerializer, ECheckRecordListSerializer, \
|
from apps.em.serializers import DaqCreateSerializer, EChcekRecordCreateSerializer, ECheckRecordListSerializer, \
|
||||||
EquipmentCreateUpdateSerializer, EquipmentListSerializer
|
EquipmentCreateUpdateSerializer, EquipmentListSerializer
|
||||||
|
@ -26,7 +27,7 @@ class EquipmentViewSet(CreateUpdateModelAMixin, OptimizationMixin, ModelViewSet)
|
||||||
queryset = Equipment.objects.all()
|
queryset = Equipment.objects.all()
|
||||||
serializer_class = EquipmentListSerializer
|
serializer_class = EquipmentListSerializer
|
||||||
search_fields = ['number', 'name','description']
|
search_fields = ['number', 'name','description']
|
||||||
filterset_fields = ['keeper', 'type']
|
filterset_class = EquipFilterSet
|
||||||
ordering_fields = ['create_time']
|
ordering_fields = ['create_time']
|
||||||
ordering = ['-create_time']
|
ordering = ['-create_time']
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ from .models import IProduct, MaterialBatch
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from utils.mixins import DynamicFieldsFilterMixin
|
from utils.mixins import DynamicFieldsFilterMixin
|
||||||
|
|
||||||
class MbFilterSet(filters.FilterSet):
|
class MbFilterSet(DynamicFieldsFilterMixin, filters.FilterSet):
|
||||||
material = filters.ModelMultipleChoiceFilter(field_name="material", queryset=Material.objects.all())
|
material = filters.ModelMultipleChoiceFilter(field_name="material", queryset=Material.objects.all())
|
||||||
tag = filters.CharFilter(method="filter_tag")
|
tag = filters.CharFilter(method="filter_tag")
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ class InventorySerializer(serializers.ModelSerializer):
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
|
|
||||||
class MaterialBatchSerializer(serializers.ModelSerializer):
|
class MaterialBatchSerializer(DynamicFieldsSerializerMixin, serializers.ModelSerializer):
|
||||||
material_ = MaterialSimpleSerializer(source='material', read_only=True)
|
material_ = MaterialSimpleSerializer(source='material', read_only=True)
|
||||||
warehouse_ = WareHouseSimpleSerializer(source='warehouse', read_only=True)
|
warehouse_ = WareHouseSimpleSerializer(source='warehouse', read_only=True)
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
from django.db.models.expressions import F
|
from django.db.models.expressions import F
|
||||||
from django_filters import rest_framework as filters
|
from django_filters import rest_framework as filters
|
||||||
from apps.mtm.models import Material, TechDoc
|
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):
|
def filter_operation(self, queryset, name, value):
|
||||||
return queryset.filter(subproduction__subplan_subprod__ow_subplan__operation=value).distinct()
|
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')
|
tag = filters.CharFilter(method='filter_tag')
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Material
|
model = Material
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
from apps.em.serializers import EquipmentSimpleSerializer
|
from apps.em.serializers import EquipmentSimpleSerializer
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from rest_framework.exceptions import ParseError, ValidationError
|
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 .models import Material, Process, RecordForm, RecordFormField, Step, SubprodctionMaterial, TechDoc, UsedStep, SubProduction
|
||||||
from apps.system.serializers import FileSimpleSerializer, OrganizationSimpleSerializer
|
from apps.system.serializers import FileSimpleSerializer, OrganizationSimpleSerializer
|
||||||
|
|
||||||
|
|
||||||
class MaterialSerializer(serializers.ModelSerializer):
|
class MaterialSerializer(DynamicFieldsSerializerMixin, serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Material
|
model = Material
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
|
@ -6,7 +6,9 @@ from datetime import *
|
||||||
from apps.wpm.services import WpmServies
|
from apps.wpm.services import WpmServies
|
||||||
from django.db.models import F
|
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_start = filters.DateFilter(field_name="create_time", lookup_expr='gte')
|
||||||
create_time_end = filters.DateFilter(field_name="create_time", lookup_expr='lte')
|
create_time_end = filters.DateFilter(field_name="create_time", lookup_expr='lte')
|
||||||
tag = filters.CharFilter(method='filter_tag')
|
tag = filters.CharFilter(method='filter_tag')
|
||||||
|
|
|
@ -3,6 +3,7 @@ from rest_framework import serializers
|
||||||
from apps.sam.serializers import OrderSerializer, OrderSimpleSerializer
|
from apps.sam.serializers import OrderSerializer, OrderSimpleSerializer
|
||||||
from apps.mtm.serializers import MaterialSimpleSerializer, ProcessSimpleSerializer, SubProductionSimpleSerializer
|
from apps.mtm.serializers import MaterialSimpleSerializer, ProcessSimpleSerializer, SubProductionSimpleSerializer
|
||||||
from apps.system.serializers import OrganizationSimpleSerializer
|
from apps.system.serializers import OrganizationSimpleSerializer
|
||||||
|
from utils.mixins import DynamicFieldsSerializerMixin
|
||||||
|
|
||||||
|
|
||||||
class ProductionPlanCreateFromOrderSerializer(serializers.ModelSerializer):
|
class ProductionPlanCreateFromOrderSerializer(serializers.ModelSerializer):
|
||||||
|
@ -10,7 +11,7 @@ class ProductionPlanCreateFromOrderSerializer(serializers.ModelSerializer):
|
||||||
model = ProductionPlan
|
model = ProductionPlan
|
||||||
fields = ['order', 'count', 'start_date', 'end_date']
|
fields = ['order', 'count', 'start_date', 'end_date']
|
||||||
|
|
||||||
class ProductionPlanSerializer(serializers.ModelSerializer):
|
class ProductionPlanSerializer(DynamicFieldsSerializerMixin, serializers.ModelSerializer):
|
||||||
order_ = OrderSimpleSerializer(source='order', read_only=True)
|
order_ = OrderSimpleSerializer(source='order', read_only=True)
|
||||||
product_ = MaterialSimpleSerializer(source='product', read_only=True)
|
product_ = MaterialSimpleSerializer(source='product', read_only=True)
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
@ -4,8 +4,10 @@ from apps.sam.models import Order
|
||||||
from django.db.models import F
|
from django.db.models import F
|
||||||
from datetime import datetime, timedelta
|
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_start = filters.DateFilter(field_name="create_time", lookup_expr='gte')
|
||||||
create_time_end = filters.DateFilter(field_name="create_time", lookup_expr='lte')
|
create_time_end = filters.DateFilter(field_name="create_time", lookup_expr='lte')
|
||||||
material = filters.NumberFilter(method='filter_material')
|
material = filters.NumberFilter(method='filter_material')
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
|
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
|
from utils.mixins import DynamicFieldsSerializerMixin
|
||||||
|
|
||||||
from .models import Contract, Customer, Order
|
from .models import Contract, Customer, Order
|
||||||
|
|
||||||
from apps.mtm.serializers import MaterialSimpleSerializer
|
from apps.mtm.serializers import MaterialSimpleSerializer
|
||||||
|
@ -47,7 +49,7 @@ class OrderCreateUpdateSerializer(serializers.ModelSerializer):
|
||||||
validated_data['number'] = 'DD' + ranstr(7)
|
validated_data['number'] = 'DD' + ranstr(7)
|
||||||
return super().create(validated_data)
|
return super().create(validated_data)
|
||||||
|
|
||||||
class OrderSerializer(serializers.ModelSerializer):
|
class OrderSerializer(DynamicFieldsSerializerMixin, serializers.ModelSerializer):
|
||||||
contract_ = ContractSimpleSerializer(source='contract', read_only=True)
|
contract_ = ContractSimpleSerializer(source='contract', read_only=True)
|
||||||
customer_ = CustomerSimpleSerializer(source='customer', read_only=True)
|
customer_ = CustomerSimpleSerializer(source='customer', read_only=True)
|
||||||
product_ = MaterialSimpleSerializer(source='product', read_only=True)
|
product_ = MaterialSimpleSerializer(source='product', read_only=True)
|
||||||
|
|
Loading…
Reference in New Issue