167 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			167 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			Python
		
	
	
	
 | 
						|
from apps.wf.models import Ticket
 | 
						|
# TicketFlow, Transition, Workflow, CustomField, State, 
 | 
						|
from apps.ofm.models import LendingSeal, Vehicle, BorrowRecord, Publicity, MroomBooking, MroomSlot, PatentInfo
 | 
						|
from rest_framework.exceptions import ParseError
 | 
						|
 | 
						|
 | 
						|
def seal_submit_validate(ins: LendingSeal):
 | 
						|
    if ins.submit_time:
 | 
						|
        raise ParseError('该日志已提交!')
 | 
						|
    if ins.mtask and ins.mtask.state == LendingSeal.MTASK_STOP:
 | 
						|
        raise ParseError('该任务已停止!')
 | 
						|
 | 
						|
def bind_mroombooking(ticket: Ticket, transition, new_ticket_data: dict):
 | 
						|
    ins = MroomBooking.objects.get(id=new_ticket_data['t_id'])
 | 
						|
    ticket_data = ticket.ticket_data
 | 
						|
    ticket_data.update({
 | 
						|
        't_model': 'mroombooking',
 | 
						|
        't_id': ins.id,
 | 
						|
    })
 | 
						|
    ticket.ticket_data = ticket_data
 | 
						|
    ticket.create_by = ins.create_by
 | 
						|
    ticket.save()
 | 
						|
    if ins.ticket is None:
 | 
						|
        ins.ticket = ticket
 | 
						|
        ins.save()
 | 
						|
 | 
						|
def mroombooking_reject(ticket: Ticket, transition, new_ticket_data: dict):
 | 
						|
    ins = MroomBooking.objects.get(id=new_ticket_data['t_id'])
 | 
						|
    MroomSlot.objects.filter(booking=ins).update(is_inuse=False)
 | 
						|
            
 | 
						|
def bind_lendingseal(ticket: Ticket, transition, new_ticket_data: dict):
 | 
						|
    ins = LendingSeal.objects.get(id=new_ticket_data['t_id'])
 | 
						|
    ins.actual_return_date = None
 | 
						|
    ticket_data = ticket.ticket_data
 | 
						|
    ticket_data.update({
 | 
						|
        't_model': 'LendingSeal',
 | 
						|
        't_id': ins.id,
 | 
						|
    })
 | 
						|
    ticket.ticket_data = ticket_data
 | 
						|
    ticket.create_by = ins.create_by
 | 
						|
    ticket.save()
 | 
						|
    if ins.ticket is None:
 | 
						|
        ins.ticket = ticket
 | 
						|
        ins.save()
 | 
						|
    # 如果驳回到开始状态
 | 
						|
 | 
						|
def lending_save_ticket_data(ticket: Ticket, new_ticket_data: dict, **kwargs):
 | 
						|
    try:
 | 
						|
        obj = LendingSeal.objects.get(id=new_ticket_data['t_id'])
 | 
						|
    except LendingSeal.DoesNotExist:
 | 
						|
        raise ParseError("Publicity t_id 不存在")
 | 
						|
    data_save = {k: v for k, v in new_ticket_data.items() if k not in ['t_model', 't_id']}
 | 
						|
 | 
						|
    for k, v in data_save.items():
 | 
						|
        setattr(obj, k, v)
 | 
						|
    obj.save()
 | 
						|
 | 
						|
 | 
						|
def bind_vehicle(ticket: Ticket, transition, new_ticket_data: dict):
 | 
						|
    ins = Vehicle.objects.get(id=new_ticket_data['t_id'])
 | 
						|
    ticket_data = ticket.ticket_data
 | 
						|
    ticket_data.update({
 | 
						|
        't_model': 'Vehicle',
 | 
						|
        't_id': ins.id,
 | 
						|
    })
 | 
						|
    ins.actual_km = None
 | 
						|
    ins.end_time = None
 | 
						|
    ticket.ticket_data = ticket_data
 | 
						|
    ticket.create_by = ins.create_by
 | 
						|
    ticket.save()
 | 
						|
    if ins.ticket is None:
 | 
						|
        ins.ticket = ticket
 | 
						|
        ins.save()
 | 
						|
 | 
						|
def vehicle_save_ticket_data(ticket: Ticket, new_ticket_data: dict, **kwargs):
 | 
						|
    try:
 | 
						|
        obj = Vehicle.objects.get(id=new_ticket_data['t_id'])
 | 
						|
    except Vehicle.DoesNotExist:
 | 
						|
        raise ParseError("Publicity t_id 不存在")
 | 
						|
    data_save = {k: v for k, v in new_ticket_data.items() if k not in ['t_model', 't_id']}
 | 
						|
 | 
						|
    for k, v in data_save.items():
 | 
						|
        setattr(obj, k, v)
 | 
						|
    obj.save()
 | 
						|
 | 
						|
