82 lines
3.2 KiB
Python
82 lines
3.2 KiB
Python
from django.shortcuts import render
|
|
from rest_framework.viewsets import ModelViewSet, GenericViewSet
|
|
from rest_framework.mixins import CreateModelMixin, ListModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin
|
|
|
|
from apps.mtm.models import Material, Process, ProductProcess, Step
|
|
from apps.mtm.serializers import MaterialSerializer, ProductProcessListSerializer, ProductProcessUpdateSerializer, ProcessSerializer, StepSerializer
|
|
from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
|
|
from rest_framework.decorators import action
|
|
from rest_framework.response import Response
|
|
|
|
|
|
# Create your views here.
|
|
class MaterialViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
|
"""
|
|
物料表-增删改查
|
|
"""
|
|
perms_map = {'get': '*', 'post': 'material_create',
|
|
'put': 'material_update', 'delete': 'material_delete'}
|
|
queryset = Material.objects.all()
|
|
serializer_class = MaterialSerializer
|
|
search_fields = ['name', 'number']
|
|
filterset_fields = ['type']
|
|
ordering_fields = ['number', 'sort_str']
|
|
ordering = ['number']
|
|
|
|
@action(methods=['get'], detail=True, perms_map={'get':'*'}, pagination_class=None, serializer_class=StepSerializer)
|
|
def steps(self, request, pk=None):
|
|
"""
|
|
工序下的子工序
|
|
"""
|
|
process = self.get_object()
|
|
serializer = self.serializer_class(instance=Step.objects.filter(process=process, is_deleted=False), many=True)
|
|
return Response(serializer.data)
|
|
|
|
|
|
class ProcessViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
|
"""
|
|
工序表-增删改查
|
|
"""
|
|
perms_map = {'get': '*', 'post': 'process_create',
|
|
'put': 'process_update', 'delete': 'process_delete'}
|
|
queryset = Process.objects.select_related('instruction').all()
|
|
serializer_class = ProcessSerializer
|
|
search_fields = ['name', 'number']
|
|
filterset_fields = ['number']
|
|
ordering_fields = ['number']
|
|
ordering = ['number']
|
|
|
|
@action(methods=['get'], detail=True, perms_map={'get':'process_update'}, pagination_class=None, serializer_class=StepSerializer)
|
|
def steps(self, request, pk=None):
|
|
"""
|
|
工序下的子工序
|
|
"""
|
|
process = self.get_object()
|
|
serializer = self.serializer_class(instance=Step.objects.filter(process=process, is_deleted=False), many=True)
|
|
return Response(serializer.data)
|
|
|
|
class StepViewSet(CreateModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin, GenericViewSet):
|
|
"""
|
|
"""
|
|
perms_map = {'*':'process_update'}
|
|
queryset = Step.objects.all()
|
|
serializer_class = StepSerializer
|
|
search_fields = ['name', 'number']
|
|
filterset_fields = ['process']
|
|
ordering = ['sort']
|
|
|
|
|
|
class ProductProcessViewSet(CreateModelMixin, UpdateModelMixin, ListModelMixin, DestroyModelMixin, GenericViewSet):
|
|
"""
|
|
产品生产工艺流程增删改查
|
|
"""
|
|
perms_map={'*':'*'}
|
|
queryset = ProductProcess.objects.select_related('process', 'product').all()
|
|
filterset_fields = ['process', 'product']
|
|
serializer_class = ProductProcessListSerializer
|
|
ordering = ['sort']
|
|
|
|
def get_serializer_class(self):
|
|
if self.action == 'update':
|
|
return ProductProcessUpdateSerializer
|
|
return super().get_serializer_class() |