工单待办聚合查询

This commit is contained in:
caoqianming 2021-10-19 11:18:32 +08:00
parent 1f21df79e5
commit 6ecc0f6e57
2 changed files with 27 additions and 2 deletions

View File

@ -104,11 +104,24 @@ class SubProductionPlanViewSet(CreateUpdateModelAMixin, ListModelMixin, UpdateMo
@action(methods=['get'], detail=True, perms_map={'get':'*'}, serializer_class=SubProductionProgressSerializer)
def progress(self, request, pk=None):
"""
生产进度详情
"""
obj = self.get_object()
serializer = SubProductionProgressSerializer(instance=obj.progress_subplan, many=True)
return Response(serializer.data)
@action(methods=['post'], detail=True, perms_map={'post':'*'}, serializer_class=serializers.Serializer)
def issue(self, request, pk=None):
"""
下达任务
"""
obj = self.get_object()
if obj.state == 0:
obj.state = 1
obj.save()
return Response()
raise APIException('计划状态有误')
class ResourceViewSet(GenericViewSet):
perms_map = {'*': '*'}

View File

@ -1,3 +1,4 @@
from django.db.models import query
from apps.system.models import User
from apps.wf.filters import TicketFilterSet
from django.core.exceptions import AppRegistryNotReady
@ -13,7 +14,7 @@ from apps.system.mixins import CreateUpdateCustomMixin, CreateUpdateModelAMixin,
from apps.wf.services import WfService
from rest_framework.exceptions import APIException, PermissionDenied
from rest_framework import status
from django.db.models import Count
# Create your views here.
class WorkflowViewSet(CreateUpdateModelAMixin, ModelViewSet):
perms_map = {'get': '*', 'post': 'workflow_create',
@ -165,6 +166,17 @@ class TicketViewSet(OptimizationMixin, CreateUpdateCustomMixin, CreateModelMixin
participant=ticket.create_by, transition=transition)
return Response(TicketSerializer(instance=ticket).data)
@action(methods=['get'], detail=False, perms_map={'get':'*'})
def duty_agg(self, request, pk=None):
"""
工单待办聚合
"""
ret = {}
queryset = Ticket.objects.filter(participant__contains=request.user.id, is_deleted=False)\
.exclude(act_state__in=[Ticket.TICKET_ACT_STATE_FINISH, Ticket.TICKET_ACT_STATE_CLOSED])
ret['total_count'] = queryset.count()
ret['details'] = list(queryset.annotate(count = Count('workflow')).values('workflow', 'workflow__name', 'count'))
return Response(ret)
@action(methods=['post'], detail=True, perms_map={'post':'*'})
def handle(self, request, pk=None):