66 lines
2.0 KiB
Python
66 lines
2.0 KiB
Python
from apps.opm.models import Operation, Opl, OplWorker
|
|
from apps.wf.models import Ticket, Transition
|
|
|
|
|
|
def get_op_charger(state, ticket, new_ticket_data, handler):
|
|
"""_summary_
|
|
|
|
Args:
|
|
state (_type_): 工作流节点实例
|
|
ticket (_type_): 工单实例
|
|
new_ticket_data (_type_): 提交的工单数据
|
|
handler (_type_): 处理人实例
|
|
"""
|
|
opl = Opl.objects.filter(ticket=ticket).first()
|
|
if opl:
|
|
return [opl.charger.id]
|
|
|
|
|
|
def get_op_workers(state, ticket, new_ticket_data, handler):
|
|
opl = Opl.objects.filter(ticket=ticket).first()
|
|
if opl:
|
|
return list(OplWorker.objects.filter(opl=opl).values_list('worker__id', flat=True))
|
|
|
|
|
|
def get_op_monitor(state, ticket, new_ticket_data, handler):
|
|
opl = Opl.objects.filter(ticket=ticket).first()
|
|
if opl:
|
|
return [opl.monitor.id]
|
|
|
|
|
|
def bind_opl(ticket: Ticket, transition: Transition, new_ticket_data: dict):
|
|
opl = Opl.objects.get(id=new_ticket_data['opl'])
|
|
ticket_data = ticket.ticket_data
|
|
ticket_data.update({
|
|
'operation': opl.operation.id, # operation id值
|
|
'level': opl.level,
|
|
'monitor': opl.monitor.id,
|
|
'workers': list(OplWorker.objects.filter(opl=opl).values_list('worker__id', flat=True)),
|
|
'charger': opl.charger.id,
|
|
'dept_ter': opl.operation.dept_ter.id,
|
|
'dept_bus': opl.operation.dept_bus.id
|
|
})
|
|
ticket.ticket_data = ticket_data
|
|
ticket.create_by = opl.create_by
|
|
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):
|
|
opl = Opl.objects.get(ticket=ticket)
|
|
|
|
op = opl.operation
|
|
if op.state == Operation.OP_AUDIT:
|
|
op.state = Operation.OP_WORK
|
|
op.save()
|
|
|
|
# 授予相关工作人员区域进入权限
|
|
# worker_ep_ids = list(OplWorker.objects.filter(opl=opl).values_list('worker__id', flat=True))
|
|
# 发送通知
|