def bind_file(ticket: Ticket, transition, new_ticket_data: dict):
 | 
						|
    ins = BorrowRecord.objects.get(id=new_ticket_data['t_id'])
 | 
						|
    ticket_data = ticket.ticket_data
 | 
						|
    ticket_data.update({
 | 
						|
        't_model': 'BorrowRecord',
 | 
						|
        't_id': ins.id,
 | 
						|
    })
 | 
						|
    ins.return_date = None
 | 
						|
    ticket.ticket_data = ticket_data
 | 
						|
    ticket.create_by = ins.create_by
 | 
						|
    ticket.save()
 | 
						|
    if ins.ticket is None:
 | 
						|
        ins.ticket = ticket
 | 
						|
        ins.save()
 | 
						|
        
 | 
						|
def file_save_ticket_data(ticket: Ticket, new_ticket_data: dict, **kwargs):
 | 
						|
    try:
 | 
						|
        obj = BorrowRecord.objects.get(id=new_ticket_data['t_id'])
 | 
						|
    except BorrowRecord.DoesNotExist:
 | 
						|
        raise ParseError("Publicity t_id 不存在")
 | 
						|
    data_save = {k: v for k, v in new_ticket_data.items() if k not in ['t_model', 't_id']}
 | 
						|
 | 
						|
    for k, v in data_save.items():
 | 
						|
        setattr(obj, k, v)
 | 
						|
    obj.save()
 | 
						|
 | 
						|
def bind_publicity(ticket: Ticket, transition, new_ticket_data: dict):
 | 
						|
    ins = Publicity.objects.get(id=new_ticket_data['t_id'])
 | 
						|
    ticket_data = ticket.ticket_data
 | 
						|
    ticket_data.update({
 | 
						|
        't_model': 'publicity',
 | 
						|
        't_id': ins.id,
 | 
						|
    })
 | 
						|
    ins.dept_opinion = None
 | 
						|
    ins.secret_period = None
 | 
						|
    ins.dept_opinion_review = None
 | 
						|
    ins.publicity_opinion = None
 | 
						|
    ticket.ticket_data = ticket_data
 | 
						|
    ticket.create_by = ins.create_by
 | 
						|
    ticket.save()
 | 
						|
    if ins.ticket is None:
 | 
						|
        ins.ticket = ticket
 | 
						|
        ins.save()
 | 
						|
 | 
						|
def save_ticket_data(ticket: Ticket, new_ticket_data: dict, **kwargs):
 | 
						|
    try:
 | 
						|
        obj = Publicity.objects.get(id=new_ticket_data['t_id'])
 | 
						|
    except Publicity.DoesNotExist:
 | 
						|
        raise ParseError("Publicity t_id 不存在")
 | 
						|
    data_save = {k: v for k, v in new_ticket_data.items() if k not in ['t_model', 't_id']}
 | 
						|
 | 
						|
    for k, v in data_save.items():
 | 
						|
        setattr(obj, k, v)
 | 
						|
    obj.save()
 | 
						|
    
 | 
						|
 | 
						|
def bind_patent(ticket: Ticket, transition, new_ticket_data: dict):
 | 
						|
    ins = PatentInfo.objects.get(id=new_ticket_data['t_id'])
 | 
						|
    ticket_data = ticket.ticket_data
 | 
						|
    ticket_data.update({
 | 
						|
        't_model': 'patent',
 | 
						|
        't_id': ins.id,
 | 
						|
    })
 | 
						|
    ticket.ticket_data = ticket_data
 | 
						|
    ticket.create_by = ins.create_by
 | 
						|
    ticket.save()
 | 
						|
    if ins.ticket is None:
 | 
						|
        ins.ticket = ticket
 | 
						|
        ins.save()
 | 
						|
 | 
						|
def patent_save_ticket_data(ticket: Ticket, new_ticket_data: dict, **kwargs):
 | 
						|
    try:
 | 
						|
        obj = PatentInfo.objects.get(id=new_ticket_data['t_id'])
 | 
						|
    except PatentInfo.DoesNotExist:
 | 
						|
        raise ParseError("Publicity t_id 不存在")
 | 
						|
    data_save = {k: v for k, v in new_ticket_data.items() if k not in ['t_model', 't_id']}
 | 
						|
 | 
						|
    for k, v in data_save.items():
 | 
						|
        setattr(obj, k, v)
 | 
						|
    obj.save()
 | 
						|
     |