factory/apps/opm/services.py

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))
# 发送通知