设备增加关联工序的serializer

This commit is contained in:
caoqianming 2021-09-28 15:24:38 +08:00
parent 68e4164fe0
commit 71502088c9
4 changed files with 28 additions and 4 deletions

View File

@ -1,3 +1,4 @@
from apps.mtm.models import Step
from rest_framework import serializers from rest_framework import serializers
from rest_framework.serializers import ModelSerializer from rest_framework.serializers import ModelSerializer
@ -8,6 +9,7 @@ from apps.system.serializers import OrganizationSimpleSerializer, UserSimpleSeri
class EquipmentSerializer(ModelSerializer): class EquipmentSerializer(ModelSerializer):
belong_dept_ = OrganizationSimpleSerializer(source='belong_dept', read_only=True) belong_dept_ = OrganizationSimpleSerializer(source='belong_dept', read_only=True)
keeper_ = UserSimpleSerializer(source='keeper', read_only=True) keeper_ = UserSimpleSerializer(source='keeper', read_only=True)
step_ = serializers.SerializerMethodField()
class Meta: class Meta:
model = Equipment model = Equipment
fields = '__all__' fields = '__all__'
@ -18,6 +20,9 @@ class EquipmentSerializer(ModelSerializer):
queryset = queryset.select_related('belong_dept','keeper') queryset = queryset.select_related('belong_dept','keeper')
return queryset return queryset
def get_step_(self, obj):
return Step.objects.filter(equipments=obj).values('id', 'name', 'number')
class EquipmentSimpleSerializer(ModelSerializer): class EquipmentSimpleSerializer(ModelSerializer):
class Meta: class Meta:
model = Equipment model = Equipment

View File

@ -1,6 +1,6 @@
from apps.em.serializers import EquipmentSerializer, EquipmentSimpleSerializer from apps.em.serializers import EquipmentSimpleSerializer
from rest_framework import serializers from rest_framework import serializers
from rest_framework.exceptions import ValidationError from rest_framework.exceptions import ParseError, ValidationError
from .models import InputMaterial, Material, OutputMaterial, Process, ProductProcess, RecordForm, RecordFormField, Step, TechDoc, UsedStep from .models import InputMaterial, Material, OutputMaterial, Process, ProductProcess, RecordForm, RecordFormField, Step, TechDoc, UsedStep
from apps.system.serializers import FileSimpleSerializer, OrganizationSimpleSerializer from apps.system.serializers import FileSimpleSerializer, OrganizationSimpleSerializer

View File

@ -168,8 +168,13 @@ class WfService(object):
if user.id not in participant: if user.id not in participant:
return dict(permission=False, msg="非当前处理人") return dict(permission=False, msg="非当前处理人")
current_participant_count = len(participant) current_participant_count = len(participant)
if current_participant_count >1 and state.distribute_type == State.STATE_DISTRIBUTE_TYPE_ACTIVE: if current_participant_count == 1:
return dict(permission=False, msg="需要先接单再处理") if [user.id] != participant:
return dict(permission=False, msg="非当前处理人")
elif current_participant_count >1 and state.distribute_type == State.STATE_DISTRIBUTE_TYPE_ACTIVE:
if user.id not in participant:
return dict(permission=False, msg="非当前处理人")
return dict(permission=False, msg="需要先接单再处理", need_accept=True)
if ticket.in_add_node: if ticket.in_add_node:
return dict(permission=False, msg="工单当前处于加签中,请加签完成后操作") return dict(permission=False, msg="工单当前处于加签中,请加签完成后操作")
return dict(permission=True, msg="") return dict(permission=True, msg="")

View File

@ -247,6 +247,20 @@ class TicketViewSet(OptimizationMixin, CreateUpdateCustomMixin, CreateModelMixin
transitions = WfService.get_ticket_transitions(ticket) transitions = WfService.get_ticket_transitions(ticket)
return Response(TransitionSerializer(instance=transitions, many=True).data) return Response(TransitionSerializer(instance=transitions, many=True).data)
@action(methods=['post'], detail=True, perms_map={'post':'*'})
def accpet(self, request, pk=None):
"""
接单,当工单当前处理人实际为多个人时(角色部门多人都有可能 注意角色和部门有可能实际只有一人)
"""
ticket = self.get_object()
result = WfService.ticket_handle_permission_check(ticket, request.user)
if result.get('need_accept', False):
ticket.participant_type = State.PARTICIPANT_TYPE_PERSONAL
ticket.participant = request.user.id
ticket.save()
# 接单日志
else:
raise APIException('无需接单')
class TicketFlowViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): class TicketFlowViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet):
""" """