95 lines
2.6 KiB
Python
95 lines
2.6 KiB
Python
from django.shortcuts import render
|
|
from rest_framework.mixins import ListModelMixin
|
|
|
|
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
|
from apps.mtm.models import Material, Mgroup, Shift, Team, Goal
|
|
from apps.mtm.serializers import MaterialSerializer, MgroupSerializer, ShiftSerializer, TeamSerializer, GoalSerializer
|
|
from apps.mtm.filters import GoalFilter
|
|
from rest_framework.decorators import action
|
|
from rest_framework.response import Response
|
|
from drf_yasg import openapi
|
|
from drf_yasg.utils import swagger_auto_schema
|
|
from django.db.models import Q
|
|
from apps.mtm.services import get_mgroup_goals
|
|
from apps.mtm.serializers import MgroupGoalYearSerializer
|
|
|
|
# Create your views here.
|
|
class MaterialViewSet(CustomModelViewSet):
|
|
"""
|
|
list:产品
|
|
|
|
产品
|
|
"""
|
|
queryset = Material.objects.all()
|
|
serializer_class = MaterialSerializer
|
|
filterset_fields = ['code']
|
|
search_fields = ['name', 'code']
|
|
ordering = ['id']
|
|
|
|
|
|
class ShiftViewSet(ListModelMixin, CustomGenericViewSet):
|
|
"""
|
|
list:班次
|
|
|
|
班次
|
|
"""
|
|
perms_map = {'get': '*'}
|
|
queryset = Shift.objects.all()
|
|
serializer_class = ShiftSerializer
|
|
search_fields = ['name']
|
|
ordering = ['id']
|
|
|
|
|
|
class MgroupViewSet(CustomModelViewSet):
|
|
"""
|
|
list:测点集
|
|
|
|
测点集
|
|
"""
|
|
queryset = Mgroup.objects.all()
|
|
serializer_class = MgroupSerializer
|
|
select_related_fields = ['create_by', 'belong_dept']
|
|
filterset_fields = ['belong_dept']
|
|
search_fields = ['number']
|
|
|
|
|
|
class TeamViewSet(CustomModelViewSet):
|
|
"""
|
|
list:班组
|
|
|
|
班组
|
|
"""
|
|
queryset = Team.objects.all()
|
|
serializer_class = TeamSerializer
|
|
select_related_fields = ['belong_dept', 'leader']
|
|
filterset_fields = ['belong_dept']
|
|
search_fields = ['name']
|
|
|
|
|
|
class GoalViewSet(CustomModelViewSet):
|
|
"""
|
|
list: 目标
|
|
|
|
目标
|
|
"""
|
|
queryset = Goal.objects.all()
|
|
serializer_class = GoalSerializer
|
|
select_related_fields = ['mgroup', 'goal_cate']
|
|
filterset_class = GoalFilter
|
|
search_fields = ['name']
|
|
|
|
|
|
@action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=MgroupGoalYearSerializer)
|
|
def mgroup_goals_year(self, request, pk=None):
|
|
"""
|
|
获取工段全年目标
|
|
|
|
获取工段全年目标
|
|
"""
|
|
sr = MgroupGoalYearSerializer(data=request.data)
|
|
sr.is_valid(raise_exception=True)
|
|
vdata = sr.validated_data
|
|
mgroup = Mgroup.objects.get(Q(id=vdata['mgroup'])|Q(name=vdata['mgroup']))
|
|
year = vdata['year']
|
|
res = get_mgroup_goals(mgroup, year, True)
|
|
return Response(res) |