diff --git a/hb_server/apps/wpm/filters.py b/hb_server/apps/wpm/filters.py index eac725e..231a858 100644 --- a/hb_server/apps/wpm/filters.py +++ b/hb_server/apps/wpm/filters.py @@ -20,4 +20,16 @@ class WMaterialFilterSet(filters.FilterSet): else: subplans = WpmServies.get_subplans_queyset_from_step(step) queryset = queryset.filter(subproduction_plan__in=subplans).exclude(material__type=Material.MA_TYPE_HALFGOOD) + return queryset + + +class WProductFilterSet(filters.FilterSet): + tag = filters.CharFilter(method='filter_tag') + class Meta: + model = WProduct + fields = ['step', 'subproduction_plan', 'material', 'step__process', 'act_state', 'material__type'] + + def filter_tag(self, queryset, name, value): + if value == 'no_scrap': + queryset = queryset.exclude(act_state=WProduct.WPR_ACT_STATE_SCRAP) return queryset \ No newline at end of file diff --git a/hb_server/apps/wpm/views.py b/hb_server/apps/wpm/views.py index ed32da0..4d62249 100644 --- a/hb_server/apps/wpm/views.py +++ b/hb_server/apps/wpm/views.py @@ -18,7 +18,7 @@ from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin from rest_framework.decorators import action from apps.wf.models import Workflow from apps.wf.serializers import WorkflowSimpleSerializer -from apps.wpm.filters import WMaterialFilterSet +from apps.wpm.filters import WMaterialFilterSet, WProductFilterSet from apps.wpm.models import OperationEquip, OperationWproduct, Pick, PickWproduct, WMaterial, WProduct, Operation, OperationMaterial, OperationRecord, OperationRecordItem from apps.wpm.serializers import OperationEquipListSerializer, OperationEquipUpdateSerializer, OperationMaterialCreate1ListSerailizer, OperationMaterialCreate1Serailizer, OperationMaterialCreate2ListSerailizer, OperationMaterialCreate2Serailizer, OperationMaterialCreate3Serializer, OperationMaterialListSerializer, OperationRecordDetailSerializer, OperationRecordListSerializer, OperationRecordSubmitSerializer, OperationUpdateSerializer, OperationWproductListSerializer, OperationCreateSerializer, OperationDetailSerializer, OperationListSerializer, PickHalfSerializer, PickHalfsSerializer, PickSerializer, OperationInitSerializer, OperationSubmitSerializer, ScrapSerializer, WMaterialListSerializer, WProductListSerializer, WplanPutInSerializer, WpmTestFormInitSerializer, WpmTestRecordCreateSerializer, WproductPutInSerializer, WproductPutInsSerializer @@ -181,7 +181,7 @@ class WProductViewSet(ListModelMixin, GenericViewSet): perms_map={'*':'*'} queryset = WProduct.objects.select_related('step', 'material', 'subproduction_plan').filter(is_hidden=False) serializer_class = WProductListSerializer - filterset_fields = ['step', 'subproduction_plan', 'material', 'step__process', 'act_state', 'material__type'] + filterset_class = WProductFilterSet search_fields = ['number'] ordering_fields = ['id'] ordering = ['id'] @@ -332,7 +332,7 @@ class WProductViewSet(ListModelMixin, GenericViewSet): wproduct.save() return Response() - @action(methods=['post'], detail=False, perms_map={'post':'*'}, serializer_class=ScrapSerializer) + @action(methods=['post'], detail=True, perms_map={'post':'*'}, serializer_class=ScrapSerializer) def scrap(self, request, pk=None): """ 报废操作