工作流创建清单
This commit is contained in:
parent
ff47f66463
commit
d85f52454c
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 3.2.6 on 2021-08-27 09:12
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('wf', '0008_auto_20210827_1104'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='ticketflow',
|
||||
name='participant_type',
|
||||
field=models.IntegerField(choices=[(0, '无处理人'), (1, '个人'), (2, '多人'), (3, '部门'), (4, '角色'), (5, '变量'), (6, '脚本'), (7, '工单的字段'), (8, '父工单的字段')], default=0, help_text='0.无处理人,1.个人,2.多人', verbose_name='处理人类型'),
|
||||
),
|
||||
]
|
|
@ -168,6 +168,7 @@ class TicketFlow(BaseModel):
|
|||
ticket = models.ForeignKey(Ticket, on_delete=models.CASCADE, verbose_name='关联工单')
|
||||
transition = models.ForeignKey(Transition, verbose_name='流转id', help_text='与worklow.Transition关联, 为0时表示认为干预的操作', on_delete=models.CASCADE)
|
||||
suggestion = models.CharField('处理意见', max_length=10000, default='', blank=True)
|
||||
participant_type = models.IntegerField('处理人类型', default=0, help_text='0.无处理人,1.个人,2.多人', choices=State.type2_choices)
|
||||
participant = models.ForeignKey(User, verbose_name='处理人', on_delete=models.SET_NULL, null=True, blank=True)
|
||||
state = models.ForeignKey(State, verbose_name='当前状态', default=0, blank=True, on_delete=models.CASCADE)
|
||||
ticket_data = models.JSONField('工单数据', default=dict, blank=True, help_text='可以用于记录当前表单数据,json格式')
|
|
@ -121,18 +121,17 @@ class WfService(object):
|
|||
到达结束状态
|
||||
"""
|
||||
return dict(destination_participant_type=State.PARTICIPANT_TYPE_PERSONAL,
|
||||
destination_participant=None,
|
||||
destination_participant=0,
|
||||
multi_all_person={})
|
||||
multi_all_person_dict = {}
|
||||
destination_participant_type, destination_participant = State.participant_type, State.participant
|
||||
|
||||
destination_participant_type, destination_participant = state.participant_type, state.participant
|
||||
if destination_participant_type == State.PARTICIPANT_TYPE_FIELD:
|
||||
destination_participant = ticket_data.get(destination_participant, None) if destination_participant in ticket_data else Ticket.ticket_data.get(destination_participant, None)
|
||||
|
||||
if destination_participant_type == State.PARTICIPANT_TYPE_DEPT:#单部门
|
||||
elif destination_participant_type == State.PARTICIPANT_TYPE_DEPT:#单部门
|
||||
destination_participant = list(User.objects.filter(dept=destination_participant).values_list('id', flat=True))
|
||||
|
||||
if destination_participant_type == State.PARTICIPANT_TYPE_ROLE:#单角色
|
||||
elif destination_participant_type == State.PARTICIPANT_TYPE_ROLE:#单角色
|
||||
destination_participant = list(User.objects.filter(roles=destination_participant).values_list('id', flat=True))
|
||||
|
||||
if type(destination_participant) == list:
|
||||
|
@ -140,13 +139,13 @@ class WfService(object):
|
|||
destination_participant = list(set(destination_participant))
|
||||
else:
|
||||
destination_participant_type = State.PARTICIPANT_TYPE_PERSONAL
|
||||
|
||||
if destination_participant_type == State.PARTICIPANT_TYPE_MULTI:
|
||||
if state.distribute_type == State.STATE_DISTRIBUTE_TYPE_RANDOM:
|
||||
destination_participant = random.choice(destination_participant)
|
||||
elif state.distribute_type == State.STATE_DISTRIBUTE_TYPE_ALL:
|
||||
for i in destination_participant:
|
||||
multi_all_person_dict[i]={}
|
||||
|
||||
return dict(destination_participant_type=destination_participant_type,
|
||||
destination_participant=destination_participant,
|
||||
multi_all_person=multi_all_person_dict)
|
||||
|
|
|
@ -145,8 +145,8 @@ class TicketViewSet(OptimizationMixin, CreateUpdateCustomMixin, CreateModelMixin
|
|||
# 新增流转记录
|
||||
TicketFlow.objects.create(ticket=ticket, state=start_state, ticket_data=ticket_data,
|
||||
suggestion=rdata.get('suggestion',''), participant_type=State.PARTICIPANT_TYPE_PERSONAL,
|
||||
particant=ticket.create_by)
|
||||
return Response(serializer.data)
|
||||
participant=ticket.create_by, transition=transition)
|
||||
return Response(TicketSerializer(instance=ticket).data)
|
||||
|
||||
|
||||
@action(methods=['get'], detail=True, perms_map={'get':'*'})
|
||||
|
|
Loading…
Reference in New Issue