feat: base 增加statedetailserializer可返回节点操作人员

This commit is contained in:
caoqianming 2025-12-03 11:11:30 +08:00
parent 81aa49d339
commit 9388eada7d
2 changed files with 18 additions and 3 deletions

View File

@ -1,5 +1,5 @@
from apps.system.models import Dept, User from apps.system.models import Dept, User, Post, Role
from apps.system.serializers import UserSignatureSerializer, UserSimpleSerializer from apps.system.serializers import UserSignatureSerializer, UserSimpleSerializer, DeptSimpleSerializer, PostSimpleSerializer, RoleSimpleSerializer
from rest_framework import serializers from rest_framework import serializers
from apps.utils.serializers import CustomModelSerializer from apps.utils.serializers import CustomModelSerializer
@ -23,6 +23,20 @@ class StateSerializer(CustomModelSerializer):
model = State model = State
fields = '__all__' fields = '__all__'
class StateDetailSerializer(StateSerializer):
participant_ = serializers.SerializerMethodField()
def get_participant_(self, obj:State):
if obj.participant_type == State.PARTICIPANT_TYPE_PERSONAL:
return UserSimpleSerializer(instance=User.objects.get(id=obj.participant)).data
elif obj.participant_type == State.PARTICIPANT_TYPE_MULTI:
return UserSimpleSerializer(instance=User.objects.filter(id__in=obj.participant), many=True).data
elif obj.participant_type == State.PARTICIPANT_TYPE_DEPT:
return DeptSimpleSerializer(instance=Dept.objects.filter(id__in=obj.participant), many=True).data
elif obj.participant_type == State.PARTICIPANT_TYPE_POST:
return PostSimpleSerializer(instance=Post.objects.filter(id__in=obj.participant), many=True).data
elif obj.participant_type == State.PARTICIPANT_TYPE_ROLE:
return RoleSimpleSerializer(instance=Role.objects.filter(id__in=obj.participant), many=True).data
class WorkflowSimpleSerializer(CustomModelSerializer): class WorkflowSimpleSerializer(CustomModelSerializer):
class Meta: class Meta:

View File

@ -8,7 +8,7 @@ from rest_framework.response import Response
from rest_framework.mixins import CreateModelMixin, DestroyModelMixin, ListModelMixin, \ from rest_framework.mixins import CreateModelMixin, DestroyModelMixin, ListModelMixin, \
RetrieveModelMixin, UpdateModelMixin RetrieveModelMixin, UpdateModelMixin
from apps.wf.serializers import CustomFieldCreateUpdateSerializer, CustomFieldSerializer, StateSerializer, \ from apps.wf.serializers import CustomFieldCreateUpdateSerializer, CustomFieldSerializer, StateSerializer, \
TicketAddNodeEndSerializer, TicketAddNodeSerializer, TicketCloseSerializer, \ StateDetailSerializer, TicketAddNodeEndSerializer, TicketAddNodeSerializer, TicketCloseSerializer, \
TicketCreateSerializer, TicketDeliverSerializer, TicketDestorySerializer, TicketFlowSerializer, \ TicketCreateSerializer, TicketDeliverSerializer, TicketDestorySerializer, TicketFlowSerializer, \
TicketHandleSerializer, TicketRetreatSerializer, \ TicketHandleSerializer, TicketRetreatSerializer, \
TicketSerializer, TransitionSerializer, WorkflowSerializer, \ TicketSerializer, TransitionSerializer, WorkflowSerializer, \
@ -185,6 +185,7 @@ class StateViewSet(CreateModelMixin, UpdateModelMixin, RetrieveModelMixin, Destr
'put': 'workflow.update', 'delete': 'workflow.update'} 'put': 'workflow.update', 'delete': 'workflow.update'}
queryset = State.objects.all() queryset = State.objects.all()
serializer_class = StateSerializer serializer_class = StateSerializer
retrieve_serializer_class = StateDetailSerializer
search_fields = ['name'] search_fields = ['name']
filterset_fields = ['workflow'] filterset_fields = ['workflow']
ordering = ['sort'] ordering = ['sort']