diff --git a/apps/opm/services.py b/apps/opm/services.py index 326259ad..06eadbed 100644 --- a/apps/opm/services.py +++ b/apps/opm/services.py @@ -39,23 +39,24 @@ def bind_opl(ticket: Ticket, transition: Transition, new_ticket_data: dict): 'charger': opl.charger.id, 'dept_ter': opl.operation.dept_ter.id, 'dept_bus': opl.operation.dept_bus.id - }) + }) ticket.ticket_data = ticket_data ticket.save() opl.ticket = ticket opl.number = ticket.sn opl.save() + op = opl.operation + if op.state == Operation.OP_CREATE: + op.state = Operation.OP_AUDIT + op.save() def opl_audit_end(ticket: Ticket, transition: Transition, new_ticket_data: dict): opl = Opl.objects.get(ticket=ticket) - serializer = OplCloseSerializer(instance=opl, data=new_ticket_data, partial=True) - serializer.is_valid(raise_exception=True) - serializer.save() + op = opl.operation + if op.state == Operation.OP_AUDIT: + op.state = Operation.OP_WORK + op.save() -def give_perm_by_opl(): - """ - 根据许可证授予区域进入权限 - """ - pass + # 授予相关工作人员区域进入权限 diff --git a/apps/wf/migrations/0005_alter_state_filter_dept.py b/apps/wf/migrations/0005_alter_state_filter_dept.py new file mode 100644 index 00000000..bfab618b --- /dev/null +++ b/apps/wf/migrations/0005_alter_state_filter_dept.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2022-07-18 07:46 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('wf', '0004_auto_20220718_1344'), + ] + + operations = [ + migrations.AlterField( + model_name='state', + name='filter_dept', + field=models.CharField(blank=True, max_length=20, null=True, verbose_name='部门字段过滤'), + ), + ] diff --git a/apps/wf/models.py b/apps/wf/models.py index c3b7059c..b8280889 100755 --- a/apps/wf/models.py +++ b/apps/wf/models.py @@ -103,7 +103,7 @@ class State(CommonAModel): distribute_type = models.IntegerField('分配方式', default=1, choices=state_distribute_choices, help_text='1.主动接单(如果当前处理人实际为多人的时候,需要先接单才能处理) 2.直接处理(即使当前处理人实际为多人,也可以直接处理) 3.随机分配(如果实际为多人,则系统会随机分配给其中一个人) 4.全部处理(要求所有参与人都要处理一遍,才能进入下一步)') # filter_policy = models.IntegerField('参与人过滤策略', default=0, choices=state_filter_choices) - filter_dept = models.CharField('部门字段过滤', default=0, max_length=20) + filter_dept = models.CharField('部门字段过滤', max_length=20, null=True, blank=True) participant_cc = models.JSONField('抄送给', default=list, blank=True, help_text='抄送给(userid列表)') on_reach_func = models.CharField('到达时调用方法', max_length=100, null=True, blank=True) diff --git a/apps/wf/services.py b/apps/wf/services.py index 4a66de52..d33ad023 100755 --- a/apps/wf/services.py +++ b/apps/wf/services.py @@ -175,7 +175,9 @@ class WfService(object): user_queryset = User.objects.filter(posts__in=destination_participant) # 如果选择了岗位, 可能需要走过滤策略 if state.filter_dept: - dpts = Dept.objects.filter(id=new_ticket_data.get(state.filter_dept, '0')) + if not new_ticket_data.get(state.filter_dept, None): + raise ParseError('部门过滤字段错误') + dpts = Dept.objects.filter(id=new_ticket_data[state.filter_dept]) user_queryset = user_queryset.filter(depts__in=dpts) # if state.filter_policy == 1: # depts = get_parent_queryset(ticket.belong_dept) @@ -191,7 +193,9 @@ class WfService(object): user_queryset = User.objects.filter(roles__in=destination_participant) # 如果选择了角色, 需要走过滤策略 if state.filter_dept: - dpts = Dept.objects.filter(id=new_ticket_data.get(state.filter_dept, '0')) + if not new_ticket_data.get(state.filter_dept, None): + raise ParseError('部门过滤字段错误') + dpts = Dept.objects.filter(id=new_ticket_data[state.filter_dept]) user_queryset = user_queryset.filter(depts__in=dpts) # if state.filter_policy == 1: # depts = get_parent_queryset(ticket.belong_dept)